@embedpdf/plugin-stamp 2.11.1 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/lib/types.d.ts +1 -6
  2. package/dist/preact/index.cjs +1 -1
  3. package/dist/preact/index.cjs.map +1 -1
  4. package/dist/preact/index.js +3 -34
  5. package/dist/preact/index.js.map +1 -1
  6. package/dist/react/index.cjs +1 -1
  7. package/dist/react/index.cjs.map +1 -1
  8. package/dist/react/index.js +3 -34
  9. package/dist/react/index.js.map +1 -1
  10. package/dist/shared/components/index.d.ts +0 -2
  11. package/dist/shared-preact/components/index.d.ts +0 -2
  12. package/dist/shared-react/components/index.d.ts +0 -2
  13. package/dist/svelte/components/index.d.ts +0 -1
  14. package/dist/svelte/index.cjs +1 -1
  15. package/dist/svelte/index.cjs.map +1 -1
  16. package/dist/svelte/index.js +4 -45
  17. package/dist/svelte/index.js.map +1 -1
  18. package/dist/vue/components/index.d.ts +0 -1
  19. package/dist/vue/index.cjs +1 -1
  20. package/dist/vue/index.cjs.map +1 -1
  21. package/dist/vue/index.js +4 -50
  22. package/dist/vue/index.js.map +1 -1
  23. package/package.json +9 -9
  24. package/dist/shared/components/stamp-preview-renderers.d.ts +0 -2
  25. package/dist/shared/components/stamp-renderer-registration.d.ts +0 -1
  26. package/dist/shared-preact/components/stamp-preview-renderers.d.ts +0 -2
  27. package/dist/shared-preact/components/stamp-renderer-registration.d.ts +0 -1
  28. package/dist/shared-react/components/stamp-preview-renderers.d.ts +0 -2
  29. package/dist/shared-react/components/stamp-renderer-registration.d.ts +0 -1
  30. package/dist/svelte/components/StampPreview.svelte.d.ts +0 -10
  31. package/dist/svelte/components/StampRendererRegistration.svelte.d.ts +0 -18
  32. package/dist/svelte/components/stamp-preview-renderers.d.ts +0 -2
  33. package/dist/vue/components/stamp-preview-renderers.d.ts +0 -2
  34. package/dist/vue/components/stamp-preview.vue.d.ts +0 -10
  35. package/dist/vue/components/stamp-renderer-registration.vue.d.ts +0 -13
@@ -1,10 +1,5 @@
1
1
  import { BasePluginConfig, EventHook } from '@embedpdf/core';
2
- import { PdfAnnotationName, PdfAnnotationObject, PdfDocumentObject, PdfTask, Rect, Rotation } from '@embedpdf/models';
3
- export interface StampPreviewData {
4
- rect: Rect;
5
- ghostUrl: string;
6
- pageRotation: Rotation;
7
- }
2
+ import { PdfAnnotationName, PdfAnnotationObject, PdfDocumentObject, PdfTask, Rotation } from '@embedpdf/models';
8
3
  export interface RubberStampToolContext {
9
4
  appearance: ArrayBuffer;
10
5
  ghostUrl: string;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-stamp"),r=require("@embedpdf/plugin-annotation/preact"),n=require("preact/jsx-runtime"),s=require("@embedpdf/models"),i=require("@embedpdf/core/preact");require("preact");const a=require("preact/hooks"),o=[r.createRenderer({id:"stampPreview",matchesPreview:e=>e.type===s.PdfAnnotationSubtype.STAMP,renderPreview:({data:e})=>{const t=(4-e.pageRotation)%4*90;return n.jsx("img",{src:e.ghostUrl,style:{width:"100%",height:"100%",opacity:.6,objectFit:"contain",pointerEvents:"none",transform:t?`rotate(${t}deg)`:void 0},alt:""})}})];function u(){return r.useRegisterRenderers(o),null}const c=()=>i.useCapability(t.StampPlugin.id);const p=e.createPluginPackage(t.StampPluginPackage).addUtility(u).build();exports.StampImg=function({libraryId:e,pageIndex:t,width:r,dpr:i,style:o,...u}){const{provides:p}=c(),[d,l]=a.useState(),g=a.useRef(null);return a.useEffect(()=>{if(!p)return;const n=p.renderStamp(e,t,r,i??window.devicePixelRatio);return n.wait(e=>{const t=URL.createObjectURL(e);g.current=t,l(t)},s.ignore),()=>{g.current?(URL.revokeObjectURL(g.current),g.current=null):n.abort({code:s.PdfErrorCode.Cancelled,message:"canceled stamp render task"})}},[p,e,t,r,i]),d?n.jsx("img",{src:d,onLoad:()=>{g.current&&(URL.revokeObjectURL(g.current),g.current=null)},style:o,...u}):null},exports.StampPluginPackage=p,exports.StampRendererRegistration=u,exports.stampPreviewRenderers=o,exports.useActiveStamp=e=>{const{provides:t}=c(),[r,n]=a.useState(null);return a.useEffect(()=>{if(!t)return;const r=t.forDocument(e);return n(r.getActiveStamp()),r.onActiveStampChange(n)},[t,e]),r},exports.useStampCapability=c,exports.useStampLibraries=()=>{const{provides:e}=c(),[t,r]=a.useState((null==e?void 0:e.getLibraries())??[]);return a.useEffect(()=>{if(e)return r(e.getLibraries()),e.onLibraryChange(e=>{r(e)})},[e]),{libraries:t,provides:e}},exports.useStampPlugin=()=>i.usePlugin(t.StampPlugin.id),exports.useStampsByCategory=e=>{const{provides:t}=c(),[r,n]=a.useState([]);return a.useEffect(()=>{if(t)return n(t.getStampsByCategory(e)),t.onLibraryChange(()=>{n(t.getStampsByCategory(e))})},[t,e]),r},exports.useStampsByLibrary=(e,t)=>{const{provides:r}=c(),[n,s]=a.useState([]);return a.useEffect(()=>{if(!r)return;const n=()=>{var n,i;const a=r.getLibraries(),o=[];for(const r of a)if(!e||"all"===e||r.id===e)for(const e of r.stamps){if(t){const s=(null==(n=r.categories)?void 0:n.includes(t))??!1,a=(null==(i=e.categories)?void 0:i.includes(t))??!1;if(!s&&!a)continue}o.push({library:r,stamp:e})}s(o)};return n(),r.onLibraryChange(n)},[r,e,t]),n},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"),r=require("@embedpdf/plugin-stamp"),t=require("@embedpdf/core/preact");require("preact");const s=require("preact/hooks"),n=require("preact/jsx-runtime"),a=require("@embedpdf/models"),i=()=>t.useCapability(r.StampPlugin.id);const o=e.createPluginPackage(r.StampPluginPackage).build();exports.StampImg=function({libraryId:e,pageIndex:r,width:t,dpr:o,style:u,...c}){const{provides:p}=i(),[l,d]=s.useState(),f=s.useRef(null);return s.useEffect(()=>{if(!p)return;const s=p.renderStamp(e,r,t,o??window.devicePixelRatio);return s.wait(e=>{const r=URL.createObjectURL(e);f.current=r,d(r)},a.ignore),()=>{f.current?(URL.revokeObjectURL(f.current),f.current=null):s.abort({code:a.PdfErrorCode.Cancelled,message:"canceled stamp render task"})}},[p,e,r,t,o]),l?n.jsx("img",{src:l,onLoad:()=>{f.current&&(URL.revokeObjectURL(f.current),f.current=null)},style:u,...c}):null},exports.StampPluginPackage=o,exports.useActiveStamp=e=>{const{provides:r}=i(),[t,n]=s.useState(null);return s.useEffect(()=>{if(!r)return;const t=r.forDocument(e);return n(t.getActiveStamp()),t.onActiveStampChange(n)},[r,e]),t},exports.useStampCapability=i,exports.useStampLibraries=()=>{const{provides:e}=i(),[r,t]=s.useState((null==e?void 0:e.getLibraries())??[]);return s.useEffect(()=>{if(e)return t(e.getLibraries()),e.onLibraryChange(e=>{t(e)})},[e]),{libraries:r,provides:e}},exports.useStampPlugin=()=>t.usePlugin(r.StampPlugin.id),exports.useStampsByCategory=e=>{const{provides:r}=i(),[t,n]=s.useState([]);return s.useEffect(()=>{if(r)return n(r.getStampsByCategory(e)),r.onLibraryChange(()=>{n(r.getStampsByCategory(e))})},[r,e]),t},exports.useStampsByLibrary=(e,r)=>{const{provides:t}=i(),[n,a]=s.useState([]);return s.useEffect(()=>{if(!t)return;const s=()=>{var s,n;const i=t.getLibraries(),o=[];for(const t of i)if(!e||"all"===e||t.id===e)for(const e of t.stamps){if(r){const a=(null==(s=t.categories)?void 0:s.includes(r))??!1,i=(null==(n=e.categories)?void 0:n.includes(r))??!1;if(!a&&!i)continue}o.push({library:t,stamp:e})}a(o)};return s(),t.onLibraryChange(s)},[t,e,r]),n},Object.keys(r).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/shared/components/stamp-preview-renderers.tsx","../../src/shared/components/stamp-renderer-registration.tsx","../../src/shared/hooks/use-stamp.ts","../../src/shared/index.ts","../../src/shared/components/stamp-img.tsx"],"sourcesContent":["import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport { createRenderer, BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/@framework';\nimport { StampPreviewData } from '@embedpdf/plugin-stamp';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: ({ data }) => {\n const rotationDeg = ((4 - data.pageRotation) % 4) * 90;\n return (\n <img\n src={data.ghostUrl}\n style={{\n width: '100%',\n height: '100%',\n opacity: 0.6,\n objectFit: 'contain' as const,\n pointerEvents: 'none' as const,\n transform: rotationDeg ? `rotate(${rotationDeg}deg)` : undefined,\n }}\n alt=\"\"\n />\n );\n },\n }),\n];\n","import { useRegisterRenderers } from '@embedpdf/plugin-annotation/@framework';\nimport { stampPreviewRenderers } from './stamp-preview-renderers';\n\nexport function StampRendererRegistration() {\n useRegisterRenderers(stampPreviewRenderers);\n return null;\n}\n","import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport { StampRendererRegistration } from './components/stamp-renderer-registration';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n"],"names":["stampPreviewRenderers","createRenderer","id","matchesPreview","p","type","PdfAnnotationSubtype","STAMP","renderPreview","data","rotationDeg","pageRotation","jsx","src","ghostUrl","style","width","height","opacity","objectFit","pointerEvents","transform","alt","StampRendererRegistration","useRegisterRenderers","useStampCapability","useCapability","StampPlugin","StampPluginPackage","createPluginPackage","BaseStampPackage","addUtility","build","libraryId","pageIndex","dpr","props","provides","url","setUrl","useState","urlRef","useRef","useEffect","task","renderStamp","window","devicePixelRatio","wait","blob","objectUrl","URL","createObjectURL","current","ignore","revokeObjectURL","abort","code","PdfErrorCode","Cancelled","message","onLoad","documentId","stamp","activeStamp","setActiveStamp","scope","forDocument","getActiveStamp","onActiveStampChange","libraries","setLibraries","getLibraries","onLibraryChange","libs","usePlugin","category","stamps","setStamps","getStampsByCategory","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-stamp.ts","../../src/shared/index.ts","../../src/shared/components/stamp-img.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n"],"names":["useStampCapability","useCapability","StampPlugin","id","StampPluginPackage","createPluginPackage","BaseStampPackage","build","libraryId","pageIndex","width","dpr","style","props","provides","url","setUrl","useState","urlRef","useRef","useEffect","task","renderStamp","window","devicePixelRatio","wait","blob","objectUrl","URL","createObjectURL","current","ignore","revokeObjectURL","abort","code","PdfErrorCode","Cancelled","message","jsx","src","onLoad","documentId","stamp","activeStamp","setActiveStamp","scope","forDocument","getActiveStamp","onActiveStampChange","libraries","setLibraries","getLibraries","onLibraryChange","libs","usePlugin","category","stamps","setStamps","getStampsByCategory","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"ySAKaA,EAAqB,IAAMC,gBAA2BC,EAAAA,YAAYC,ICExE,MAAMC,EAAqBC,EAAAA,oBAAoBC,EAAAA,oBAAkBC,yBCKjE,UAAkBC,UAAEA,EAAAC,UAAWA,EAAAC,MAAWA,MAAOC,EAAAC,MAAKA,KAAUC,IACrE,MAAMC,SAAEA,GAAad,KACde,EAAKC,GAAUC,aAChBC,EAASC,EAAAA,OAAsB,MAiCrC,OA/BAC,EAAAA,UAAU,KACR,IAAKN,EAAU,OAEf,MAAMO,EAAOP,EAASQ,YAAYd,EAAWC,EAAWC,EAAOC,GAAOY,OAAOC,kBAQ7E,OANAH,EAAKI,KAAMC,IACT,MAAMC,EAAYC,IAAIC,gBAAgBH,GACtCR,EAAOY,QAAUH,EACjBX,EAAOW,IACNI,EAAAA,QAEI,KACDb,EAAOY,SACTF,IAAII,gBAAgBd,EAAOY,SAC3BZ,EAAOY,QAAU,MAEjBT,EAAKY,MAAM,CACTC,KAAMC,EAAAA,aAAaC,UACnBC,QAAS,iCAId,CAACvB,EAAUN,EAAWC,EAAWC,EAAOC,IASpCI,EAAMuB,EAAAA,IAAC,MAAA,CAAIC,IAAKxB,EAAKyB,OAPJ,KAClBtB,EAAOY,UACTF,IAAII,gBAAgBd,EAAOY,SAC3BZ,EAAOY,QAAU,OAIgClB,WAAkBC,IAAY,IACrF,sDFsB+B4B,IAC7B,MAAQ3B,SAAU4B,GAAU1C,KACrB2C,EAAaC,GAAkB3B,EAAAA,SAAiC,MASvE,OAPAG,EAAAA,UAAU,KACR,IAAKsB,EAAO,OACZ,MAAMG,EAAQH,EAAMI,YAAYL,GAEhC,OADAG,EAAeC,EAAME,kBACdF,EAAMG,oBAAoBJ,IAChC,CAACF,EAAOD,IAEJE,0DA3EwB,KAC/B,MAAM7B,SAAEA,GAAad,KACdiD,EAAWC,GAAgBjC,EAAAA,UAAyB,MAAAH,OAAA,EAAAA,EAAUqC,iBAAkB,IAUvF,OARA/B,EAAAA,UAAU,KACR,GAAKN,EAEL,OADAoC,EAAapC,EAASqC,gBACfrC,EAASsC,gBAAiBC,IAC/BH,EAAaG,MAEd,CAACvC,IAEG,CAAEmC,YAAWnC,oCAfQ,IAAMwC,YAAuBpD,EAAAA,YAAYC,gCAkBnCoD,IAClC,MAAMzC,SAAEA,GAAad,KACdwD,EAAQC,GAAaxC,EAAAA,SAA0B,IAUtD,OARAG,EAAAA,UAAU,KACR,GAAKN,EAEL,OADA2C,EAAU3C,EAAS4C,oBAAoBH,IAChCzC,EAASsC,gBAAgB,KAC9BK,EAAU3C,EAAS4C,oBAAoBH,OAExC,CAACzC,EAAUyC,IAEPC,8BAGyB,CAAChD,EAAoB+C,KACrD,MAAMzC,SAAEA,GAAad,KACdwD,EAAQC,GAAaxC,EAAAA,SAA0B,IA6BtD,OA3BAG,EAAAA,UAAU,KACR,IAAKN,EAAU,OAEf,MAAM6C,EAAS,aACb,MAAMV,EAAYnC,EAASqC,eACrBS,EAA2B,GAEjC,IAAA,MAAWC,KAAWZ,EACpB,IAAIzC,GAA2B,QAAdA,GAAuBqD,EAAQ1D,KAAOK,EAEvD,IAAA,MAAWkC,KAASmB,EAAQL,OAAQ,CAClC,GAAID,EAAU,CACZ,MAAMO,GAAiB,OAAAC,EAAAF,EAAQG,iBAAR,EAAAD,EAAoBE,SAASV,MAAa,EAC3DW,GAAe,OAAAC,EAAAzB,EAAMsB,iBAAN,EAAAG,EAAkBF,SAASV,MAAa,EAC7D,IAAKO,IAAmBI,EAAc,QACxC,CACAN,EAAQQ,KAAK,CAAEP,UAASnB,SAC1B,CAGFe,EAAUG,IAIZ,OADAD,IACO7C,EAASsC,gBAAgBO,IAC/B,CAAC7C,EAAUN,EAAW+C,IAElBC"}
@@ -1,40 +1,11 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
2
  import { StampPlugin, StampPluginPackage as StampPluginPackage$1 } from "@embedpdf/plugin-stamp";
3
3
  export * from "@embedpdf/plugin-stamp";
4
- import { createRenderer, useRegisterRenderers } from "@embedpdf/plugin-annotation/preact";
5
- import { jsx } from "preact/jsx-runtime";
6
- import { PdfAnnotationSubtype, ignore, PdfErrorCode } from "@embedpdf/models";
7
4
  import { useCapability, usePlugin } from "@embedpdf/core/preact";
8
5
  import "preact";
9
6
  import { useState, useEffect, useRef } from "preact/hooks";
10
- const stampPreviewRenderers = [
11
- createRenderer({
12
- id: "stampPreview",
13
- matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,
14
- renderPreview: ({ data }) => {
15
- const rotationDeg = (4 - data.pageRotation) % 4 * 90;
16
- return /* @__PURE__ */ jsx(
17
- "img",
18
- {
19
- src: data.ghostUrl,
20
- style: {
21
- width: "100%",
22
- height: "100%",
23
- opacity: 0.6,
24
- objectFit: "contain",
25
- pointerEvents: "none",
26
- transform: rotationDeg ? `rotate(${rotationDeg}deg)` : void 0
27
- },
28
- alt: ""
29
- }
30
- );
31
- }
32
- })
33
- ];
34
- function StampRendererRegistration() {
35
- useRegisterRenderers(stampPreviewRenderers);
36
- return null;
37
- }
7
+ import { jsx } from "preact/jsx-runtime";
8
+ import { ignore, PdfErrorCode } from "@embedpdf/models";
38
9
  const useStampPlugin = () => usePlugin(StampPlugin.id);
39
10
  const useStampCapability = () => useCapability(StampPlugin.id);
40
11
  const useStampLibraries = () => {
@@ -131,12 +102,10 @@ function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }) {
131
102
  };
132
103
  return url ? /* @__PURE__ */ jsx("img", { src: url, onLoad: handleImageLoad, style, ...props }) : null;
133
104
  }
134
- const StampPluginPackage = createPluginPackage(StampPluginPackage$1).addUtility(StampRendererRegistration).build();
105
+ const StampPluginPackage = createPluginPackage(StampPluginPackage$1).build();
135
106
  export {
136
107
  StampImg,
137
108
  StampPluginPackage,
138
- StampRendererRegistration,
139
- stampPreviewRenderers,
140
109
  useActiveStamp,
141
110
  useStampCapability,
142
111
  useStampLibraries,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/shared/components/stamp-preview-renderers.tsx","../../src/shared/components/stamp-renderer-registration.tsx","../../src/shared/hooks/use-stamp.ts","../../src/shared/components/stamp-img.tsx","../../src/shared/index.ts"],"sourcesContent":["import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport { createRenderer, BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/@framework';\nimport { StampPreviewData } from '@embedpdf/plugin-stamp';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: ({ data }) => {\n const rotationDeg = ((4 - data.pageRotation) % 4) * 90;\n return (\n <img\n src={data.ghostUrl}\n style={{\n width: '100%',\n height: '100%',\n opacity: 0.6,\n objectFit: 'contain' as const,\n pointerEvents: 'none' as const,\n transform: rotationDeg ? `rotate(${rotationDeg}deg)` : undefined,\n }}\n alt=\"\"\n />\n );\n },\n }),\n];\n","import { useRegisterRenderers } from '@embedpdf/plugin-annotation/@framework';\nimport { stampPreviewRenderers } from './stamp-preview-renderers';\n\nexport function StampRendererRegistration() {\n useRegisterRenderers(stampPreviewRenderers);\n return null;\n}\n","import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport { StampRendererRegistration } from './components/stamp-renderer-registration';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n"],"names":["BaseStampPackage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-stamp.ts","../../src/shared/components/stamp-img.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n"],"names":["BaseStampPackage"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-stamp"),r=require("@embedpdf/plugin-annotation/react"),n=require("react/jsx-runtime"),i=require("@embedpdf/models"),s=require("@embedpdf/core/react"),a=require("react"),o=[r.createRenderer({id:"stampPreview",matchesPreview:e=>e.type===i.PdfAnnotationSubtype.STAMP,renderPreview:({data:e})=>{const t=(4-e.pageRotation)%4*90;return n.jsx("img",{src:e.ghostUrl,style:{width:"100%",height:"100%",opacity:.6,objectFit:"contain",pointerEvents:"none",transform:t?`rotate(${t}deg)`:void 0},alt:""})}})];function u(){return r.useRegisterRenderers(o),null}const c=()=>s.useCapability(t.StampPlugin.id);const p=e.createPluginPackage(t.StampPluginPackage).addUtility(u).build();exports.StampImg=function({libraryId:e,pageIndex:t,width:r,dpr:s,style:o,...u}){const{provides:p}=c(),[d,l]=a.useState(),g=a.useRef(null);return a.useEffect(()=>{if(!p)return;const n=p.renderStamp(e,t,r,s??window.devicePixelRatio);return n.wait(e=>{const t=URL.createObjectURL(e);g.current=t,l(t)},i.ignore),()=>{g.current?(URL.revokeObjectURL(g.current),g.current=null):n.abort({code:i.PdfErrorCode.Cancelled,message:"canceled stamp render task"})}},[p,e,t,r,s]),d?n.jsx("img",{src:d,onLoad:()=>{g.current&&(URL.revokeObjectURL(g.current),g.current=null)},style:o,...u}):null},exports.StampPluginPackage=p,exports.StampRendererRegistration=u,exports.stampPreviewRenderers=o,exports.useActiveStamp=e=>{const{provides:t}=c(),[r,n]=a.useState(null);return a.useEffect(()=>{if(!t)return;const r=t.forDocument(e);return n(r.getActiveStamp()),r.onActiveStampChange(n)},[t,e]),r},exports.useStampCapability=c,exports.useStampLibraries=()=>{const{provides:e}=c(),[t,r]=a.useState((null==e?void 0:e.getLibraries())??[]);return a.useEffect(()=>{if(e)return r(e.getLibraries()),e.onLibraryChange(e=>{r(e)})},[e]),{libraries:t,provides:e}},exports.useStampPlugin=()=>s.usePlugin(t.StampPlugin.id),exports.useStampsByCategory=e=>{const{provides:t}=c(),[r,n]=a.useState([]);return a.useEffect(()=>{if(t)return n(t.getStampsByCategory(e)),t.onLibraryChange(()=>{n(t.getStampsByCategory(e))})},[t,e]),r},exports.useStampsByLibrary=(e,t)=>{const{provides:r}=c(),[n,i]=a.useState([]);return a.useEffect(()=>{if(!r)return;const n=()=>{var n,s;const a=r.getLibraries(),o=[];for(const r of a)if(!e||"all"===e||r.id===e)for(const e of r.stamps){if(t){const i=(null==(n=r.categories)?void 0:n.includes(t))??!1,a=(null==(s=e.categories)?void 0:s.includes(t))??!1;if(!i&&!a)continue}o.push({library:r,stamp:e})}i(o)};return n(),r.onLibraryChange(n)},[r,e,t]),n},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"),r=require("@embedpdf/plugin-stamp"),t=require("@embedpdf/core/react"),s=require("react"),n=require("react/jsx-runtime"),a=require("@embedpdf/models"),i=()=>t.useCapability(r.StampPlugin.id);const o=e.createPluginPackage(r.StampPluginPackage).build();exports.StampImg=function({libraryId:e,pageIndex:r,width:t,dpr:o,style:u,...c}){const{provides:p}=i(),[l,d]=s.useState(),f=s.useRef(null);return s.useEffect(()=>{if(!p)return;const s=p.renderStamp(e,r,t,o??window.devicePixelRatio);return s.wait(e=>{const r=URL.createObjectURL(e);f.current=r,d(r)},a.ignore),()=>{f.current?(URL.revokeObjectURL(f.current),f.current=null):s.abort({code:a.PdfErrorCode.Cancelled,message:"canceled stamp render task"})}},[p,e,r,t,o]),l?n.jsx("img",{src:l,onLoad:()=>{f.current&&(URL.revokeObjectURL(f.current),f.current=null)},style:u,...c}):null},exports.StampPluginPackage=o,exports.useActiveStamp=e=>{const{provides:r}=i(),[t,n]=s.useState(null);return s.useEffect(()=>{if(!r)return;const t=r.forDocument(e);return n(t.getActiveStamp()),t.onActiveStampChange(n)},[r,e]),t},exports.useStampCapability=i,exports.useStampLibraries=()=>{const{provides:e}=i(),[r,t]=s.useState((null==e?void 0:e.getLibraries())??[]);return s.useEffect(()=>{if(e)return t(e.getLibraries()),e.onLibraryChange(e=>{t(e)})},[e]),{libraries:r,provides:e}},exports.useStampPlugin=()=>t.usePlugin(r.StampPlugin.id),exports.useStampsByCategory=e=>{const{provides:r}=i(),[t,n]=s.useState([]);return s.useEffect(()=>{if(r)return n(r.getStampsByCategory(e)),r.onLibraryChange(()=>{n(r.getStampsByCategory(e))})},[r,e]),t},exports.useStampsByLibrary=(e,r)=>{const{provides:t}=i(),[n,a]=s.useState([]);return s.useEffect(()=>{if(!t)return;const s=()=>{var s,n;const i=t.getLibraries(),o=[];for(const t of i)if(!e||"all"===e||t.id===e)for(const e of t.stamps){if(r){const a=(null==(s=t.categories)?void 0:s.includes(r))??!1,i=(null==(n=e.categories)?void 0:n.includes(r))??!1;if(!a&&!i)continue}o.push({library:t,stamp:e})}a(o)};return s(),t.onLibraryChange(s)},[t,e,r]),n},Object.keys(r).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>r[e]})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../src/shared/components/stamp-preview-renderers.tsx","../../src/shared/components/stamp-renderer-registration.tsx","../../src/shared/hooks/use-stamp.ts","../../src/shared/index.ts","../../src/shared/components/stamp-img.tsx"],"sourcesContent":["import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport { createRenderer, BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/@framework';\nimport { StampPreviewData } from '@embedpdf/plugin-stamp';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: ({ data }) => {\n const rotationDeg = ((4 - data.pageRotation) % 4) * 90;\n return (\n <img\n src={data.ghostUrl}\n style={{\n width: '100%',\n height: '100%',\n opacity: 0.6,\n objectFit: 'contain' as const,\n pointerEvents: 'none' as const,\n transform: rotationDeg ? `rotate(${rotationDeg}deg)` : undefined,\n }}\n alt=\"\"\n />\n );\n },\n }),\n];\n","import { useRegisterRenderers } from '@embedpdf/plugin-annotation/@framework';\nimport { stampPreviewRenderers } from './stamp-preview-renderers';\n\nexport function StampRendererRegistration() {\n useRegisterRenderers(stampPreviewRenderers);\n return null;\n}\n","import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport { StampRendererRegistration } from './components/stamp-renderer-registration';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n"],"names":["stampPreviewRenderers","createRenderer","id","matchesPreview","p","type","PdfAnnotationSubtype","STAMP","renderPreview","data","rotationDeg","pageRotation","jsx","src","ghostUrl","style","width","height","opacity","objectFit","pointerEvents","transform","alt","StampRendererRegistration","useRegisterRenderers","useStampCapability","useCapability","StampPlugin","StampPluginPackage","createPluginPackage","BaseStampPackage","addUtility","build","libraryId","pageIndex","dpr","props","provides","url","setUrl","useState","urlRef","useRef","useEffect","task","renderStamp","window","devicePixelRatio","wait","blob","objectUrl","URL","createObjectURL","current","ignore","revokeObjectURL","abort","code","PdfErrorCode","Cancelled","message","onLoad","documentId","stamp","activeStamp","setActiveStamp","scope","forDocument","getActiveStamp","onActiveStampChange","libraries","setLibraries","getLibraries","onLibraryChange","libs","usePlugin","category","stamps","setStamps","getStampsByCategory","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/shared/hooks/use-stamp.ts","../../src/shared/index.ts","../../src/shared/components/stamp-img.tsx"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n"],"names":["useStampCapability","useCapability","StampPlugin","id","StampPluginPackage","createPluginPackage","BaseStampPackage","build","libraryId","pageIndex","width","dpr","style","props","provides","url","setUrl","useState","urlRef","useRef","useEffect","task","renderStamp","window","devicePixelRatio","wait","blob","objectUrl","URL","createObjectURL","current","ignore","revokeObjectURL","abort","code","PdfErrorCode","Cancelled","message","jsx","src","onLoad","documentId","stamp","activeStamp","setActiveStamp","scope","forDocument","getActiveStamp","onActiveStampChange","libraries","setLibraries","getLibraries","onLibraryChange","libs","usePlugin","category","stamps","setStamps","getStampsByCategory","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"wQAKaA,EAAqB,IAAMC,gBAA2BC,EAAAA,YAAYC,ICExE,MAAMC,EAAqBC,EAAAA,oBAAoBC,EAAAA,oBAAkBC,yBCKjE,UAAkBC,UAAEA,EAAAC,UAAWA,EAAAC,MAAWA,MAAOC,EAAAC,MAAKA,KAAUC,IACrE,MAAMC,SAAEA,GAAad,KACde,EAAKC,GAAUC,aAChBC,EAASC,EAAAA,OAAsB,MAiCrC,OA/BAC,EAAAA,UAAU,KACR,IAAKN,EAAU,OAEf,MAAMO,EAAOP,EAASQ,YAAYd,EAAWC,EAAWC,EAAOC,GAAOY,OAAOC,kBAQ7E,OANAH,EAAKI,KAAMC,IACT,MAAMC,EAAYC,IAAIC,gBAAgBH,GACtCR,EAAOY,QAAUH,EACjBX,EAAOW,IACNI,EAAAA,QAEI,KACDb,EAAOY,SACTF,IAAII,gBAAgBd,EAAOY,SAC3BZ,EAAOY,QAAU,MAEjBT,EAAKY,MAAM,CACTC,KAAMC,EAAAA,aAAaC,UACnBC,QAAS,iCAId,CAACvB,EAAUN,EAAWC,EAAWC,EAAOC,IASpCI,EAAMuB,EAAAA,IAAC,MAAA,CAAIC,IAAKxB,EAAKyB,OAPJ,KAClBtB,EAAOY,UACTF,IAAII,gBAAgBd,EAAOY,SAC3BZ,EAAOY,QAAU,OAIgClB,WAAkBC,IAAY,IACrF,sDFsB+B4B,IAC7B,MAAQ3B,SAAU4B,GAAU1C,KACrB2C,EAAaC,GAAkB3B,EAAAA,SAAiC,MASvE,OAPAG,EAAAA,UAAU,KACR,IAAKsB,EAAO,OACZ,MAAMG,EAAQH,EAAMI,YAAYL,GAEhC,OADAG,EAAeC,EAAME,kBACdF,EAAMG,oBAAoBJ,IAChC,CAACF,EAAOD,IAEJE,0DA3EwB,KAC/B,MAAM7B,SAAEA,GAAad,KACdiD,EAAWC,GAAgBjC,EAAAA,UAAyB,MAAAH,OAAA,EAAAA,EAAUqC,iBAAkB,IAUvF,OARA/B,EAAAA,UAAU,KACR,GAAKN,EAEL,OADAoC,EAAapC,EAASqC,gBACfrC,EAASsC,gBAAiBC,IAC/BH,EAAaG,MAEd,CAACvC,IAEG,CAAEmC,YAAWnC,oCAfQ,IAAMwC,YAAuBpD,EAAAA,YAAYC,gCAkBnCoD,IAClC,MAAMzC,SAAEA,GAAad,KACdwD,EAAQC,GAAaxC,EAAAA,SAA0B,IAUtD,OARAG,EAAAA,UAAU,KACR,GAAKN,EAEL,OADA2C,EAAU3C,EAAS4C,oBAAoBH,IAChCzC,EAASsC,gBAAgB,KAC9BK,EAAU3C,EAAS4C,oBAAoBH,OAExC,CAACzC,EAAUyC,IAEPC,8BAGyB,CAAChD,EAAoB+C,KACrD,MAAMzC,SAAEA,GAAad,KACdwD,EAAQC,GAAaxC,EAAAA,SAA0B,IA6BtD,OA3BAG,EAAAA,UAAU,KACR,IAAKN,EAAU,OAEf,MAAM6C,EAAS,aACb,MAAMV,EAAYnC,EAASqC,eACrBS,EAA2B,GAEjC,IAAA,MAAWC,KAAWZ,EACpB,IAAIzC,GAA2B,QAAdA,GAAuBqD,EAAQ1D,KAAOK,EAEvD,IAAA,MAAWkC,KAASmB,EAAQL,OAAQ,CAClC,GAAID,EAAU,CACZ,MAAMO,GAAiB,OAAAC,EAAAF,EAAQG,iBAAR,EAAAD,EAAoBE,SAASV,MAAa,EAC3DW,GAAe,OAAAC,EAAAzB,EAAMsB,iBAAN,EAAAG,EAAkBF,SAASV,MAAa,EAC7D,IAAKO,IAAmBI,EAAc,QACxC,CACAN,EAAQQ,KAAK,CAAEP,UAASnB,SAC1B,CAGFe,EAAUG,IAIZ,OADAD,IACO7C,EAASsC,gBAAgBO,IAC/B,CAAC7C,EAAUN,EAAW+C,IAElBC"}
@@ -1,39 +1,10 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
2
  import { StampPlugin, StampPluginPackage as StampPluginPackage$1 } from "@embedpdf/plugin-stamp";
3
3
  export * from "@embedpdf/plugin-stamp";
4
- import { createRenderer, useRegisterRenderers } from "@embedpdf/plugin-annotation/react";
5
- import { jsx } from "react/jsx-runtime";
6
- import { PdfAnnotationSubtype, ignore, PdfErrorCode } from "@embedpdf/models";
7
4
  import { useCapability, usePlugin } from "@embedpdf/core/react";
8
5
  import { useState, useEffect, useRef } from "react";
9
- const stampPreviewRenderers = [
10
- createRenderer({
11
- id: "stampPreview",
12
- matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,
13
- renderPreview: ({ data }) => {
14
- const rotationDeg = (4 - data.pageRotation) % 4 * 90;
15
- return /* @__PURE__ */ jsx(
16
- "img",
17
- {
18
- src: data.ghostUrl,
19
- style: {
20
- width: "100%",
21
- height: "100%",
22
- opacity: 0.6,
23
- objectFit: "contain",
24
- pointerEvents: "none",
25
- transform: rotationDeg ? `rotate(${rotationDeg}deg)` : void 0
26
- },
27
- alt: ""
28
- }
29
- );
30
- }
31
- })
32
- ];
33
- function StampRendererRegistration() {
34
- useRegisterRenderers(stampPreviewRenderers);
35
- return null;
36
- }
6
+ import { jsx } from "react/jsx-runtime";
7
+ import { ignore, PdfErrorCode } from "@embedpdf/models";
37
8
  const useStampPlugin = () => usePlugin(StampPlugin.id);
38
9
  const useStampCapability = () => useCapability(StampPlugin.id);
39
10
  const useStampLibraries = () => {
@@ -130,12 +101,10 @@ function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }) {
130
101
  };
131
102
  return url ? /* @__PURE__ */ jsx("img", { src: url, onLoad: handleImageLoad, style, ...props }) : null;
132
103
  }
133
- const StampPluginPackage = createPluginPackage(StampPluginPackage$1).addUtility(StampRendererRegistration).build();
104
+ const StampPluginPackage = createPluginPackage(StampPluginPackage$1).build();
134
105
  export {
135
106
  StampImg,
136
107
  StampPluginPackage,
137
- StampRendererRegistration,
138
- stampPreviewRenderers,
139
108
  useActiveStamp,
140
109
  useStampCapability,
141
110
  useStampLibraries,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/shared/components/stamp-preview-renderers.tsx","../../src/shared/components/stamp-renderer-registration.tsx","../../src/shared/hooks/use-stamp.ts","../../src/shared/components/stamp-img.tsx","../../src/shared/index.ts"],"sourcesContent":["import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport { createRenderer, BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/@framework';\nimport { StampPreviewData } from '@embedpdf/plugin-stamp';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: ({ data }) => {\n const rotationDeg = ((4 - data.pageRotation) % 4) * 90;\n return (\n <img\n src={data.ghostUrl}\n style={{\n width: '100%',\n height: '100%',\n opacity: 0.6,\n objectFit: 'contain' as const,\n pointerEvents: 'none' as const,\n transform: rotationDeg ? `rotate(${rotationDeg}deg)` : undefined,\n }}\n alt=\"\"\n />\n );\n },\n }),\n];\n","import { useRegisterRenderers } from '@embedpdf/plugin-annotation/@framework';\nimport { stampPreviewRenderers } from './stamp-preview-renderers';\n\nexport function StampRendererRegistration() {\n useRegisterRenderers(stampPreviewRenderers);\n return null;\n}\n","import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport { StampRendererRegistration } from './components/stamp-renderer-registration';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n"],"names":["BaseStampPackage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/shared/hooks/use-stamp.ts","../../src/shared/components/stamp-img.tsx","../../src/shared/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { useState, useEffect } from '@framework';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const [libraries, setLibraries] = useState<StampLibrary[]>(provides?.getLibraries() ?? []);\n\n useEffect(() => {\n if (!provides) return;\n setLibraries(provides.getLibraries());\n return provides.onLibraryChange((libs) => {\n setLibraries(libs);\n });\n }, [provides]);\n\n return { libraries, provides };\n};\n\nexport const useStampsByCategory = (category: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n setStamps(provides.getStampsByCategory(category));\n return provides.onLibraryChange(() => {\n setStamps(provides.getStampsByCategory(category));\n });\n }, [provides, category]);\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (libraryId?: string, category?: string) => {\n const { provides } = useStampCapability();\n const [stamps, setStamps] = useState<ResolvedStamp[]>([]);\n\n useEffect(() => {\n if (!provides) return;\n\n const derive = () => {\n const libraries = provides.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n setStamps(results);\n };\n\n derive();\n return provides.onLibraryChange(derive);\n }, [provides, libraryId, category]);\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: string) => {\n const { provides: stamp } = useStampCapability();\n const [activeStamp, setActiveStamp] = useState<ActiveStampInfo | null>(null);\n\n useEffect(() => {\n if (!stamp) return;\n const scope = stamp.forDocument(documentId);\n setActiveStamp(scope.getActiveStamp());\n return scope.onActiveStampChange(setActiveStamp);\n }, [stamp, documentId]);\n\n return activeStamp;\n};\n","import { useEffect, useState, useRef, HTMLAttributes, CSSProperties } from '@framework';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\nimport { useStampCapability } from '../hooks';\n\ntype StampImgProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n style?: CSSProperties;\n};\n\nexport function StampImg({ libraryId, pageIndex, width, dpr, style, ...props }: StampImgProps) {\n const { provides } = useStampCapability();\n const [url, setUrl] = useState<string>();\n const urlRef = useRef<string | null>(null);\n\n useEffect(() => {\n if (!provides) return;\n\n const task = provides.renderStamp(libraryId, pageIndex, width, dpr ?? window.devicePixelRatio);\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef.current = objectUrl;\n setUrl(objectUrl);\n }, ignore);\n\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n }, [provides, libraryId, pageIndex, width, dpr]);\n\n const handleImageLoad = () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n\n return url ? <img src={url} onLoad={handleImageLoad} style={style} {...props} /> : null;\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n"],"names":["BaseStampPackage"],"mappings":"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"}
@@ -1,3 +1 @@
1
1
  export * from './stamp-img';
2
- export * from './stamp-preview-renderers';
3
- export * from './stamp-renderer-registration';
@@ -1,3 +1 @@
1
1
  export * from './stamp-img';
2
- export * from './stamp-preview-renderers';
3
- export * from './stamp-renderer-registration';
@@ -1,3 +1 @@
1
1
  export * from './stamp-img';
2
- export * from './stamp-preview-renderers';
3
- export * from './stamp-renderer-registration';
@@ -1,2 +1 @@
1
1
  export { default as StampImg } from './StampImg.svelte';
2
- export { default as StampRendererRegistration } from './StampRendererRegistration.svelte';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-stamp");require("svelte/internal/disclose-version"),require("svelte/internal/flags/legacy");const r=require("svelte/internal/client"),n=require("svelte"),s=require("@embedpdf/plugin-annotation/svelte"),i=require("@embedpdf/models"),o=require("@embedpdf/core/svelte");function a(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const p=a(r);var c=p.from_html('<img alt=""/>');const d=[s.createRenderer({id:"stampPreview",matchesPreview:e=>e.type===i.PdfAnnotationSubtype.STAMP,renderPreview:function(e,t){p.push(t,!0);const r=p.derived(()=>(4-t.data.pageRotation)%4*90);var n=c();let s;p.template_effect(()=>{p.set_attribute(n,"src",t.data.ghostUrl),s=p.set_style(n,"",s,{width:"100%",height:"100%",opacity:"0.6","object-fit":"contain","pointer-events":"none",transform:p.get(r)?`rotate(${p.get(r)}deg)`:void 0})}),p.append(e,n),p.pop()}})];function u(e,t){p.push(t,!1);const r=s.getRendererRegistry();n.onMount(()=>{if(r)return r.register(d)}),p.init(),p.pop()}const l=()=>o.useCapability(t.StampPlugin.id);var g=p.from_html("<img/>");const f=e.createPluginPackage(t.StampPluginPackage).addUtility(u).build();exports.StampImg=function(e,t){p.push(t,!0);const r=p.rest_props(t,["$$slots","$$events","$$legacy","libraryId","pageIndex","width","dpr"]),n=l();let s=p.state(void 0),o=null;p.user_effect(()=>{if(!n.provides)return;const e=n.provides.renderStamp(t.libraryId,t.pageIndex,t.width,t.dpr??window.devicePixelRatio);return e.wait(e=>{const t=URL.createObjectURL(e);o=t,p.set(s,t,!0)},i.ignore),()=>{o?(URL.revokeObjectURL(o),o=null):e.abort({code:i.PdfErrorCode.Cancelled,message:"canceled stamp render task"})}});const a=()=>{o&&(URL.revokeObjectURL(o),o=null)};var c=p.comment(),d=p.first_child(c),u=e=>{var t=g();p.attribute_effect(t,()=>({src:p.get(s),onload:a,...r,alt:"Stamp preview"})),p.replay_events(t),p.append(e,t)};p.if(d,e=>{p.get(s)&&e(u)}),p.append(e,c),p.pop()},exports.StampPluginPackage=f,exports.StampRendererRegistration=u,exports.useActiveStamp=function(e){const t=l();let r=p.state(null);const n=p.derived(e);return p.user_effect(()=>{if(!t.provides||!p.get(n))return void p.set(r,null);const e=t.provides.forDocument(p.get(n));return p.set(r,e.getActiveStamp(),!0),e.onActiveStampChange(e=>{p.set(r,e,!0)})}),{get activeStamp(){return p.get(r)}}},exports.useStampCapability=l,exports.useStampLibraries=function(){const e=l();let t=p.state(p.proxy([]));return p.user_effect(()=>{if(e.provides)return p.set(t,e.provides.getLibraries(),!0),e.provides.onLibraryChange(e=>{p.set(t,e,!0)});p.set(t,[],!0)}),{get libraries(){return p.get(t)}}},exports.useStampPlugin=()=>o.usePlugin(t.StampPlugin.id),exports.useStampsByCategory=function(e){const t=l();let r=p.state(p.proxy([]));const n=p.derived(e);return p.user_effect(()=>{if(t.provides)return p.set(r,t.provides.getStampsByCategory(p.get(n)),!0),t.provides.onLibraryChange(()=>{p.set(r,t.provides.getStampsByCategory(p.get(n)),!0)});p.set(r,[],!0)}),{get stamps(){return p.get(r)}}},exports.useStampsByLibrary=function(e,t){const r=l();let n=p.state(p.proxy([]));const s=p.derived(e),i=p.derived(()=>null==t?void 0:t());return p.user_effect(()=>{if(!r.provides)return void p.set(n,[],!0);const e=()=>{var e,t;const o=r.provides.getLibraries(),a=[];for(const r of o)if(!p.get(s)||"all"===p.get(s)||r.id===p.get(s))for(const n of r.stamps){if(p.get(i)){const s=(null==(e=r.categories)?void 0:e.includes(p.get(i)))??!1,o=(null==(t=n.categories)?void 0:t.includes(p.get(i)))??!1;if(!s&&!o)continue}a.push({library:r,stamp:n})}p.set(n,a,!0)};return e(),r.provides.onLibraryChange(e)}),{get stamps(){return p.get(n)}}},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-stamp"),r=require("svelte/internal/client"),s=require("@embedpdf/core/svelte");require("svelte/internal/disclose-version");const o=require("@embedpdf/models");function i(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const r in e)if("default"!==r){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const n=i(r),a=()=>s.useCapability(t.StampPlugin.id);var p=n.from_html("<img/>");const c=e.createPluginPackage(t.StampPluginPackage).build();exports.StampImg=function(e,t){n.push(t,!0);const r=n.rest_props(t,["$$slots","$$events","$$legacy","libraryId","pageIndex","width","dpr"]),s=a();let i=n.state(void 0),c=null;n.user_effect(()=>{if(!s.provides)return;const e=s.provides.renderStamp(t.libraryId,t.pageIndex,t.width,t.dpr??window.devicePixelRatio);return e.wait(e=>{const t=URL.createObjectURL(e);c=t,n.set(i,t,!0)},o.ignore),()=>{c?(URL.revokeObjectURL(c),c=null):e.abort({code:o.PdfErrorCode.Cancelled,message:"canceled stamp render task"})}});const u=()=>{c&&(URL.revokeObjectURL(c),c=null)};var l=n.comment(),d=n.first_child(l),g=e=>{var t=p();n.attribute_effect(t,()=>({src:n.get(i),onload:u,...r,alt:"Stamp preview"})),n.replay_events(t),n.append(e,t)};n.if(d,e=>{n.get(i)&&e(g)}),n.append(e,l),n.pop()},exports.StampPluginPackage=c,exports.useActiveStamp=function(e){const t=a();let r=n.state(null);const s=n.derived(e);return n.user_effect(()=>{if(!t.provides||!n.get(s))return void n.set(r,null);const e=t.provides.forDocument(n.get(s));return n.set(r,e.getActiveStamp(),!0),e.onActiveStampChange(e=>{n.set(r,e,!0)})}),{get activeStamp(){return n.get(r)}}},exports.useStampCapability=a,exports.useStampLibraries=function(){const e=a();let t=n.state(n.proxy([]));return n.user_effect(()=>{if(e.provides)return n.set(t,e.provides.getLibraries(),!0),e.provides.onLibraryChange(e=>{n.set(t,e,!0)});n.set(t,[],!0)}),{get libraries(){return n.get(t)}}},exports.useStampPlugin=()=>s.usePlugin(t.StampPlugin.id),exports.useStampsByCategory=function(e){const t=a();let r=n.state(n.proxy([]));const s=n.derived(e);return n.user_effect(()=>{if(t.provides)return n.set(r,t.provides.getStampsByCategory(n.get(s)),!0),t.provides.onLibraryChange(()=>{n.set(r,t.provides.getStampsByCategory(n.get(s)),!0)});n.set(r,[],!0)}),{get stamps(){return n.get(r)}}},exports.useStampsByLibrary=function(e,t){const r=a();let s=n.state(n.proxy([]));const o=n.derived(e),i=n.derived(()=>null==t?void 0:t());return n.user_effect(()=>{if(!r.provides)return void n.set(s,[],!0);const e=()=>{var e,t;const a=r.provides.getLibraries(),p=[];for(const r of a)if(!n.get(o)||"all"===n.get(o)||r.id===n.get(o))for(const s of r.stamps){if(n.get(i)){const o=(null==(e=r.categories)?void 0:e.includes(n.get(i)))??!1,a=(null==(t=s.categories)?void 0:t.includes(n.get(i)))??!1;if(!o&&!a)continue}p.push({library:r,stamp:s})}n.set(s,p,!0)};return e(),r.provides.onLibraryChange(e)}),{get stamps(){return n.get(s)}}},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/components/stamp-preview-renderers.ts","../../src/svelte/components/StampPreview.svelte","../../src/svelte/components/StampRendererRegistration.svelte","../../src/svelte/hooks/use-stamp.svelte.ts","../../src/svelte/index.ts","../../src/svelte/components/StampImg.svelte"],"sourcesContent":["import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport type { StampPreviewData } from '@embedpdf/plugin-stamp';\nimport type { BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/svelte';\nimport { createRenderer } from '@embedpdf/plugin-annotation/svelte';\nimport StampPreview from './StampPreview.svelte';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: StampPreview,\n }),\n];\n","<script lang=\"ts\">\n import type { Rect } from '@embedpdf/models';\n import type { StampPreviewData } from '@embedpdf/plugin-stamp';\n\n interface StampPreviewProps {\n data: StampPreviewData;\n bounds: Rect;\n scale: number;\n }\n\n let { data }: StampPreviewProps = $props();\n\n const rotationDeg = $derived(((4 - data.pageRotation) % 4) * 90);\n</script>\n\n<img\n src={data.ghostUrl}\n style:width=\"100%\"\n style:height=\"100%\"\n style:opacity=\"0.6\"\n style:object-fit=\"contain\"\n style:pointer-events=\"none\"\n style:transform={rotationDeg ? `rotate(${rotationDeg}deg)` : undefined}\n alt=\"\"\n/>\n","<script lang=\"ts\">\n import { onMount } from 'svelte';\n import { getRendererRegistry } from '@embedpdf/plugin-annotation/svelte';\n import { stampPreviewRenderers } from './stamp-preview-renderers';\n\n const registry = getRendererRegistry();\n\n onMount(() => {\n if (!registry) return;\n return registry.register(stampPreviewRenderers);\n });\n</script>\n","import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { StampPlugin } from '@embedpdf/plugin-stamp';\nimport type { ResolvedStamp, StampLibrary, ActiveStampInfo } from '@embedpdf/plugin-stamp';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport function useStampLibraries() {\n const capability = useStampCapability();\n let libraries = $state<StampLibrary[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n libraries = [];\n return;\n }\n\n libraries = capability.provides.getLibraries();\n return capability.provides.onLibraryChange((libs) => {\n libraries = libs;\n });\n });\n\n return {\n get libraries() {\n return libraries;\n },\n };\n}\n\nexport function useStampsByCategory(getCategory: () => string) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const category = $derived(getCategory());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n stamps = capability.provides.getStampsByCategory(category);\n return capability.provides.onLibraryChange(() => {\n stamps = capability.provides!.getStampsByCategory(category);\n });\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useStampsByLibrary(\n getLibraryId: () => string | undefined,\n getCategory?: () => string | undefined,\n) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const libraryId = $derived(getLibraryId());\n const category = $derived(getCategory?.());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.provides!.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps = results;\n };\n\n derive();\n return capability.provides.onLibraryChange(derive);\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useActiveStamp(getDocumentId: () => string) {\n const capability = useStampCapability();\n let activeStamp = $state<ActiveStampInfo | null>(null);\n const documentId = $derived(getDocumentId());\n\n $effect(() => {\n if (!capability.provides || !documentId) {\n activeStamp = null;\n return;\n }\n\n const scope = capability.provides.forDocument(documentId);\n activeStamp = scope.getActiveStamp();\n return scope.onActiveStampChange((stamp) => {\n activeStamp = stamp;\n });\n });\n\n return {\n get activeStamp() {\n return activeStamp;\n },\n };\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport StampRendererRegistration from './components/StampRendererRegistration.svelte';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n","<script lang=\"ts\">\n import { ignore, PdfErrorCode } from '@embedpdf/models';\n import { useStampCapability } from '../hooks';\n import type { HTMLImgAttributes } from 'svelte/elements';\n\n interface Props extends HTMLImgAttributes {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n }\n\n const { libraryId, pageIndex, width, dpr, ...imgProps }: Props = $props();\n\n const stampCapability = useStampCapability();\n\n let url = $state<string | undefined>(undefined);\n let urlRef: string | null = null;\n\n $effect(() => {\n if (!stampCapability.provides) return;\n\n const task = stampCapability.provides.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef = objectUrl;\n url = objectUrl;\n }, ignore);\n\n return () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n });\n\n const handleImageLoad = () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n }\n };\n</script>\n\n{#if url}\n <img src={url} onload={handleImageLoad} {...imgProps} alt=\"Stamp preview\" />\n{/if}\n"],"names":["stampPreviewRenderers","createRenderer","id","matchesPreview","p","type","PdfAnnotationSubtype","STAMP","renderPreview","rotationDeg","$$props","data","pageRotation","img","root","$","set_attribute","ghostUrl","styles","get","registry","getRendererRegistry","onMount","register","useStampCapability","useCapability","StampPlugin","StampPluginPackage","createPluginPackage","BaseStampPackage","addUtility","StampRendererRegistration","build","imgProps","rest_props","stampCapability","url","state","urlRef","user_effect","provides","task","renderStamp","libraryId","pageIndex","width","dpr","window","devicePixelRatio","wait","blob","objectUrl","URL","createObjectURL","set","ignore","revokeObjectURL","abort","code","PdfErrorCode","Cancelled","message","handleImageLoad","root_1","consequent","getDocumentId","capability","activeStamp","documentId","scope","forDocument","getActiveStamp","onActiveStampChange","stamp","libraries","proxy","getLibraries","onLibraryChange","libs","usePlugin","getCategory","stamps","category","getStampsByCategory","getLibraryId","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-stamp.svelte.ts","../../src/svelte/index.ts","../../src/svelte/components/StampImg.svelte"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { StampPlugin } from '@embedpdf/plugin-stamp';\nimport type { ResolvedStamp, StampLibrary, ActiveStampInfo } from '@embedpdf/plugin-stamp';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport function useStampLibraries() {\n const capability = useStampCapability();\n let libraries = $state<StampLibrary[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n libraries = [];\n return;\n }\n\n libraries = capability.provides.getLibraries();\n return capability.provides.onLibraryChange((libs) => {\n libraries = libs;\n });\n });\n\n return {\n get libraries() {\n return libraries;\n },\n };\n}\n\nexport function useStampsByCategory(getCategory: () => string) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const category = $derived(getCategory());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n stamps = capability.provides.getStampsByCategory(category);\n return capability.provides.onLibraryChange(() => {\n stamps = capability.provides!.getStampsByCategory(category);\n });\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useStampsByLibrary(\n getLibraryId: () => string | undefined,\n getCategory?: () => string | undefined,\n) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const libraryId = $derived(getLibraryId());\n const category = $derived(getCategory?.());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.provides!.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps = results;\n };\n\n derive();\n return capability.provides.onLibraryChange(derive);\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useActiveStamp(getDocumentId: () => string) {\n const capability = useStampCapability();\n let activeStamp = $state<ActiveStampInfo | null>(null);\n const documentId = $derived(getDocumentId());\n\n $effect(() => {\n if (!capability.provides || !documentId) {\n activeStamp = null;\n return;\n }\n\n const scope = capability.provides.forDocument(documentId);\n activeStamp = scope.getActiveStamp();\n return scope.onActiveStampChange((stamp) => {\n activeStamp = stamp;\n });\n });\n\n return {\n get activeStamp() {\n return activeStamp;\n },\n };\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n","<script lang=\"ts\">\n import { ignore, PdfErrorCode } from '@embedpdf/models';\n import { useStampCapability } from '../hooks';\n import type { HTMLImgAttributes } from 'svelte/elements';\n\n interface Props extends HTMLImgAttributes {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n }\n\n const { libraryId, pageIndex, width, dpr, ...imgProps }: Props = $props();\n\n const stampCapability = useStampCapability();\n\n let url = $state<string | undefined>(undefined);\n let urlRef: string | null = null;\n\n $effect(() => {\n if (!stampCapability.provides) return;\n\n const task = stampCapability.provides.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef = objectUrl;\n url = objectUrl;\n }, ignore);\n\n return () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n });\n\n const handleImageLoad = () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n }\n };\n</script>\n\n{#if url}\n <img src={url} onload={handleImageLoad} {...imgProps} alt=\"Stamp preview\" />\n{/if}\n"],"names":["useStampCapability","useCapability","StampPlugin","id","StampPluginPackage","createPluginPackage","BaseStampPackage","build","imgProps","$","rest_props","$$props","stampCapability","url","state","urlRef","user_effect","provides","task","renderStamp","libraryId","pageIndex","width","dpr","window","devicePixelRatio","wait","blob","objectUrl","URL","createObjectURL","set","ignore","revokeObjectURL","abort","code","PdfErrorCode","Cancelled","message","handleImageLoad","img","root_1","consequent","getDocumentId","capability","activeStamp","documentId","get","scope","forDocument","getActiveStamp","onActiveStampChange","stamp","libraries","proxy","getLibraries","onLibraryChange","libs","usePlugin","getCategory","stamps","category","getStampsByCategory","getLibraryId","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"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"}
@@ -1,50 +1,10 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
2
  import { StampPlugin, StampPluginPackage as StampPluginPackage$1 } from "@embedpdf/plugin-stamp";
3
3
  export * from "@embedpdf/plugin-stamp";
4
- import "svelte/internal/disclose-version";
5
- import "svelte/internal/flags/legacy";
6
4
  import * as $ from "svelte/internal/client";
7
- import { onMount } from "svelte";
8
- import { createRenderer, getRendererRegistry } from "@embedpdf/plugin-annotation/svelte";
9
- import { PdfAnnotationSubtype, ignore, PdfErrorCode } from "@embedpdf/models";
10
- import { useCapability, usePlugin } from "@embedpdf/core/svelte";
11
- var root = $.from_html(`<img alt=""/>`);
12
- function StampPreview($$anchor, $$props) {
13
- $.push($$props, true);
14
- const rotationDeg = $.derived(() => (4 - $$props.data.pageRotation) % 4 * 90);
15
- var img = root();
16
- let styles;
17
- $.template_effect(() => {
18
- $.set_attribute(img, "src", $$props.data.ghostUrl);
19
- styles = $.set_style(img, "", styles, {
20
- width: "100%",
21
- height: "100%",
22
- opacity: "0.6",
23
- "object-fit": "contain",
24
- "pointer-events": "none",
25
- transform: $.get(rotationDeg) ? `rotate(${$.get(rotationDeg)}deg)` : void 0
26
- });
27
- });
28
- $.append($$anchor, img);
29
- $.pop();
30
- }
31
- const stampPreviewRenderers = [
32
- createRenderer({
33
- id: "stampPreview",
34
- matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,
35
- renderPreview: StampPreview
36
- })
37
- ];
38
- function StampRendererRegistration($$anchor, $$props) {
39
- $.push($$props, false);
40
- const registry = getRendererRegistry();
41
- onMount(() => {
42
- if (!registry) return;
43
- return registry.register(stampPreviewRenderers);
44
- });
45
- $.init();
46
- $.pop();
47
- }
5
+ import { usePlugin, useCapability } from "@embedpdf/core/svelte";
6
+ import "svelte/internal/disclose-version";
7
+ import { ignore, PdfErrorCode } from "@embedpdf/models";
48
8
  const useStampPlugin = () => usePlugin(StampPlugin.id);
49
9
  const useStampCapability = () => useCapability(StampPlugin.id);
50
10
  function useStampLibraries() {
@@ -208,11 +168,10 @@ function StampImg($$anchor, $$props) {
208
168
  $.append($$anchor, fragment);
209
169
  $.pop();
210
170
  }
211
- const StampPluginPackage = createPluginPackage(StampPluginPackage$1).addUtility(StampRendererRegistration).build();
171
+ const StampPluginPackage = createPluginPackage(StampPluginPackage$1).build();
212
172
  export {
213
173
  StampImg,
214
174
  StampPluginPackage,
215
- StampRendererRegistration,
216
175
  useActiveStamp,
217
176
  useStampCapability,
218
177
  useStampLibraries,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/svelte/components/StampPreview.svelte","../../src/svelte/components/stamp-preview-renderers.ts","../../src/svelte/components/StampRendererRegistration.svelte","../../src/svelte/hooks/use-stamp.svelte.ts","../../src/svelte/components/StampImg.svelte","../../src/svelte/index.ts"],"sourcesContent":["<script lang=\"ts\">\n import type { Rect } from '@embedpdf/models';\n import type { StampPreviewData } from '@embedpdf/plugin-stamp';\n\n interface StampPreviewProps {\n data: StampPreviewData;\n bounds: Rect;\n scale: number;\n }\n\n let { data }: StampPreviewProps = $props();\n\n const rotationDeg = $derived(((4 - data.pageRotation) % 4) * 90);\n</script>\n\n<img\n src={data.ghostUrl}\n style:width=\"100%\"\n style:height=\"100%\"\n style:opacity=\"0.6\"\n style:object-fit=\"contain\"\n style:pointer-events=\"none\"\n style:transform={rotationDeg ? `rotate(${rotationDeg}deg)` : undefined}\n alt=\"\"\n/>\n","import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport type { StampPreviewData } from '@embedpdf/plugin-stamp';\nimport type { BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/svelte';\nimport { createRenderer } from '@embedpdf/plugin-annotation/svelte';\nimport StampPreview from './StampPreview.svelte';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: StampPreview,\n }),\n];\n","<script lang=\"ts\">\n import { onMount } from 'svelte';\n import { getRendererRegistry } from '@embedpdf/plugin-annotation/svelte';\n import { stampPreviewRenderers } from './stamp-preview-renderers';\n\n const registry = getRendererRegistry();\n\n onMount(() => {\n if (!registry) return;\n return registry.register(stampPreviewRenderers);\n });\n</script>\n","import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { StampPlugin } from '@embedpdf/plugin-stamp';\nimport type { ResolvedStamp, StampLibrary, ActiveStampInfo } from '@embedpdf/plugin-stamp';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport function useStampLibraries() {\n const capability = useStampCapability();\n let libraries = $state<StampLibrary[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n libraries = [];\n return;\n }\n\n libraries = capability.provides.getLibraries();\n return capability.provides.onLibraryChange((libs) => {\n libraries = libs;\n });\n });\n\n return {\n get libraries() {\n return libraries;\n },\n };\n}\n\nexport function useStampsByCategory(getCategory: () => string) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const category = $derived(getCategory());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n stamps = capability.provides.getStampsByCategory(category);\n return capability.provides.onLibraryChange(() => {\n stamps = capability.provides!.getStampsByCategory(category);\n });\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useStampsByLibrary(\n getLibraryId: () => string | undefined,\n getCategory?: () => string | undefined,\n) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const libraryId = $derived(getLibraryId());\n const category = $derived(getCategory?.());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.provides!.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps = results;\n };\n\n derive();\n return capability.provides.onLibraryChange(derive);\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useActiveStamp(getDocumentId: () => string) {\n const capability = useStampCapability();\n let activeStamp = $state<ActiveStampInfo | null>(null);\n const documentId = $derived(getDocumentId());\n\n $effect(() => {\n if (!capability.provides || !documentId) {\n activeStamp = null;\n return;\n }\n\n const scope = capability.provides.forDocument(documentId);\n activeStamp = scope.getActiveStamp();\n return scope.onActiveStampChange((stamp) => {\n activeStamp = stamp;\n });\n });\n\n return {\n get activeStamp() {\n return activeStamp;\n },\n };\n}\n","<script lang=\"ts\">\n import { ignore, PdfErrorCode } from '@embedpdf/models';\n import { useStampCapability } from '../hooks';\n import type { HTMLImgAttributes } from 'svelte/elements';\n\n interface Props extends HTMLImgAttributes {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n }\n\n const { libraryId, pageIndex, width, dpr, ...imgProps }: Props = $props();\n\n const stampCapability = useStampCapability();\n\n let url = $state<string | undefined>(undefined);\n let urlRef: string | null = null;\n\n $effect(() => {\n if (!stampCapability.provides) return;\n\n const task = stampCapability.provides.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef = objectUrl;\n url = objectUrl;\n }, ignore);\n\n return () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n });\n\n const handleImageLoad = () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n }\n };\n</script>\n\n{#if url}\n <img src={url} onload={handleImageLoad} {...imgProps} alt=\"Stamp preview\" />\n{/if}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport StampRendererRegistration from './components/StampRendererRegistration.svelte';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n"],"names":["BaseStampPackage"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/svelte/hooks/use-stamp.svelte.ts","../../src/svelte/components/StampImg.svelte","../../src/svelte/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { StampPlugin } from '@embedpdf/plugin-stamp';\nimport type { ResolvedStamp, StampLibrary, ActiveStampInfo } from '@embedpdf/plugin-stamp';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport function useStampLibraries() {\n const capability = useStampCapability();\n let libraries = $state<StampLibrary[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n libraries = [];\n return;\n }\n\n libraries = capability.provides.getLibraries();\n return capability.provides.onLibraryChange((libs) => {\n libraries = libs;\n });\n });\n\n return {\n get libraries() {\n return libraries;\n },\n };\n}\n\nexport function useStampsByCategory(getCategory: () => string) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const category = $derived(getCategory());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n stamps = capability.provides.getStampsByCategory(category);\n return capability.provides.onLibraryChange(() => {\n stamps = capability.provides!.getStampsByCategory(category);\n });\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useStampsByLibrary(\n getLibraryId: () => string | undefined,\n getCategory?: () => string | undefined,\n) {\n const capability = useStampCapability();\n let stamps = $state<ResolvedStamp[]>([]);\n const libraryId = $derived(getLibraryId());\n const category = $derived(getCategory?.());\n\n $effect(() => {\n if (!capability.provides) {\n stamps = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.provides!.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libraryId && libraryId !== 'all' && library.id !== libraryId) continue;\n\n for (const stamp of library.stamps) {\n if (category) {\n const libraryMatches = library.categories?.includes(category) ?? false;\n const stampMatches = stamp.categories?.includes(category) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps = results;\n };\n\n derive();\n return capability.provides.onLibraryChange(derive);\n });\n\n return {\n get stamps() {\n return stamps;\n },\n };\n}\n\nexport function useActiveStamp(getDocumentId: () => string) {\n const capability = useStampCapability();\n let activeStamp = $state<ActiveStampInfo | null>(null);\n const documentId = $derived(getDocumentId());\n\n $effect(() => {\n if (!capability.provides || !documentId) {\n activeStamp = null;\n return;\n }\n\n const scope = capability.provides.forDocument(documentId);\n activeStamp = scope.getActiveStamp();\n return scope.onActiveStampChange((stamp) => {\n activeStamp = stamp;\n });\n });\n\n return {\n get activeStamp() {\n return activeStamp;\n },\n };\n}\n","<script lang=\"ts\">\n import { ignore, PdfErrorCode } from '@embedpdf/models';\n import { useStampCapability } from '../hooks';\n import type { HTMLImgAttributes } from 'svelte/elements';\n\n interface Props extends HTMLImgAttributes {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n }\n\n const { libraryId, pageIndex, width, dpr, ...imgProps }: Props = $props();\n\n const stampCapability = useStampCapability();\n\n let url = $state<string | undefined>(undefined);\n let urlRef: string | null = null;\n\n $effect(() => {\n if (!stampCapability.provides) return;\n\n const task = stampCapability.provides.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n task.wait((blob) => {\n const objectUrl = URL.createObjectURL(blob);\n urlRef = objectUrl;\n url = objectUrl;\n }, ignore);\n\n return () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n }\n };\n });\n\n const handleImageLoad = () => {\n if (urlRef) {\n URL.revokeObjectURL(urlRef);\n urlRef = null;\n }\n };\n</script>\n\n{#if url}\n <img src={url} onload={handleImageLoad} {...imgProps} alt=\"Stamp preview\" />\n{/if}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n"],"names":["BaseStampPackage"],"mappings":"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"}
@@ -1,2 +1 @@
1
1
  export { default as StampImg } from './stamp-img.vue';
2
- export { default as StampRendererRegistration } from './stamp-renderer-registration.vue';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-stamp"),r=require("vue"),a=require("@embedpdf/plugin-annotation/vue"),o=require("@embedpdf/models"),n=require("@embedpdf/core/vue"),i=["src"],l=r.defineComponent({__name:"stamp-preview",props:{data:{},bounds:{},scale:{}},setup(e){const t=e,a=r.computed(()=>(4-t.data.pageRotation)%4*90),o=r.computed(()=>({width:"100%",height:"100%",opacity:.6,objectFit:"contain",pointerEvents:"none",transform:a.value?`rotate(${a.value}deg)`:void 0}));return(t,a)=>(r.openBlock(),r.createElementBlock("img",{src:e.data.ghostUrl,style:r.normalizeStyle(o.value),alt:""},null,12,i))}}),s=[a.createRenderer({id:"stampPreview",matchesPreview:e=>e.type===o.PdfAnnotationSubtype.STAMP,renderPreview:l})],u=r.defineComponent({__name:"stamp-renderer-registration",setup:e=>(a.useRegisterRenderers(s),(e,t)=>r.renderSlot(e.$slots,"default"))}),p=()=>n.useCapability(t.StampPlugin.id),d=["src"],c=r.defineComponent({__name:"stamp-img",props:{libraryId:{},pageIndex:{},width:{},dpr:{}},setup(e){const t=e,{provides:a}=p(),n=r.ref(null);let i=null;function l(){i&&(URL.revokeObjectURL(i),i=null)}let s=null;return r.watch([()=>a.value,()=>t.libraryId,()=>t.pageIndex,()=>t.width,()=>t.dpr],([e,t,r,a,u],p,d)=>{if(s&&(s(),s=null),!e)return void(n.value=null);const c=e.renderStamp(t,r,a,u??window.devicePixelRatio);s=()=>c.abort({code:o.PdfErrorCode.Cancelled,message:"canceled stamp render task"}),c.wait(e=>{l();const t=URL.createObjectURL(e);i=t,n.value=t,s=null},o.ignore),d(()=>{s&&(s(),s=null),l()})},{immediate:!0}),(e,t)=>n.value?(r.openBlock(),r.createElementBlock("img",r.mergeProps({key:0,src:n.value},e.$attrs,{onLoad:l}),null,16,d)):r.createCommentVNode("",!0)}}),m=e.createPluginPackage(t.StampPluginPackage).addUtility(u).build();exports.StampImg=c,exports.StampPluginPackage=m,exports.StampRendererRegistration=u,exports.useActiveStamp=e=>{const{provides:t}=p(),a=r.ref(null);return r.watch([t,()=>r.toValue(e)],([e,t],r,o)=>{if(!e||!t)return void(a.value=null);const n=e.forDocument(t);a.value=n.getActiveStamp();o(n.onActiveStampChange(e=>{a.value=e}))},{immediate:!0}),a},exports.useStampCapability=p,exports.useStampLibraries=()=>{const{provides:e}=p(),t=r.ref([]);return r.watch(e,(e,r,a)=>{if(!e)return void(t.value=[]);t.value=e.getLibraries();a(e.onLibraryChange(e=>{t.value=e}))},{immediate:!0}),{libraries:t}},exports.useStampPlugin=()=>n.usePlugin(t.StampPlugin.id),exports.useStampsByCategory=e=>{const{provides:t}=p(),a=r.ref([]);return r.watch([t,()=>r.toValue(e)],([e,t],r,o)=>{if(!e)return void(a.value=[]);a.value=e.getStampsByCategory(t);o(e.onLibraryChange(()=>{a.value=e.getStampsByCategory(t)}))},{immediate:!0}),a},exports.useStampsByLibrary=(e,t)=>{const{provides:a}=p(),o=r.ref([]);return r.watch([a,()=>r.toValue(e),()=>r.toValue(t)],([e,t,r],a,n)=>{if(!e)return void(o.value=[]);const i=()=>{var a,n;const i=e.getLibraries(),l=[];for(const e of i)if(!t||"all"===t||e.id===t)for(const t of e.stamps){if(r){const o=(null==(a=e.categories)?void 0:a.includes(r))??!1,i=(null==(n=t.categories)?void 0:n.includes(r))??!1;if(!o&&!i)continue}l.push({library:e,stamp:t})}o.value=l};i();n(e.onLibraryChange(i))},{immediate:!0}),o},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-stamp"),r=require("@embedpdf/core/vue"),a=require("vue"),i=require("@embedpdf/models"),o=()=>r.useCapability(t.StampPlugin.id),l=["src"],n=a.defineComponent({__name:"stamp-img",props:{libraryId:{},pageIndex:{},width:{},dpr:{}},setup(e){const t=e,{provides:r}=o(),n=a.ref(null);let u=null;function s(){u&&(URL.revokeObjectURL(u),u=null)}let p=null;return a.watch([()=>r.value,()=>t.libraryId,()=>t.pageIndex,()=>t.width,()=>t.dpr],([e,t,r,a,o],l,c)=>{if(p&&(p(),p=null),!e)return void(n.value=null);const d=e.renderStamp(t,r,a,o??window.devicePixelRatio);p=()=>d.abort({code:i.PdfErrorCode.Cancelled,message:"canceled stamp render task"}),d.wait(e=>{s();const t=URL.createObjectURL(e);u=t,n.value=t,p=null},i.ignore),c(()=>{p&&(p(),p=null),s()})},{immediate:!0}),(e,t)=>n.value?(a.openBlock(),a.createElementBlock("img",a.mergeProps({key:0,src:n.value},e.$attrs,{onLoad:s}),null,16,l)):a.createCommentVNode("",!0)}}),u=e.createPluginPackage(t.StampPluginPackage).build();exports.StampImg=n,exports.StampPluginPackage=u,exports.useActiveStamp=e=>{const{provides:t}=o(),r=a.ref(null);return a.watch([t,()=>a.toValue(e)],([e,t],a,i)=>{if(!e||!t)return void(r.value=null);const o=e.forDocument(t);r.value=o.getActiveStamp();i(o.onActiveStampChange(e=>{r.value=e}))},{immediate:!0}),r},exports.useStampCapability=o,exports.useStampLibraries=()=>{const{provides:e}=o(),t=a.ref([]);return a.watch(e,(e,r,a)=>{if(!e)return void(t.value=[]);t.value=e.getLibraries();a(e.onLibraryChange(e=>{t.value=e}))},{immediate:!0}),{libraries:t}},exports.useStampPlugin=()=>r.usePlugin(t.StampPlugin.id),exports.useStampsByCategory=e=>{const{provides:t}=o(),r=a.ref([]);return a.watch([t,()=>a.toValue(e)],([e,t],a,i)=>{if(!e)return void(r.value=[]);r.value=e.getStampsByCategory(t);i(e.onLibraryChange(()=>{r.value=e.getStampsByCategory(t)}))},{immediate:!0}),r},exports.useStampsByLibrary=(e,t)=>{const{provides:r}=o(),i=a.ref([]);return a.watch([r,()=>a.toValue(e),()=>a.toValue(t)],([e,t,r],a,o)=>{if(!e)return void(i.value=[]);const l=()=>{var a,o;const l=e.getLibraries(),n=[];for(const e of l)if(!t||"all"===t||e.id===t)for(const t of e.stamps){if(r){const i=(null==(a=e.categories)?void 0:a.includes(r))??!1,l=(null==(o=t.categories)?void 0:o.includes(r))??!1;if(!i&&!l)continue}n.push({library:e,stamp:t})}i.value=n};l();o(e.onLibraryChange(l))},{immediate:!0}),i},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/vue/components/stamp-preview.vue","../../src/vue/components/stamp-preview-renderers.ts","../../src/vue/components/stamp-renderer-registration.vue","../../src/vue/hooks/use-stamp.ts","../../src/vue/components/stamp-img.vue","../../src/vue/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Rect } from '@embedpdf/models';\nimport type { StampPreviewData } from '@embedpdf/plugin-stamp';\n\nconst props = defineProps<{\n data: StampPreviewData;\n bounds: Rect;\n scale: number;\n}>();\n\nconst rotationDeg = computed(() => ((4 - props.data.pageRotation) % 4) * 90);\n\nconst style = computed(() => ({\n width: '100%',\n height: '100%',\n opacity: 0.6,\n objectFit: 'contain' as const,\n pointerEvents: 'none' as const,\n transform: rotationDeg.value ? `rotate(${rotationDeg.value}deg)` : undefined,\n}));\n</script>\n\n<template>\n <img :src=\"data.ghostUrl\" :style=\"style\" alt=\"\" />\n</template>\n","import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport type { StampPreviewData } from '@embedpdf/plugin-stamp';\nimport type { BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/vue';\nimport { createRenderer } from '@embedpdf/plugin-annotation/vue';\nimport StampPreview from './stamp-preview.vue';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: StampPreview,\n }),\n];\n","<script setup lang=\"ts\">\nimport { useRegisterRenderers } from '@embedpdf/plugin-annotation/vue';\nimport { stampPreviewRenderers } from './stamp-preview-renderers';\n\nuseRegisterRenderers(stampPreviewRenderers);\n</script>\n\n<template>\n <slot />\n</template>\n","import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { ref, watch, toValue, type MaybeRefOrGetter } from 'vue';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const libraries = ref<StampLibrary[]>([]);\n\n watch(\n provides,\n (capability, _, onCleanup) => {\n if (!capability) {\n libraries.value = [];\n return;\n }\n\n libraries.value = capability.getLibraries();\n const unsubscribe = capability.onLibraryChange((libs) => {\n libraries.value = libs;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return { libraries };\n};\n\nexport const useStampsByCategory = (category: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(category)],\n ([capability, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n stamps.value = capability.getStampsByCategory(cat);\n const unsubscribe = capability.onLibraryChange(() => {\n stamps.value = capability.getStampsByCategory(cat);\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (\n libraryId: MaybeRefOrGetter<string | undefined>,\n category?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(libraryId), () => toValue(category)],\n ([capability, libId, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libId && libId !== 'all' && library.id !== libId) continue;\n\n for (const stamp of library.stamps) {\n if (cat) {\n const libraryMatches = library.categories?.includes(cat) ?? false;\n const stampMatches = stamp.categories?.includes(cat) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps.value = results;\n };\n\n derive();\n const unsubscribe = capability.onLibraryChange(derive);\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const activeStamp = ref<ActiveStampInfo | null>(null);\n\n watch(\n [provides, () => toValue(documentId)],\n ([capability, docId], _, onCleanup) => {\n if (!capability || !docId) {\n activeStamp.value = null;\n return;\n }\n\n const scope = capability.forDocument(docId);\n activeStamp.value = scope.getActiveStamp();\n const unsubscribe = scope.onActiveStampChange((stamp) => {\n activeStamp.value = stamp;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return activeStamp;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport { useStampCapability } from '../hooks';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\n\ninterface StampImgProps {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n}\n\nconst props = defineProps<StampImgProps>();\n\nconst { provides } = useStampCapability();\n\nconst url = ref<string | null>(null);\nlet urlToRevoke: string | null = null;\n\nfunction revoke() {\n if (urlToRevoke) {\n URL.revokeObjectURL(urlToRevoke);\n urlToRevoke = null;\n }\n}\n\nlet abortTask: (() => void) | null = null;\n\nwatch(\n [\n () => provides.value,\n () => props.libraryId,\n () => props.pageIndex,\n () => props.width,\n () => props.dpr,\n ],\n ([capability, libraryId, pageIndex, width, dpr], _, onCleanup) => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n\n if (!capability) {\n url.value = null;\n return;\n }\n\n const task = capability.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n abortTask = () =>\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n\n task.wait((blob) => {\n revoke();\n const objectUrl = URL.createObjectURL(blob);\n urlToRevoke = objectUrl;\n url.value = objectUrl;\n abortTask = null;\n }, ignore);\n\n onCleanup(() => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n revoke();\n });\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <img v-if=\"url\" :src=\"url\" v-bind=\"$attrs\" @load=\"revoke\" />\n</template>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport StampRendererRegistration from './components/stamp-renderer-registration.vue';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n"],"names":["props","__props","rotationDeg","computed","data","pageRotation","style","width","height","opacity","objectFit","pointerEvents","transform","value","_createElementBlock","src","ghostUrl","alt","stampPreviewRenderers","createRenderer","id","matchesPreview","p","type","PdfAnnotationSubtype","STAMP","renderPreview","StampPreview","useRegisterRenderers","_renderSlot","_ctx","$slots","useStampCapability","useCapability","StampPlugin","provides","url","ref","urlToRevoke","revoke","URL","revokeObjectURL","abortTask","watch","libraryId","pageIndex","dpr","capability","_","onCleanup","task","renderStamp","window","devicePixelRatio","abort","code","PdfErrorCode","Cancelled","message","wait","blob","objectUrl","createObjectURL","ignore","immediate","_openBlock","_mergeProps","$attrs","onLoad","_hoisted_1","StampPluginPackage","createPluginPackage","BaseStampPackage","addUtility","StampRendererRegistration","build","documentId","activeStamp","toValue","docId","scope","forDocument","getActiveStamp","onActiveStampChange","stamp","libraries","getLibraries","onLibraryChange","libs","usePlugin","category","stamps","cat","getStampsByCategory","libId","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-stamp.ts","../../src/vue/components/stamp-img.vue","../../src/vue/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { ref, watch, toValue, type MaybeRefOrGetter } from 'vue';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const libraries = ref<StampLibrary[]>([]);\n\n watch(\n provides,\n (capability, _, onCleanup) => {\n if (!capability) {\n libraries.value = [];\n return;\n }\n\n libraries.value = capability.getLibraries();\n const unsubscribe = capability.onLibraryChange((libs) => {\n libraries.value = libs;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return { libraries };\n};\n\nexport const useStampsByCategory = (category: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(category)],\n ([capability, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n stamps.value = capability.getStampsByCategory(cat);\n const unsubscribe = capability.onLibraryChange(() => {\n stamps.value = capability.getStampsByCategory(cat);\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (\n libraryId: MaybeRefOrGetter<string | undefined>,\n category?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(libraryId), () => toValue(category)],\n ([capability, libId, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libId && libId !== 'all' && library.id !== libId) continue;\n\n for (const stamp of library.stamps) {\n if (cat) {\n const libraryMatches = library.categories?.includes(cat) ?? false;\n const stampMatches = stamp.categories?.includes(cat) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps.value = results;\n };\n\n derive();\n const unsubscribe = capability.onLibraryChange(derive);\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const activeStamp = ref<ActiveStampInfo | null>(null);\n\n watch(\n [provides, () => toValue(documentId)],\n ([capability, docId], _, onCleanup) => {\n if (!capability || !docId) {\n activeStamp.value = null;\n return;\n }\n\n const scope = capability.forDocument(docId);\n activeStamp.value = scope.getActiveStamp();\n const unsubscribe = scope.onActiveStampChange((stamp) => {\n activeStamp.value = stamp;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return activeStamp;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport { useStampCapability } from '../hooks';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\n\ninterface StampImgProps {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n}\n\nconst props = defineProps<StampImgProps>();\n\nconst { provides } = useStampCapability();\n\nconst url = ref<string | null>(null);\nlet urlToRevoke: string | null = null;\n\nfunction revoke() {\n if (urlToRevoke) {\n URL.revokeObjectURL(urlToRevoke);\n urlToRevoke = null;\n }\n}\n\nlet abortTask: (() => void) | null = null;\n\nwatch(\n [\n () => provides.value,\n () => props.libraryId,\n () => props.pageIndex,\n () => props.width,\n () => props.dpr,\n ],\n ([capability, libraryId, pageIndex, width, dpr], _, onCleanup) => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n\n if (!capability) {\n url.value = null;\n return;\n }\n\n const task = capability.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n abortTask = () =>\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n\n task.wait((blob) => {\n revoke();\n const objectUrl = URL.createObjectURL(blob);\n urlToRevoke = objectUrl;\n url.value = objectUrl;\n abortTask = null;\n }, ignore);\n\n onCleanup(() => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n revoke();\n });\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <img v-if=\"url\" :src=\"url\" v-bind=\"$attrs\" @load=\"revoke\" />\n</template>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n"],"names":["useStampCapability","useCapability","StampPlugin","id","props","__props","provides","url","ref","urlToRevoke","revoke","URL","revokeObjectURL","abortTask","watch","value","libraryId","pageIndex","width","dpr","capability","_","onCleanup","task","renderStamp","window","devicePixelRatio","abort","code","PdfErrorCode","Cancelled","message","wait","blob","objectUrl","createObjectURL","ignore","immediate","_openBlock","_createElementBlock","_mergeProps","src","$attrs","onLoad","_hoisted_1","StampPluginPackage","createPluginPackage","BaseStampPackage","build","documentId","activeStamp","toValue","docId","scope","forDocument","getActiveStamp","onActiveStampChange","stamp","libraries","getLibraries","onLibraryChange","libs","usePlugin","category","stamps","cat","getStampsByCategory","libId","derive","results","library","libraryMatches","_a","categories","includes","stampMatches","_b","push"],"mappings":"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"}
package/dist/vue/index.js CHANGED
@@ -1,54 +1,9 @@
1
1
  import { createPluginPackage } from "@embedpdf/core";
2
2
  import { StampPlugin, StampPluginPackage as StampPluginPackage$1 } from "@embedpdf/plugin-stamp";
3
3
  export * from "@embedpdf/plugin-stamp";
4
- import { defineComponent, computed, openBlock, createElementBlock, normalizeStyle, renderSlot, ref, watch, toValue, mergeProps, createCommentVNode } from "vue";
5
- import { createRenderer, useRegisterRenderers } from "@embedpdf/plugin-annotation/vue";
6
- import { PdfAnnotationSubtype, ignore, PdfErrorCode } from "@embedpdf/models";
7
- import { useCapability, usePlugin } from "@embedpdf/core/vue";
8
- const _hoisted_1$1 = ["src"];
9
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
10
- __name: "stamp-preview",
11
- props: {
12
- data: {},
13
- bounds: {},
14
- scale: {}
15
- },
16
- setup(__props) {
17
- const props = __props;
18
- const rotationDeg = computed(() => (4 - props.data.pageRotation) % 4 * 90);
19
- const style = computed(() => ({
20
- width: "100%",
21
- height: "100%",
22
- opacity: 0.6,
23
- objectFit: "contain",
24
- pointerEvents: "none",
25
- transform: rotationDeg.value ? `rotate(${rotationDeg.value}deg)` : void 0
26
- }));
27
- return (_ctx, _cache) => {
28
- return openBlock(), createElementBlock("img", {
29
- src: __props.data.ghostUrl,
30
- style: normalizeStyle(style.value),
31
- alt: ""
32
- }, null, 12, _hoisted_1$1);
33
- };
34
- }
35
- });
36
- const stampPreviewRenderers = [
37
- createRenderer({
38
- id: "stampPreview",
39
- matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,
40
- renderPreview: _sfc_main$2
41
- })
42
- ];
43
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
44
- __name: "stamp-renderer-registration",
45
- setup(__props) {
46
- useRegisterRenderers(stampPreviewRenderers);
47
- return (_ctx, _cache) => {
48
- return renderSlot(_ctx.$slots, "default");
49
- };
50
- }
51
- });
4
+ import { usePlugin, useCapability } from "@embedpdf/core/vue";
5
+ import { ref, watch, toValue, defineComponent, openBlock, createElementBlock, mergeProps, createCommentVNode } from "vue";
6
+ import { ignore, PdfErrorCode } from "@embedpdf/models";
52
7
  const useStampPlugin = () => usePlugin(StampPlugin.id);
53
8
  const useStampCapability = () => useCapability(StampPlugin.id);
54
9
  const useStampLibraries = () => {
@@ -220,11 +175,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
220
175
  };
221
176
  }
222
177
  });
223
- const StampPluginPackage = createPluginPackage(StampPluginPackage$1).addUtility(_sfc_main$1).build();
178
+ const StampPluginPackage = createPluginPackage(StampPluginPackage$1).build();
224
179
  export {
225
180
  _sfc_main as StampImg,
226
181
  StampPluginPackage,
227
- _sfc_main$1 as StampRendererRegistration,
228
182
  useActiveStamp,
229
183
  useStampCapability,
230
184
  useStampLibraries,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/vue/components/stamp-preview.vue","../../src/vue/components/stamp-preview-renderers.ts","../../src/vue/components/stamp-renderer-registration.vue","../../src/vue/hooks/use-stamp.ts","../../src/vue/components/stamp-img.vue","../../src/vue/index.ts"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport type { Rect } from '@embedpdf/models';\nimport type { StampPreviewData } from '@embedpdf/plugin-stamp';\n\nconst props = defineProps<{\n data: StampPreviewData;\n bounds: Rect;\n scale: number;\n}>();\n\nconst rotationDeg = computed(() => ((4 - props.data.pageRotation) % 4) * 90);\n\nconst style = computed(() => ({\n width: '100%',\n height: '100%',\n opacity: 0.6,\n objectFit: 'contain' as const,\n pointerEvents: 'none' as const,\n transform: rotationDeg.value ? `rotate(${rotationDeg.value}deg)` : undefined,\n}));\n</script>\n\n<template>\n <img :src=\"data.ghostUrl\" :style=\"style\" alt=\"\" />\n</template>\n","import { PdfAnnotationSubtype } from '@embedpdf/models';\nimport type { StampPreviewData } from '@embedpdf/plugin-stamp';\nimport type { BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/vue';\nimport { createRenderer } from '@embedpdf/plugin-annotation/vue';\nimport StampPreview from './stamp-preview.vue';\n\nexport const stampPreviewRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<never, StampPreviewData>({\n id: 'stampPreview',\n matchesPreview: (p) => p.type === PdfAnnotationSubtype.STAMP,\n renderPreview: StampPreview,\n }),\n];\n","<script setup lang=\"ts\">\nimport { useRegisterRenderers } from '@embedpdf/plugin-annotation/vue';\nimport { stampPreviewRenderers } from './stamp-preview-renderers';\n\nuseRegisterRenderers(stampPreviewRenderers);\n</script>\n\n<template>\n <slot />\n</template>\n","import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { ref, watch, toValue, type MaybeRefOrGetter } from 'vue';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const libraries = ref<StampLibrary[]>([]);\n\n watch(\n provides,\n (capability, _, onCleanup) => {\n if (!capability) {\n libraries.value = [];\n return;\n }\n\n libraries.value = capability.getLibraries();\n const unsubscribe = capability.onLibraryChange((libs) => {\n libraries.value = libs;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return { libraries };\n};\n\nexport const useStampsByCategory = (category: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(category)],\n ([capability, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n stamps.value = capability.getStampsByCategory(cat);\n const unsubscribe = capability.onLibraryChange(() => {\n stamps.value = capability.getStampsByCategory(cat);\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (\n libraryId: MaybeRefOrGetter<string | undefined>,\n category?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(libraryId), () => toValue(category)],\n ([capability, libId, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libId && libId !== 'all' && library.id !== libId) continue;\n\n for (const stamp of library.stamps) {\n if (cat) {\n const libraryMatches = library.categories?.includes(cat) ?? false;\n const stampMatches = stamp.categories?.includes(cat) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps.value = results;\n };\n\n derive();\n const unsubscribe = capability.onLibraryChange(derive);\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const activeStamp = ref<ActiveStampInfo | null>(null);\n\n watch(\n [provides, () => toValue(documentId)],\n ([capability, docId], _, onCleanup) => {\n if (!capability || !docId) {\n activeStamp.value = null;\n return;\n }\n\n const scope = capability.forDocument(docId);\n activeStamp.value = scope.getActiveStamp();\n const unsubscribe = scope.onActiveStampChange((stamp) => {\n activeStamp.value = stamp;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return activeStamp;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport { useStampCapability } from '../hooks';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\n\ninterface StampImgProps {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n}\n\nconst props = defineProps<StampImgProps>();\n\nconst { provides } = useStampCapability();\n\nconst url = ref<string | null>(null);\nlet urlToRevoke: string | null = null;\n\nfunction revoke() {\n if (urlToRevoke) {\n URL.revokeObjectURL(urlToRevoke);\n urlToRevoke = null;\n }\n}\n\nlet abortTask: (() => void) | null = null;\n\nwatch(\n [\n () => provides.value,\n () => props.libraryId,\n () => props.pageIndex,\n () => props.width,\n () => props.dpr,\n ],\n ([capability, libraryId, pageIndex, width, dpr], _, onCleanup) => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n\n if (!capability) {\n url.value = null;\n return;\n }\n\n const task = capability.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n abortTask = () =>\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n\n task.wait((blob) => {\n revoke();\n const objectUrl = URL.createObjectURL(blob);\n urlToRevoke = objectUrl;\n url.value = objectUrl;\n abortTask = null;\n }, ignore);\n\n onCleanup(() => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n revoke();\n });\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <img v-if=\"url\" :src=\"url\" v-bind=\"$attrs\" @load=\"revoke\" />\n</template>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\nimport StampRendererRegistration from './components/stamp-renderer-registration.vue';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage)\n .addUtility(StampRendererRegistration)\n .build();\n"],"names":["_createElementBlock","StampPreview","_renderSlot","_openBlock","_mergeProps","$attrs","BaseStampPackage","StampRendererRegistration"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/vue/hooks/use-stamp.ts","../../src/vue/components/stamp-img.vue","../../src/vue/index.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { StampPlugin, StampLibrary, ResolvedStamp, ActiveStampInfo } from '@embedpdf/plugin-stamp';\nimport { ref, watch, toValue, type MaybeRefOrGetter } from 'vue';\n\nexport const useStampPlugin = () => usePlugin<StampPlugin>(StampPlugin.id);\nexport const useStampCapability = () => useCapability<StampPlugin>(StampPlugin.id);\n\nexport const useStampLibraries = () => {\n const { provides } = useStampCapability();\n const libraries = ref<StampLibrary[]>([]);\n\n watch(\n provides,\n (capability, _, onCleanup) => {\n if (!capability) {\n libraries.value = [];\n return;\n }\n\n libraries.value = capability.getLibraries();\n const unsubscribe = capability.onLibraryChange((libs) => {\n libraries.value = libs;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return { libraries };\n};\n\nexport const useStampsByCategory = (category: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(category)],\n ([capability, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n stamps.value = capability.getStampsByCategory(cat);\n const unsubscribe = capability.onLibraryChange(() => {\n stamps.value = capability.getStampsByCategory(cat);\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useStampsByLibrary = (\n libraryId: MaybeRefOrGetter<string | undefined>,\n category?: MaybeRefOrGetter<string | undefined>,\n) => {\n const { provides } = useStampCapability();\n const stamps = ref<ResolvedStamp[]>([]);\n\n watch(\n [provides, () => toValue(libraryId), () => toValue(category)],\n ([capability, libId, cat], _, onCleanup) => {\n if (!capability) {\n stamps.value = [];\n return;\n }\n\n const derive = () => {\n const libraries = capability.getLibraries();\n const results: ResolvedStamp[] = [];\n\n for (const library of libraries) {\n if (libId && libId !== 'all' && library.id !== libId) continue;\n\n for (const stamp of library.stamps) {\n if (cat) {\n const libraryMatches = library.categories?.includes(cat) ?? false;\n const stampMatches = stamp.categories?.includes(cat) ?? false;\n if (!libraryMatches && !stampMatches) continue;\n }\n results.push({ library, stamp });\n }\n }\n\n stamps.value = results;\n };\n\n derive();\n const unsubscribe = capability.onLibraryChange(derive);\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return stamps;\n};\n\nexport const useActiveStamp = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = useStampCapability();\n const activeStamp = ref<ActiveStampInfo | null>(null);\n\n watch(\n [provides, () => toValue(documentId)],\n ([capability, docId], _, onCleanup) => {\n if (!capability || !docId) {\n activeStamp.value = null;\n return;\n }\n\n const scope = capability.forDocument(docId);\n activeStamp.value = scope.getActiveStamp();\n const unsubscribe = scope.onActiveStampChange((stamp) => {\n activeStamp.value = stamp;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return activeStamp;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport { useStampCapability } from '../hooks';\nimport { ignore, PdfErrorCode } from '@embedpdf/models';\n\ninterface StampImgProps {\n libraryId: string;\n pageIndex: number;\n width: number;\n dpr?: number;\n}\n\nconst props = defineProps<StampImgProps>();\n\nconst { provides } = useStampCapability();\n\nconst url = ref<string | null>(null);\nlet urlToRevoke: string | null = null;\n\nfunction revoke() {\n if (urlToRevoke) {\n URL.revokeObjectURL(urlToRevoke);\n urlToRevoke = null;\n }\n}\n\nlet abortTask: (() => void) | null = null;\n\nwatch(\n [\n () => provides.value,\n () => props.libraryId,\n () => props.pageIndex,\n () => props.width,\n () => props.dpr,\n ],\n ([capability, libraryId, pageIndex, width, dpr], _, onCleanup) => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n\n if (!capability) {\n url.value = null;\n return;\n }\n\n const task = capability.renderStamp(\n libraryId,\n pageIndex,\n width,\n dpr ?? window.devicePixelRatio,\n );\n\n abortTask = () =>\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled stamp render task',\n });\n\n task.wait((blob) => {\n revoke();\n const objectUrl = URL.createObjectURL(blob);\n urlToRevoke = objectUrl;\n url.value = objectUrl;\n abortTask = null;\n }, ignore);\n\n onCleanup(() => {\n if (abortTask) {\n abortTask();\n abortTask = null;\n }\n revoke();\n });\n },\n { immediate: true },\n);\n</script>\n\n<template>\n <img v-if=\"url\" :src=\"url\" v-bind=\"$attrs\" @load=\"revoke\" />\n</template>\n","import { createPluginPackage } from '@embedpdf/core';\nimport { StampPluginPackage as BaseStampPackage } from '@embedpdf/plugin-stamp';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-stamp';\n\nexport const StampPluginPackage = createPluginPackage(BaseStampPackage).build();\n"],"names":["_openBlock","_createElementBlock","_mergeProps","$attrs","BaseStampPackage"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@embedpdf/plugin-stamp",
3
- "version": "2.11.1",
3
+ "version": "2.12.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.cjs",
@@ -34,15 +34,15 @@
34
34
  }
35
35
  },
36
36
  "dependencies": {
37
- "@embedpdf/models": "2.11.1"
37
+ "@embedpdf/models": "2.12.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/react": "^18.2.0",
41
41
  "typescript": "^5.0.0",
42
- "@embedpdf/build": "1.1.0",
43
- "@embedpdf/core": "2.11.1",
44
- "@embedpdf/plugin-annotation": "2.11.1",
45
- "@embedpdf/plugin-i18n": "2.11.1"
42
+ "@embedpdf/core": "2.12.0",
43
+ "@embedpdf/plugin-i18n": "2.12.0",
44
+ "@embedpdf/plugin-annotation": "2.12.0",
45
+ "@embedpdf/build": "1.1.0"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "react": ">=16.8.0",
@@ -50,9 +50,9 @@
50
50
  "preact": "^10.26.4",
51
51
  "vue": ">=3.2.0",
52
52
  "svelte": ">=5 <6",
53
- "@embedpdf/plugin-annotation": "2.11.1",
54
- "@embedpdf/plugin-i18n": "2.11.1",
55
- "@embedpdf/core": "2.11.1"
53
+ "@embedpdf/core": "2.12.0",
54
+ "@embedpdf/plugin-i18n": "2.12.0",
55
+ "@embedpdf/plugin-annotation": "2.12.0"
56
56
  },
57
57
  "files": [
58
58
  "dist",
@@ -1,2 +0,0 @@
1
- import { BoxedAnnotationRenderer } from '../../react/annotation.ts';
2
- export declare const stampPreviewRenderers: BoxedAnnotationRenderer[];
@@ -1 +0,0 @@
1
- export declare function StampRendererRegistration(): null;
@@ -1,2 +0,0 @@
1
- import { BoxedAnnotationRenderer } from '../../preact/annotation.ts';
2
- export declare const stampPreviewRenderers: BoxedAnnotationRenderer[];
@@ -1 +0,0 @@
1
- export declare function StampRendererRegistration(): null;
@@ -1,2 +0,0 @@
1
- import { BoxedAnnotationRenderer } from '../../react/annotation.ts';
2
- export declare const stampPreviewRenderers: BoxedAnnotationRenderer[];
@@ -1 +0,0 @@
1
- export declare function StampRendererRegistration(): null;
@@ -1,10 +0,0 @@
1
- import { Rect } from '@embedpdf/models';
2
- import { StampPreviewData } from '../../lib/index.ts';
3
- interface StampPreviewProps {
4
- data: StampPreviewData;
5
- bounds: Rect;
6
- scale: number;
7
- }
8
- declare const StampPreview: import('svelte', { with: { "resolution-mode": "import" } }).Component<StampPreviewProps, {}, "">;
9
- type StampPreview = ReturnType<typeof StampPreview>;
10
- export default StampPreview;
@@ -1,18 +0,0 @@
1
- interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const StampRendererRegistration: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
15
- [evt: string]: CustomEvent<any>;
16
- }, {}, {}, string>;
17
- type StampRendererRegistration = InstanceType<typeof StampRendererRegistration>;
18
- export default StampRendererRegistration;
@@ -1,2 +0,0 @@
1
- import { BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/svelte';
2
- export declare const stampPreviewRenderers: BoxedAnnotationRenderer[];
@@ -1,2 +0,0 @@
1
- import { BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/vue';
2
- export declare const stampPreviewRenderers: BoxedAnnotationRenderer[];
@@ -1,10 +0,0 @@
1
- import { Rect } from '@embedpdf/models';
2
- import { StampPreviewData } from '../../lib/index.ts';
3
- type __VLS_Props = {
4
- data: StampPreviewData;
5
- bounds: Rect;
6
- scale: number;
7
- };
8
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
9
- declare const _default: typeof __VLS_export;
10
- export default _default;
@@ -1,13 +0,0 @@
1
- declare var __VLS_1: {};
2
- type __VLS_Slots = {} & {
3
- default?: (props: typeof __VLS_1) => any;
4
- };
5
- declare const __VLS_base: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
- declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
7
- declare const _default: typeof __VLS_export;
8
- export default _default;
9
- type __VLS_WithSlots<T, S> = T & {
10
- new (): {
11
- $slots: S;
12
- };
13
- };