@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,176 @@
1
+ import { SignaturePlugin, SignatureEntry, ActivePlacementInfo } from '../../lib/index.ts';
2
+ import { MaybeRefOrGetter } from 'vue';
3
+ export declare const useSignaturePlugin: () => import('@embedpdf/core/vue').PluginState<SignaturePlugin>;
4
+ export declare const useSignatureCapability: () => import('@embedpdf/core/vue').CapabilityState<Readonly<import('../../lib/index.ts').SignatureCapability>>;
5
+ export declare const useSignatureEntries: () => {
6
+ entries: import('vue').Ref<{
7
+ id: string;
8
+ createdAt: number;
9
+ signature: {
10
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Draw;
11
+ inkData: {
12
+ inkList: {
13
+ points: {
14
+ x: number;
15
+ y: number;
16
+ }[];
17
+ }[];
18
+ strokeWidth: number;
19
+ strokeColor: string;
20
+ size: {
21
+ width: number;
22
+ height: number;
23
+ };
24
+ };
25
+ label?: string | undefined;
26
+ previewDataUrl: string;
27
+ } | {
28
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Type | import("@embedpdf/plugin-signature").SignatureCreationType.Upload;
29
+ imageMimeType?: string | undefined;
30
+ imageSize?: {
31
+ width: number;
32
+ height: number;
33
+ } | undefined;
34
+ imageData?: {
35
+ readonly byteLength: number;
36
+ slice: (begin?: number, end?: number) => ArrayBuffer;
37
+ readonly maxByteLength: number;
38
+ readonly resizable: boolean;
39
+ resize: (newByteLength?: number) => void;
40
+ readonly detached: boolean;
41
+ transfer: (newByteLength?: number) => ArrayBuffer;
42
+ transferToFixedLength: (newByteLength?: number) => ArrayBuffer;
43
+ readonly [Symbol.toStringTag]: "ArrayBuffer";
44
+ } | undefined;
45
+ label?: string | undefined;
46
+ previewDataUrl: string;
47
+ };
48
+ initials?: {
49
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Draw;
50
+ inkData: {
51
+ inkList: {
52
+ points: {
53
+ x: number;
54
+ y: number;
55
+ }[];
56
+ }[];
57
+ strokeWidth: number;
58
+ strokeColor: string;
59
+ size: {
60
+ width: number;
61
+ height: number;
62
+ };
63
+ };
64
+ label?: string | undefined;
65
+ previewDataUrl: string;
66
+ } | {
67
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Type | import("@embedpdf/plugin-signature").SignatureCreationType.Upload;
68
+ imageMimeType?: string | undefined;
69
+ imageSize?: {
70
+ width: number;
71
+ height: number;
72
+ } | undefined;
73
+ imageData?: {
74
+ readonly byteLength: number;
75
+ slice: (begin?: number, end?: number) => ArrayBuffer;
76
+ readonly maxByteLength: number;
77
+ readonly resizable: boolean;
78
+ resize: (newByteLength?: number) => void;
79
+ readonly detached: boolean;
80
+ transfer: (newByteLength?: number) => ArrayBuffer;
81
+ transferToFixedLength: (newByteLength?: number) => ArrayBuffer;
82
+ readonly [Symbol.toStringTag]: "ArrayBuffer";
83
+ } | undefined;
84
+ label?: string | undefined;
85
+ previewDataUrl: string;
86
+ } | undefined;
87
+ }[], SignatureEntry[] | {
88
+ id: string;
89
+ createdAt: number;
90
+ signature: {
91
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Draw;
92
+ inkData: {
93
+ inkList: {
94
+ points: {
95
+ x: number;
96
+ y: number;
97
+ }[];
98
+ }[];
99
+ strokeWidth: number;
100
+ strokeColor: string;
101
+ size: {
102
+ width: number;
103
+ height: number;
104
+ };
105
+ };
106
+ label?: string | undefined;
107
+ previewDataUrl: string;
108
+ } | {
109
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Type | import("@embedpdf/plugin-signature").SignatureCreationType.Upload;
110
+ imageMimeType?: string | undefined;
111
+ imageSize?: {
112
+ width: number;
113
+ height: number;
114
+ } | undefined;
115
+ imageData?: {
116
+ readonly byteLength: number;
117
+ slice: (begin?: number, end?: number) => ArrayBuffer;
118
+ readonly maxByteLength: number;
119
+ readonly resizable: boolean;
120
+ resize: (newByteLength?: number) => void;
121
+ readonly detached: boolean;
122
+ transfer: (newByteLength?: number) => ArrayBuffer;
123
+ transferToFixedLength: (newByteLength?: number) => ArrayBuffer;
124
+ readonly [Symbol.toStringTag]: "ArrayBuffer";
125
+ } | undefined;
126
+ label?: string | undefined;
127
+ previewDataUrl: string;
128
+ };
129
+ initials?: {
130
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Draw;
131
+ inkData: {
132
+ inkList: {
133
+ points: {
134
+ x: number;
135
+ y: number;
136
+ }[];
137
+ }[];
138
+ strokeWidth: number;
139
+ strokeColor: string;
140
+ size: {
141
+ width: number;
142
+ height: number;
143
+ };
144
+ };
145
+ label?: string | undefined;
146
+ previewDataUrl: string;
147
+ } | {
148
+ creationType: import("@embedpdf/plugin-signature").SignatureCreationType.Type | import("@embedpdf/plugin-signature").SignatureCreationType.Upload;
149
+ imageMimeType?: string | undefined;
150
+ imageSize?: {
151
+ width: number;
152
+ height: number;
153
+ } | undefined;
154
+ imageData?: {
155
+ readonly byteLength: number;
156
+ slice: (begin?: number, end?: number) => ArrayBuffer;
157
+ readonly maxByteLength: number;
158
+ readonly resizable: boolean;
159
+ resize: (newByteLength?: number) => void;
160
+ readonly detached: boolean;
161
+ transfer: (newByteLength?: number) => ArrayBuffer;
162
+ transferToFixedLength: (newByteLength?: number) => ArrayBuffer;
163
+ readonly [Symbol.toStringTag]: "ArrayBuffer";
164
+ } | undefined;
165
+ label?: string | undefined;
166
+ previewDataUrl: string;
167
+ } | undefined;
168
+ }[]>;
169
+ };
170
+ export declare const useActivePlacement: (documentId: MaybeRefOrGetter<string>) => import('vue').Ref<{
171
+ entryId: string;
172
+ kind: import('../../lib/index.ts').SignatureFieldKind;
173
+ } | null, ActivePlacementInfo | {
174
+ entryId: string;
175
+ kind: import('../../lib/index.ts').SignatureFieldKind;
176
+ } | null>;
@@ -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("@embedpdf/core/vue"),o=require("vue"),l=()=>n.useCapability(t.SignaturePlugin.id);function i(e,t=4){const n=e.getContext("2d");if(!n)return null;const{width:o,height:l}=e;if(0===o||0===l)return null;const i=n.getImageData(0,0,o,l),{data:a}=i;let r=o,u=l,c=0,s=0;for(let m=0;m<l;m++)for(let e=0;e<o;e++){a[4*(m*o+e)+3]>0&&(e<r&&(r=e),e>c&&(c=e),m<u&&(u=m),m>s&&(s=m))}if(c<r||s<u)return null;const d=Math.max(0,r-t),h=Math.max(0,u-t),p=Math.min(o,c+t+1)-d,g=Math.min(l,s+t+1)-h,v=document.createElement("canvas");v.width=p,v.height=g;const f=v.getContext("2d");return f?(f.drawImage(e,d,h,p,g,0,0,p,g),{canvas:v,bounds:{x:d,y:h,width:p,height:g}}):null}const a=o.defineComponent({__name:"SignatureDrawPad",props:{onResult:{},strokeColor:{default:"#000000"},strokeWidth:{default:4}},setup(e,{expose:n}){const l=e,a=o.ref(null),r=o.ref([]);let u=!1;const c="undefined"!=typeof window&&window.devicePixelRatio||1;let s=null;function d(e){const t=a.value;if(!t)return{x:0,y:0};const n=t.getBoundingClientRect();return{x:(e.clientX-n.left)*(t.width/c/n.width),y:(e.clientY-n.top)*(t.height/c/n.height)}}function h(e){const t=a.value;if(!t)return;const n=t.getContext("2d");if(n){n.clearRect(0,0,t.width,t.height),n.save(),n.scale(c,c),n.strokeStyle=l.strokeColor,n.lineWidth=l.strokeWidth,n.lineCap="round",n.lineJoin="round";for(const t of e)if(0!==t.points.length){n.beginPath(),n.moveTo(t.points[0].x,t.points[0].y);for(let e=1;e<t.points.length;e++)n.lineTo(t.points[e].x,t.points[e].y);n.stroke()}n.restore()}}function p(e){if(0===e.length||e.every(e=>e.points.length<2))return void l.onResult(null);const n=a.value;if(!n)return;const o=i(n,Math.ceil(l.strokeWidth*c));if(!o)return void l.onResult(null);const r=o.bounds.x/c,u=o.bounds.y/c,s=Math.round(o.bounds.width/c),d=Math.round(o.bounds.height/c),h={creationType:t.SignatureCreationType.Draw,inkData:{inkList:e.filter(e=>e.points.length>=2).map(e=>({points:e.points.map(e=>({x:e.x-r,y:e.y-u}))})),strokeWidth:l.strokeWidth,strokeColor:l.strokeColor,size:{width:s,height:d}},previewDataUrl:o.canvas.toDataURL("image/png")};l.onResult(h)}function g(e){var t,n;u=!0;const o=d(e);r.value=[...r.value,{points:[o]}],h(r.value),null==(n=null==(t=e.target)?void 0:t.setPointerCapture)||n.call(t,e.pointerId)}function v(e){if(!u)return;const t=d(e),n=r.value[r.value.length-1];n&&(n.points.push(t),r.value=[...r.value],h(r.value))}function f(e){var t,n;u=!1,null==(n=null==(t=e.target)?void 0:t.releasePointerCapture)||n.call(t,e.pointerId),p(r.value)}return n({clear:function(){r.value=[],h([]),l.onResult(null)}}),o.watch([()=>l.strokeColor,()=>l.strokeWidth],()=>{h(r.value),r.value.length>0&&r.value.some(e=>e.points.length>=2)&&p(r.value)}),o.onMounted(()=>{const e=a.value;e&&(s=new ResizeObserver(e=>{const{width:t,height:n}=e[0].contentRect;t>0&&n>0&&a.value&&(a.value.width=Math.round(t)*c,a.value.height=Math.round(n)*c,h(r.value))}),s.observe(e))}),o.onUnmounted(()=>{null==s||s.disconnect()}),(e,t)=>(o.openBlock(),o.createElementBlock("canvas",{ref_key:"canvasRef",ref:a,style:{touchAction:"none",width:"100%",height:"100%",display:"block"},onPointerdown:g,onPointermove:v,onPointerup:f},null,544))}}),r=["value","placeholder"],u=o.defineComponent({__name:"SignatureTypePad",props:{onResult:{},fontFamily:{default:"'Dancing Script', cursive"},fontSize:{default:48},color:{default:"#000000"},placeholder:{default:"Type your signature..."}},setup(e,{expose:n}){const l=e,a=o.ref(null),u=o.ref(null),c=o.ref(""),s=`sig-type-${Math.random().toString(36).slice(2,8)}`;let d={width:0,height:0};const h="undefined"!=typeof window&&window.devicePixelRatio||1;let p=null;const g=o.computed(()=>`#${s}::placeholder { color: ${l.color}; opacity: 0.5; }`),v=o.computed(()=>({fontFamily:l.fontFamily,fontSize:`${Math.min(l.fontSize,32)}px`,color:l.color,width:"100%",height:"100%",border:"none",outline:"none",background:"transparent",textIndent:"8px"}));function f(e){const n=u.value;if(!n)return;const{width:o,height:a}=d;if(0===o||0===a)return;n.width=o*h,n.height=a*h;const r=n.getContext("2d");if(!r)return;if(r.clearRect(0,0,n.width,n.height),!e.trim())return void l.onResult(null);r.scale(h,h),r.fillStyle=l.color,r.font=`${l.fontSize}px ${l.fontFamily}`,r.textBaseline="middle",r.textAlign="center",r.fillText(e,o/2,a/2,o-20);const c=i(n,Math.ceil(4*h));if(!c)return void l.onResult(null);const s=Math.round(c.bounds.width/h),p=Math.round(c.bounds.height/h);c.canvas.toBlob(n=>{n&&n.arrayBuffer().then(n=>{const o={creationType:t.SignatureCreationType.Type,label:e,imageMimeType:"image/png",imageSize:{width:s,height:p},previewDataUrl:c.canvas.toDataURL("image/png"),imageData:n};l.onResult(o)})},"image/png")}function m(e){c.value=e.target.value}return n({clear:function(){c.value="",l.onResult(null)}}),o.watch([c,()=>l.fontFamily,()=>l.color],()=>{f(c.value)}),o.onMounted(()=>{const e=a.value;e&&(p=new ResizeObserver(e=>{const{width:t,height:n}=e[0].contentRect;t>0&&n>0&&(d={width:Math.round(t),height:Math.round(n)},f(c.value))}),p.observe(e))}),o.onUnmounted(()=>{null==p||p.disconnect()}),(t,n)=>(o.openBlock(),o.createElementBlock("div",{ref_key:"wrapperRef",ref:a,style:{width:"100%",height:"100%"}},[(o.openBlock(),o.createBlock(o.resolveDynamicComponent("style"),{textContent:o.toDisplayString(g.value)},null,8,["textContent"])),o.createElementVNode("input",{id:s,type:"text",value:c.value,onInput:m,placeholder:e.placeholder,style:o.normalizeStyle(v.value)},null,44,r),o.createElementVNode("canvas",{ref_key:"canvasRef",ref:u,style:{display:"none"}},null,512)],512))}}),c=e.createPluginPackage(t.SignaturePluginPackage).build();exports.SignatureDrawPad=a,exports.SignaturePluginPackage=c,exports.SignatureTypePad=u,exports.useActivePlacement=e=>{const{provides:t}=l(),n=o.ref(null);return o.watch([t,()=>o.toValue(e)],([e,t],o,l)=>{if(!e||!t)return void(n.value=null);const i=e.forDocument(t);n.value=i.getActivePlacement();l(i.onActivePlacementChange(e=>{n.value=e}))},{immediate:!0}),n},exports.useSignatureCapability=l,exports.useSignatureEntries=()=>{const{provides:e}=l(),t=o.ref([]);return o.watch(e,(e,n,o)=>{if(!e)return void(t.value=[]);t.value=e.getEntries();o(e.onEntriesChange(e=>{t.value=e}))},{immediate:!0}),{entries:t}},exports.useSignaturePlugin=()=>n.usePlugin(t.SignaturePlugin.id),exports.useSignatureUpload=function({accept:e="image/png,image/jpeg,image/svg+xml",onResult:n}){const l=o.ref(null),i=o.ref(null),a=o.ref(!1);function r(e){const o=new FileReader;o.onload=()=>{const l=o.result,a=new Blob([l],{type:e.type}),r=URL.createObjectURL(a);i.value&&URL.revokeObjectURL(i.value),i.value=r;const u=new Image;u.onload=()=>{const o=document.createElement("canvas");o.width=u.width,o.height=u.height;const i=o.getContext("2d");i&&i.drawImage(u,0,0);const a={creationType:t.SignatureCreationType.Upload,imageMimeType:e.type,imageSize:{width:u.width,height:u.height},previewDataUrl:o.toDataURL("image/png"),imageData:l};n(a)},u.src=r},o.readAsArrayBuffer(e)}return{inputRef:l,openFilePicker:function(){var e;null==(e=l.value)||e.click()},processFile:r,handleFileInputChange:function(e){const t=e.target.files;t&&t[0]&&r(t[0])},handleDrop:function(e){var t;e.preventDefault(),a.value=!1;const n=null==(t=e.dataTransfer)?void 0:t.files;n&&n[0]&&r(n[0])},handleDragOver:function(e){e.preventDefault(),a.value=!0},handleDragLeave:function(){a.value=!1},previewUrl:i,isDragging:a,clear:function(){i.value&&URL.revokeObjectURL(i.value),i.value=null,n(null),l.value&&(l.value.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/vue/hooks/use-signature.ts","../../src/shared/components/crop-canvas.ts","../../src/vue/components/SignatureDrawPad.vue","../../src/vue/components/SignatureTypePad.vue","../../src/vue/index.ts","../../src/vue/hooks/use-signature-upload.ts"],"sourcesContent":["import { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { SignaturePlugin, SignatureEntry, ActivePlacementInfo } from '@embedpdf/plugin-signature';\nimport { ref, watch, toValue, type MaybeRefOrGetter } from 'vue';\n\nexport const useSignaturePlugin = () => usePlugin<SignaturePlugin>(SignaturePlugin.id);\nexport const useSignatureCapability = () => useCapability<SignaturePlugin>(SignaturePlugin.id);\n\nexport const useSignatureEntries = () => {\n const { provides } = useSignatureCapability();\n const entries = ref<SignatureEntry[]>([]);\n\n watch(\n provides,\n (capability, _, onCleanup) => {\n if (!capability) {\n entries.value = [];\n return;\n }\n\n entries.value = capability.getEntries();\n const unsubscribe = capability.onEntriesChange((updated) => {\n entries.value = updated;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return { entries };\n};\n\nexport const useActivePlacement = (documentId: MaybeRefOrGetter<string>) => {\n const { provides } = useSignatureCapability();\n const activePlacement = ref<ActivePlacementInfo | null>(null);\n\n watch(\n [provides, () => toValue(documentId)],\n ([capability, docId], _, onCleanup) => {\n if (!capability || !docId) {\n activePlacement.value = null;\n return;\n }\n\n const scope = capability.forDocument(docId);\n activePlacement.value = scope.getActivePlacement();\n const unsubscribe = scope.onActivePlacementChange((placement) => {\n activePlacement.value = placement;\n });\n onCleanup(unsubscribe);\n },\n { immediate: true },\n );\n\n return activePlacement;\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","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onUnmounted } from 'vue';\nimport { SignatureInkFieldDefinition, SignatureCreationType } from '@embedpdf/plugin-signature';\nimport { cropCanvas } from '../../shared/components/crop-canvas';\n\nconst props = withDefaults(\n defineProps<{\n onResult: (result: SignatureInkFieldDefinition | null) => void;\n strokeColor?: string;\n strokeWidth?: number;\n }>(),\n {\n strokeColor: '#000000',\n strokeWidth: 4,\n },\n);\n\nconst canvasRef = ref<HTMLCanvasElement | null>(null);\nconst strokes = ref<Array<{ points: Array<{ x: number; y: number }> }>>([]);\nlet isDrawing = false;\nlet size = { width: 0, height: 0 };\nconst dpr = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\nlet observer: ResizeObserver | null = null;\n\nfunction getCanvasPos(e: PointerEvent): { x: number; y: number } {\n const canvas = canvasRef.value;\n if (!canvas) return { x: 0, y: 0 };\n const rect = canvas.getBoundingClientRect();\n return {\n x: (e.clientX - rect.left) * (canvas.width / dpr / rect.width),\n y: (e.clientY - rect.top) * (canvas.height / dpr / rect.height),\n };\n}\n\nfunction redraw(currentStrokes: Array<{ points: Array<{ x: number; y: number }> }>) {\n const canvas = canvasRef.value;\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.save();\n ctx.scale(dpr, dpr);\n ctx.strokeStyle = props.strokeColor;\n ctx.lineWidth = props.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\nfunction emitResult(currentStrokes: Array<{ points: Array<{ x: number; y: number }> }>) {\n if (currentStrokes.length === 0 || currentStrokes.every((s) => s.points.length < 2)) {\n props.onResult(null);\n return;\n }\n\n const canvas = canvasRef.value;\n if (!canvas) return;\n\n const cropped = cropCanvas(canvas, Math.ceil(props.strokeWidth * dpr));\n if (!cropped) {\n props.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: props.strokeWidth,\n strokeColor: props.strokeColor,\n size: { width: croppedWidth, height: croppedHeight },\n },\n previewDataUrl: cropped.canvas.toDataURL('image/png'),\n };\n\n props.onResult(result);\n}\n\nfunction clear() {\n strokes.value = [];\n redraw([]);\n props.onResult(null);\n}\n\ndefineExpose({ clear });\n\nfunction handlePointerDown(e: PointerEvent) {\n isDrawing = true;\n const pos = getCanvasPos(e);\n strokes.value = [...strokes.value, { points: [pos] }];\n redraw(strokes.value);\n (e.target as HTMLElement)?.setPointerCapture?.(e.pointerId);\n}\n\nfunction handlePointerMove(e: PointerEvent) {\n if (!isDrawing) return;\n const pos = getCanvasPos(e);\n const last = strokes.value[strokes.value.length - 1];\n if (last) {\n last.points.push(pos);\n strokes.value = [...strokes.value];\n redraw(strokes.value);\n }\n}\n\nfunction handlePointerUp(e: PointerEvent) {\n isDrawing = false;\n (e.target as HTMLElement)?.releasePointerCapture?.(e.pointerId);\n emitResult(strokes.value);\n}\n\nwatch([() => props.strokeColor, () => props.strokeWidth], () => {\n redraw(strokes.value);\n if (strokes.value.length > 0 && strokes.value.some((s) => s.points.length >= 2)) {\n emitResult(strokes.value);\n }\n});\n\nonMounted(() => {\n const canvas = canvasRef.value;\n if (!canvas) return;\n observer = new ResizeObserver((entries) => {\n const { width: w, height: h } = entries[0].contentRect;\n if (w > 0 && h > 0 && canvasRef.value) {\n size = { width: Math.round(w), height: Math.round(h) };\n canvasRef.value.width = Math.round(w) * dpr;\n canvasRef.value.height = Math.round(h) * dpr;\n redraw(strokes.value);\n }\n });\n observer.observe(canvas);\n});\n\nonUnmounted(() => {\n observer?.disconnect();\n});\n</script>\n\n<template>\n <canvas\n ref=\"canvasRef\"\n :style=\"{ touchAction: 'none', width: '100%', height: '100%', display: 'block' }\"\n @pointerdown=\"handlePointerDown\"\n @pointermove=\"handlePointerMove\"\n @pointerup=\"handlePointerUp\"\n />\n</template>\n","<script setup lang=\"ts\">\nimport { ref, watch, onMounted, onUnmounted, computed } from 'vue';\nimport { SignatureStampFieldDefinition, SignatureCreationType } from '@embedpdf/plugin-signature';\nimport { cropCanvas } from '../../shared/components/crop-canvas';\n\nconst props = withDefaults(\n defineProps<{\n onResult: (result: SignatureStampFieldDefinition | null) => void;\n fontFamily?: string;\n fontSize?: number;\n color?: string;\n placeholder?: string;\n }>(),\n {\n fontFamily: \"'Dancing Script', cursive\",\n fontSize: 48,\n color: '#000000',\n placeholder: 'Type your signature...',\n },\n);\n\nconst wrapperRef = ref<HTMLDivElement | null>(null);\nconst canvasRef = ref<HTMLCanvasElement | null>(null);\nconst text = ref('');\nconst inputId = `sig-type-${Math.random().toString(36).slice(2, 8)}`;\nlet size = { width: 0, height: 0 };\nconst dpr = typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1;\nlet observer: ResizeObserver | null = null;\n\nconst placeholderStyle = computed(\n () => `#${inputId}::placeholder { color: ${props.color}; opacity: 0.5; }`,\n);\n\nconst inputStyle = computed(() => ({\n fontFamily: props.fontFamily,\n fontSize: `${Math.min(props.fontSize, 32)}px`,\n color: props.color,\n width: '100%',\n height: '100%',\n border: 'none',\n outline: 'none',\n background: 'transparent',\n textIndent: '8px',\n}));\n\nfunction renderText(currentText: string) {\n const canvas = canvasRef.value;\n if (!canvas) return;\n\n const { width, height } = size;\n if (width === 0 || height === 0) return;\n\n canvas.width = width * dpr;\n canvas.height = height * dpr;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (!currentText.trim()) {\n props.onResult(null);\n return;\n }\n\n ctx.scale(dpr, dpr);\n ctx.fillStyle = props.color;\n ctx.font = `${props.fontSize}px ${props.fontFamily}`;\n ctx.textBaseline = 'middle';\n ctx.textAlign = 'center';\n ctx.fillText(currentText, width / 2, height / 2, width - 20);\n\n const cropped = cropCanvas(canvas, Math.ceil(4 * dpr));\n if (!cropped) {\n props.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 props.onResult(result);\n });\n }, 'image/png');\n}\n\nfunction clear() {\n text.value = '';\n props.onResult(null);\n}\n\ndefineExpose({ clear });\n\nfunction handleInput(e: Event) {\n text.value = (e.target as HTMLInputElement).value;\n}\n\nwatch([text, () => props.fontFamily, () => props.color], () => {\n renderText(text.value);\n});\n\nonMounted(() => {\n const wrapper = wrapperRef.value;\n if (!wrapper) return;\n 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.value);\n }\n });\n observer.observe(wrapper);\n});\n\nonUnmounted(() => {\n observer?.disconnect();\n});\n</script>\n\n<template>\n <div ref=\"wrapperRef\" :style=\"{ width: '100%', height: '100%' }\">\n <component is=\"style\" v-text=\"placeholderStyle\" />\n <input\n :id=\"inputId\"\n type=\"text\"\n :value=\"text\"\n @input=\"handleInput\"\n :placeholder=\"placeholder\"\n :style=\"inputStyle\"\n />\n <canvas ref=\"canvasRef\" :style=\"{ display: 'none' }\" />\n </div>\n</template>\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","import { ref, type Ref } from 'vue';\nimport { 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: Ref<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 previewUrl: Ref<string | null>;\n isDragging: Ref<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 = ref<HTMLInputElement | null>(null);\n const previewUrl = ref<string | null>(null);\n const isDragging = ref(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.value) URL.revokeObjectURL(previewUrl.value);\n previewUrl.value = 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.value = 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.value = true;\n }\n\n function handleDragLeave() {\n isDragging.value = false;\n }\n\n function openFilePicker() {\n inputRef.value?.click();\n }\n\n function clear() {\n if (previewUrl.value) URL.revokeObjectURL(previewUrl.value);\n previewUrl.value = null;\n onResult(null);\n if (inputRef.value) {\n inputRef.value.value = '';\n }\n }\n\n return {\n inputRef,\n openFilePicker,\n processFile,\n handleFileInputChange,\n handleDrop,\n handleDragOver,\n handleDragLeave,\n previewUrl,\n isDragging,\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","props","__props","canvasRef","ref","strokes","isDrawing","dpr","window","devicePixelRatio","observer","getCanvasPos","e","value","rect","getBoundingClientRect","clientX","left","clientY","top","redraw","currentStrokes","clearRect","save","scale","strokeStyle","strokeColor","lineWidth","strokeWidth","lineCap","lineJoin","stroke","points","length","beginPath","moveTo","i","lineTo","restore","emitResult","every","s","onResult","ceil","offsetX","offsetY","croppedWidth","round","croppedHeight","result","creationType","SignatureCreationType","Draw","inkData","inkList","filter","map","p","size","previewDataUrl","toDataURL","handlePointerDown","pos","_b","_a","target","setPointerCapture","call","pointerId","handlePointerMove","last","push","handlePointerUp","releasePointerCapture","__expose","clear","watch","some","onMounted","ResizeObserver","entries","w","h","contentRect","observe","onUnmounted","disconnect","_createElementBlock","style","touchAction","display","onPointerdown","onPointermove","onPointerup","wrapperRef","text","inputId","random","toString","slice","placeholderStyle","computed","color","inputStyle","fontFamily","fontSize","border","outline","background","textIndent","renderText","currentText","trim","fillStyle","font","textBaseline","textAlign","fillText","toBlob","blob","arrayBuffer","then","Type","label","imageMimeType","imageSize","handleInput","wrapper","_createBlock","_resolveDynamicComponent","textContent","_toDisplayString","_createElementVNode","type","onInput","placeholder","SignaturePluginPackage","createPluginPackage","BaseSignaturePackage","build","documentId","provides","activePlacement","toValue","capability","docId","_","onCleanup","scope","forDocument","getActivePlacement","onActivePlacementChange","placement","immediate","getEntries","onEntriesChange","updated","usePlugin","accept","inputRef","previewUrl","isDragging","processFile","file","reader","FileReader","onload","Blob","dataUrl","URL","createObjectURL","revokeObjectURL","img","Image","previewCanvas","Upload","src","readAsArrayBuffer","openFilePicker","click","handleFileInputChange","files","handleDrop","preventDefault","dataTransfer","handleDragOver","handleDragLeave"],"mappings":"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"}
@@ -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>>;