@embedpdf/plugin-stamp 2.11.1 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/types.d.ts +1 -6
- package/dist/preact/index.cjs +1 -1
- package/dist/preact/index.cjs.map +1 -1
- package/dist/preact/index.js +3 -34
- package/dist/preact/index.js.map +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +3 -34
- package/dist/react/index.js.map +1 -1
- package/dist/shared/components/index.d.ts +0 -2
- package/dist/shared-preact/components/index.d.ts +0 -2
- package/dist/shared-react/components/index.d.ts +0 -2
- package/dist/svelte/components/index.d.ts +0 -1
- package/dist/svelte/index.cjs +1 -1
- package/dist/svelte/index.cjs.map +1 -1
- package/dist/svelte/index.js +4 -45
- package/dist/svelte/index.js.map +1 -1
- package/dist/vue/components/index.d.ts +0 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.js +4 -50
- package/dist/vue/index.js.map +1 -1
- package/package.json +8 -8
- package/dist/shared/components/stamp-preview-renderers.d.ts +0 -2
- package/dist/shared/components/stamp-renderer-registration.d.ts +0 -1
- package/dist/shared-preact/components/stamp-preview-renderers.d.ts +0 -2
- package/dist/shared-preact/components/stamp-renderer-registration.d.ts +0 -1
- package/dist/shared-react/components/stamp-preview-renderers.d.ts +0 -2
- package/dist/shared-react/components/stamp-renderer-registration.d.ts +0 -1
- package/dist/svelte/components/StampPreview.svelte.d.ts +0 -10
- package/dist/svelte/components/StampRendererRegistration.svelte.d.ts +0 -18
- package/dist/svelte/components/stamp-preview-renderers.d.ts +0 -2
- package/dist/vue/components/stamp-preview-renderers.d.ts +0 -2
- package/dist/vue/components/stamp-preview.vue.d.ts +0 -10
- package/dist/vue/components/stamp-renderer-registration.vue.d.ts +0 -13
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import { BasePluginConfig, EventHook } from '@embedpdf/core';
|
|
2
|
-
import { PdfAnnotationName, PdfAnnotationObject, PdfDocumentObject, PdfTask,
|
|
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;
|
package/dist/preact/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),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/
|
|
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"}
|
package/dist/preact/index.js
CHANGED
|
@@ -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
|
-
|
|
11
|
-
|
|
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).
|
|
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,
|
package/dist/preact/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/shared/
|
|
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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"}
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),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
|
package/dist/react/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/shared/
|
|
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"}
|
package/dist/react/index.js
CHANGED
|
@@ -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
|
-
|
|
10
|
-
|
|
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).
|
|
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,
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/shared/
|
|
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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"}
|
package/dist/svelte/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-stamp")
|
|
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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"}
|
package/dist/svelte/index.js
CHANGED
|
@@ -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 {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
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).
|
|
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,
|
package/dist/svelte/index.js.map
CHANGED
|
@@ -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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"}
|
package/dist/vue/index.cjs
CHANGED
|
@@ -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("
|
|
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
|
package/dist/vue/index.cjs.map
CHANGED
|
@@ -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 {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
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).
|
|
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,
|
package/dist/vue/index.js.map
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "2.12.1",
|
|
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.
|
|
37
|
+
"@embedpdf/models": "2.12.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/react": "^18.2.0",
|
|
41
41
|
"typescript": "^5.0.0",
|
|
42
42
|
"@embedpdf/build": "1.1.0",
|
|
43
|
-
"@embedpdf/
|
|
44
|
-
"@embedpdf/plugin-
|
|
45
|
-
"@embedpdf/
|
|
43
|
+
"@embedpdf/plugin-annotation": "2.12.1",
|
|
44
|
+
"@embedpdf/plugin-i18n": "2.12.1",
|
|
45
|
+
"@embedpdf/core": "2.12.1"
|
|
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.
|
|
54
|
-
"@embedpdf/plugin-i18n": "2.
|
|
55
|
-
"@embedpdf/core": "2.
|
|
53
|
+
"@embedpdf/plugin-annotation": "2.12.1",
|
|
54
|
+
"@embedpdf/plugin-i18n": "2.12.1",
|
|
55
|
+
"@embedpdf/core": "2.12.1"
|
|
56
56
|
},
|
|
57
57
|
"files": [
|
|
58
58
|
"dist",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function StampRendererRegistration(): null;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function StampRendererRegistration(): null;
|
|
@@ -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,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
|
-
};
|