@embedpdf/plugin-pan 1.5.0 → 2.0.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ import { Reducer } from '@embedpdf/core';
2
+ import { PanAction } from './actions';
3
+ import { PanState, PanDocumentState } from './types';
4
+ export declare const initialDocumentState: PanDocumentState;
5
+ export declare const initialState: PanState;
6
+ export declare const panReducer: Reducer<PanState, PanAction>;
@@ -7,10 +7,30 @@ export interface PanPluginConfig extends BasePluginConfig {
7
7
  * – 'always' : default on every device */
8
8
  defaultMode?: PanDefaultMode;
9
9
  }
10
- export interface PanCapability {
10
+ export interface PanDocumentState {
11
+ isPanMode: boolean;
12
+ }
13
+ export interface PanState {
14
+ documents: Record<string, PanDocumentState>;
15
+ activeDocumentId: string | null;
16
+ }
17
+ export interface PanModeChangeEvent {
18
+ documentId: string;
19
+ isPanMode: boolean;
20
+ }
21
+ export interface PanScope {
22
+ enablePan: () => void;
23
+ disablePan: () => void;
24
+ togglePan: () => void;
25
+ isPanMode: () => boolean;
11
26
  onPanModeChange: EventHook<boolean>;
27
+ }
28
+ export interface PanCapability {
12
29
  enablePan: () => void;
13
30
  disablePan: () => void;
14
31
  togglePan: () => void;
15
32
  makePanDefault: (autoActivate?: boolean) => void;
33
+ isPanMode: () => boolean;
34
+ forDocument(documentId: string): PanScope;
35
+ onPanModeChange: EventHook<PanModeChangeEvent>;
16
36
  }
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-pan");require("preact");const n=require("preact/hooks"),r=require("@embedpdf/core/preact"),a=()=>r.usePlugin(t.PanPlugin.id),o=()=>r.useCapability(t.PanPlugin.id),i=()=>{const{provides:e}=o(),{plugin:t}=a();return n.useEffect((()=>{var n;if(!e||!t)return;const r=(null==(n=t.config)?void 0:n.defaultMode)??"never",a="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===r&&a&&e.makePanDefault()}),[e,t]),null},u=e.createPluginPackage(t.PanPluginPackage).addUtility(i).build();exports.PanMode=i,exports.PanPluginPackage=u,exports.usePan=()=>{const{provides:e}=o(),[t,r]=n.useState(!1);return n.useEffect((()=>{if(e)return e.onPanModeChange((e=>{r(e)}))}),[e]),{provides:e,isPanning:t}},exports.usePanCapability=o,exports.usePanPlugin=a,Object.keys(t).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),n=require("@embedpdf/plugin-pan");require("preact");const t=require("preact/hooks"),r=require("@embedpdf/core/preact"),o=()=>r.usePlugin(n.PanPlugin.id),i=()=>r.useCapability(n.PanPlugin.id),a=()=>{const{provides:e}=i(),{plugin:n}=o();return t.useEffect(()=>{var t;if(!e||!n)return;const r=(null==(t=n.config)?void 0:t.defaultMode)??"never",o="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===r&&o&&e.makePanDefault()},[e,n]),null},u=e.createPluginPackage(n.PanPluginPackage).addUtility(a).build();exports.PanMode=a,exports.PanPluginPackage=u,exports.usePan=e=>{const{provides:r}=i(),[o,a]=t.useState(n.initialDocumentState.isPanMode);return t.useEffect(()=>{if(!r)return;const n=r.forDocument(e);return a(n.isPanMode()),n.onPanModeChange(e=>{a(e)})},[r,e]),{provides:(null==r?void 0:r.forDocument(e))??null,isPanning:o}},exports.usePanCapability=i,exports.usePanPlugin=o,Object.keys(n).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onPanModeChange((isPanning) => {\n setIsPanning(isPanning);\n });\n }, [provides]);\n\n return {\n provides,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","PanMode","provides","pan","plugin","panPlugin","useEffect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","build","isPanning","setIsPanning","useState","onPanModeChange"],"mappings":"yOAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,ICF5DG,EAAU,KACrB,MAAQC,SAAUC,GAAQJ,KAClBK,OAAQC,GAAcV,IAevB,OAbPW,EAAAA,WAAU,WACJ,IAACH,IAAQE,EAAW,OAElB,MAAAE,GAAO,OAAAC,EAAAH,EAAUI,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBR,EAAIY,gBAAe,GAEpB,CAACZ,EAAKE,IAGF,IAAA,ECXIW,EAAmBC,EAAoBA,oBAAAC,EAAcF,kBAAEG,WAAWlB,GAASmB,oEFFlE,KACd,MAAAlB,SAAEA,GAAaH,KACdsB,EAAWC,GAAgBC,EAAAA,UAAS,GASpC,OAPPjB,EAAAA,WAAU,KACR,GAAKJ,EACE,OAAAA,EAASsB,iBAAiBH,IAC/BC,EAAaD,EAAS,GACvB,GACA,CAACnB,IAEG,CACLA,WACAmB,YACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID\n */\nexport const usePan = (documentId: string) => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);\n\n useEffect(() => {\n if (!provides) return;\n\n const scope = provides.forDocument(documentId);\n\n // Get initial state\n setIsPanning(scope.isPanMode());\n\n // Subscribe to pan mode changes\n return scope.onPanModeChange((isPan) => {\n setIsPanning(isPan);\n });\n }, [provides, documentId]);\n\n return {\n provides: provides?.forDocument(documentId) ?? null,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","PanMode","provides","pan","plugin","panPlugin","useEffect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","build","documentId","isPanning","setIsPanning","useState","initialDocumentState","isPanMode","scope","forDocument","onPanModeChange","isPan"],"mappings":"yOAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,ICF5DG,EAAU,KACrB,MAAQC,SAAUC,GAAQJ,KAClBK,OAAQC,GAAcV,IAe9B,OAbAW,EAAAA,UAAU,WACR,IAAKH,IAAQE,EAAW,OAExB,MAAME,GAAO,OAAAC,EAAAH,EAAUI,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBR,EAAIY,kBAEL,CAACZ,EAAKE,IAGF,MCXIW,EAAmBC,EAAAA,oBAAoBC,EAAAA,kBAAgBC,WAAWlB,GAASmB,oEFEjEC,IACrB,MAAMnB,SAAEA,GAAaH,KACduB,EAAWC,GAAgBC,EAAAA,SAASC,EAAAA,qBAAqBC,WAgBhE,OAdApB,EAAAA,UAAU,KACR,IAAKJ,EAAU,OAEf,MAAMyB,EAAQzB,EAAS0B,YAAYP,GAMnC,OAHAE,EAAaI,EAAMD,aAGZC,EAAME,gBAAiBC,IAC5BP,EAAaO,MAEd,CAAC5B,EAAUmB,IAEP,CACLnB,UAAU,MAAAA,OAAA,EAAAA,EAAU0B,YAAYP,KAAe,KAC/CC"}
@@ -1,22 +1,24 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
- import { PanPlugin, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
2
+ import { PanPlugin, initialDocumentState, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
3
3
  export * from "@embedpdf/plugin-pan";
4
4
  import "preact";
5
5
  import { useState, useEffect } from "preact/hooks";
6
6
  import { useCapability, usePlugin } from "@embedpdf/core/preact";
7
7
  const usePanPlugin = () => usePlugin(PanPlugin.id);
8
8
  const usePanCapability = () => useCapability(PanPlugin.id);
9
- const usePan = () => {
9
+ const usePan = (documentId) => {
10
10
  const { provides } = usePanCapability();
11
- const [isPanning, setIsPanning] = useState(false);
11
+ const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);
12
12
  useEffect(() => {
13
13
  if (!provides) return;
14
- return provides.onPanModeChange((isPanning2) => {
15
- setIsPanning(isPanning2);
14
+ const scope = provides.forDocument(documentId);
15
+ setIsPanning(scope.isPanMode());
16
+ return scope.onPanModeChange((isPan) => {
17
+ setIsPanning(isPan);
16
18
  });
17
- }, [provides]);
19
+ }, [provides, documentId]);
18
20
  return {
19
- provides,
21
+ provides: (provides == null ? void 0 : provides.forDocument(documentId)) ?? null,
20
22
  isPanning
21
23
  };
22
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onPanModeChange((isPanning) => {\n setIsPanning(isPanning);\n });\n }, [provides]);\n\n return {\n provides,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["isPanning","BasePanPackage"],"mappings":";;;;;;AAIO,MAAM,eAAe,MAAM,UAAqB,UAAU,EAAE;AAC5D,MAAM,mBAAmB,MAAM,cAAyB,UAAU,EAAE;AAEpE,MAAM,SAAS,MAAM;AACpB,QAAA,EAAE,SAAS,IAAI,iBAAiB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,YAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACR,WAAA,SAAS,gBAAgB,CAACA,eAAc;AAC7C,mBAAaA,UAAS;AAAA,IAAA,CACvB;AAAA,EAAA,GACA,CAAC,QAAQ,CAAC;AAEN,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;ACnBO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,UAAU,IAAI,IAAI,iBAAiB;AAC3C,QAAM,EAAE,QAAQ,UAAU,IAAI,aAAa;AAE3C,YAAU,MAAM;;AACV,QAAA,CAAC,OAAO,CAAC,UAAW;AAElB,UAAA,SAAO,eAAU,WAAV,mBAAkB,gBAAe;AAC9C,UAAM,gBACJ,OAAO,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAEvF,QAAA,SAAS,YAAY,eAAe;AACtC,UAAI,eAAe;AAAA,IAAA;AAAA,EACrB,GACC,CAAC,KAAK,SAAS,CAAC;AAGZ,SAAA;AACT;ACZO,MAAM,mBAAmB,oBAAoBC,kBAAc,EAAE,WAAW,OAAO,EAAE,MAAM;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID\n */\nexport const usePan = (documentId: string) => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);\n\n useEffect(() => {\n if (!provides) return;\n\n const scope = provides.forDocument(documentId);\n\n // Get initial state\n setIsPanning(scope.isPanMode());\n\n // Subscribe to pan mode changes\n return scope.onPanModeChange((isPan) => {\n setIsPanning(isPan);\n });\n }, [provides, documentId]);\n\n return {\n provides: provides?.forDocument(documentId) ?? null,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["BasePanPackage"],"mappings":";;;;;;AAIO,MAAM,eAAe,MAAM,UAAqB,UAAU,EAAE;AAC5D,MAAM,mBAAmB,MAAM,cAAyB,UAAU,EAAE;AAMpE,MAAM,SAAS,CAAC,eAAuB;AAC5C,QAAM,EAAE,SAAA,IAAa,iBAAA;AACrB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,qBAAqB,SAAS;AAEzE,YAAU,MAAM;AACd,QAAI,CAAC,SAAU;AAEf,UAAM,QAAQ,SAAS,YAAY,UAAU;AAG7C,iBAAa,MAAM,WAAW;AAG9B,WAAO,MAAM,gBAAgB,CAAC,UAAU;AACtC,mBAAa,KAAK;AAAA,IACpB,CAAC;AAAA,EACH,GAAG,CAAC,UAAU,UAAU,CAAC;AAEzB,SAAO;AAAA,IACL,WAAU,qCAAU,YAAY,gBAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;AC9BO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,UAAU,IAAA,IAAQ,iBAAA;AAC1B,QAAM,EAAE,QAAQ,UAAA,IAAc,aAAA;AAE9B,YAAU,MAAM;;AACd,QAAI,CAAC,OAAO,CAAC,UAAW;AAExB,UAAM,SAAO,eAAU,WAAV,mBAAkB,gBAAe;AAC9C,UAAM,gBACJ,OAAO,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAE3F,QAAI,SAAS,YAAY,eAAe;AACtC,UAAI,eAAA;AAAA,IACN;AAAA,EACF,GAAG,CAAC,KAAK,SAAS,CAAC;AAGnB,SAAO;AACT;ACZO,MAAM,mBAAmB,oBAAoBA,kBAAc,EAAE,WAAW,OAAO,EAAE,MAAA;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),n=require("@embedpdf/plugin-pan"),t=require("react"),r=require("@embedpdf/core/react"),a=()=>r.usePlugin(n.PanPlugin.id),i=()=>r.useCapability(n.PanPlugin.id),o=()=>{const{provides:e}=i(),{plugin:n}=a();return t.useEffect((()=>{var t;if(!e||!n)return;const r=(null==(t=n.config)?void 0:t.defaultMode)??"never",a="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===r&&a&&e.makePanDefault()}),[e,n]),null},u=e.createPluginPackage(n.PanPluginPackage).addUtility(o).build();exports.PanMode=o,exports.PanPluginPackage=u,exports.usePan=()=>{const{provides:e}=i(),[n,r]=t.useState(!1);return t.useEffect((()=>{if(e)return e.onPanModeChange((e=>{r(e)}))}),[e]),{provides:e,isPanning:n}},exports.usePanCapability=i,exports.usePanPlugin=a,Object.keys(n).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),n=require("@embedpdf/plugin-pan"),t=require("react"),r=require("@embedpdf/core/react"),o=()=>r.usePlugin(n.PanPlugin.id),i=()=>r.useCapability(n.PanPlugin.id),a=()=>{const{provides:e}=i(),{plugin:n}=o();return t.useEffect(()=>{var t;if(!e||!n)return;const r=(null==(t=n.config)?void 0:t.defaultMode)??"never",o="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===r&&o&&e.makePanDefault()},[e,n]),null},u=e.createPluginPackage(n.PanPluginPackage).addUtility(a).build();exports.PanMode=a,exports.PanPluginPackage=u,exports.usePan=e=>{const{provides:r}=i(),[o,a]=t.useState(n.initialDocumentState.isPanMode);return t.useEffect(()=>{if(!r)return;const n=r.forDocument(e);return a(n.isPanMode()),n.onPanModeChange(e=>{a(e)})},[r,e]),{provides:(null==r?void 0:r.forDocument(e))??null,isPanning:o}},exports.usePanCapability=i,exports.usePanPlugin=o,Object.keys(n).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onPanModeChange((isPanning) => {\n setIsPanning(isPanning);\n });\n }, [provides]);\n\n return {\n provides,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","PanMode","provides","pan","plugin","panPlugin","useEffect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","build","isPanning","setIsPanning","useState","onPanModeChange"],"mappings":"yMAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,ICF5DG,EAAU,KACrB,MAAQC,SAAUC,GAAQJ,KAClBK,OAAQC,GAAcV,IAevB,OAbPW,EAAAA,WAAU,WACJ,IAACH,IAAQE,EAAW,OAElB,MAAAE,GAAO,OAAAC,EAAAH,EAAUI,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBR,EAAIY,gBAAe,GAEpB,CAACZ,EAAKE,IAGF,IAAA,ECXIW,EAAmBC,EAAoBA,oBAAAC,EAAcF,kBAAEG,WAAWlB,GAASmB,oEFFlE,KACd,MAAAlB,SAAEA,GAAaH,KACdsB,EAAWC,GAAgBC,EAAAA,UAAS,GASpC,OAPPjB,EAAAA,WAAU,KACR,GAAKJ,EACE,OAAAA,EAASsB,iBAAiBH,IAC/BC,EAAaD,EAAS,GACvB,GACA,CAACnB,IAEG,CACLA,WACAmB,YACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID\n */\nexport const usePan = (documentId: string) => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);\n\n useEffect(() => {\n if (!provides) return;\n\n const scope = provides.forDocument(documentId);\n\n // Get initial state\n setIsPanning(scope.isPanMode());\n\n // Subscribe to pan mode changes\n return scope.onPanModeChange((isPan) => {\n setIsPanning(isPan);\n });\n }, [provides, documentId]);\n\n return {\n provides: provides?.forDocument(documentId) ?? null,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","PanMode","provides","pan","plugin","panPlugin","useEffect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","build","documentId","isPanning","setIsPanning","useState","initialDocumentState","isPanMode","scope","forDocument","onPanModeChange","isPan"],"mappings":"yMAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,ICF5DG,EAAU,KACrB,MAAQC,SAAUC,GAAQJ,KAClBK,OAAQC,GAAcV,IAe9B,OAbAW,EAAAA,UAAU,WACR,IAAKH,IAAQE,EAAW,OAExB,MAAME,GAAO,OAAAC,EAAAH,EAAUI,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBR,EAAIY,kBAEL,CAACZ,EAAKE,IAGF,MCXIW,EAAmBC,EAAAA,oBAAoBC,EAAAA,kBAAgBC,WAAWlB,GAASmB,oEFEjEC,IACrB,MAAMnB,SAAEA,GAAaH,KACduB,EAAWC,GAAgBC,EAAAA,SAASC,EAAAA,qBAAqBC,WAgBhE,OAdApB,EAAAA,UAAU,KACR,IAAKJ,EAAU,OAEf,MAAMyB,EAAQzB,EAAS0B,YAAYP,GAMnC,OAHAE,EAAaI,EAAMD,aAGZC,EAAME,gBAAiBC,IAC5BP,EAAaO,MAEd,CAAC5B,EAAUmB,IAEP,CACLnB,UAAU,MAAAA,OAAA,EAAAA,EAAU0B,YAAYP,KAAe,KAC/CC"}
@@ -1,21 +1,23 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
- import { PanPlugin, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
2
+ import { PanPlugin, initialDocumentState, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
3
3
  export * from "@embedpdf/plugin-pan";
4
4
  import { useState, useEffect } from "react";
5
5
  import { useCapability, usePlugin } from "@embedpdf/core/react";
6
6
  const usePanPlugin = () => usePlugin(PanPlugin.id);
7
7
  const usePanCapability = () => useCapability(PanPlugin.id);
8
- const usePan = () => {
8
+ const usePan = (documentId) => {
9
9
  const { provides } = usePanCapability();
10
- const [isPanning, setIsPanning] = useState(false);
10
+ const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);
11
11
  useEffect(() => {
12
12
  if (!provides) return;
13
- return provides.onPanModeChange((isPanning2) => {
14
- setIsPanning(isPanning2);
13
+ const scope = provides.forDocument(documentId);
14
+ setIsPanning(scope.isPanMode());
15
+ return scope.onPanModeChange((isPan) => {
16
+ setIsPanning(isPan);
15
17
  });
16
- }, [provides]);
18
+ }, [provides, documentId]);
17
19
  return {
18
- provides,
20
+ provides: (provides == null ? void 0 : provides.forDocument(documentId)) ?? null,
19
21
  isPanning
20
22
  };
21
23
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(false);\n\n useEffect(() => {\n if (!provides) return;\n return provides.onPanModeChange((isPanning) => {\n setIsPanning(isPanning);\n });\n }, [provides]);\n\n return {\n provides,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["isPanning","BasePanPackage"],"mappings":";;;;;AAIO,MAAM,eAAe,MAAM,UAAqB,UAAU,EAAE;AAC5D,MAAM,mBAAmB,MAAM,cAAyB,UAAU,EAAE;AAEpE,MAAM,SAAS,MAAM;AACpB,QAAA,EAAE,SAAS,IAAI,iBAAiB;AACtC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,YAAU,MAAM;AACd,QAAI,CAAC,SAAU;AACR,WAAA,SAAS,gBAAgB,CAACA,eAAc;AAC7C,mBAAaA,UAAS;AAAA,IAAA,CACvB;AAAA,EAAA,GACA,CAAC,QAAQ,CAAC;AAEN,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;ACnBO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,UAAU,IAAI,IAAI,iBAAiB;AAC3C,QAAM,EAAE,QAAQ,UAAU,IAAI,aAAa;AAE3C,YAAU,MAAM;;AACV,QAAA,CAAC,OAAO,CAAC,UAAW;AAElB,UAAA,SAAO,eAAU,WAAV,mBAAkB,gBAAe;AAC9C,UAAM,gBACJ,OAAO,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAEvF,QAAA,SAAS,YAAY,eAAe;AACtC,UAAI,eAAe;AAAA,IAAA;AAAA,EACrB,GACC,CAAC,KAAK,SAAS,CAAC;AAGZ,SAAA;AACT;ACZO,MAAM,mBAAmB,oBAAoBC,kBAAc,EAAE,WAAW,OAAO,EAAE,MAAM;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-pan.ts","../../src/shared/components/pan-mode.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\nimport { useEffect, useState } from '@framework';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID\n */\nexport const usePan = (documentId: string) => {\n const { provides } = usePanCapability();\n const [isPanning, setIsPanning] = useState(initialDocumentState.isPanMode);\n\n useEffect(() => {\n if (!provides) return;\n\n const scope = provides.forDocument(documentId);\n\n // Get initial state\n setIsPanning(scope.isPanMode());\n\n // Subscribe to pan mode changes\n return scope.onPanModeChange((isPan) => {\n setIsPanning(isPan);\n });\n }, [provides, documentId]);\n\n return {\n provides: provides?.forDocument(documentId) ?? null,\n isPanning,\n };\n};\n","import { useEffect } from '@framework';\nimport { usePanCapability, usePanPlugin } from '../hooks';\n\nexport const PanMode = () => {\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n useEffect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n }, [pan, panPlugin]);\n\n // This component is only used to make the pan mode default when the plugin is initialized.\n return null;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["BasePanPackage"],"mappings":";;;;;AAIO,MAAM,eAAe,MAAM,UAAqB,UAAU,EAAE;AAC5D,MAAM,mBAAmB,MAAM,cAAyB,UAAU,EAAE;AAMpE,MAAM,SAAS,CAAC,eAAuB;AAC5C,QAAM,EAAE,SAAA,IAAa,iBAAA;AACrB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,qBAAqB,SAAS;AAEzE,YAAU,MAAM;AACd,QAAI,CAAC,SAAU;AAEf,UAAM,QAAQ,SAAS,YAAY,UAAU;AAG7C,iBAAa,MAAM,WAAW;AAG9B,WAAO,MAAM,gBAAgB,CAAC,UAAU;AACtC,mBAAa,KAAK;AAAA,IACpB,CAAC;AAAA,EACH,GAAG,CAAC,UAAU,UAAU,CAAC;AAEzB,SAAO;AAAA,IACL,WAAU,qCAAU,YAAY,gBAAe;AAAA,IAC/C;AAAA,EAAA;AAEJ;AC9BO,MAAM,UAAU,MAAM;AAC3B,QAAM,EAAE,UAAU,IAAA,IAAQ,iBAAA;AAC1B,QAAM,EAAE,QAAQ,UAAA,IAAc,aAAA;AAE9B,YAAU,MAAM;;AACd,QAAI,CAAC,OAAO,CAAC,UAAW;AAExB,UAAM,SAAO,eAAU,WAAV,mBAAkB,gBAAe;AAC9C,UAAM,gBACJ,OAAO,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAE3F,QAAI,SAAS,YAAY,eAAe;AACtC,UAAI,eAAA;AAAA,IACN;AAAA,EACF,GAAG,CAAC,KAAK,SAAS,CAAC;AAGnB,SAAO;AACT;ACZO,MAAM,mBAAmB,oBAAoBA,kBAAc,EAAE,WAAW,OAAO,EAAE,MAAA;"}
@@ -9,7 +9,11 @@ export declare const usePanCapability: () => {
9
9
  isLoading: boolean;
10
10
  ready: Promise<void>;
11
11
  };
12
- export declare const usePan: () => {
13
- provides: Readonly<import('../../index.ts').PanCapability> | null;
12
+ /**
13
+ * Hook for pan state for a specific document
14
+ * @param documentId Document ID
15
+ */
16
+ export declare const usePan: (documentId: string) => {
17
+ provides: import('../../index.ts').PanScope | null;
14
18
  isPanning: boolean;
15
19
  };
@@ -1,4 +1,4 @@
1
1
  export * from './hooks';
2
2
  export * from './components';
3
3
  export * from '../index.ts';
4
- export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../index.ts').PanPlugin, import('../index.ts').PanPluginConfig, unknown, import('@embedpdf/core').Action>>;
4
+ export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../index.ts').PanPlugin, import('../index.ts').PanPluginConfig, import('../index.ts').PanState, import('../index.ts').PanAction>>;
@@ -9,7 +9,11 @@ export declare const usePanCapability: () => {
9
9
  isLoading: boolean;
10
10
  ready: Promise<void>;
11
11
  };
12
- export declare const usePan: () => {
13
- provides: Readonly<import('../../lib/index.ts').PanCapability> | null;
12
+ /**
13
+ * Hook for pan state for a specific document
14
+ * @param documentId Document ID
15
+ */
16
+ export declare const usePan: (documentId: string) => {
17
+ provides: import('../../lib/index.ts').PanScope | null;
14
18
  isPanning: boolean;
15
19
  };
@@ -1,4 +1,4 @@
1
1
  export * from './hooks';
2
2
  export * from './components';
3
3
  export * from '../lib/index.ts';
4
- export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, unknown, import('@embedpdf/core').Action>>;
4
+ export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, import('../lib/index.ts').PanState, import('../lib/index.ts').PanAction>>;
@@ -9,7 +9,11 @@ export declare const usePanCapability: () => {
9
9
  isLoading: boolean;
10
10
  ready: Promise<void>;
11
11
  };
12
- export declare const usePan: () => {
13
- provides: Readonly<import('../../lib/index.ts').PanCapability> | null;
12
+ /**
13
+ * Hook for pan state for a specific document
14
+ * @param documentId Document ID
15
+ */
16
+ export declare const usePan: (documentId: string) => {
17
+ provides: import('../../lib/index.ts').PanScope | null;
14
18
  isPanning: boolean;
15
19
  };
@@ -1,4 +1,4 @@
1
1
  export * from './hooks';
2
2
  export * from './components';
3
3
  export * from '../lib/index.ts';
4
- export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, unknown, import('@embedpdf/core').Action>>;
4
+ export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, import('../lib/index.ts').PanState, import('../lib/index.ts').PanAction>>;
@@ -1,4 +1,4 @@
1
- import { PanPlugin } from '../../lib/index.ts';
1
+ import { PanPlugin, PanScope } from '../../lib/index.ts';
2
2
  export declare const usePanPlugin: () => {
3
3
  plugin: PanPlugin | null;
4
4
  isLoading: boolean;
@@ -9,7 +9,13 @@ export declare const usePanCapability: () => {
9
9
  isLoading: boolean;
10
10
  ready: Promise<void>;
11
11
  };
12
- export declare const usePan: () => {
13
- readonly provides: Readonly<import('../../lib/index.ts').PanCapability> | null;
12
+ interface UsePanReturn {
13
+ provides: PanScope | null;
14
14
  isPanning: boolean;
15
- };
15
+ }
16
+ /**
17
+ * Hook for pan state for a specific document
18
+ * @param getDocumentId Function that returns the document ID
19
+ */
20
+ export declare const usePan: (getDocumentId: () => string | null) => UsePanReturn;
21
+ export {};
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-pan");require("svelte/internal/disclose-version");const n=require("svelte/internal/client"),r=require("@embedpdf/core/svelte");function o(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}const i=o(n),a=()=>r.usePlugin(t.PanPlugin.id),u=()=>r.useCapability(t.PanPlugin.id);function s(e,t){i.push(t,!0);const{provides:n}=u(),{plugin:r}=a();i.user_effect((()=>{var e;if(!n||!r)return;const t=(null==(e=r.config)?void 0:e.defaultMode)??"never",o="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===t&&o&&n.makePanDefault()})),i.pop()}const l=e.createPluginPackage(t.PanPluginPackage).addUtility(s).build();exports.PanMode=s,exports.PanPluginPackage=l,exports.usePan=()=>{const e=u(),t=i.proxy({get provides(){return e.provides},isPanning:!1});return i.user_effect((()=>{if(e.provides)return e.provides.onPanModeChange((e=>{t.isPanning=e}))})),t},exports.usePanCapability=u,exports.usePanPlugin=a,Object.keys(t).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-pan");require("svelte/internal/disclose-version");const n=require("svelte/internal/client"),r=require("@embedpdf/core/svelte");function o(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}const i=o(n),a=()=>r.usePlugin(t.PanPlugin.id),s=()=>r.useCapability(t.PanPlugin.id);function u(e,t){i.push(t,!0);const{provides:n}=s(),{plugin:r}=a();i.user_effect(()=>{var e;if(!n||!r)return;const t=(null==(e=r.config)?void 0:e.defaultMode)??"never",o="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===t&&o&&n.makePanDefault()}),i.pop()}const c=e.createPluginPackage(t.PanPluginPackage).addUtility(u).build();exports.PanMode=u,exports.PanPluginPackage=c,exports.usePan=e=>{const n=s();let r=i.state(i.proxy(t.initialDocumentState.isPanMode));const o=i.derived(e),a=i.derived(()=>n.provides&&i.get(o)?n.provides.forDocument(i.get(o)):null);return i.user_effect(()=>{const e=n.provides,a=i.get(o);if(!e||!a)return void i.set(r,t.initialDocumentState.isPanMode,!0);const s=e.forDocument(a);return i.set(r,s.isPanMode(),!0),s.onPanModeChange(e=>{i.set(r,e,!0)})}),{get provides(){return i.get(a)},get isPanning(){return i.get(r)}}},exports.usePanCapability=s,exports.usePanPlugin=a,Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-pan.svelte.ts","../../src/svelte/components/PanMode.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const capability = usePanCapability();\n\n const state = $state({\n get provides() {\n return capability.provides;\n },\n isPanning: false,\n });\n\n $effect(() => {\n if (!capability.provides) return;\n return capability.provides.onPanModeChange((isPanningState) => {\n state.isPanning = isPanningState;\n });\n });\n\n return state;\n};\n","<script lang=\"ts\">\n import { usePanCapability, usePanPlugin } from '../hooks';\n\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n $effect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n });\n</script>\n\n<!-- This component is only used to make the pan mode default when the plugin is initialized. -->\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","provides","pan","plugin","panPlugin","$","user_effect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","PanMode","build","capability","state","isPanning","onPanModeChange","isPanningState"],"mappings":"qiBAGaA,EAAqB,IAAAC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAyB,IAAAC,gBAAyBH,EAAAA,UAAUC,uCCD/DG,SAAUC,GAAQH,KAClBI,OAAQC,GAAcT,IAE9BU,EAAAC,aAAc,WACP,IAAAJ,IAAQE,EAAS,OAEhB,MAAAG,GAAO,OAAAC,EAAAJ,EAAUK,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBT,EAAIa,gBACN,WAEJ,CCRO,MAAMC,EAAmBC,EAAoBA,oBAAAC,EAAcF,kBAAEG,WAAWC,GAASC,yEFFhF,MAAAC,EAAavB,IAEbwB,WACA,YAAAtB,GACK,OAAAqB,EAAWrB,QACpB,EACAuB,WAAW,IAUN,OAPPnB,EAAAC,kBACO,GAAAgB,EAAWrB,SACT,OAAAqB,EAAWrB,SAASwB,iBAAiBC,IAC1CH,EAAMC,UAAYE,CAAA,GACnB,IAGIH,CAAA"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-pan.svelte.ts","../../src/svelte/components/PanMode.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { PanPlugin, initialDocumentState, PanScope } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n// Define the return type explicitly to maintain type safety\ninterface UsePanReturn {\n provides: PanScope | null;\n isPanning: boolean;\n}\n\n/**\n * Hook for pan state for a specific document\n * @param getDocumentId Function that returns the document ID\n */\nexport const usePan = (getDocumentId: () => string | null): UsePanReturn => {\n const capability = usePanCapability();\n\n let isPanning = $state(initialDocumentState.isPanMode);\n\n // Reactive documentId\n const documentId = $derived(getDocumentId());\n\n // Scoped capability for current docId\n const scopedProvides = $derived(\n capability.provides && documentId ? capability.provides.forDocument(documentId) : null,\n );\n\n $effect(() => {\n const provides = capability.provides;\n const docId = documentId;\n\n if (!provides || !docId) {\n isPanning = initialDocumentState.isPanMode;\n return;\n }\n\n const scope = provides.forDocument(docId);\n\n // Set initial state\n isPanning = scope.isPanMode();\n\n // Subscribe to pan mode changes for this document\n return scope.onPanModeChange((isPan) => {\n isPanning = isPan;\n });\n });\n\n return {\n get provides() {\n return scopedProvides;\n },\n get isPanning() {\n return isPanning;\n },\n };\n};\n","<script lang=\"ts\">\n import { usePanCapability, usePanPlugin } from '../hooks';\n\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n $effect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n });\n</script>\n\n<!-- This component is only used to make the pan mode default when the plugin is initialized. -->\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","provides","pan","plugin","panPlugin","$","user_effect","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","PanMode","build","getDocumentId","capability","isPanning","state","proxy","initialDocumentState","isPanMode","documentId","scopedProvides","derived","forDocument","docId","scope","onPanModeChange","isPan","set"],"mappings":"qiBAGaA,EAAA,IAAqBC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAA,IAAyBC,gBAAyBH,EAAAA,UAAUC,uCCD/DG,SAAUC,GAAQH,KAClBI,OAAQC,GAAcT,IAE9BU,EAAAC,YAAO,WACA,IAAAJ,IAAQE,EAAS,OAEhB,MAAAG,GAAO,OAAAC,EAAAJ,EAAUK,aAAV,EAAAD,EAAkBE,cAAe,QACxCC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBT,EAAIa,0BAGV,CCRO,MAAMC,EAAmBC,EAAAA,oBAAoBC,EAAAA,kBAAgBC,WAAWC,GAASC,oEFOjEC,IACf,MAAAC,EAAaxB,QAEfyB,EAAAnB,EAAAoB,MAAApB,EAAAqB,MAAmBC,EAAAA,qBAAqBC,YAGtC,MAAAC,YAAsBP,GAGtBQ,EAAAzB,EAAA0B,QAAA,IACJR,EAAWtB,gBAAY4B,GAAaN,EAAWtB,SAAS+B,kBAAYH,IAAc,aAGpFxB,EAAAC,uBACQL,EAAWsB,EAAWtB,SACtBgC,QAAQJ,OAET5B,IAAagC,oBAChBT,EAAYG,EAAAA,qBAAqBC,WAAA,GAI7B,MAAAM,EAAQjC,EAAS+B,YAAYC,GAM5B,aAHPT,EAAYU,EAAMN,aAAA,GAGXM,EAAMC,gBAAiBC,IAC5B/B,EAAAgC,IAAAb,EAAYY,GAAA,QAKV,YAAAnC,gBACK6B,EACT,EACI,aAAAN,gBACKA,EACT"}
@@ -1,4 +1,4 @@
1
1
  export * from './hooks';
2
2
  export * from './components';
3
3
  export * from '../lib/index.ts';
4
- export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, unknown, import('@embedpdf/core').Action>>;
4
+ export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, import('../lib/index.ts').PanState, import('../lib/index.ts').PanAction>>;
@@ -1,26 +1,37 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
- import { PanPlugin, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
2
+ import { PanPlugin, initialDocumentState, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
3
3
  export * from "@embedpdf/plugin-pan";
4
4
  import "svelte/internal/disclose-version";
5
5
  import * as $ from "svelte/internal/client";
6
6
  import { useCapability, usePlugin } from "@embedpdf/core/svelte";
7
7
  const usePanPlugin = () => usePlugin(PanPlugin.id);
8
8
  const usePanCapability = () => useCapability(PanPlugin.id);
9
- const usePan = () => {
9
+ const usePan = (getDocumentId) => {
10
10
  const capability = usePanCapability();
11
- const state = $.proxy({
12
- get provides() {
13
- return capability.provides;
14
- },
15
- isPanning: false
16
- });
11
+ let isPanning = $.state($.proxy(initialDocumentState.isPanMode));
12
+ const documentId = $.derived(getDocumentId);
13
+ const scopedProvides = $.derived(() => capability.provides && $.get(documentId) ? capability.provides.forDocument($.get(documentId)) : null);
17
14
  $.user_effect(() => {
18
- if (!capability.provides) return;
19
- return capability.provides.onPanModeChange((isPanningState) => {
20
- state.isPanning = isPanningState;
15
+ const provides = capability.provides;
16
+ const docId = $.get(documentId);
17
+ if (!provides || !docId) {
18
+ $.set(isPanning, initialDocumentState.isPanMode, true);
19
+ return;
20
+ }
21
+ const scope = provides.forDocument(docId);
22
+ $.set(isPanning, scope.isPanMode(), true);
23
+ return scope.onPanModeChange((isPan) => {
24
+ $.set(isPanning, isPan, true);
21
25
  });
22
26
  });
23
- return state;
27
+ return {
28
+ get provides() {
29
+ return $.get(scopedProvides);
30
+ },
31
+ get isPanning() {
32
+ return $.get(isPanning);
33
+ }
34
+ };
24
35
  };
25
36
  function PanMode($$anchor, $$props) {
26
37
  $.push($$props, true);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-pan.svelte.ts","../../src/svelte/components/PanMode.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const capability = usePanCapability();\n\n const state = $state({\n get provides() {\n return capability.provides;\n },\n isPanning: false,\n });\n\n $effect(() => {\n if (!capability.provides) return;\n return capability.provides.onPanModeChange((isPanningState) => {\n state.isPanning = isPanningState;\n });\n });\n\n return state;\n};\n","<script lang=\"ts\">\n import { usePanCapability, usePanPlugin } from '../hooks';\n\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n $effect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n });\n</script>\n\n<!-- This component is only used to make the pan mode default when the plugin is initialized. -->\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["BasePanPackage"],"mappings":";;;;;;AAGa,MAAA,eAAqB,MAAA,UAAqB,UAAU,EAAE;AACtD,MAAA,mBAAyB,MAAA,cAAyB,UAAU,EAAE;AAE9D,MAAA,eAAe;AACpB,QAAA,aAAa,iBAAiB;QAE9B;IACA,IAAA,WAAW;AACN,aAAA,WAAW;AAAA,IACpB;AAAA,IACA,WAAW;AAAA;AAGb,IAAA,kBAAc;AACP,QAAA,CAAA,WAAW,SAAU;AACnB,WAAA,WAAW,SAAS,gBAAiB,CAAA,mBAAmB;AAC7D,YAAM,YAAY;AAAA,KACnB;AAAA,GACF;SAEM;AACT;oCCxBA;;UAGU,UAAU,IAAG,IAAK,iBAAgB;UAClC,QAAQ,UAAS,IAAK,aAAY;AAE1C,IAAA,YAAc,MAAA;;AACP,QAAA,CAAA,QAAQ,UAAS;AAEhB,UAAA,SAAO,eAAU,WAAV,mBAAkB,gBAAe;AACxC,UAAA,gBACG,OAAA,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAEvF,QAAA,SAAS,YAAY,eAAe;AACtC,UAAI,eAAc;AAAA,IACpB;AAAA,GACD;;AACH;ACRO,MAAM,mBAAmB,oBAAoBA,kBAAc,EAAE,WAAW,OAAO,EAAE,MAAM;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-pan.svelte.ts","../../src/svelte/components/PanMode.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { PanPlugin, initialDocumentState, PanScope } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n// Define the return type explicitly to maintain type safety\ninterface UsePanReturn {\n provides: PanScope | null;\n isPanning: boolean;\n}\n\n/**\n * Hook for pan state for a specific document\n * @param getDocumentId Function that returns the document ID\n */\nexport const usePan = (getDocumentId: () => string | null): UsePanReturn => {\n const capability = usePanCapability();\n\n let isPanning = $state(initialDocumentState.isPanMode);\n\n // Reactive documentId\n const documentId = $derived(getDocumentId());\n\n // Scoped capability for current docId\n const scopedProvides = $derived(\n capability.provides && documentId ? capability.provides.forDocument(documentId) : null,\n );\n\n $effect(() => {\n const provides = capability.provides;\n const docId = documentId;\n\n if (!provides || !docId) {\n isPanning = initialDocumentState.isPanMode;\n return;\n }\n\n const scope = provides.forDocument(docId);\n\n // Set initial state\n isPanning = scope.isPanMode();\n\n // Subscribe to pan mode changes for this document\n return scope.onPanModeChange((isPan) => {\n isPanning = isPan;\n });\n });\n\n return {\n get provides() {\n return scopedProvides;\n },\n get isPanning() {\n return isPanning;\n },\n };\n};\n","<script lang=\"ts\">\n import { usePanCapability, usePanPlugin } from '../hooks';\n\n const { provides: pan } = usePanCapability();\n const { plugin: panPlugin } = usePanPlugin();\n\n $effect(() => {\n if (!pan || !panPlugin) return;\n\n const mode = panPlugin.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.makePanDefault();\n }\n });\n</script>\n\n<!-- This component is only used to make the pan mode default when the plugin is initialized. -->\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\n\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["BasePanPackage"],"mappings":";;;;;;AAGa,MAAA,eAAA,MAAqB,UAAqB,UAAU,EAAE;AACtD,MAAA,mBAAA,MAAyB,cAAyB,UAAU,EAAE;MAY9D,SAAA,CAAU,kBAAqD;AACpE,QAAA,aAAa,iBAAA;MAEf,YAAA,EAAA,MAAA,EAAA,MAAmB,qBAAqB,SAAS,CAAA;AAG/C,QAAA,uBAAsB,aAAA;AAGtB,QAAA,iBAAA,EAAA,QAAA,MACJ,WAAW,kBAAY,UAAA,IAAa,WAAW,SAAS,kBAAY,UAAU,CAAA,IAAI,IAAA;AAGpF,IAAA,kBAAc;UACN,WAAW,WAAW;AACtB,UAAA,cAAQ,UAAA;SAET,YAAA,CAAa,OAAO;YACvB,WAAY,qBAAqB,WAAA,IAAA;;IAEnC;AAEM,UAAA,QAAQ,SAAS,YAAY,KAAK;UAGxC,WAAY,MAAM,UAAA,GAAA,IAAA;AAGX,WAAA,MAAM,gBAAA,CAAiB,UAAU;AACtC,QAAA,IAAA,WAAY,OAAA,IAAA;AAAA,IACd,CAAC;AAAA,EACH,CAAC;;IAGK,IAAA,WAAW;mBACN,cAAA;AAAA,IACT;AAAA,IACI,IAAA,YAAY;mBACP,SAAA;AAAA,IACT;AAAA;AAEJ;oCCzDA;;UAGU,UAAU,IAAG,IAAK,iBAAgB;UAClC,QAAQ,UAAS,IAAK,aAAY;AAE1C,IAAA,YAAO,MAAO;;AACP,QAAA,CAAA,QAAQ,UAAS;AAEhB,UAAA,SAAO,eAAU,WAAV,mBAAkB,gBAAe;AACxC,UAAA,gBAAa,OACV,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAEvF,QAAA,SAAS,YAAY,eAAe;AACtC,UAAI,eAAc;AAAA,IACpB;AAAA,EACF,CAAC;;AACH;ACRO,MAAM,mBAAmB,oBAAoBA,kBAAc,EAAE,WAAW,OAAO,EAAE,MAAA;"}
@@ -1,2 +1,3 @@
1
- declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1
+ declare const __VLS_export: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
2
3
  export default _default;
@@ -1,7 +1,12 @@
1
+ import { MaybeRefOrGetter } from 'vue';
1
2
  import { PanPlugin } from '../../lib/index.ts';
2
3
  export declare const usePanPlugin: () => import('@embedpdf/core/vue').PluginState<PanPlugin>;
3
4
  export declare const usePanCapability: () => import('@embedpdf/core/vue').CapabilityState<Readonly<import('../../lib/index.ts').PanCapability>>;
4
- export declare const usePan: () => {
5
- provides: import('vue').Ref<Readonly<import('../../lib/index.ts').PanCapability> | null, Readonly<import('../../lib/index.ts').PanCapability> | null>;
6
- isPanning: import('vue').Ref<boolean, boolean>;
5
+ /**
6
+ * Hook for pan state for a specific document
7
+ * @param documentId Document ID (can be ref, computed, getter, or plain value)
8
+ */
9
+ export declare const usePan: (documentId: MaybeRefOrGetter<string>) => {
10
+ provides: import('vue').ComputedRef<import('../../lib/index.ts').PanScope | null>;
11
+ isPanning: Readonly<import('vue').Ref<boolean, boolean>>;
7
12
  };
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),n=require("@embedpdf/plugin-pan"),a=require("vue"),t=require("@embedpdf/core/vue"),o=()=>t.usePlugin(n.PanPlugin.id),i=()=>t.useCapability(n.PanPlugin.id),r=a.defineComponent({__name:"pan-mode",setup(e){const{provides:n}=i(),{plugin:t}=o();return a.onMounted((()=>{a.watchEffect((()=>{var e;if(!n.value||!t.value)return;const a=(null==(e=t.value.config)?void 0:e.defaultMode)??"never",o="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===a&&o&&n.value.makePanDefault()}))})),(e,n)=>null}}),u=e.createPluginPackage(n.PanPluginPackage).addUtility(r).build();exports.PanMode=r,exports.PanPluginPackage=u,exports.usePan=()=>{const{provides:e}=i(),n=a.ref(!1);return a.watch(e,((e,a,t)=>{if(e){t(e.onPanModeChange((e=>{n.value=e})))}}),{immediate:!0}),{provides:e,isPanning:n}},exports.usePanCapability=i,exports.usePanPlugin=o,Object.keys(n).forEach((e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})}));
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),n=require("@embedpdf/plugin-pan"),t=require("vue"),a=require("@embedpdf/core/vue"),o=()=>a.usePlugin(n.PanPlugin.id),u=()=>a.useCapability(n.PanPlugin.id),i=t.defineComponent({__name:"pan-mode",setup(e){const{provides:n}=u(),{plugin:a}=o();return t.onMounted(()=>{t.watchEffect(()=>{var e;if(!n.value||!a.value)return;const t=(null==(e=a.value.config)?void 0:e.defaultMode)??"never",o="undefined"!=typeof window&&("ontouchstart"in window||navigator.maxTouchPoints>0);"mobile"===t&&o&&n.value.makePanDefault()})}),(e,n)=>null}}),r=e.createPluginPackage(n.PanPluginPackage).addUtility(i).build();exports.PanMode=i,exports.PanPluginPackage=r,exports.usePan=e=>{const{provides:a}=u(),o=t.ref(n.initialDocumentState.isPanMode);t.watch([a,()=>t.toValue(e)],([e,t],a,u)=>{if(!e)return void(o.value=n.initialDocumentState.isPanMode);const i=e.forDocument(t);o.value=i.isPanMode();u(i.onPanModeChange(e=>{o.value=e}))},{immediate:!0});return{provides:t.computed(()=>{var n;const o=t.toValue(e);return(null==(n=a.value)?void 0:n.forDocument(o))??null}),isPanning:t.readonly(o)}},exports.usePanCapability=u,exports.usePanPlugin=o,Object.keys(n).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>n[e]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-pan.ts","../../src/vue/components/pan-mode.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watch } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const { provides } = usePanCapability();\n const isPanning = ref(false);\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (providesValue) {\n const unsubscribe = providesValue.onPanModeChange((panning) => {\n isPanning.value = panning;\n });\n onCleanup(unsubscribe);\n }\n },\n { immediate: true },\n );\n\n return {\n provides,\n isPanning,\n };\n};\n","<template>\n <!-- This component is only used to make the pan mode default when the plugin is initialized -->\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, watchEffect } from 'vue';\nimport { usePanCapability, usePanPlugin } from '../hooks/use-pan';\n\nconst { provides: pan } = usePanCapability();\nconst { plugin: panPlugin } = usePanPlugin();\n\nonMounted(() => {\n watchEffect(() => {\n if (!pan.value || !panPlugin.value) return;\n\n const mode = panPlugin.value.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.value.makePanDefault();\n }\n });\n});\n</script>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","provides","pan","plugin","panPlugin","onMounted","watchEffect","value","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","PanMode","build","isPanning","ref","vue$1","watch","providesValue","_","onCleanup","onPanModeChange","panning","immediate"],"mappings":"qMAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,oDCGzE,MAAQG,SAAUC,GAAQH,KAClBI,OAAQC,GAAcT,WAE9BU,EAAAA,WAAU,KACRC,EAAAA,aAAY,WACV,IAAKJ,EAAIK,QAAUH,EAAUG,MAAO,OAEpC,MAAMC,GAAO,OAAAC,EAAAL,EAAUG,MAAMG,iBAAQC,cAAe,QAC9CC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBV,EAAIK,MAAMS,gBAAe,GAE5B,mBCdUC,EAAmBC,EAAoBA,oBAAAC,EAAcF,kBAAEG,WAAWC,GAASC,oEFDlE,KACd,MAAArB,SAAEA,GAAaF,IACfwB,EAAYC,OAAI,GAef,OAbPC,EAAAC,MACEzB,GACA,CAAC0B,EAAeC,EAAGC,KACjB,GAAIF,EAAe,CAIjBE,EAHoBF,EAAcG,iBAAiBC,IACjDR,EAAUhB,MAAQwB,CAAA,IAEC,IAGzB,CAAEC,WAAW,IAGR,CACL/B,WACAsB,YACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-pan.ts","../../src/vue/components/pan-mode.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID (can be ref, computed, getter, or plain value)\n */\nexport const usePan = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = usePanCapability();\n const isPanning = ref(initialDocumentState.isPanMode);\n\n watch(\n [provides, () => toValue(documentId)],\n ([providesValue, docId], _, onCleanup) => {\n if (!providesValue) {\n isPanning.value = initialDocumentState.isPanMode;\n return;\n }\n\n const scope = providesValue.forDocument(docId);\n\n // Set initial state\n isPanning.value = scope.isPanMode();\n\n // Subscribe to pan mode changes\n const unsubscribe = scope.onPanModeChange((isPan) => {\n isPanning.value = isPan;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n // Return a computed ref for the scoped capability\n const scopedProvides = computed(() => {\n const docId = toValue(documentId);\n return provides.value?.forDocument(docId) ?? null;\n });\n\n return {\n provides: scopedProvides,\n isPanning: readonly(isPanning),\n };\n};\n","<template>\n <!-- This component is only used to make the pan mode default when the plugin is initialized -->\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, watchEffect } from 'vue';\nimport { usePanCapability, usePanPlugin } from '../hooks/use-pan';\n\nconst { provides: pan } = usePanCapability();\nconst { plugin: panPlugin } = usePanPlugin();\n\nonMounted(() => {\n watchEffect(() => {\n if (!pan.value || !panPlugin.value) return;\n\n const mode = panPlugin.value.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.value.makePanDefault();\n }\n });\n});\n</script>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["usePanPlugin","usePlugin","PanPlugin","id","usePanCapability","useCapability","provides","pan","plugin","panPlugin","onMounted","watchEffect","value","mode","_a","config","defaultMode","SUPPORT_TOUCH","window","navigator","maxTouchPoints","makePanDefault","PanPluginPackage","createPluginPackage","BasePanPackage","addUtility","PanMode","build","documentId","isPanning","ref","initialDocumentState","isPanMode","watch","toValue","providesValue","docId","_","onCleanup","scope","forDocument","onPanModeChange","isPan","immediate","computed","readonly"],"mappings":"qMAIaA,EAAe,IAAMC,YAAqBC,EAAAA,UAAUC,IACpDC,EAAmB,IAAMC,gBAAyBH,EAAAA,UAAUC,oDCGzE,MAAQG,SAAUC,GAAQH,KAClBI,OAAQC,GAAcT,WAE9BU,EAAAA,UAAU,KACRC,EAAAA,YAAY,WACV,IAAKJ,EAAIK,QAAUH,EAAUG,MAAO,OAEpC,MAAMC,GAAO,OAAAC,EAAAL,EAAUG,MAAMG,iBAAQC,cAAe,QAC9CC,EACc,oBAAXC,SAA2B,iBAAkBA,QAAUC,UAAUC,eAAiB,GAE9E,WAATP,GAAqBI,GACvBV,EAAIK,MAAMS,oCCZHC,EAAmBC,EAAAA,oBAAoBC,EAAAA,kBAAgBC,WAAWC,GAASC,oEFGjEC,IACrB,MAAMtB,SAAEA,GAAaF,IACfyB,EAAYC,EAAAA,IAAIC,EAAAA,qBAAqBC,WAE3CC,EAAAA,MACE,CAAC3B,EAAU,IAAM4B,UAAQN,IACzB,EAAEO,EAAeC,GAAQC,EAAGC,KAC1B,IAAKH,EAEH,YADAN,EAAUjB,MAAQmB,EAAAA,qBAAqBC,WAIzC,MAAMO,EAAQJ,EAAcK,YAAYJ,GAGxCP,EAAUjB,MAAQ2B,EAAMP,YAOxBM,EAJoBC,EAAME,gBAAiBC,IACzCb,EAAUjB,MAAQ8B,MAKtB,CAAEC,WAAW,IASf,MAAO,CACLrC,SANqBsC,EAAAA,SAAS,WAC9B,MAAMR,EAAQF,EAAAA,QAAQN,GACtB,OAAO,OAAAd,EAAAR,EAASM,YAAT,EAAAE,EAAgB0B,YAAYJ,KAAU,OAK7CP,UAAWgB,EAAAA,SAAShB"}
@@ -1,4 +1,4 @@
1
1
  export * from './hooks';
2
2
  export * from './components';
3
3
  export * from '../lib/index.ts';
4
- export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, unknown, import('@embedpdf/core').Action>>;
4
+ export declare const PanPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').PanPlugin, import('../lib/index.ts').PanPluginConfig, import('../lib/index.ts').PanState, import('../lib/index.ts').PanAction>>;
package/dist/vue/index.js CHANGED
@@ -1,28 +1,37 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
- import { PanPlugin, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
2
+ import { PanPlugin, initialDocumentState, PanPluginPackage as PanPluginPackage$1 } from "@embedpdf/plugin-pan";
3
3
  export * from "@embedpdf/plugin-pan";
4
- import { ref, watch, defineComponent, onMounted, watchEffect } from "vue";
4
+ import { ref, watch, toValue, computed, readonly, defineComponent, onMounted, watchEffect } from "vue";
5
5
  import { useCapability, usePlugin } from "@embedpdf/core/vue";
6
6
  const usePanPlugin = () => usePlugin(PanPlugin.id);
7
7
  const usePanCapability = () => useCapability(PanPlugin.id);
8
- const usePan = () => {
8
+ const usePan = (documentId) => {
9
9
  const { provides } = usePanCapability();
10
- const isPanning = ref(false);
10
+ const isPanning = ref(initialDocumentState.isPanMode);
11
11
  watch(
12
- provides,
13
- (providesValue, _, onCleanup) => {
14
- if (providesValue) {
15
- const unsubscribe = providesValue.onPanModeChange((panning) => {
16
- isPanning.value = panning;
17
- });
18
- onCleanup(unsubscribe);
12
+ [provides, () => toValue(documentId)],
13
+ ([providesValue, docId], _, onCleanup) => {
14
+ if (!providesValue) {
15
+ isPanning.value = initialDocumentState.isPanMode;
16
+ return;
19
17
  }
18
+ const scope = providesValue.forDocument(docId);
19
+ isPanning.value = scope.isPanMode();
20
+ const unsubscribe = scope.onPanModeChange((isPan) => {
21
+ isPanning.value = isPan;
22
+ });
23
+ onCleanup(unsubscribe);
20
24
  },
21
25
  { immediate: true }
22
26
  );
27
+ const scopedProvides = computed(() => {
28
+ var _a;
29
+ const docId = toValue(documentId);
30
+ return ((_a = provides.value) == null ? void 0 : _a.forDocument(docId)) ?? null;
31
+ });
23
32
  return {
24
- provides,
25
- isPanning
33
+ provides: scopedProvides,
34
+ isPanning: readonly(isPanning)
26
35
  };
27
36
  };
28
37
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-pan.ts","../../src/vue/components/pan-mode.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watch } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { PanPlugin } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\nexport const usePan = () => {\n const { provides } = usePanCapability();\n const isPanning = ref(false);\n\n watch(\n provides,\n (providesValue, _, onCleanup) => {\n if (providesValue) {\n const unsubscribe = providesValue.onPanModeChange((panning) => {\n isPanning.value = panning;\n });\n onCleanup(unsubscribe);\n }\n },\n { immediate: true },\n );\n\n return {\n provides,\n isPanning,\n };\n};\n","<template>\n <!-- This component is only used to make the pan mode default when the plugin is initialized -->\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, watchEffect } from 'vue';\nimport { usePanCapability, usePanPlugin } from '../hooks/use-pan';\n\nconst { provides: pan } = usePanCapability();\nconst { plugin: panPlugin } = usePanPlugin();\n\nonMounted(() => {\n watchEffect(() => {\n if (!pan.value || !panPlugin.value) return;\n\n const mode = panPlugin.value.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.value.makePanDefault();\n }\n });\n});\n</script>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["BasePanPackage","PanMode"],"mappings":";;;;;AAIO,MAAM,eAAe,MAAM,UAAqB,UAAU,EAAE;AAC5D,MAAM,mBAAmB,MAAM,cAAyB,UAAU,EAAE;AAEpE,MAAM,SAAS,MAAM;AACpB,QAAA,EAAE,SAAS,IAAI,iBAAiB;AAChC,QAAA,YAAY,IAAI,KAAK;AAE3B;AAAA,IACE;AAAA,IACA,CAAC,eAAe,GAAG,cAAc;AAC/B,UAAI,eAAe;AACjB,cAAM,cAAc,cAAc,gBAAgB,CAAC,YAAY;AAC7D,oBAAU,QAAQ;AAAA,QAAA,CACnB;AACD,kBAAU,WAAW;AAAA,MAAA;AAAA,IAEzB;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;;ACpBA,UAAM,EAAE,UAAU,IAAI,IAAI,iBAAiB;AAC3C,UAAM,EAAE,QAAQ,UAAU,IAAI,aAAa;AAE3C,cAAU,MAAM;AACd,kBAAY,MAAM;;AAChB,YAAI,CAAC,IAAI,SAAS,CAAC,UAAU,MAAO;AAEpC,cAAM,SAAO,eAAU,MAAM,WAAhB,mBAAwB,gBAAe;AACpD,cAAM,gBACJ,OAAO,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAEvF,YAAA,SAAS,YAAY,eAAe;AACtC,cAAI,MAAM,eAAe;AAAA,QAAA;AAAA,MAC3B,CACD;AAAA,IAAA,CACF;;;;;;ACfM,MAAM,mBAAmB,oBAAoBA,kBAAc,EAAE,WAAWC,SAAO,EAAE,MAAM;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-pan.ts","../../src/vue/components/pan-mode.vue","../../src/vue/index.ts"],"sourcesContent":["import { ref, watch, computed, readonly, toValue, MaybeRefOrGetter } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { PanPlugin, initialDocumentState } from '@embedpdf/plugin-pan';\n\nexport const usePanPlugin = () => usePlugin<PanPlugin>(PanPlugin.id);\nexport const usePanCapability = () => useCapability<PanPlugin>(PanPlugin.id);\n\n/**\n * Hook for pan state for a specific document\n * @param documentId Document ID (can be ref, computed, getter, or plain value)\n */\nexport const usePan = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = usePanCapability();\n const isPanning = ref(initialDocumentState.isPanMode);\n\n watch(\n [provides, () => toValue(documentId)],\n ([providesValue, docId], _, onCleanup) => {\n if (!providesValue) {\n isPanning.value = initialDocumentState.isPanMode;\n return;\n }\n\n const scope = providesValue.forDocument(docId);\n\n // Set initial state\n isPanning.value = scope.isPanMode();\n\n // Subscribe to pan mode changes\n const unsubscribe = scope.onPanModeChange((isPan) => {\n isPanning.value = isPan;\n });\n\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n // Return a computed ref for the scoped capability\n const scopedProvides = computed(() => {\n const docId = toValue(documentId);\n return provides.value?.forDocument(docId) ?? null;\n });\n\n return {\n provides: scopedProvides,\n isPanning: readonly(isPanning),\n };\n};\n","<template>\n <!-- This component is only used to make the pan mode default when the plugin is initialized -->\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, watchEffect } from 'vue';\nimport { usePanCapability, usePanPlugin } from '../hooks/use-pan';\n\nconst { provides: pan } = usePanCapability();\nconst { plugin: panPlugin } = usePanPlugin();\n\nonMounted(() => {\n watchEffect(() => {\n if (!pan.value || !panPlugin.value) return;\n\n const mode = panPlugin.value.config?.defaultMode ?? 'never';\n const SUPPORT_TOUCH =\n typeof window !== 'undefined' && ('ontouchstart' in window || navigator.maxTouchPoints > 0);\n\n if (mode === 'mobile' && SUPPORT_TOUCH) {\n pan.value.makePanDefault();\n }\n });\n});\n</script>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { PanPluginPackage as BasePanPackage } from '@embedpdf/plugin-pan';\nimport { PanMode } from './components';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-pan';\n\nexport const PanPluginPackage = createPluginPackage(BasePanPackage).addUtility(PanMode).build();\n"],"names":["BasePanPackage","PanMode"],"mappings":";;;;;AAIO,MAAM,eAAe,MAAM,UAAqB,UAAU,EAAE;AAC5D,MAAM,mBAAmB,MAAM,cAAyB,UAAU,EAAE;AAMpE,MAAM,SAAS,CAAC,eAAyC;AAC9D,QAAM,EAAE,SAAA,IAAa,iBAAA;AACrB,QAAM,YAAY,IAAI,qBAAqB,SAAS;AAEpD;AAAA,IACE,CAAC,UAAU,MAAM,QAAQ,UAAU,CAAC;AAAA,IACpC,CAAC,CAAC,eAAe,KAAK,GAAG,GAAG,cAAc;AACxC,UAAI,CAAC,eAAe;AAClB,kBAAU,QAAQ,qBAAqB;AACvC;AAAA,MACF;AAEA,YAAM,QAAQ,cAAc,YAAY,KAAK;AAG7C,gBAAU,QAAQ,MAAM,UAAA;AAGxB,YAAM,cAAc,MAAM,gBAAgB,CAAC,UAAU;AACnD,kBAAU,QAAQ;AAAA,MACpB,CAAC;AAED,gBAAU,WAAW;AAAA,IACvB;AAAA,IACA,EAAE,WAAW,KAAA;AAAA,EAAK;AAIpB,QAAM,iBAAiB,SAAS,MAAM;;AACpC,UAAM,QAAQ,QAAQ,UAAU;AAChC,aAAO,cAAS,UAAT,mBAAgB,YAAY,WAAU;AAAA,EAC/C,CAAC;AAED,SAAO;AAAA,IACL,UAAU;AAAA,IACV,WAAW,SAAS,SAAS;AAAA,EAAA;AAEjC;;;;ACxCA,UAAM,EAAE,UAAU,IAAA,IAAQ,iBAAA;AAC1B,UAAM,EAAE,QAAQ,UAAA,IAAc,aAAA;AAE9B,cAAU,MAAM;AACd,kBAAY,MAAM;;AAChB,YAAI,CAAC,IAAI,SAAS,CAAC,UAAU,MAAO;AAEpC,cAAM,SAAO,eAAU,MAAM,WAAhB,mBAAwB,gBAAe;AACpD,cAAM,gBACJ,OAAO,WAAW,gBAAgB,kBAAkB,UAAU,UAAU,iBAAiB;AAE3F,YAAI,SAAS,YAAY,eAAe;AACtC,cAAI,MAAM,eAAA;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACH,CAAC;;;;;;ACfM,MAAM,mBAAmB,oBAAoBA,kBAAc,EAAE,WAAWC,SAAO,EAAE,MAAA;"}