@embedpdf/plugin-signature 2.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.cjs +2 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +516 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/lib/actions.d.ts +14 -0
  8. package/dist/lib/handlers/signature-ink.handler.d.ts +4 -0
  9. package/dist/lib/handlers/signature-stamp.handler.d.ts +4 -0
  10. package/dist/lib/index.d.ts +12 -0
  11. package/dist/lib/manifest.d.ts +4 -0
  12. package/dist/lib/reducer.d.ts +5 -0
  13. package/dist/lib/serialization.d.ts +30 -0
  14. package/dist/lib/signature-plugin.d.ts +27 -0
  15. package/dist/lib/tools.d.ts +113 -0
  16. package/dist/lib/types.d.ts +114 -0
  17. package/dist/preact/adapter.d.ts +5 -0
  18. package/dist/preact/annotation.d.ts +1 -0
  19. package/dist/preact/core.d.ts +1 -0
  20. package/dist/preact/index.cjs +2 -0
  21. package/dist/preact/index.cjs.map +1 -0
  22. package/dist/preact/index.d.ts +1 -0
  23. package/dist/preact/index.js +464 -0
  24. package/dist/preact/index.js.map +1 -0
  25. package/dist/react/adapter.d.ts +2 -0
  26. package/dist/react/annotation.d.ts +1 -0
  27. package/dist/react/core.d.ts +1 -0
  28. package/dist/react/index.cjs +2 -0
  29. package/dist/react/index.cjs.map +1 -0
  30. package/dist/react/index.d.ts +1 -0
  31. package/dist/react/index.js +463 -0
  32. package/dist/react/index.js.map +1 -0
  33. package/dist/shared/components/crop-canvas.d.ts +14 -0
  34. package/dist/shared/components/index.d.ts +2 -0
  35. package/dist/shared/components/signature-draw-pad.d.ts +12 -0
  36. package/dist/shared/components/signature-type-pad.d.ts +14 -0
  37. package/dist/shared/hooks/index.d.ts +2 -0
  38. package/dist/shared/hooks/use-signature-upload.d.ts +21 -0
  39. package/dist/shared/hooks/use-signature.d.ts +16 -0
  40. package/dist/shared/index.d.ts +4 -0
  41. package/dist/shared-preact/components/crop-canvas.d.ts +14 -0
  42. package/dist/shared-preact/components/index.d.ts +2 -0
  43. package/dist/shared-preact/components/signature-draw-pad.d.ts +12 -0
  44. package/dist/shared-preact/components/signature-type-pad.d.ts +14 -0
  45. package/dist/shared-preact/hooks/index.d.ts +2 -0
  46. package/dist/shared-preact/hooks/use-signature-upload.d.ts +21 -0
  47. package/dist/shared-preact/hooks/use-signature.d.ts +16 -0
  48. package/dist/shared-preact/index.d.ts +4 -0
  49. package/dist/shared-react/components/crop-canvas.d.ts +14 -0
  50. package/dist/shared-react/components/index.d.ts +2 -0
  51. package/dist/shared-react/components/signature-draw-pad.d.ts +12 -0
  52. package/dist/shared-react/components/signature-type-pad.d.ts +14 -0
  53. package/dist/shared-react/hooks/index.d.ts +2 -0
  54. package/dist/shared-react/hooks/use-signature-upload.d.ts +21 -0
  55. package/dist/shared-react/hooks/use-signature.d.ts +16 -0
  56. package/dist/shared-react/index.d.ts +4 -0
  57. package/dist/shared-vue/components/crop-canvas.d.ts +14 -0
  58. package/dist/svelte/components/SignatureDrawPad.svelte.d.ts +12 -0
  59. package/dist/svelte/components/SignatureTypePad.svelte.d.ts +14 -0
  60. package/dist/svelte/components/index.d.ts +2 -0
  61. package/dist/svelte/hooks/index.d.ts +2 -0
  62. package/dist/svelte/hooks/use-signature-upload.svelte.d.ts +21 -0
  63. package/dist/svelte/hooks/use-signature.svelte.d.ts +17 -0
  64. package/dist/svelte/index.cjs +2 -0
  65. package/dist/svelte/index.cjs.map +1 -0
  66. package/dist/svelte/index.d.ts +4 -0
  67. package/dist/svelte/index.js +415 -0
  68. package/dist/svelte/index.js.map +1 -0
  69. package/dist/vue/components/SignatureDrawPad.vue.d.ts +15 -0
  70. package/dist/vue/components/SignatureTypePad.vue.d.ts +19 -0
  71. package/dist/vue/components/index.d.ts +2 -0
  72. package/dist/vue/hooks/index.d.ts +2 -0
  73. package/dist/vue/hooks/use-signature-upload.d.ts +20 -0
  74. package/dist/vue/hooks/use-signature.d.ts +176 -0
  75. package/dist/vue/index.cjs +2 -0
  76. package/dist/vue/index.cjs.map +1 -0
  77. package/dist/vue/index.d.ts +4 -0
  78. package/dist/vue/index.js +453 -0
  79. package/dist/vue/index.js.map +1 -0
  80. package/package.json +82 -0
@@ -0,0 +1,2 @@
1
+ export * from './use-signature';
2
+ export * from './use-signature-upload';
@@ -0,0 +1,21 @@
1
+ import { SignatureStampFieldDefinition } from '../../lib/index.ts';
2
+ export interface UseSignatureUploadOptions {
3
+ accept?: string;
4
+ onResult: (result: SignatureStampFieldDefinition | null) => void;
5
+ }
6
+ export interface UseSignatureUploadReturn {
7
+ inputRef: {
8
+ current: HTMLInputElement | null;
9
+ };
10
+ openFilePicker: () => void;
11
+ processFile: (file: File) => void;
12
+ handleFileInputChange: (e: Event) => void;
13
+ handleDrop: (e: DragEvent) => void;
14
+ handleDragOver: (e: DragEvent) => void;
15
+ handleDragLeave: () => void;
16
+ previewUrl: string | null;
17
+ isDragging: boolean;
18
+ clear: () => void;
19
+ accept: string;
20
+ }
21
+ export declare function useSignatureUpload({ accept, onResult, }: UseSignatureUploadOptions): UseSignatureUploadReturn;
@@ -0,0 +1,16 @@
1
+ import { SignaturePlugin, SignatureEntry, ActivePlacementInfo } from '../../lib/index.ts';
2
+ export declare const useSignaturePlugin: () => {
3
+ plugin: SignaturePlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useSignatureCapability: () => {
8
+ provides: Readonly<import('../../lib/index.ts').SignatureCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ export declare const useSignatureEntries: () => {
13
+ entries: SignatureEntry[];
14
+ provides: Readonly<import('../../lib/index.ts').SignatureCapability> | null;
15
+ };
16
+ export declare const useActivePlacement: (documentId: string) => ActivePlacementInfo | null;
@@ -0,0 +1,4 @@
1
+ export * from './hooks';
2
+ export * from './components';
3
+ export * from '../lib/index.ts';
4
+ export declare const SignaturePluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').SignaturePlugin, import('../lib/index.ts').SignaturePluginConfig, import('../lib/index.ts').SignatureState, import('../lib/index.ts').SignatureAction>>;
@@ -0,0 +1,14 @@
1
+ export interface CropResult {
2
+ canvas: HTMLCanvasElement;
3
+ bounds: {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ };
9
+ }
10
+ /**
11
+ * Scans a canvas for non-transparent pixels and returns a tightly cropped copy.
12
+ * Returns null if the canvas has no visible content.
13
+ */
14
+ export declare function cropCanvas(source: HTMLCanvasElement, padding?: number): CropResult | null;
@@ -0,0 +1,2 @@
1
+ export * from './signature-draw-pad';
2
+ export * from './signature-type-pad';
@@ -0,0 +1,12 @@
1
+ import { SignatureInkFieldDefinition } from '../../lib/index.ts';
2
+ export interface SignatureDrawPadHandle {
3
+ clear(): void;
4
+ }
5
+ export interface SignatureDrawPadProps {
6
+ onResult: (result: SignatureInkFieldDefinition | null) => void;
7
+ padRef?: (handle: SignatureDrawPadHandle | null) => void;
8
+ strokeColor?: string;
9
+ strokeWidth?: number;
10
+ className?: string;
11
+ }
12
+ export declare function SignatureDrawPad({ onResult, padRef, strokeColor, strokeWidth, className, }: SignatureDrawPadProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { SignatureStampFieldDefinition } from '../../lib/index.ts';
2
+ export interface SignatureTypePadHandle {
3
+ clear(): void;
4
+ }
5
+ export interface SignatureTypePadProps {
6
+ onResult: (result: SignatureStampFieldDefinition | null) => void;
7
+ padRef?: (handle: SignatureTypePadHandle | null) => void;
8
+ fontFamily?: string;
9
+ fontSize?: number;
10
+ color?: string;
11
+ className?: string;
12
+ placeholder?: string;
13
+ }
14
+ export declare function SignatureTypePad({ onResult, padRef, fontFamily, fontSize, color, className, placeholder, }: SignatureTypePadProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from './use-signature';
2
+ export * from './use-signature-upload';
@@ -0,0 +1,21 @@
1
+ import { SignatureStampFieldDefinition } from '../../lib/index.ts';
2
+ export interface UseSignatureUploadOptions {
3
+ accept?: string;
4
+ onResult: (result: SignatureStampFieldDefinition | null) => void;
5
+ }
6
+ export interface UseSignatureUploadReturn {
7
+ inputRef: {
8
+ current: HTMLInputElement | null;
9
+ };
10
+ openFilePicker: () => void;
11
+ processFile: (file: File) => void;
12
+ handleFileInputChange: (e: Event) => void;
13
+ handleDrop: (e: DragEvent) => void;
14
+ handleDragOver: (e: DragEvent) => void;
15
+ handleDragLeave: () => void;
16
+ previewUrl: string | null;
17
+ isDragging: boolean;
18
+ clear: () => void;
19
+ accept: string;
20
+ }
21
+ export declare function useSignatureUpload({ accept, onResult, }: UseSignatureUploadOptions): UseSignatureUploadReturn;
@@ -0,0 +1,16 @@
1
+ import { SignaturePlugin, SignatureEntry, ActivePlacementInfo } from '../../lib/index.ts';
2
+ export declare const useSignaturePlugin: () => {
3
+ plugin: SignaturePlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useSignatureCapability: () => {
8
+ provides: Readonly<import('../../lib/index.ts').SignatureCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ export declare const useSignatureEntries: () => {
13
+ entries: SignatureEntry[];
14
+ provides: Readonly<import('../../lib/index.ts').SignatureCapability> | null;
15
+ };
16
+ export declare const useActivePlacement: (documentId: string) => ActivePlacementInfo | null;
@@ -0,0 +1,4 @@
1
+ export * from './hooks';
2
+ export * from './components';
3
+ export * from '../lib/index.ts';
4
+ export declare const SignaturePluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').SignaturePlugin, import('../lib/index.ts').SignaturePluginConfig, import('../lib/index.ts').SignatureState, import('../lib/index.ts').SignatureAction>>;
@@ -0,0 +1,14 @@
1
+ export interface CropResult {
2
+ canvas: HTMLCanvasElement;
3
+ bounds: {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ };
9
+ }
10
+ /**
11
+ * Scans a canvas for non-transparent pixels and returns a tightly cropped copy.
12
+ * Returns null if the canvas has no visible content.
13
+ */
14
+ export declare function cropCanvas(source: HTMLCanvasElement, padding?: number): CropResult | null;
@@ -0,0 +1,12 @@
1
+ import { SignatureInkFieldDefinition } from '../../lib/index.ts';
2
+ interface Props {
3
+ onResult: (result: SignatureInkFieldDefinition | null) => void;
4
+ strokeColor?: string;
5
+ strokeWidth?: number;
6
+ class?: string;
7
+ }
8
+ declare const SignatureDrawPad: import('svelte', { with: { "resolution-mode": "import" } }).Component<Props, {
9
+ clear: () => void;
10
+ }, "">;
11
+ type SignatureDrawPad = ReturnType<typeof SignatureDrawPad>;
12
+ export default SignatureDrawPad;
@@ -0,0 +1,14 @@
1
+ import { SignatureStampFieldDefinition } from '../../lib/index.ts';
2
+ interface Props {
3
+ onResult: (result: SignatureStampFieldDefinition | null) => void;
4
+ fontFamily?: string;
5
+ fontSize?: number;
6
+ color?: string;
7
+ class?: string;
8
+ placeholder?: string;
9
+ }
10
+ declare const SignatureTypePad: import('svelte', { with: { "resolution-mode": "import" } }).Component<Props, {
11
+ clear: () => void;
12
+ }, "">;
13
+ type SignatureTypePad = ReturnType<typeof SignatureTypePad>;
14
+ export default SignatureTypePad;
@@ -0,0 +1,2 @@
1
+ export { default as SignatureDrawPad } from './SignatureDrawPad.svelte';
2
+ export { default as SignatureTypePad } from './SignatureTypePad.svelte';
@@ -0,0 +1,2 @@
1
+ export * from './use-signature.svelte';
2
+ export * from './use-signature-upload.svelte';
@@ -0,0 +1,21 @@
1
+ import { SignatureStampFieldDefinition } from '../../lib/index.ts';
2
+ export interface UseSignatureUploadOptions {
3
+ accept?: string;
4
+ onResult: (result: SignatureStampFieldDefinition | null) => void;
5
+ }
6
+ export interface UseSignatureUploadReturn {
7
+ inputRef: {
8
+ current: HTMLInputElement | null;
9
+ };
10
+ openFilePicker: () => void;
11
+ processFile: (file: File) => void;
12
+ handleFileInputChange: (e: Event) => void;
13
+ handleDrop: (e: DragEvent) => void;
14
+ handleDragOver: (e: DragEvent) => void;
15
+ handleDragLeave: () => void;
16
+ readonly previewUrl: string | null;
17
+ readonly isDragging: boolean;
18
+ clear: () => void;
19
+ accept: string;
20
+ }
21
+ export declare function useSignatureUpload({ accept, onResult, }: UseSignatureUploadOptions): UseSignatureUploadReturn;
@@ -0,0 +1,17 @@
1
+ import { SignaturePlugin, SignatureEntry, ActivePlacementInfo } from '../../lib/index.ts';
2
+ export declare const useSignaturePlugin: () => {
3
+ plugin: SignaturePlugin | null;
4
+ isLoading: boolean;
5
+ ready: Promise<void>;
6
+ };
7
+ export declare const useSignatureCapability: () => {
8
+ provides: Readonly<import('../../lib/index.ts').SignatureCapability> | null;
9
+ isLoading: boolean;
10
+ ready: Promise<void>;
11
+ };
12
+ export declare function useSignatureEntries(): {
13
+ readonly entries: SignatureEntry[];
14
+ };
15
+ export declare function useActivePlacement(getDocumentId: () => string): {
16
+ readonly activePlacement: ActivePlacementInfo | null;
17
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@embedpdf/core"),t=require("@embedpdf/plugin-signature"),n=require("svelte/internal/client"),i=require("@embedpdf/core/svelte");function r(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e)for(const n in e)if("default"!==n){const i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:()=>e[n]})}return t.default=e,Object.freeze(t)}require("svelte/internal/disclose-version");const o=r(n),a=()=>i.useCapability(t.SignaturePlugin.id);function s(e,t=4){const n=e.getContext("2d");if(!n)return null;const{width:i,height:r}=e;if(0===i||0===r)return null;const o=n.getImageData(0,0,i,r),{data:a}=o;let s=i,l=r,u=0,c=0;for(let m=0;m<r;m++)for(let e=0;e<i;e++){a[4*(m*i+e)+3]>0&&(e<s&&(s=e),e>u&&(u=e),m<l&&(l=m),m>c&&(c=m))}if(u<s||c<l)return null;const g=Math.max(0,s-t),p=Math.max(0,l-t),d=Math.min(i,u+t+1)-g,h=Math.min(r,c+t+1)-p,f=document.createElement("canvas");f.width=d,f.height=h;const v=f.getContext("2d");return v?(v.drawImage(e,g,p,d,h,0,0,d,h),{canvas:f,bounds:{x:g,y:p,width:d,height:h}}):null}var l=o.from_html('<canvas style="touch-action: none; width: 100%; height: 100%; display: block;"></canvas>');o.delegate(["pointerdown","pointermove","pointerup"]);var u=o.from_html('<div style="width: 100%; height: 100%;"><!> <input type="text"/> <canvas style="display: none;"></canvas></div>');o.delegate(["input"]);const c=e.createPluginPackage(t.SignaturePluginPackage).build();exports.SignatureDrawPad=function(e,n){o.push(n,!0);let i=o.prop(n,"strokeColor",3,"#000000"),r=o.prop(n,"strokeWidth",3,4),a=o.prop(n,"class",3,""),u=o.state(void 0),c=o.state(o.proxy([])),g=!1;const p="undefined"!=typeof window&&window.devicePixelRatio||1;function d(e){if(!o.get(u))return{x:0,y:0};const t=o.get(u).getBoundingClientRect();return{x:(e.clientX-t.left)*(o.get(u).width/p/t.width),y:(e.clientY-t.top)*(o.get(u).height/p/t.height)}}function h(e){if(!o.get(u))return;const t=o.get(u).getContext("2d");if(t){t.clearRect(0,0,o.get(u).width,o.get(u).height),t.save(),t.scale(p,p),t.strokeStyle=i(),t.lineWidth=r(),t.lineCap="round",t.lineJoin="round";for(const n of e)if(0!==n.points.length){t.beginPath(),t.moveTo(n.points[0].x,n.points[0].y);for(let e=1;e<n.points.length;e++)t.lineTo(n.points[e].x,n.points[e].y);t.stroke()}t.restore()}}function f(e){if(0===e.length||e.every(e=>e.points.length<2))return void n.onResult(null);if(!o.get(u))return;const a=s(o.get(u),Math.ceil(r()*p));if(!a)return void n.onResult(null);const l=a.bounds.x/p,c=a.bounds.y/p,g=Math.round(a.bounds.width/p),d=Math.round(a.bounds.height/p),h={creationType:t.SignatureCreationType.Draw,inkData:{inkList:e.filter(e=>e.points.length>=2).map(e=>({points:e.points.map(e=>({x:e.x-l,y:e.y-c}))})),strokeWidth:r(),strokeColor:i(),size:{width:g,height:d}},previewDataUrl:a.canvas.toDataURL("image/png")};n.onResult(h)}o.user_effect(()=>{if(!o.get(u))return;const e=new ResizeObserver(e=>{const{width:t,height:n}=e[0].contentRect;t>0&&n>0&&o.get(u)&&(o.get(u).width=Math.round(t)*p,o.get(u).height=Math.round(n)*p,h(o.get(c)))});return e.observe(o.get(u)),()=>e.disconnect()}),o.user_effect(()=>{i(),r(),h(o.get(c)),o.get(c).length>0&&o.get(c).some(e=>e.points.length>=2)&&f(o.get(c))});var v={clear:function(){o.set(c,[],!0),h([]),n.onResult(null)}},m=l();return m.__pointerdown=function(e){var t,n;g=!0;const i=d(e);o.set(c,[...o.get(c),{points:[i]}],!0),h(o.get(c)),null==(n=null==(t=e.target)?void 0:t.setPointerCapture)||n.call(t,e.pointerId)},m.__pointermove=function(e){if(!g)return;const t=d(e),n=o.get(c)[o.get(c).length-1];n&&(n.points.push(t),o.set(c,[...o.get(c)],!0),h(o.get(c)))},m.__pointerup=function(e){var t,n;g=!1,null==(n=null==(t=e.target)?void 0:t.releasePointerCapture)||n.call(t,e.pointerId),f(o.get(c))},o.bind_this(m,e=>o.set(u,e),()=>o.get(u)),o.template_effect(()=>o.set_class(m,1,o.clsx(a()))),o.append(e,m),o.pop(v)},exports.SignaturePluginPackage=c,exports.SignatureTypePad=function(e,n){o.push(n,!0);let i=o.prop(n,"fontFamily",3,"'Dancing Script', cursive"),r=o.prop(n,"fontSize",3,48),a=o.prop(n,"color",3,"#000000"),l=o.prop(n,"class",3,""),c=o.prop(n,"placeholder",3,"Type your signature..."),g=o.state(void 0),p=o.state(void 0),d=o.state(""),h={width:0,height:0};const f=`sig-type-${Math.random().toString(36).slice(2,8)}`,v="undefined"!=typeof window&&window.devicePixelRatio||1;function m(e){if(!o.get(p))return;const{width:l,height:u}=h;if(0===l||0===u)return;o.get(p).width=l*v,o.get(p).height=u*v;const c=o.get(p).getContext("2d");if(!c)return;if(c.clearRect(0,0,o.get(p).width,o.get(p).height),!e.trim())return void n.onResult(null);c.scale(v,v),c.fillStyle=a(),c.font=`${r()}px ${i()}`,c.textBaseline="middle",c.textAlign="center",c.fillText(e,l/2,u/2,l-20);const g=s(o.get(p),Math.ceil(4*v));if(!g)return void n.onResult(null);const d=Math.round(g.bounds.width/v),f=Math.round(g.bounds.height/v);g.canvas.toBlob(i=>{i&&i.arrayBuffer().then(i=>{const r={creationType:t.SignatureCreationType.Type,label:e,imageMimeType:"image/png",imageSize:{width:d,height:f},previewDataUrl:g.canvas.toDataURL("image/png"),imageData:i};n.onResult(r)})},"image/png")}o.user_effect(()=>{if(!o.get(g))return;const e=new ResizeObserver(e=>{const{width:t,height:n}=e[0].contentRect;t>0&&n>0&&(h={width:Math.round(t),height:Math.round(n)},m(o.get(d)))});return e.observe(o.get(g)),()=>e.disconnect()}),o.user_effect(()=>{i(),a(),m(o.get(d))});var y={clear:function(){o.set(d,""),n.onResult(null)}},w=u(),b=o.child(w);o.html(b,()=>`<style>#${f}::placeholder { color: ${a()}; opacity: 0.5; }</style>`);var x=o.sibling(b,2);o.remove_input_defaults(x),x.__input=function(e){o.set(d,e.target.value,!0)};var R=o.sibling(x,2);return o.bind_this(R,e=>o.set(p,e),()=>o.get(p)),o.reset(w),o.bind_this(w,e=>o.set(g,e),()=>o.get(g)),o.template_effect(e=>{o.set_class(w,1,o.clsx(l())),o.set_attribute(x,"id",f),o.set_value(x,o.get(d)),o.set_attribute(x,"placeholder",c()),o.set_style(x,`font-family: ${i()??""}; font-size: ${e??""}px; color: ${a()??""}; width: 100%; height: 100%; border: none; outline: none; background: transparent; text-indent: 8px;`)},[()=>Math.min(r(),32)]),o.append(e,w),o.pop(y)},exports.useActivePlacement=function(e){const t=a();let n=o.state(null);const i=o.derived(e);return o.user_effect(()=>{if(!t.provides||!o.get(i))return void o.set(n,null);const e=t.provides.forDocument(o.get(i));return o.set(n,e.getActivePlacement(),!0),e.onActivePlacementChange(e=>{o.set(n,e,!0)})}),{get activePlacement(){return o.get(n)}}},exports.useSignatureCapability=a,exports.useSignatureEntries=function(){const e=a();let t=o.state(o.proxy([]));return o.user_effect(()=>{if(e.provides)return o.set(t,e.provides.getEntries(),!0),e.provides.onEntriesChange(e=>{o.set(t,e,!0)});o.set(t,[],!0)}),{get entries(){return o.get(t)}}},exports.useSignaturePlugin=()=>i.usePlugin(t.SignaturePlugin.id),exports.useSignatureUpload=function({accept:e="image/png,image/jpeg,image/svg+xml",onResult:n}){const i={current:null};let r=o.state(null),a=o.state(!1);function s(e){const i=new FileReader;i.onload=()=>{const a=i.result,s=new Blob([a],{type:e.type}),l=URL.createObjectURL(s);o.get(r)&&URL.revokeObjectURL(o.get(r)),o.set(r,l,!0);const u=new Image;u.onload=()=>{const i=document.createElement("canvas");i.width=u.width,i.height=u.height;const r=i.getContext("2d");r&&r.drawImage(u,0,0);const o={creationType:t.SignatureCreationType.Upload,imageMimeType:e.type,imageSize:{width:u.width,height:u.height},previewDataUrl:i.toDataURL("image/png"),imageData:a};n(o)},u.src=l},i.readAsArrayBuffer(e)}return{inputRef:i,openFilePicker:function(){var e;null==(e=i.current)||e.click()},processFile:s,handleFileInputChange:function(e){const t=e.target.files;t&&t[0]&&s(t[0])},handleDrop:function(e){var t;e.preventDefault(),o.set(a,!1);const n=null==(t=e.dataTransfer)?void 0:t.files;n&&n[0]&&s(n[0])},handleDragOver:function(e){e.preventDefault(),o.set(a,!0)},handleDragLeave:function(){o.set(a,!1)},get previewUrl(){return o.get(r)},get isDragging(){return o.get(a)},clear:function(){o.get(r)&&URL.revokeObjectURL(o.get(r)),o.set(r,null),n(null),i.current&&(i.current.value="")},accept:e}},Object.keys(t).forEach(e=>{"default"===e||Object.prototype.hasOwnProperty.call(exports,e)||Object.defineProperty(exports,e,{enumerable:!0,get:()=>t[e]})});
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../../src/svelte/hooks/use-signature.svelte.ts","../../src/shared/components/crop-canvas.ts","../../src/svelte/index.ts","../../src/svelte/components/SignatureDrawPad.svelte","../../src/svelte/components/SignatureTypePad.svelte","../../src/svelte/hooks/use-signature-upload.svelte.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/svelte';\nimport { SignaturePlugin } from '@embedpdf/plugin-signature';\nimport type { SignatureEntry, ActivePlacementInfo } from '@embedpdf/plugin-signature';\n\nexport const useSignaturePlugin = () => usePlugin<SignaturePlugin>(SignaturePlugin.id);\nexport const useSignatureCapability = () => useCapability<SignaturePlugin>(SignaturePlugin.id);\n\nexport function useSignatureEntries() {\n const capability = useSignatureCapability();\n let entries = $state<SignatureEntry[]>([]);\n\n $effect(() => {\n if (!capability.provides) {\n entries = [];\n return;\n }\n\n entries = capability.provides.getEntries();\n return capability.provides.onEntriesChange((updated) => {\n entries = updated;\n });\n });\n\n return {\n get entries() {\n return entries;\n },\n };\n}\n\nexport function useActivePlacement(getDocumentId: () => string) {\n const capability = useSignatureCapability();\n let activePlacement = $state<ActivePlacementInfo | null>(null);\n const documentId = $derived(getDocumentId());\n\n $effect(() => {\n if (!capability.provides || !documentId) {\n activePlacement = null;\n return;\n }\n\n const scope = capability.provides.forDocument(documentId);\n activePlacement = scope.getActivePlacement();\n return scope.onActivePlacementChange((placement) => {\n activePlacement = placement;\n });\n });\n\n return {\n get activePlacement() {\n return activePlacement;\n },\n };\n}\n","export interface CropResult {\n canvas: HTMLCanvasElement;\n bounds: { x: number; y: number; width: number; height: number };\n}\n\n/**\n * Scans a canvas for non-transparent pixels and returns a tightly cropped copy.\n * Returns null if the canvas has no visible content.\n */\nexport function cropCanvas(source: HTMLCanvasElement, padding = 4): CropResult | null {\n const ctx = source.getContext('2d');\n if (!ctx) return null;\n\n const { width, height } = source;\n if (width === 0 || height === 0) return null;\n\n const imageData = ctx.getImageData(0, 0, width, height);\n const { data } = imageData;\n\n let minX = width;\n let minY = height;\n let maxX = 0;\n let maxY = 0;\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const alpha = data[(y * width + x) * 4 + 3];\n if (alpha > 0) {\n if (x < minX) minX = x;\n if (x > maxX) maxX = x;\n if (y < minY) minY = y;\n if (y > maxY) maxY = y;\n }\n }\n }\n\n if (maxX < minX || maxY < minY) return null;\n\n const cropX = Math.max(0, minX - padding);\n const cropY = Math.max(0, minY - padding);\n const cropW = Math.min(width, maxX + padding + 1) - cropX;\n const cropH = Math.min(height, maxY + padding + 1) - cropY;\n\n const cropped = document.createElement('canvas');\n cropped.width = cropW;\n cropped.height = cropH;\n\n const croppedCtx = cropped.getContext('2d');\n if (!croppedCtx) return null;\n\n croppedCtx.drawImage(source, cropX, cropY, cropW, cropH, 0, 0, cropW, cropH);\n\n return {\n canvas: cropped,\n bounds: { x: cropX, y: cropY, width: cropW, height: cropH },\n };\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { SignaturePluginPackage as BaseSignaturePackage } from '@embedpdf/plugin-signature';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-signature';\n\nexport const SignaturePluginPackage = createPluginPackage(BaseSignaturePackage).build();\n","<script lang=\"ts\">\n import { SignatureInkFieldDefinition, SignatureCreationType } from '@embedpdf/plugin-signature';\n import { cropCanvas } from '../../shared/components/crop-canvas';\n\n interface Props {\n onResult: (result: SignatureInkFieldDefinition | null) => void;\n strokeColor?: string;\n strokeWidth?: number;\n class?: string;\n }\n\n let {\n onResult,\n strokeColor = '#000000',\n strokeWidth = 4,\n class: className = '',\n }: Props = $props();\n\n let canvasEl: HTMLCanvasElement | undefined = $state();\n let strokes = $state<Array<{ points: Array<{ x: number; y: number }> }>>([]);\n let isDrawing = false;\n let size = { width: 0, height: 0 };\n const dpr = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n\n function getCanvasPos(e: PointerEvent): { x: number; y: number } {\n if (!canvasEl) return { x: 0, y: 0 };\n const rect = canvasEl.getBoundingClientRect();\n return {\n x: (e.clientX - rect.left) * (canvasEl.width / dpr / rect.width),\n y: (e.clientY - rect.top) * (canvasEl.height / dpr / rect.height),\n };\n }\n\n function redraw(currentStrokes: Array<{ points: Array<{ x: number; y: number }> }>) {\n if (!canvasEl) return;\n const ctx = canvasEl.getContext('2d');\n if (!ctx) return;\n\n ctx.clearRect(0, 0, canvasEl.width, canvasEl.height);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.strokeStyle = strokeColor;\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = 'round';\n ctx.lineJoin = 'round';\n\n for (const stroke of currentStrokes) {\n if (stroke.points.length === 0) continue;\n ctx.beginPath();\n ctx.moveTo(stroke.points[0].x, stroke.points[0].y);\n for (let i = 1; i < stroke.points.length; i++) {\n ctx.lineTo(stroke.points[i].x, stroke.points[i].y);\n }\n ctx.stroke();\n }\n ctx.restore();\n }\n\n function emitResult(currentStrokes: Array<{ points: Array<{ x: number; y: number }> }>) {\n if (currentStrokes.length === 0 || currentStrokes.every((s) => s.points.length < 2)) {\n onResult(null);\n return;\n }\n\n if (!canvasEl) return;\n\n const cropped = cropCanvas(canvasEl, Math.ceil(strokeWidth * dpr));\n if (!cropped) {\n onResult(null);\n return;\n }\n\n const offsetX = cropped.bounds.x / dpr;\n const offsetY = cropped.bounds.y / dpr;\n const croppedWidth = Math.round(cropped.bounds.width / dpr);\n const croppedHeight = Math.round(cropped.bounds.height / dpr);\n\n const result: SignatureInkFieldDefinition = {\n creationType: SignatureCreationType.Draw,\n inkData: {\n inkList: currentStrokes\n .filter((s) => s.points.length >= 2)\n .map((s) => ({\n points: s.points.map((p) => ({\n x: p.x - offsetX,\n y: p.y - offsetY,\n })),\n })),\n strokeWidth,\n strokeColor,\n size: { width: croppedWidth, height: croppedHeight },\n },\n previewDataUrl: cropped.canvas.toDataURL('image/png'),\n };\n\n onResult(result);\n }\n\n export function clear() {\n strokes = [];\n redraw([]);\n onResult(null);\n }\n\n function handlePointerDown(e: PointerEvent) {\n isDrawing = true;\n const pos = getCanvasPos(e);\n strokes = [...strokes, { points: [pos] }];\n redraw(strokes);\n (e.target as HTMLElement)?.setPointerCapture?.(e.pointerId);\n }\n\n function handlePointerMove(e: PointerEvent) {\n if (!isDrawing) return;\n const pos = getCanvasPos(e);\n const last = strokes[strokes.length - 1];\n if (last) {\n last.points.push(pos);\n strokes = [...strokes];\n redraw(strokes);\n }\n }\n\n function handlePointerUp(e: PointerEvent) {\n isDrawing = false;\n (e.target as HTMLElement)?.releasePointerCapture?.(e.pointerId);\n emitResult(strokes);\n }\n\n $effect(() => {\n if (!canvasEl) return;\n const observer = new ResizeObserver((entries) => {\n const { width: w, height: h } = entries[0].contentRect;\n if (w > 0 && h > 0 && canvasEl) {\n size = { width: Math.round(w), height: Math.round(h) };\n canvasEl.width = Math.round(w) * dpr;\n canvasEl.height = Math.round(h) * dpr;\n redraw(strokes);\n }\n });\n observer.observe(canvasEl);\n return () => observer.disconnect();\n });\n\n $effect(() => {\n // Re-render when strokeColor or strokeWidth changes\n void strokeColor;\n void strokeWidth;\n redraw(strokes);\n if (strokes.length > 0 && strokes.some((s) => s.points.length >= 2)) {\n emitResult(strokes);\n }\n });\n</script>\n\n<canvas\n bind:this={canvasEl}\n class={className}\n style=\"touch-action: none; width: 100%; height: 100%; display: block;\"\n onpointerdown={handlePointerDown}\n onpointermove={handlePointerMove}\n onpointerup={handlePointerUp}\n></canvas>\n","<script lang=\"ts\">\n import { SignatureStampFieldDefinition, SignatureCreationType } from '@embedpdf/plugin-signature';\n import { cropCanvas } from '../../shared/components/crop-canvas';\n\n interface Props {\n onResult: (result: SignatureStampFieldDefinition | null) => void;\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n class?: string;\n placeholder?: string;\n }\n\n let {\n onResult,\n fontFamily = \"'Dancing Script', cursive\",\n fontSize = 48,\n color = '#000000',\n class: className = '',\n placeholder = 'Type your signature...',\n }: Props = $props();\n\n let wrapperEl: HTMLDivElement | undefined = $state();\n let canvasEl: HTMLCanvasElement | undefined = $state();\n let text = $state('');\n let size = { width: 0, height: 0 };\n const inputId = `sig-type-${Math.random().toString(36).slice(2, 8)}`;\n const dpr = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\n\n function renderText(currentText: string) {\n if (!canvasEl) return;\n\n const { width, height } = size;\n if (width === 0 || height === 0) return;\n\n canvasEl.width = width * dpr;\n canvasEl.height = height * dpr;\n\n const ctx = canvasEl.getContext('2d');\n if (!ctx) return;\n\n ctx.clearRect(0, 0, canvasEl.width, canvasEl.height);\n\n if (!currentText.trim()) {\n onResult(null);\n return;\n }\n\n ctx.scale(dpr, dpr);\n ctx.fillStyle = color;\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.textBaseline = 'middle';\n ctx.textAlign = 'center';\n ctx.fillText(currentText, width / 2, height / 2, width - 20);\n\n const cropped = cropCanvas(canvasEl, Math.ceil(4 * dpr));\n if (!cropped) {\n onResult(null);\n return;\n }\n\n const croppedWidth = Math.round(cropped.bounds.width / dpr);\n const croppedHeight = Math.round(cropped.bounds.height / dpr);\n\n cropped.canvas.toBlob((blob) => {\n if (!blob) return;\n blob.arrayBuffer().then((imageData) => {\n const result: SignatureStampFieldDefinition = {\n creationType: SignatureCreationType.Type,\n label: currentText,\n imageMimeType: 'image/png',\n imageSize: { width: croppedWidth, height: croppedHeight },\n previewDataUrl: cropped.canvas.toDataURL('image/png'),\n imageData,\n };\n onResult(result);\n });\n }, 'image/png');\n }\n\n export function clear() {\n text = '';\n onResult(null);\n }\n\n function handleInput(e: Event) {\n text = (e.target as HTMLInputElement).value;\n }\n\n $effect(() => {\n if (!wrapperEl) return;\n const observer = new ResizeObserver((entries) => {\n const { width: w, height: h } = entries[0].contentRect;\n if (w > 0 && h > 0) {\n size = { width: Math.round(w), height: Math.round(h) };\n renderText(text);\n }\n });\n observer.observe(wrapperEl);\n return () => observer.disconnect();\n });\n\n $effect(() => {\n void fontFamily;\n void color;\n renderText(text);\n });\n</script>\n\n<div bind:this={wrapperEl} class={className} style=\"width: 100%; height: 100%;\">\n {@html `<style>#${inputId}::placeholder { color: ${color}; opacity: 0.5; }</style>`}\n <input\n id={inputId}\n type=\"text\"\n value={text}\n oninput={handleInput}\n {placeholder}\n style=\"font-family: {fontFamily}; font-size: {Math.min(\n fontSize,\n 32,\n )}px; color: {color}; width: 100%; height: 100%; border: none; outline: none; background: transparent; text-indent: 8px;\"\n />\n <canvas bind:this={canvasEl} style=\"display: none;\"></canvas>\n</div>\n","import { SignatureStampFieldDefinition, SignatureCreationType } from '@embedpdf/plugin-signature';\n\nexport interface UseSignatureUploadOptions {\n accept?: string;\n onResult: (result: SignatureStampFieldDefinition | null) => void;\n}\n\nexport interface UseSignatureUploadReturn {\n inputRef: { current: HTMLInputElement | null };\n openFilePicker: () => void;\n processFile: (file: File) => void;\n handleFileInputChange: (e: Event) => void;\n handleDrop: (e: DragEvent) => void;\n handleDragOver: (e: DragEvent) => void;\n handleDragLeave: () => void;\n readonly previewUrl: string | null;\n readonly isDragging: boolean;\n clear: () => void;\n accept: string;\n}\n\nexport function useSignatureUpload({\n accept = 'image/png,image/jpeg,image/svg+xml',\n onResult,\n}: UseSignatureUploadOptions): UseSignatureUploadReturn {\n const inputRef = { current: null as HTMLInputElement | null };\n let previewUrl = $state<string | null>(null);\n let isDragging = $state(false);\n\n function processFile(file: File) {\n const reader = new FileReader();\n reader.onload = () => {\n const arrayBuffer = reader.result as ArrayBuffer;\n const blob = new Blob([arrayBuffer], { type: file.type });\n const dataUrl = URL.createObjectURL(blob);\n\n if (previewUrl) URL.revokeObjectURL(previewUrl);\n previewUrl = dataUrl;\n\n const img = new Image();\n img.onload = () => {\n const previewCanvas = document.createElement('canvas');\n previewCanvas.width = img.width;\n previewCanvas.height = img.height;\n const ctx = previewCanvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(img, 0, 0);\n }\n\n const result: SignatureStampFieldDefinition = {\n creationType: SignatureCreationType.Upload,\n imageMimeType: file.type,\n imageSize: { width: img.width, height: img.height },\n previewDataUrl: previewCanvas.toDataURL('image/png'),\n imageData: arrayBuffer,\n };\n onResult(result);\n };\n img.src = dataUrl;\n };\n reader.readAsArrayBuffer(file);\n }\n\n function handleFileInputChange(e: Event) {\n const files = (e.target as HTMLInputElement).files;\n if (files && files[0]) {\n processFile(files[0]);\n }\n }\n\n function handleDrop(e: DragEvent) {\n e.preventDefault();\n isDragging = false;\n const files = e.dataTransfer?.files;\n if (files && files[0]) {\n processFile(files[0]);\n }\n }\n\n function handleDragOver(e: DragEvent) {\n e.preventDefault();\n isDragging = true;\n }\n\n function handleDragLeave() {\n isDragging = false;\n }\n\n function openFilePicker() {\n inputRef.current?.click();\n }\n\n function clear() {\n if (previewUrl) URL.revokeObjectURL(previewUrl);\n previewUrl = null;\n onResult(null);\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n }\n\n return {\n inputRef,\n openFilePicker,\n processFile,\n handleFileInputChange,\n handleDrop,\n handleDragOver,\n handleDragLeave,\n get previewUrl() {\n return previewUrl;\n },\n get isDragging() {\n return isDragging;\n },\n clear,\n accept,\n };\n}\n"],"names":["useSignatureCapability","useCapability","SignaturePlugin","id","cropCanvas","source","padding","ctx","getContext","width","height","imageData","getImageData","data","minX","minY","maxX","maxY","y","x","cropX","Math","max","cropY","cropW","min","cropH","cropped","document","createElement","croppedCtx","drawImage","canvas","bounds","SignaturePluginPackage","createPluginPackage","BaseSignaturePackage","build","strokeColor","strokeWidth","className","canvasEl","$","state","strokes","proxy","isDrawing","dpr","window","devicePixelRatio","getCanvasPos","e","get","rect","getBoundingClientRect","clientX","left","clientY","top","redraw","currentStrokes","clearRect","save","scale","strokeStyle","lineWidth","lineCap","lineJoin","stroke","points","length","beginPath","moveTo","i","lineTo","restore","emitResult","every","s","ceil","offsetX","offsetY","croppedWidth","round","croppedHeight","result","creationType","SignatureCreationType","Draw","inkData","inkList","filter","map","p","size","previewDataUrl","toDataURL","user_effect","observer","ResizeObserver","entries","w","h","contentRect","observe","disconnect","some","root","__pointerdown","pos","set","_b","_a","target","setPointerCapture","call","pointerId","__pointermove","last","push","__pointerup","releasePointerCapture","$$value","template_effect","set_class","fontFamily","fontSize","color","placeholder","wrapperEl","text","inputId","random","toString","slice","renderText","currentText","trim","fillStyle","font","textBaseline","textAlign","fillText","toBlob","blob","arrayBuffer","then","Type","label","imageMimeType","imageSize","div","html","node","input","sibling","__input","value","set_attribute","set_value","$0","getDocumentId","capability","activePlacement","documentId","provides","scope","forDocument","getActivePlacement","onActivePlacementChange","placement","getEntries","onEntriesChange","updated","usePlugin","accept","onResult","inputRef","current","previewUrl","isDragging","processFile","file","reader","FileReader","onload","Blob","type","dataUrl","URL","createObjectURL","revokeObjectURL","img","Image","previewCanvas","Upload","src","readAsArrayBuffer","openFilePicker","click","handleFileInputChange","files","handleDrop","preventDefault","dataTransfer","handleDragOver","handleDragLeave","clear"],"mappings":"qiBAKaA,EAAA,IAA+BC,gBAA+BC,EAAAA,gBAAgBC,ICIpF,SAASC,EAAWC,EAA2BC,EAAU,GAC9D,MAAMC,EAAMF,EAAOG,WAAW,MAC9B,IAAKD,EAAK,OAAO,KAEjB,MAAME,MAAEA,EAAAC,OAAOA,GAAWL,EAC1B,GAAc,IAAVI,GAA0B,IAAXC,EAAc,OAAO,KAExC,MAAMC,EAAYJ,EAAIK,aAAa,EAAG,EAAGH,EAAOC,IAC1CG,KAAEA,GAASF,EAEjB,IAAIG,EAAOL,EACPM,EAAOL,EACPM,EAAO,EACPC,EAAO,EAEX,IAAA,IAASC,EAAI,EAAGA,EAAIR,EAAQQ,IAC1B,IAAA,IAASC,EAAI,EAAGA,EAAIV,EAAOU,IAAK,CAChBN,EAAuB,GAAjBK,EAAIT,EAAQU,GAAS,GAC7B,IACNA,EAAIL,IAAMA,EAAOK,GACjBA,EAAIH,IAAMA,EAAOG,GACjBD,EAAIH,IAAMA,EAAOG,GACjBA,EAAID,IAAMA,EAAOC,GAEzB,CAGF,GAAIF,EAAOF,GAAQG,EAAOF,EAAM,OAAO,KAEvC,MAAMK,EAAQC,KAAKC,IAAI,EAAGR,EAAOR,GAC3BiB,EAAQF,KAAKC,IAAI,EAAGP,EAAOT,GAC3BkB,EAAQH,KAAKI,IAAIhB,EAAOO,EAAOV,EAAU,GAAKc,EAC9CM,EAAQL,KAAKI,IAAIf,EAAQO,EAAOX,EAAU,GAAKiB,EAE/CI,EAAUC,SAASC,cAAc,UACvCF,EAAQlB,MAAQe,EAChBG,EAAQjB,OAASgB,EAEjB,MAAMI,EAAaH,EAAQnB,WAAW,MACtC,OAAKsB,GAELA,EAAWC,UAAU1B,EAAQe,EAAOG,EAAOC,EAAOE,EAAO,EAAG,EAAGF,EAAOE,GAE/D,CACLM,OAAQL,EACRM,OAAQ,CAAEd,EAAGC,EAAOF,EAAGK,EAAOd,MAAOe,EAAOd,OAAQgB,KAN9B,IAQ1B,gUCjDO,MAAMQ,EAAyBC,EAAAA,oBAAoBC,EAAAA,wBAAsBC,4DCM5E,IAAAC,2BAAc,WACdC,2BAAc,GACPC,qBAAY,IAGjBC,EAA0CC,EAAAC,WAAM,GAChDC,EAAUF,EAAAC,MAAMD,EAAAG,MAAA,KAChBC,GAAY,QAEVC,EAAwB,oBAAXC,QAAyBA,OAAOC,kBAAwB,WAElEC,EAAaC,GACf,IAAAT,EAAAU,IAAAX,UAAmBtB,EAAG,EAAGD,EAAG,SAC3BmC,EAAIX,EAAAU,IAAGX,GAASa,+BAEpBnC,GAAIgC,EAAEI,QAAUF,EAAKG,OAAId,EAAAU,IAAKX,GAAShC,MAAQsC,EAAMM,EAAK5C,OAC1DS,GAAIiC,EAAEM,QAAUJ,EAAKK,MAAGhB,EAAAU,IAAKX,GAAS/B,OAASqC,EAAMM,EAAK3C,QAE9D,UAESiD,EAAOC,aACTnB,GAAQ,OACP,MAAAlC,EAAGmC,EAAAU,IAAGX,GAASjC,WAAW,SAC3BD,GAELA,EAAIsD,UAAU,EAAG,EAACnB,EAAAU,IAAEX,GAAShC,MAAKiC,EAAAU,IAAEX,GAAS/B,QAC7CH,EAAIuD,OACJvD,EAAIwD,MAAMhB,EAAKA,GACfxC,EAAIyD,YAAc1B,IAClB/B,EAAI0D,UAAY1B,IAChBhC,EAAI2D,QAAU,QACd3D,EAAI4D,SAAW,kBAEJC,KAAUR,EACf,GAAyB,IAAzBQ,EAAOC,OAAOC,OAAd,CACJ/D,EAAIgE,YACJhE,EAAIiE,OAAOJ,EAAOC,OAAO,GAAGlD,EAAGiD,EAAOC,OAAO,GAAGnD,GACvC,IAAA,IAAAuD,EAAI,EAAGA,EAAIL,EAAOC,OAAOC,OAAQG,IACxClE,EAAImE,OAAON,EAAOC,OAAOI,GAAGtD,EAAGiD,EAAOC,OAAOI,GAAGvD,GAElDX,EAAI6D,QAN0B,CAQhC7D,EAAIoE,SAnBI,CAoBV,UAESC,EAAWhB,GACd,GAA0B,IAA1BA,EAAeU,QAAgBV,EAAeiB,MAAOC,GAAMA,EAAET,OAAOC,OAAS,0BACtE,gBAIN7B,GAAQ,aAEPd,EAAUvB,EAAUsC,EAAAU,IAACX,GAAUpB,KAAK0D,KAAKxC,IAAcQ,IACxD,IAAApB,yBACM,MAIL,MAAAqD,EAAUrD,EAAQM,OAAOd,EAAI4B,EAC7BkC,EAAUtD,EAAQM,OAAOf,EAAI6B,EAC7BmC,EAAe7D,KAAK8D,MAAMxD,EAAQM,OAAOxB,MAAQsC,GACjDqC,EAAgB/D,KAAK8D,MAAMxD,EAAQM,OAAOvB,OAASqC,GAEnDsC,EAAmC,CACvCC,aAAcC,EAAAA,sBAAsBC,KACpCC,QAAO,CACLC,QAAS9B,EACN+B,OAAQb,GAAMA,EAAET,OAAOC,QAAU,GACjCsB,IAAKd,IAAA,CACJT,OAAQS,EAAET,OAAOuB,IAAKC,IAAA,CACpB1E,EAAG0E,EAAE1E,EAAI6D,EACT9D,EAAG2E,EAAE3E,EAAI+D,QAGf1C,YAAAA,IACAD,YAAAA,IACAwD,MAAQrF,MAAOyE,EAAcxE,OAAQ0E,IAEvCW,eAAgBpE,EAAQK,OAAOgE,UAAU,yBAGlCX,EACX,CAiCA3C,EAAAuD,YAAO,eACAxD,GAAQ,OACP,MAAAyD,EAAQ,IAAOC,eAAgBC,UAC3B3F,MAAO4F,EAAG3F,OAAQ4F,GAAMF,EAAQ,GAAGG,YACvCF,EAAI,GAAKC,EAAI,GAAC5D,EAAAU,IAAIX,WAEpBA,GAAShC,MAAQY,KAAK8D,MAAMkB,GAAKtD,QACjCN,GAAS/B,OAASW,KAAK8D,MAAMmB,GAAKvD,EAClCY,QAAOf,OAIE,OADbsD,EAASM,QAAO9D,EAAAU,IAACX,IACJ,IAAAyD,EAASO,eAGxB/D,EAAAuD,YAAO,KAEA3D,IACAC,IACLoB,QAAOf,IACHF,EAAAU,IAAAR,GAAQ0B,OAAS,GAAC5B,EAAAU,IAAIR,GAAQ8D,KAAM5B,GAAMA,EAAET,OAAOC,QAAU,IAC/DM,QAAWhC,mBApDC,iBACdA,EAAO,IAAA,GACPe,EAAM,eACG,KACX,GAqDD3B,EAAK2E,WAAL3E,EAIC4E,uBAvD2BzD,WACzBL,GAAY,QACN+D,EAAM3D,EAAaC,GACzBT,EAAAoE,IAAAlE,EAAO,IAAAF,EAAAU,IAAOR,GAAO,CAAIyB,QAASwC,MAAG,GACrClD,QAAOf,IACN,OAAAmE,EAAA,OAAAC,EAAA7D,EAAE8D,aAAF,EAAAD,EAA0BE,oBAA1BH,EAAAI,KAAAH,EAA8C7D,EAAEiE,UACnD,EA6CDpF,EAKCqF,uBAhD2BlE,OACpBL,EAAS,aACR+D,EAAM3D,EAAaC,GACnBmE,QAAO1E,GAAOF,EAAAU,IAACR,GAAQ0B,OAAS,GAClCgD,IACFA,EAAKjD,OAAOkD,KAAKV,GACjBnE,EAAAoE,IAAAlE,YAAcA,KAAO,GACrBe,QAAOf,IAEX,EAkCDZ,EAMCwF,qBAtCyBrE,WACvBL,GAAY,EACX,OAAAiE,EAAA,OAAAC,EAAA7D,EAAE8D,aAAF,EAAAD,EAA0BS,wBAA1BV,EAAAI,KAAAH,EAAkD7D,EAAEiE,WACrDxC,QAAWhC,GACb,cA4BDZ,EAAK0F,GAAAhF,EAAAoE,IACOrE,EAAQiF,GAAA,IAAAhF,EAAAU,IAARX,IADZC,EAAAiF,gBAAA,IAAAjF,EAAAkF,UAAA5F,WAEQQ,kBAFRR,WAFO,uFC1IJ,IAAA6F,0BAAa,6BACbC,wBAAW,IACXC,qBAAQ,WACDvF,qBAAY,IACnBwF,2BAAc,0BAGZC,EAAwCvF,EAAAC,WAAM,GAC9CF,EAA0CC,EAAAC,WAAM,GAChDuF,EAAOxF,EAAAC,MAAO,IACdmD,GAASrF,MAAO,EAAGC,OAAQ,GACzB,MAAAyH,EAAO,YAAe9G,KAAK+G,SAASC,SAAS,IAAIC,MAAM,EAAG,KAC1DvF,EAAwB,oBAAXC,QAAyBA,OAAOC,kBAAwB,WAElEsF,EAAWC,aACb/F,GAAQ,mBAELhC,EAAAC,OAAOA,GAAWoF,EACtB,GAAU,IAAVrF,GAA0B,IAAXC,EAAY,OAE/BgC,EAAAU,IAAAX,GAAShC,MAAQA,EAAQsC,EACzBL,EAAAU,IAAAX,GAAS/B,OAASA,EAASqC,EAErB,MAAAxC,EAAGmC,EAAAU,IAAGX,GAASjC,WAAW,UAC3BD,EAAG,UAERA,EAAIsD,UAAU,EAAG,EAACnB,EAAAU,IAAEX,GAAShC,MAAKiC,EAAAU,IAAEX,GAAS/B,SAExC8H,EAAYC,8BACN,MAIXlI,EAAIwD,MAAMhB,EAAKA,GACfxC,EAAImI,UAAYX,IAChBxH,EAAIoI,KAAI,GAAMb,SAAcD,MAC5BtH,EAAIqI,aAAe,SACnBrI,EAAIsI,UAAY,SAChBtI,EAAIuI,SAASN,EAAa/H,EAAQ,EAAGC,EAAS,EAAGD,EAAQ,UAEnDkB,EAAUvB,EAAUsC,EAAAU,IAACX,GAAUpB,KAAK0D,KAAK,EAAIhC,IAC9C,IAAApB,yBACM,YAILuD,EAAe7D,KAAK8D,MAAMxD,EAAQM,OAAOxB,MAAQsC,GACjDqC,EAAgB/D,KAAK8D,MAAMxD,EAAQM,OAAOvB,OAASqC,GAEzDpB,EAAQK,OAAO+G,OAAQC,IAChBA,GACLA,EAAKC,cAAcC,KAAMvI,UACjB0E,EAAqC,CACzCC,aAAcC,EAAAA,sBAAsB4D,KACpCC,MAAOZ,EACPa,cAAe,YACfC,WAAa7I,MAAOyE,EAAcxE,OAAQ0E,GAC1CW,eAAgBpE,EAAQK,OAAOgE,UAAU,aACzCrF,wBAEO0E,MAEV,YACL,CAWA3C,EAAAuD,YAAO,eACAgC,GAAS,OACR,MAAA/B,EAAQ,IAAOC,eAAgBC,UAC3B3F,MAAO4F,EAAG3F,OAAQ4F,GAAMF,EAAQ,GAAGG,YACvCF,EAAI,GAAKC,EAAI,IACfR,EAAI,CAAKrF,MAAOY,KAAK8D,MAAMkB,GAAI3F,OAAQW,KAAK8D,MAAMmB,IAClDiC,QAAWL,OAIF,OADbhC,EAASM,QAAO9D,EAAAU,IAAC6E,IACJ,IAAA/B,EAASO,eAGxB/D,EAAAuD,YAAO,KACA4B,IACAE,IACLQ,QAAWL,mBAzBG,WACdxF,EAAAoE,IAAAoB,EAAO,eACE,KACX,GA0BDqB,EAAG5C,cAAH4C,GACmB7G,EAAA8G,KAAAC,EAAA,IAAA,WAAAtB,2BAAiCJ,oCAClD2B,EAAIhH,EAAAiH,QAAAF,EAAA,2BAAJC,GAAAA,EAICE,iBA9BmBzG,GACnBT,EAAAoE,IAAAoB,EAAQ/E,EAAE8D,OAA4B4C,OAAK,EAC7C,EAmCC,IAAA7H,YAXA0H,EAAI,sBAWJ1H,EAAM0F,GAAAhF,EAAAoE,IAAYrE,EAAQiF,GAAA,IAAAhF,EAAAU,IAARX,YAbpB8G,eAAAA,EAAG7B,GAAAhF,EAAAoE,IAAYmB,EAASP,GAAA,IAAAhF,EAAAU,IAAT6E,0BAAfvF,EAAAkF,UAAA2B,WAAiC/G,MAE/BE,EAAAoH,cAAAJ,OACKvB,GADLzF,EAAAqH,UAAAL,QAGQxB,IAHRxF,EAAAoH,cAAAJ,gBAKE1B,iBALF0B,EAAI,gBAMkB7B,KAAU,kBAAAmC,GAAA,gBAGjBjC,KAAK,2GAH2B,CAAA,IAAA1G,KAAKI,IACjDqG,IACA,iBAVLyB,WAFO,sCJ7E2BU,GAC3B,MAAAC,EAAalK,QACfmK,EAAkBzH,EAAAC,MAAmC,MACnD,MAAAyH,YAAsBH,UAE5BvH,EAAAuD,iBACO,IAAAiE,EAAWG,WAAA3H,EAAAU,IAAagH,eAC3B1H,EAAAoE,IAAAqD,EAAkB,MAId,MAAAG,EAAQJ,EAAWG,SAASE,kBAAYH,IAEvC,aADPD,EAAkBG,EAAME,sBAAA,GACjBF,EAAMG,wBAAyBC,IACpChI,EAAAoE,IAAAqD,EAAkBO,GAAA,QAKhB,mBAAAP,gBACKA,EACT,EAEJ,+DA9CgB,WACR,MAAAD,EAAalK,IACf,IAAAoG,EAAU1D,EAAAC,MAAAD,EAAAG,MAAA,YAEdH,EAAAuD,oBACOiE,EAAWG,SAMT,OADP3H,EAAAoE,IAAAV,EAAU8D,EAAWG,SAASM,cAAA,GACvBT,EAAWG,SAASO,gBAAiBC,IAC1CnI,EAAAoE,IAAAV,EAAUyE,GAAA,WANVzE,EAAA,IAAA,MAWE,WAAAA,gBACKA,EACT,EAEJ,6BAxBa,IAA2B0E,YAA2B5K,EAAAA,gBAAgBC,+BKiBnE,iBACd4K,EAAS,qCAAAC,SACTA,UAEMC,EAAA,CAAaC,QAAS,UACxBC,EAAazI,EAAAC,MAAsB,MACnCyI,EAAa1I,EAAAC,OAAO,YAEf0I,EAAYC,GACb,MAAAC,MAAaC,WACnBD,EAAOE,kBACCxC,EAAcsC,EAAOlG,OACrB2D,EAAA,IAAW0C,KAAA,CAAMzC,IAAgB0C,KAAML,EAAKK,OAC5CC,EAAUC,IAAIC,gBAAgB9C,GAEhCtG,EAAAU,IAAA+H,QAAgBY,sBAAgBZ,IACpCzI,EAAAoE,IAAAqE,EAAaS,GAAA,GAEP,MAAAI,MAAUC,MAChBD,EAAIP,YACI,MAAAS,EAAgBtK,SAASC,cAAc,UAC7CqK,EAAczL,MAAQuL,EAAIvL,MAC1ByL,EAAcxL,OAASsL,EAAItL,OACrB,MAAAH,EAAM2L,EAAc1L,WAAW,MACjCD,GACFA,EAAIwB,UAAUiK,EAAK,EAAG,SAGlB3G,EAAA,CACJC,aAAcC,EAAAA,sBAAsB4G,OACpC9C,cAAeiC,EAAKK,KACpBrC,WAAa7I,MAAOuL,EAAIvL,MAAOC,OAAQsL,EAAItL,QAC3CqF,eAAgBmG,EAAclG,UAAU,aACxCrF,UAAWsI,GAEb+B,EAAS3F,IAEX2G,EAAII,IAAMR,GAEZL,EAAOc,kBAAkBf,EAC3B,QAyCEL,WACAqB,eAfO,iBACP,OAAAtF,EAAAiE,EAASC,UAATlE,EAAkBuF,OACpB,EAcElB,cACAmB,+BA1C6BrJ,GACvB,MAAAsJ,EAAStJ,EAAE8D,OAA4BwF,MACzCA,GAASA,EAAM,IACjBpB,EAAYoB,EAAM,GAEtB,EAsCEC,oBApCkBvJ,SAClBA,EAAEwJ,iBACFjK,EAAAoE,IAAAsE,GAAa,GACP,MAAAqB,EAAQ,OAAAzF,EAAA7D,EAAEyJ,mBAAF,EAAA5F,EAAgByF,MAC1BA,GAASA,EAAM,IACjBpB,EAAYoB,EAAM,GAEtB,EA8BEI,wBA5BsB1J,GACtBA,EAAEwJ,iBACFjK,EAAAoE,IAAAsE,GAAa,EACf,EA0BE0B,gBAxBO,WACPpK,EAAAoE,IAAAsE,GAAa,EACf,EAuBM,cAAAD,gBACKA,EACT,EACI,cAAAC,gBACKA,EACT,EACA2B,MAvBO,WACHrK,EAAAU,IAAA+H,QAAgBY,sBAAgBZ,IACpCzI,EAAAoE,IAAAqE,EAAa,MACbH,EAAS,MACLC,EAASC,UACXD,EAASC,QAAQrB,MAAQ,GAE7B,EAiBEkB,SAEJ"}
@@ -0,0 +1,4 @@
1
+ export * from './hooks';
2
+ export * from './components';
3
+ export * from '../lib/index.ts';
4
+ export declare const SignaturePluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../lib/index.ts').SignaturePlugin, import('../lib/index.ts').SignaturePluginConfig, import('../lib/index.ts').SignatureState, import('../lib/index.ts').SignatureAction>>;