@hubsync/esign-web-sdk 6.9.42 → 6.9.43
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/cjs/loader.cjs.js +1 -1
- package/dist/cjs/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-signing-progress.verdocs-view.entry.cjs.js.map +1 -1
- package/dist/cjs/verdocs-adopt-signature-dialog_8.cjs.entry.js +77 -16
- package/dist/cjs/verdocs-sign.cjs.entry.js +14 -2
- package/dist/cjs/verdocs-sign.entry.cjs.js.map +1 -1
- package/dist/cjs/verdocs-web-sdk.cjs.js +1 -1
- package/dist/collection/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.js +136 -18
- package/dist/collection/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.js.map +1 -1
- package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js +17 -2
- package/dist/collection/components/embeds/verdocs-sign/verdocs-sign.js.map +1 -1
- package/dist/components/{p-Dpuy1yah.js → p-BUE7R0tf.js} +82 -18
- package/dist/components/p-BUE7R0tf.js.map +1 -0
- package/dist/components/verdocs-adopt-signature-dialog.js +1 -1
- package/dist/components/verdocs-sign.js +18 -3
- package/dist/components/verdocs-sign.js.map +1 -1
- package/dist/custom-elements.json +20 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-signing-progress.verdocs-view.entry.js.map +1 -1
- package/dist/esm/verdocs-adopt-signature-dialog_8.entry.js +77 -16
- package/dist/esm/verdocs-sign.entry.js +14 -2
- package/dist/esm/verdocs-sign.entry.js.map +1 -1
- package/dist/esm/verdocs-web-sdk.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-signing-progress.verdocs-view.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-adopt-signature-dialog_8.entry.js +1 -1
- package/dist/esm-es5/verdocs-adopt-signature-dialog_8.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-sign.entry.js +1 -1
- package/dist/esm-es5/verdocs-sign.entry.js.map +1 -1
- package/dist/esm-es5/verdocs-web-sdk.js +1 -1
- package/dist/types/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.d.ts +17 -0
- package/dist/types/components/embeds/verdocs-sign/verdocs-sign.d.ts +3 -0
- package/dist/types/components.d.ts +26 -2
- package/dist/verdocs-web-sdk/p-32af0c78.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-32af0c78.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-64c0f4e1.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-64c0f4e1.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-B8zpaHu-.system.js +1 -1
- package/dist/verdocs-web-sdk/p-DL_q7a6L.system.js.map +1 -0
- package/dist/verdocs-web-sdk/p-DyUrM6Ex.system.js.map +1 -0
- package/dist/verdocs-web-sdk/p-b8966f51.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-b8966f51.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/p-e13491c4.system.entry.js +2 -0
- package/dist/verdocs-web-sdk/p-e13491c4.system.entry.js.map +1 -0
- package/dist/verdocs-web-sdk/verdocs-adopt-signature-dialog.verdocs-delegate-dialog.verdocs-disclosure-dialog.verdocs-kba-dialog.verdocs-otp-dialog.verdocs-passcode-dialog.verdocs-signing-progress.verdocs-view.entry.esm.js.map +1 -1
- package/dist/verdocs-web-sdk/verdocs-sign.entry.esm.js.map +1 -1
- package/dist/verdocs-web-sdk/verdocs-web-sdk.esm.js +1 -1
- package/package.json +1 -1
- package/dist/components/p-Dpuy1yah.js.map +0 -1
- package/dist/verdocs-web-sdk/p-3c6e0a1f.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-3c6e0a1f.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-521b0c66.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-521b0c66.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-6f4a8d69.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-6f4a8d69.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-7c5d6848.system.entry.js +0 -2
- package/dist/verdocs-web-sdk/p-7c5d6848.system.entry.js.map +0 -1
- package/dist/verdocs-web-sdk/p-B0Zty-s5.system.js.map +0 -1
- package/dist/verdocs-web-sdk/p-TlalAeRR.system.js.map +0 -1
|
@@ -168,6 +168,9 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
168
168
|
componentWillLoad() {
|
|
169
169
|
this.enteredName = this.name;
|
|
170
170
|
this.computeEnteredInitials(this.name);
|
|
171
|
+
if (this.initialMode) {
|
|
172
|
+
this.mode = this.initialMode;
|
|
173
|
+
}
|
|
171
174
|
const ds = new FontFace('Dancing Script', 'url(https://fonts.gstatic.com/s/dancingscript/v19/If2cXTr6YS-zF4S-kcSWSVi_sxjsohD9F50Ruu7BMSo3Sup6hNX6plRP.woff)');
|
|
172
175
|
ds.load().then(font => {
|
|
173
176
|
document.fonts.add(font);
|
|
@@ -175,24 +178,82 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
175
178
|
});
|
|
176
179
|
}
|
|
177
180
|
componentDidLoad() {
|
|
178
|
-
this.drawSignatureText();
|
|
179
|
-
this.drawInitialsText();
|
|
180
181
|
this.setupSignatureCanvas();
|
|
181
182
|
this.setupInitialsCanvas();
|
|
183
|
+
void this.loadExistingPreviews();
|
|
182
184
|
}
|
|
183
185
|
componentDidUpdate() {
|
|
184
|
-
this.drawSignatureText();
|
|
185
|
-
this.drawInitialsText();
|
|
186
186
|
this.setupSignatureCanvas();
|
|
187
187
|
this.setupInitialsCanvas();
|
|
188
|
+
if (this.mode === 'type') {
|
|
189
|
+
this.drawSignatureText();
|
|
190
|
+
this.drawInitialsText();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
188
193
|
// Redraw drawn signature when in draw mode
|
|
189
|
-
if (this.
|
|
194
|
+
if (this.allSigStrokes.length > 0) {
|
|
190
195
|
this.redrawDrawnSignature();
|
|
191
196
|
}
|
|
192
|
-
if (this.
|
|
197
|
+
if (this.allInitialsStrokes.length > 0) {
|
|
193
198
|
this.redrawDrawnInitials();
|
|
194
199
|
}
|
|
195
200
|
}
|
|
201
|
+
drawImageOnCanvas(canvas, dataUrl) {
|
|
202
|
+
return new Promise((resolve, reject) => {
|
|
203
|
+
const image = new Image();
|
|
204
|
+
image.onload = () => {
|
|
205
|
+
const context = canvas.getContext('2d');
|
|
206
|
+
context.clearRect(0, 0, canvas.width, canvas.height);
|
|
207
|
+
const padding = 24;
|
|
208
|
+
const scale = Math.min((canvas.width - padding) / image.width, (canvas.height - padding) / image.height, 1);
|
|
209
|
+
const width = image.width * scale;
|
|
210
|
+
const height = image.height * scale;
|
|
211
|
+
const x = (canvas.width - width) / 2;
|
|
212
|
+
const y = (canvas.height - height) / 2;
|
|
213
|
+
context.drawImage(image, x, y, width, height);
|
|
214
|
+
resolve();
|
|
215
|
+
};
|
|
216
|
+
image.onerror = () => reject(new Error('Unable to load signature preview'));
|
|
217
|
+
image.src = dataUrl;
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
async loadExistingPreviews() {
|
|
221
|
+
if (this.mode === 'draw') {
|
|
222
|
+
await this.restoreDrawnPreviewsIfNeeded();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
this.drawSignatureText();
|
|
226
|
+
this.drawInitialsText();
|
|
227
|
+
}
|
|
228
|
+
setMode(mode) {
|
|
229
|
+
this.mode = mode;
|
|
230
|
+
if (mode === 'draw') {
|
|
231
|
+
void this.restoreDrawnPreviewsIfNeeded();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async restoreDrawnPreviewsIfNeeded() {
|
|
235
|
+
// Preserve in-session stroke edits; only restore saved previews when there are no strokes yet.
|
|
236
|
+
if (this.allSigStrokes.length > 0 || this.allInitialsStrokes.length > 0) {
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const tasks = [];
|
|
240
|
+
if (this.initialSignature && this.signatureElement) {
|
|
241
|
+
tasks.push(this.drawImageOnCanvas(this.signatureElement, this.initialSignature).then(() => {
|
|
242
|
+
this.hasDrawnSignature = true;
|
|
243
|
+
}));
|
|
244
|
+
}
|
|
245
|
+
if (this.initialInitials && this.initialsElement) {
|
|
246
|
+
tasks.push(this.drawImageOnCanvas(this.initialsElement, this.initialInitials).then(() => {
|
|
247
|
+
this.hasDrawnInitials = true;
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
if (tasks.length === 0) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
await Promise.all(tasks);
|
|
254
|
+
this.setupSignatureCanvas();
|
|
255
|
+
this.setupInitialsCanvas();
|
|
256
|
+
}
|
|
196
257
|
drawSignatureText() {
|
|
197
258
|
if (!this.signatureElement || this.mode !== 'type') {
|
|
198
259
|
return;
|
|
@@ -320,7 +381,7 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
320
381
|
e.preventDefault();
|
|
321
382
|
const signature = this.signatureElement.toDataURL('image/png');
|
|
322
383
|
const initials = this.initialsElement.toDataURL('image/png');
|
|
323
|
-
this.next.emit({ signature, initials });
|
|
384
|
+
this.next.emit({ signature, initials, mode: this.mode });
|
|
324
385
|
}
|
|
325
386
|
isAdoptButtonDisabled() {
|
|
326
387
|
switch (this.mode) {
|
|
@@ -328,8 +389,8 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
328
389
|
// Disable if no name has been entered
|
|
329
390
|
return !this.enteredName || this.enteredName.trim().length === 0;
|
|
330
391
|
case 'draw':
|
|
331
|
-
// Disable if nothing has been drawn
|
|
332
|
-
return
|
|
392
|
+
// Disable if nothing has been drawn or restored from a previous adoption
|
|
393
|
+
return !this.hasDrawnSignature || !this.hasDrawnInitials;
|
|
333
394
|
default:
|
|
334
395
|
return true;
|
|
335
396
|
}
|
|
@@ -350,8 +411,8 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
350
411
|
this.sigDrawingContext.lineWidth = 2;
|
|
351
412
|
this.sigDrawingContext.lineCap = 'round';
|
|
352
413
|
this.sigDrawingContext.lineJoin = 'round';
|
|
353
|
-
// Clear canvas only if there are no existing strokes
|
|
354
|
-
if (this.allSigStrokes.length === 0) {
|
|
414
|
+
// Clear canvas only if there are no existing strokes or restored previews
|
|
415
|
+
if (this.allSigStrokes.length === 0 && !this.hasDrawnSignature) {
|
|
355
416
|
this.sigDrawingContext.clearRect(0, 0, this.signatureElement.width, this.signatureElement.height);
|
|
356
417
|
}
|
|
357
418
|
}
|
|
@@ -380,8 +441,8 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
380
441
|
this.initialsDrawingContext.lineWidth = 2;
|
|
381
442
|
this.initialsDrawingContext.lineCap = 'round';
|
|
382
443
|
this.initialsDrawingContext.lineJoin = 'round';
|
|
383
|
-
// Clear canvas only if there are no existing strokes
|
|
384
|
-
if (this.allInitialsStrokes.length === 0) {
|
|
444
|
+
// Clear canvas only if there are no existing strokes or restored previews
|
|
445
|
+
if (this.allInitialsStrokes.length === 0 && !this.hasDrawnInitials) {
|
|
385
446
|
this.initialsDrawingContext.clearRect(0, 0, this.initialsElement.width, this.initialsElement.height);
|
|
386
447
|
}
|
|
387
448
|
}
|
|
@@ -449,16 +510,19 @@ const VerdocsAdoptSignatureDialog = /*@__PURE__*/ proxyCustomElement(class Verdo
|
|
|
449
510
|
};
|
|
450
511
|
}
|
|
451
512
|
render() {
|
|
452
|
-
return (h("verdocs-dialog", { key: '
|
|
513
|
+
return (h("verdocs-dialog", { key: '43e4a40803e7cf511bed41328fd48a54da571f23', persistent: true, onExit: () => this.exit.emit() }, h("div", { key: '462e271fe1390006727a0daa1a47de9b359af39c', slot: "heading", class: "heading" }, "Adopt Your Signature"), h("div", { key: '3617b310cba6e6defdd6a01bb3c16dd08db81c29', slot: "content", class: "content" }, h("div", { key: '4365227155f52f36c6421b1ff1cc6dcb2ea4fa6e', style: { fontWeight: '300', color: '#242424', fontSize: '13px' } }, "Confirm your name, initials, and signature."), h("div", { key: 'a768ae444c23e06b58a477e7f3654d128e5d1a6a', class: { type: true, active: this.mode === 'type' } }, h("verdocs-text-input", { key: 'dd3ba8e3b0994ed84148d890b6fba81c8554f70e', label: "Full Name", value: this.enteredName, disabled: this.nameLocked, onInput: e => this.handleNameChange(e), onClick: e => e.stopPropagation() }), this.nameLocked && h("div", { key: '45875c35eeaf050b2de2cc313f6275460fd96e0a', class: "name-locked-hint" }, "Your name has been set by the sender and cannot be changed.")), h("div", { key: 'cc6b9a9072ab0069fbf58ff0395311c93283fb7e', style: { fontWeight: '400', color: '#242424', fontSize: '13px' } }, "Select a signature style"), h("div", { key: '19034c3e2232c832ad4b0032d47e0940fa52c8d2', style: { display: 'flex', flexDirection: 'row', gap: '10px', marginBottom: '6px', alignItems: 'center', fontSize: '13px' } }, h("verdocs-radio-button", { key: 'c2f084d61633dbbd8aed7b6e3b941e19a953ccab', checked: this.mode === 'type', value: "type", name: "mode", onClick: () => this.setMode('type') }), h("label", { key: 'e1f22d03c316ad2c9fae0d80f81965557c0fbce6' }, "Typed with a keyboard")), h("div", { key: '9c343a3b9a3a551806d86f7c33496f856e50fe99', style: { display: 'flex', flexDirection: 'row', gap: '10px', marginBottom: '6px', alignItems: 'center', fontSize: '13px' } }, h("verdocs-radio-button", { key: '7e411e25456464390b028237cce9dcace361b7cf', checked: this.mode === 'draw', value: "draw", name: "mode", onClick: () => this.setMode('draw') }), h("label", { key: '9a707c87cf4229a6a8831adfeced815ce098180b' }, "Drawn with touch, mouse, or stylus")), h("div", { key: 'aa35cc9591db961dbff6cd26127ccfff96f225d0', class: "preview-header" }, h("div", { key: '4144d977477a558f1785d8f77072d83e8832841b', style: { fontSize: '13px', fontWeight: '400' } }, "Signature Preview"), this.mode === 'draw' && (h("button", { key: '3b687ce578839aefc9447357f61c46ecf783500a', class: "clear-button-text", onClick: e => this.handleClearDrawing(e, 'signature'), disabled: !this.hasDrawnSignature }, "Clear"))), h("div", { key: '306bad99deb8abf8c071d45146f6bbb63c8ca8f4', class: "canvas-container signature-container" }, h("div", { key: 'e5538c0694e4c32d63d0d2169938aa55f0a282c1', class: "signing-indicator" }, h("div", { key: 'd1b5f38019d723b90d95c5ad23219ed4f38a4248', class: "x-icon", innerHTML: SignatureXIcon }), h("div", { key: 'd2f2693b3fdd9feeb6ce7ab8ef006ede715217ab', class: "signing-line" })), h("canvas", { key: '59aa5a8bc5a588bd7fe08bafd43f06394ed35128', ref: el => (this.signatureElement = el),
|
|
453
514
|
// width="300"
|
|
454
|
-
height: "79", class: "signature-canvas", onPointerDown: this.handleSigPointerDown, onPointerMove: this.handleSigPointerMove, onPointerUp: this.handleSigPointerUp, onPointerCancel: this.handleSigPointerCancel, style: { touchAction: 'none', cursor: 'crosshair' } })), h("div", { key: '
|
|
515
|
+
height: "79", class: "signature-canvas", onPointerDown: this.handleSigPointerDown, onPointerMove: this.handleSigPointerMove, onPointerUp: this.handleSigPointerUp, onPointerCancel: this.handleSigPointerCancel, style: { touchAction: 'none', cursor: 'crosshair' } })), h("div", { key: '86a97be28c467678bd34e455412877ff55de26c2', class: "preview-header" }, h("div", { key: '0a605a59765dbb1f7ee15aa17bc3b4547983c747', style: { fontSize: '13px', fontWeight: '400' } }, "Initials Preview"), this.mode === 'draw' && (h("button", { key: '2426ed63c75312a999a9c12653dd75afe844fa07', class: "clear-button-text", onClick: e => this.handleClearDrawing(e, 'initials'), disabled: !this.hasDrawnInitials }, "Clear"))), h("div", { key: 'fa2c72403a43dfdd6a5f237fa3a21f048ceb517b', class: "canvas-container initials-container" }, h("div", { key: '4e1fbf7d941fcb46c363a35cd238c03d5cc75491', class: "signing-indicator" }, h("div", { key: 'c52486f29337d6b9027b32ea103e86c45904749e', class: "x-icon", innerHTML: SignatureXIcon }), h("div", { key: '6fa97d0d887d543f696de750db82b1a034bcb2b6', class: "signing-line" })), h("canvas", { key: '062e4e8da832b9d0f1a5af24a76188d3a9164ad4', ref: el => (this.initialsElement = el),
|
|
455
516
|
// width="300"
|
|
456
|
-
height: "79", class: "initials-canvas", onPointerDown: this.handleInitialsPointerDown, onPointerMove: this.handleInitialsPointerMove, onPointerUp: this.handleInitialsPointerUp, onPointerCancel: this.handleInitialsPointerCancel, style: { touchAction: 'none', cursor: 'crosshair' } })), h("div", { key: '
|
|
517
|
+
height: "79", class: "initials-canvas", onPointerDown: this.handleInitialsPointerDown, onPointerMove: this.handleInitialsPointerMove, onPointerUp: this.handleInitialsPointerUp, onPointerCancel: this.handleInitialsPointerCancel, style: { touchAction: 'none', cursor: 'crosshair' } })), h("div", { key: 'f589d9624ff808b4179c55fad6ca1ef27b79f553', class: "disclaimer" }, "By clicking \u00ABAdopt Signature\u00BB, I agree that the signature and initials above will be the electronic representation of my signature and initials for all purposes when I use them to sign documents. Applying them to a document is legally equivalent to signing with a pen on paper.")), h("div", { key: '33058008d0000a073a43abae0246effa3970a52d', class: "footer", slot: "footer" }, h("div", { key: '3f6ea8bbca9a5eb9fab950a2a4d3d2e135698f56', class: "buttons" }, h("button", { key: '94512ed74ce791505f8e949f818ab7cac907271f', class: "cancel", onClick: e => this.handleCancel(e) }, "Cancel"), h("button", { key: '085af06c8d1671b0533a6f2b49891fcefe3697a9', class: "proceed", onClick: e => this.handleAdopt(e), disabled: this.isAdoptButtonDisabled() }, "Adopt & Sign")))));
|
|
457
518
|
}
|
|
458
519
|
static get style() { return verdocsAdoptSignatureDialogCss; }
|
|
459
520
|
}, [256, "verdocs-adopt-signature-dialog", {
|
|
460
521
|
"name": [1],
|
|
461
522
|
"nameLocked": [4, "name-locked"],
|
|
523
|
+
"initialMode": [1, "initial-mode"],
|
|
524
|
+
"initialSignature": [1, "initial-signature"],
|
|
525
|
+
"initialInitials": [1, "initial-initials"],
|
|
462
526
|
"fontLoaded": [32],
|
|
463
527
|
"enteredName": [32],
|
|
464
528
|
"enteredInitials": [32],
|
|
@@ -502,6 +566,6 @@ function defineCustomElement() {
|
|
|
502
566
|
}
|
|
503
567
|
|
|
504
568
|
export { VerdocsAdoptSignatureDialog as V, defineCustomElement as d };
|
|
505
|
-
//# sourceMappingURL=p-
|
|
569
|
+
//# sourceMappingURL=p-BUE7R0tf.js.map
|
|
506
570
|
|
|
507
|
-
//# sourceMappingURL=p-
|
|
571
|
+
//# sourceMappingURL=p-BUE7R0tf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"p-BUE7R0tf.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.scss?tag=verdocs-adopt-signature-dialog","src/components/dialogs/verdocs-adopt-signature-dialog/verdocs-adopt-signature-dialog.tsx"],"sourcesContent":["@import '../../../theme.scss';\n\nverdocs-adopt-signature-dialog {\n font-family: $primary-font;\n box-sizing: border-box;\n\n verdocs-dialog {\n border-radius: 4px;\n }\n\n .heading {\n color: #201f1e;\n font-weight: 400;\n padding-bottom: 0;\n border-bottom: none;\n }\n\n .content {\n display: flex;\n padding: 12px 24px 0;\n flex-direction: column;\n }\n\n .name-locked-hint {\n font-size: 12px;\n color: #6b7280;\n margin-top: 4px;\n }\n\n verdocs-text-input .input-label {\n color: #242424;\n font-size: 13px;\n font-weight: 400;\n }\n\n verdocs-text-input .input-element {\n border: 1px solid #e0e0e0;\n }\n\n verdocs-radio-button {\n transform: scale(0.9);\n }\n\n .canvas-container {\n position: relative;\n width: 100%;\n margin: 10px 0;\n border-radius: 4px;\n background: #fafafa;\n border: 1px solid #d1d1d1;\n box-sizing: border-box;\n\n &.initials-container {\n max-width: 50%;\n }\n\n canvas {\n width: 100%;\n height: 79px;\n border-radius: 4px;\n /* Background must be transparent to show the guide */\n background: transparent;\n box-sizing: border-box;\n /* Border is handled by container */\n border: none;\n position: relative;\n z-index: 2;\n }\n\n .signing-indicator {\n position: absolute;\n bottom: 9px;\n left: 9px;\n right: 9px;\n height: 28px;\n display: flex;\n flex-direction: row;\n align-items: flex-end;\n gap: 2px;\n z-index: 1;\n pointer-events: none;\n\n .x-icon {\n width: 25px;\n height: 28px;\n display: flex;\n\n svg {\n width: 100%;\n height: 100%;\n }\n }\n\n .signing-line {\n flex: 1;\n /* \"The line is a 1px dashed (8px dash 8px space) #d1d1d1 line\". This works in SOME browsers. */\n border-bottom: 1px dashed #d1d1d1;\n background-position: bottom;\n background-size: 16px 1px;\n /* 8px dash + 8px space = 16px repeat */\n background-repeat: repeat-x;\n margin-bottom: 0;\n /* Since standard border-style: dashed doesn't allow custom spacing, we use a background gradient\n trick or just rely on standard dashed if acceptable.\n */\n height: 1px;\n border: none;\n background-image: linear-gradient(to right, #d1d1d1 50%, transparent 50%);\n }\n }\n }\n\n .disclaimer {\n padding: 8px 0;\n font-size: 11px;\n line-height: 14px;\n text-align: justify;\n color: rgba(0, 0, 0, 0.54);\n }\n\n .tabs {\n display: flex;\n flex-direction: row;\n margin: -20px -20px 0 -20px;\n border-bottom: 1px solid #eeeeee;\n\n .tab {\n flex: 1;\n gap: 4px;\n display: flex;\n cursor: pointer;\n font-size: 12px;\n font-weight: 500;\n padding: 6px 10px;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n\n &.active {\n background: #f9f5fe;\n border-bottom: 2px solid $border-color;\n }\n\n &:hover {\n color: $primary-color;\n }\n\n .icon {\n width: 16px;\n height: 16px;\n }\n }\n }\n\n // We use fixed heights for these sections to avoid layout shifts when switching tabs.\n .type {\n display: none;\n flex-direction: column;\n\n &.active {\n display: flex;\n }\n }\n\n .draw {\n height: 100px;\n display: none;\n margin-top: 20px;\n flex-direction: column;\n\n &.active {\n display: flex;\n }\n\n .draw-instructions {\n font-size: 13px;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 8px;\n text-align: center;\n }\n\n canvas {\n cursor: crosshair;\n touch-action: none;\n }\n }\n\n .preview-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 10px;\n\n .clear-button-text {\n background: none;\n border: none;\n color: var(--verdocs-primary-color, #{$verdocs-green});\n cursor: pointer;\n font-size: 13px;\n padding: 0;\n font-weight: 500;\n\n &:hover {\n text-decoration: underline;\n }\n\n &:disabled {\n color: #9ca3af;\n text-decoration: none;\n cursor: not-allowed;\n }\n }\n }\n\n .upload {\n height: 100px;\n display: none;\n margin-top: 20px;\n flex-direction: column;\n\n &.active {\n display: flex;\n }\n\n .upload-instructions {\n font-size: 13px;\n color: rgba(0, 0, 0, 0.6);\n margin-bottom: 8px;\n text-align: center;\n }\n\n .upload-actions {\n display: flex;\n justify-content: center;\n gap: 12px;\n margin-top: 8px;\n\n .upload-button {\n border: 1px solid var(--verdocs-primary-color, #{$verdocs-green});\n background-color: var(--verdocs-primary-color, #{$verdocs-green});\n color: #ffffff;\n padding: 8px 20px;\n font-size: 13px;\n cursor: pointer;\n border-radius: var(--verdocs-button-radius, 4px);\n transition: all 0.2s ease;\n\n &:hover {\n filter: brightness(0.9);\n }\n }\n\n .clear-button {\n border: 1px solid #d0d0d0;\n background-color: #ffffff;\n color: #333333;\n padding: 8px 16px;\n font-size: 13px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.2s ease;\n\n &:hover:not(:disabled) {\n background-color: #f5f5f5;\n border-color: #b0b0b0;\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n }\n }\n\n .upload-filename {\n font-size: 12px;\n color: rgba(0, 0, 0, 0.6);\n text-align: center;\n margin-top: 8px;\n font-style: italic;\n }\n }\n\n /* TODO: We're getting positive feedback. Add this as a formal button variant. */\n .buttons {\n gap: 20px;\n display: flex;\n margin-top: 14px;\n flex-direction: row;\n justify-content: flex-end;\n\n button {\n flex: 1;\n border: 0;\n height: 38px;\n display: flex;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n align-items: center;\n border-radius: var(--verdocs-button-radius, 6px);\n justify-content: center;\n transition: all 0.2s ease;\n\n &.cancel {\n background-color: transparent;\n border: 1px solid #d1d5db;\n color: #374151;\n\n &:hover {\n background-color: #f9fafb;\n }\n }\n\n &.proceed {\n background-color: var(--verdocs-primary-color, #{$verdocs-green});\n border: 1px solid transparent;\n color: #ffffff;\n\n &:hover {\n background-color: var(--verdocs-primary-color-hover, #{$verdocs-green-shade});\n filter: brightness(0.95);\n }\n }\n\n &:disabled {\n background-color: #e5e7eb;\n color: #9ca3af;\n cursor: not-allowed;\n }\n }\n }\n}\n","import {Component, Prop, h, Event, EventEmitter, State} from '@stencil/core';\nimport {SignatureXIcon} from '../../../utils/Icons';\n\n/**\n * Display a dialog that allows the user to specify a signature image, either by using a signature-font-generated image\n * based on their full name, or by hand-drawing their signature with a mouse or tablet.\n */\n@Component({\n tag: 'verdocs-adopt-signature-dialog',\n styleUrl: 'verdocs-adopt-signature-dialog.scss',\n})\nexport class VerdocsAdoptSignatureDialog {\n private signatureElement?: HTMLCanvasElement;\n private initialsElement?: HTMLCanvasElement;\n private sigDrawingContext?: CanvasRenderingContext2D;\n private initialsDrawingContext?: CanvasRenderingContext2D;\n\n /**\n * Initial signature text\n */\n @Prop() name: string = '';\n\n /**\n * If true, the name fields will be read-only. Used when the sender has locked the recipient's name.\n */\n @Prop() nameLocked: boolean = false;\n\n /**\n * If set, restores the signature style tab when reopening the dialog (e.g. after Edit).\n */\n @Prop() initialMode?: 'type' | 'draw';\n\n /**\n * If set, restores the previously adopted signature preview (base64 data URL).\n */\n @Prop() initialSignature?: string;\n\n /**\n * If set, restores the previously adopted initials preview (base64 data URL).\n */\n @Prop() initialInitials?: string;\n\n /**\n * Fired when the user completes the dialog and clicks Adopt. The event detail will contain a base64-encoded string\n * representation of the signature adopted.\n */\n @Event({composed: true}) next: EventEmitter<{signature: string; initials: string; mode: 'type' | 'draw'}>;\n\n /**\n * Event fired when the step is cancelled. This is called exit to avoid conflicts with the JS-reserved \"cancel\" event name.\n */\n @Event({composed: true}) exit: EventEmitter;\n\n @State() fontLoaded = false;\n @State() enteredName: string = '';\n @State() enteredInitials: string = '';\n @State() mode: 'type' | 'draw' = 'type';\n @State() isDrawing = false;\n @State() hasDrawnSignature = false;\n @State() hasDrawnInitials = false;\n\n private currentSigStroke: Array<{x: number; y: number}> = [];\n private allSigStrokes: Array<Array<{x: number; y: number}>> = [];\n private lastSigPoint: {x: number; y: number} | null = null;\n\n private currentInitialsStroke: Array<{x: number; y: number}> = [];\n private allInitialsStrokes: Array<Array<{x: number; y: number}>> = [];\n private lastInitialsPoint: {x: number; y: number} | null = null;\n\n componentWillLoad() {\n this.enteredName = this.name;\n this.computeEnteredInitials(this.name);\n\n if (this.initialMode) {\n this.mode = this.initialMode;\n }\n\n const ds = new FontFace('Dancing Script', 'url(https://fonts.gstatic.com/s/dancingscript/v19/If2cXTr6YS-zF4S-kcSWSVi_sxjsohD9F50Ruu7BMSo3Sup6hNX6plRP.woff)');\n ds.load().then(font => {\n document.fonts.add(font);\n this.fontLoaded = true;\n });\n }\n\n componentDidLoad() {\n this.setupSignatureCanvas();\n this.setupInitialsCanvas();\n void this.loadExistingPreviews();\n }\n\n componentDidUpdate() {\n this.setupSignatureCanvas();\n this.setupInitialsCanvas();\n\n if (this.mode === 'type') {\n this.drawSignatureText();\n this.drawInitialsText();\n return;\n }\n\n // Redraw drawn signature when in draw mode\n if (this.allSigStrokes.length > 0) {\n this.redrawDrawnSignature();\n }\n if (this.allInitialsStrokes.length > 0) {\n this.redrawDrawnInitials();\n }\n }\n\n private drawImageOnCanvas(canvas: HTMLCanvasElement, dataUrl: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.onload = () => {\n const context = canvas.getContext('2d');\n context.clearRect(0, 0, canvas.width, canvas.height);\n\n const padding = 24;\n const scale = Math.min((canvas.width - padding) / image.width, (canvas.height - padding) / image.height, 1);\n const width = image.width * scale;\n const height = image.height * scale;\n const x = (canvas.width - width) / 2;\n const y = (canvas.height - height) / 2;\n\n context.drawImage(image, x, y, width, height);\n resolve();\n };\n image.onerror = () => reject(new Error('Unable to load signature preview'));\n image.src = dataUrl;\n });\n }\n\n private async loadExistingPreviews() {\n if (this.mode === 'draw') {\n await this.restoreDrawnPreviewsIfNeeded();\n return;\n }\n\n this.drawSignatureText();\n this.drawInitialsText();\n }\n\n private setMode(mode: 'type' | 'draw') {\n this.mode = mode;\n\n if (mode === 'draw') {\n void this.restoreDrawnPreviewsIfNeeded();\n }\n }\n\n private async restoreDrawnPreviewsIfNeeded() {\n // Preserve in-session stroke edits; only restore saved previews when there are no strokes yet.\n if (this.allSigStrokes.length > 0 || this.allInitialsStrokes.length > 0) {\n return;\n }\n\n const tasks: Promise<void>[] = [];\n\n if (this.initialSignature && this.signatureElement) {\n tasks.push(\n this.drawImageOnCanvas(this.signatureElement, this.initialSignature).then(() => {\n this.hasDrawnSignature = true;\n }),\n );\n }\n\n if (this.initialInitials && this.initialsElement) {\n tasks.push(\n this.drawImageOnCanvas(this.initialsElement, this.initialInitials).then(() => {\n this.hasDrawnInitials = true;\n }),\n );\n }\n\n if (tasks.length === 0) {\n return;\n }\n\n await Promise.all(tasks);\n this.setupSignatureCanvas();\n this.setupInitialsCanvas();\n }\n\n drawSignatureText() {\n if (!this.signatureElement || this.mode !== 'type') {\n return;\n }\n\n const sigCanvasWidth = this.signatureElement.width;\n const sigCanvasHeight = this.signatureElement.height;\n const sigContext = this.signatureElement.getContext('2d');\n sigContext.clearRect(0, 0, this.signatureElement.width, this.signatureElement.height);\n\n let fontSize = 100;\n let metrics: TextMetrics = sigContext.measureText(this.enteredName);\n do {\n fontSize -= 2;\n sigContext.font = `${fontSize}px Dancing Script`;\n metrics = sigContext.measureText(this.enteredName);\n } while (metrics.width > sigCanvasWidth - 24 || metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + 24 > sigCanvasHeight);\n\n sigContext.textAlign = 'center';\n sigContext.textBaseline = 'middle';\n sigContext.font = `${fontSize}px Dancing Script`;\n sigContext.fillText(this.enteredName, this.signatureElement.width / 2, this.signatureElement.height / 2);\n }\n\n drawInitialsText() {\n if (!this.initialsElement || this.mode !== 'type') {\n return;\n }\n\n const initialsCanvasWidth = this.initialsElement.width;\n const initialsCanvasHeight = this.initialsElement.height;\n const context = this.initialsElement.getContext('2d');\n context.clearRect(0, 0, this.initialsElement.width, this.initialsElement.height);\n\n let fontSize = 100;\n let metrics: TextMetrics = context.measureText(this.enteredInitials);\n do {\n fontSize -= 2;\n context.font = `${fontSize}px Dancing Script`;\n metrics = context.measureText(this.enteredInitials);\n } while (metrics.width > initialsCanvasWidth - 24 || metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent + 24 > initialsCanvasHeight);\n\n context.textAlign = 'center';\n context.textBaseline = 'middle';\n context.font = `${fontSize}px Dancing Script`;\n context.fillText(this.enteredInitials, this.initialsElement.width / 2, this.initialsElement.height / 2);\n }\n\n redrawDrawnSignature() {\n if (!this.signatureElement || !this.sigDrawingContext || this.allSigStrokes.length === 0) {\n return;\n }\n\n // Clear the canvas first\n this.sigDrawingContext.clearRect(0, 0, this.signatureElement.width, this.signatureElement.height);\n\n // Redraw all strokes\n for (const stroke of this.allSigStrokes) {\n if (stroke.length === 0) {\n continue;\n }\n\n // Start the path at the first point\n this.sigDrawingContext.beginPath();\n this.sigDrawingContext.moveTo(stroke[0].x, stroke[0].y);\n\n // Draw smooth curves through all points in the stroke\n for (let i = 1; i < stroke.length; i++) {\n const currentPoint = stroke[i];\n const previousPoint = stroke[i - 1];\n\n // Use quadratic curves for smooth lines\n const midPoint = {\n x: (previousPoint.x + currentPoint.x) / 2,\n y: (previousPoint.y + currentPoint.y) / 2,\n };\n\n this.sigDrawingContext.quadraticCurveTo(previousPoint.x, previousPoint.y, midPoint.x, midPoint.y);\n }\n\n // Draw to the last point\n if (stroke.length > 1) {\n const lastPoint = stroke[stroke.length - 1];\n this.sigDrawingContext.lineTo(lastPoint.x, lastPoint.y);\n }\n\n this.sigDrawingContext.stroke();\n }\n }\n\n redrawDrawnInitials() {\n if (!this.initialsElement || !this.initialsDrawingContext || this.allInitialsStrokes.length === 0) {\n return;\n }\n\n // Clear the canvas first\n this.initialsDrawingContext.clearRect(0, 0, this.initialsElement.width, this.initialsElement.height);\n\n // Redraw all strokes\n for (const stroke of this.allInitialsStrokes) {\n if (stroke.length === 0) {\n continue;\n }\n\n // Start the path at the first point\n this.initialsDrawingContext.beginPath();\n this.initialsDrawingContext.moveTo(stroke[0].x, stroke[0].y);\n\n // Draw smooth curves through all points in the stroke\n for (let i = 1; i < stroke.length; i++) {\n const currentPoint = stroke[i];\n const previousPoint = stroke[i - 1];\n\n // Use quadratic curves for smooth lines\n const midPoint = {\n x: (previousPoint.x + currentPoint.x) / 2,\n y: (previousPoint.y + currentPoint.y) / 2,\n };\n\n this.initialsDrawingContext.quadraticCurveTo(previousPoint.x, previousPoint.y, midPoint.x, midPoint.y);\n }\n\n // Draw to the last point\n if (stroke.length > 1) {\n const lastPoint = stroke[stroke.length - 1];\n this.initialsDrawingContext.lineTo(lastPoint.x, lastPoint.y);\n }\n\n this.initialsDrawingContext.stroke();\n }\n }\n\n handleNameChange(e: any) {\n this.enteredName = e.target.value;\n this.computeEnteredInitials(e.target.value);\n }\n\n computeEnteredInitials(name: string) {\n const nameComponents = name\n .trim()\n .split(' ')\n .filter(part => part.length > 0);\n\n this.enteredInitials = nameComponents.length > 1 ? nameComponents.map(word => word.charAt(0).toUpperCase()).join('') : nameComponents[0].toUpperCase();\n }\n\n handleCancel(e: any) {\n e.stopPropagation();\n e.preventDefault();\n this.exit.emit();\n }\n\n handleAdopt(e: any) {\n e.stopPropagation();\n e.preventDefault();\n const signature = this.signatureElement.toDataURL('image/png');\n const initials = this.initialsElement.toDataURL('image/png');\n this.next.emit({signature, initials, mode: this.mode});\n }\n\n isAdoptButtonDisabled(): boolean {\n switch (this.mode) {\n case 'type':\n // Disable if no name has been entered\n return !this.enteredName || this.enteredName.trim().length === 0;\n case 'draw':\n // Disable if nothing has been drawn or restored from a previous adoption\n return !this.hasDrawnSignature || !this.hasDrawnInitials;\n default:\n return true;\n }\n }\n\n setupSignatureCanvas() {\n if (!this.signatureElement) {\n return;\n }\n\n // Set up drawing context when in draw mode\n if (this.mode === 'draw') {\n // Always get fresh context from the current canvas element\n const sigContext = this.signatureElement.getContext('2d');\n\n // Only initialize if we don't have a context or it's different\n if (sigContext && sigContext !== this.sigDrawingContext) {\n this.sigDrawingContext = sigContext;\n\n // Configure drawing style for smooth signatures\n this.sigDrawingContext.strokeStyle = '#000000';\n this.sigDrawingContext.lineWidth = 2;\n this.sigDrawingContext.lineCap = 'round';\n this.sigDrawingContext.lineJoin = 'round';\n\n // Clear canvas only if there are no existing strokes or restored previews\n if (this.allSigStrokes.length === 0 && !this.hasDrawnSignature) {\n this.sigDrawingContext.clearRect(0, 0, this.signatureElement.width, this.signatureElement.height);\n }\n }\n }\n\n // Reset drawing context when switching away from draw mode\n // NOTE: We don't clear allStrokes here so drawing persists when returning to draw mode\n if (this.mode !== 'draw' && this.sigDrawingContext) {\n this.sigDrawingContext = null;\n this.currentSigStroke = [];\n this.lastSigPoint = null;\n }\n }\n\n setupInitialsCanvas() {\n if (!this.initialsElement) {\n return;\n }\n\n // Set up drawing context when in draw mode\n if (this.mode === 'draw') {\n // Always get fresh context from the current canvas element\n const initialsContext = this.initialsElement.getContext('2d');\n\n // Only initialize if we don't have a context or it's different\n if (initialsContext && initialsContext !== this.initialsDrawingContext) {\n this.initialsDrawingContext = initialsContext;\n\n // Configure drawing style for smooth signatures\n this.initialsDrawingContext.strokeStyle = '#000000';\n this.initialsDrawingContext.lineWidth = 2;\n this.initialsDrawingContext.lineCap = 'round';\n this.initialsDrawingContext.lineJoin = 'round';\n\n // Clear canvas only if there are no existing strokes or restored previews\n if (this.allInitialsStrokes.length === 0 && !this.hasDrawnInitials) {\n this.initialsDrawingContext.clearRect(0, 0, this.initialsElement.width, this.initialsElement.height);\n }\n }\n }\n\n // Reset drawing context when switching away from draw mode\n // NOTE: We don't clear allStrokes here so drawing persists when returning to draw mode\n if (this.mode !== 'draw' && this.initialsDrawingContext) {\n this.initialsDrawingContext = null;\n this.currentInitialsStroke = [];\n this.lastInitialsPoint = null;\n }\n }\n\n clearSignatureCanvas() {\n if (!this.signatureElement || !this.sigDrawingContext) {\n return;\n }\n\n this.sigDrawingContext.clearRect(0, 0, this.signatureElement.width, this.signatureElement.height);\n this.currentSigStroke = [];\n this.allSigStrokes = [];\n this.lastSigPoint = null;\n this.hasDrawnSignature = false;\n }\n\n clearInitialsCanvas() {\n if (!this.initialsElement || !this.initialsDrawingContext) {\n return;\n }\n\n this.initialsDrawingContext.clearRect(0, 0, this.initialsElement.width, this.initialsElement.height);\n this.currentInitialsStroke = [];\n this.allInitialsStrokes = [];\n this.lastInitialsPoint = null;\n this.hasDrawnInitials = false;\n }\n\n handleClearDrawing(e: any, type: 'signature' | 'initials' | 'all' = 'all') {\n e.stopPropagation();\n e.preventDefault();\n if (type === 'all' || type === 'signature') this.clearSignatureCanvas();\n if (type === 'all' || type === 'initials') this.clearInitialsCanvas();\n }\n\n getSigCanvasCoordinates(e: PointerEvent): {x: number; y: number} {\n if (!this.signatureElement) {\n return {x: 0, y: 0};\n }\n\n const rect = this.signatureElement.getBoundingClientRect();\n\n // Calculate the scale factor between canvas size and display size\n const scaleX = this.signatureElement.width / rect.width;\n const scaleY = this.signatureElement.height / rect.height;\n\n return {\n x: (e.clientX - rect.left) * scaleX,\n y: (e.clientY - rect.top) * scaleY,\n };\n }\n\n getInitialsCanvasCoordinates(e: PointerEvent): {x: number; y: number} {\n if (!this.initialsElement) {\n return {x: 0, y: 0};\n }\n\n const rect = this.initialsElement.getBoundingClientRect();\n\n // Calculate the scale factor between canvas size and display size\n const scaleX = this.initialsElement.width / rect.width;\n const scaleY = this.initialsElement.height / rect.height;\n\n return {\n x: (e.clientX - rect.left) * scaleX,\n y: (e.clientY - rect.top) * scaleY,\n };\n }\n\n handleSigPointerDown = (e: PointerEvent) => {\n e.preventDefault();\n\n if (!this.signatureElement || !this.sigDrawingContext) {\n return;\n }\n\n this.isDrawing = true;\n this.hasDrawnSignature = true;\n\n const point = this.getSigCanvasCoordinates(e);\n this.currentSigStroke = [point];\n this.lastSigPoint = point;\n\n // Start a new path\n this.sigDrawingContext.beginPath();\n this.sigDrawingContext.moveTo(point.x, point.y);\n\n // Capture pointer to ensure we get all events even if pointer leaves canvas\n this.signatureElement.setPointerCapture(e.pointerId);\n };\n\n handleSigPointerMove = (e: PointerEvent) => {\n e.preventDefault();\n\n if (!this.isDrawing || !this.sigDrawingContext || !this.lastSigPoint) {\n return;\n }\n\n const point = this.getSigCanvasCoordinates(e);\n this.currentSigStroke.push(point);\n\n // Use quadratic curves for smooth drawing\n // The control point is the last point, and we draw to the midpoint\n const midPoint = {\n x: (this.lastSigPoint.x + point.x) / 2,\n y: (this.lastSigPoint.y + point.y) / 2,\n };\n\n this.sigDrawingContext.quadraticCurveTo(this.lastSigPoint.x, this.lastSigPoint.y, midPoint.x, midPoint.y);\n this.sigDrawingContext.stroke();\n\n this.lastSigPoint = point;\n };\n\n handleSigPointerUp = (e: PointerEvent) => {\n e.preventDefault();\n\n if (!this.isDrawing || !this.sigDrawingContext) {\n return;\n }\n\n // Complete the stroke\n if (this.lastSigPoint && this.currentSigStroke.length > 0) {\n this.sigDrawingContext.lineTo(this.lastSigPoint.x, this.lastSigPoint.y);\n this.sigDrawingContext.stroke();\n }\n\n // Save the completed stroke\n if (this.currentSigStroke.length > 0) {\n this.allSigStrokes.push([...this.currentSigStroke]);\n }\n\n this.isDrawing = false;\n this.currentSigStroke = [];\n this.lastSigPoint = null;\n\n // Release pointer capture\n if (this.signatureElement) {\n this.signatureElement.releasePointerCapture(e.pointerId);\n }\n };\n\n handleSigPointerCancel = (e: PointerEvent) => {\n // Handle cases where drawing is interrupted (e.g., phone call, notification)\n this.isDrawing = false;\n this.currentSigStroke = [];\n this.lastSigPoint = null;\n\n if (this.signatureElement) {\n this.signatureElement.releasePointerCapture(e.pointerId);\n }\n };\n\n handleInitialsPointerDown = (e: PointerEvent) => {\n e.preventDefault();\n\n if (!this.initialsElement || !this.initialsDrawingContext) {\n return;\n }\n\n this.isDrawing = true;\n this.hasDrawnInitials = true;\n\n const point = this.getInitialsCanvasCoordinates(e);\n this.currentInitialsStroke = [point];\n this.lastInitialsPoint = point;\n\n // Start a new path\n this.initialsDrawingContext.beginPath();\n this.initialsDrawingContext.moveTo(point.x, point.y);\n\n // Capture pointer to ensure we get all events even if pointer leaves canvas\n this.initialsElement.setPointerCapture(e.pointerId);\n };\n\n handleInitialsPointerMove = (e: PointerEvent) => {\n e.preventDefault();\n\n if (!this.isDrawing || !this.initialsDrawingContext || !this.lastInitialsPoint) {\n return;\n }\n\n const point = this.getInitialsCanvasCoordinates(e);\n this.currentInitialsStroke.push(point);\n\n // Use quadratic curves for smooth drawing\n // The control point is the last point, and we draw to the midpoint\n const midPoint = {\n x: (this.lastInitialsPoint.x + point.x) / 2,\n y: (this.lastInitialsPoint.y + point.y) / 2,\n };\n\n this.initialsDrawingContext.quadraticCurveTo(this.lastInitialsPoint.x, this.lastInitialsPoint.y, midPoint.x, midPoint.y);\n this.initialsDrawingContext.stroke();\n\n this.lastInitialsPoint = point;\n };\n\n handleInitialsPointerUp = (e: PointerEvent) => {\n e.preventDefault();\n\n if (!this.isDrawing || !this.initialsDrawingContext) {\n return;\n }\n\n // Complete the stroke\n if (this.lastInitialsPoint && this.currentInitialsStroke.length > 0) {\n this.initialsDrawingContext.lineTo(this.lastInitialsPoint.x, this.lastInitialsPoint.y);\n this.initialsDrawingContext.stroke();\n }\n\n // Save the completed stroke\n if (this.currentInitialsStroke.length > 0) {\n this.allInitialsStrokes.push([...this.currentInitialsStroke]);\n }\n\n this.isDrawing = false;\n this.currentInitialsStroke = [];\n this.lastInitialsPoint = null;\n\n // Release pointer capture\n if (this.initialsElement) {\n this.initialsElement.releasePointerCapture(e.pointerId);\n }\n };\n\n handleInitialsPointerCancel = (e: PointerEvent) => {\n // Handle cases where drawing is interrupted (e.g., phone call, notification)\n this.isDrawing = false;\n this.currentInitialsStroke = [];\n this.lastInitialsPoint = null;\n\n if (this.initialsElement) {\n this.initialsElement.releasePointerCapture(e.pointerId);\n }\n };\n\n render() {\n return (\n <verdocs-dialog persistent onExit={() => this.exit.emit()}>\n <div slot=\"heading\" class=\"heading\">\n Adopt Your Signature\n </div>\n\n <div slot=\"content\" class=\"content\">\n <div style={{fontWeight: '300', color: '#242424', fontSize: '13px'}}>Confirm your name, initials, and signature.</div>\n\n <div class={{type: true, active: this.mode === 'type'}}>\n <verdocs-text-input\n label=\"Full Name\"\n value={this.enteredName}\n disabled={this.nameLocked}\n onInput={e => this.handleNameChange(e)}\n onClick={e => e.stopPropagation()}\n />\n {this.nameLocked && <div class=\"name-locked-hint\">Your name has been set by the sender and cannot be changed.</div>}\n </div>\n\n <div style={{fontWeight: '400', color: '#242424', fontSize: '13px'}}>Select a signature style</div>\n\n <div style={{display: 'flex', flexDirection: 'row', gap: '10px', marginBottom: '6px', alignItems: 'center', fontSize: '13px'}}>\n <verdocs-radio-button checked={this.mode === 'type'} value=\"type\" name=\"mode\" onClick={() => this.setMode('type')} />\n <label>Typed with a keyboard</label>\n </div>\n <div style={{display: 'flex', flexDirection: 'row', gap: '10px', marginBottom: '6px', alignItems: 'center', fontSize: '13px'}}>\n <verdocs-radio-button checked={this.mode === 'draw'} value=\"draw\" name=\"mode\" onClick={() => this.setMode('draw')} />\n <label>Drawn with touch, mouse, or stylus</label>\n </div>\n\n <div class=\"preview-header\">\n <div style={{fontSize: '13px', fontWeight: '400'}}>Signature Preview</div>\n {this.mode === 'draw' && (\n <button class=\"clear-button-text\" onClick={e => this.handleClearDrawing(e, 'signature')} disabled={!this.hasDrawnSignature}>\n Clear\n </button>\n )}\n </div>\n <div class=\"canvas-container signature-container\">\n <div class=\"signing-indicator\">\n <div class=\"x-icon\" innerHTML={SignatureXIcon}></div>\n <div class=\"signing-line\"></div>\n </div>\n <canvas\n ref={el => (this.signatureElement = el as HTMLCanvasElement)}\n // width=\"300\"\n height=\"79\"\n class=\"signature-canvas\"\n onPointerDown={this.handleSigPointerDown}\n onPointerMove={this.handleSigPointerMove}\n onPointerUp={this.handleSigPointerUp}\n onPointerCancel={this.handleSigPointerCancel}\n style={{touchAction: 'none', cursor: 'crosshair'}}\n />\n </div>\n\n <div class=\"preview-header\">\n <div style={{fontSize: '13px', fontWeight: '400'}}>Initials Preview</div>\n {this.mode === 'draw' && (\n <button class=\"clear-button-text\" onClick={e => this.handleClearDrawing(e, 'initials')} disabled={!this.hasDrawnInitials}>\n Clear\n </button>\n )}\n </div>\n <div class=\"canvas-container initials-container\">\n <div class=\"signing-indicator\">\n <div class=\"x-icon\" innerHTML={SignatureXIcon}></div>\n <div class=\"signing-line\"></div>\n </div>\n <canvas\n ref={el => (this.initialsElement = el as HTMLCanvasElement)}\n // width=\"300\"\n height=\"79\"\n class=\"initials-canvas\"\n onPointerDown={this.handleInitialsPointerDown}\n onPointerMove={this.handleInitialsPointerMove}\n onPointerUp={this.handleInitialsPointerUp}\n onPointerCancel={this.handleInitialsPointerCancel}\n style={{touchAction: 'none', cursor: 'crosshair'}}\n />\n </div>\n\n <div class=\"disclaimer\">\n By clicking «Adopt Signature», I agree that the signature and initials above will be the electronic representation of my signature and initials for all purposes when I\n use them to sign documents. Applying them to a document is legally equivalent to signing with a pen on paper.\n </div>\n </div>\n\n <div class=\"footer\" slot=\"footer\">\n <div class=\"buttons\">\n <button class=\"cancel\" onClick={e => this.handleCancel(e)}>\n Cancel\n </button>\n <button class=\"proceed\" onClick={e => this.handleAdopt(e)} disabled={this.isAdoptButtonDisabled()}>\n Adopt & Sign\n </button>\n </div>\n </div>\n </verdocs-dialog>\n );\n }\n}\n"],"version":3}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { V as VerdocsAdoptSignatureDialog$1, d as defineCustomElement$1 } from './p-
|
|
1
|
+
import { V as VerdocsAdoptSignatureDialog$1, d as defineCustomElement$1 } from './p-BUE7R0tf.js';
|
|
2
2
|
|
|
3
3
|
const VerdocsAdoptSignatureDialog = VerdocsAdoptSignatureDialog$1;
|
|
4
4
|
const defineCustomElement = defineCustomElement$1;
|
|
@@ -6,7 +6,7 @@ import { D as DocumentPageIcon, C as CheckCircleIcon } from './p-BDv5kBUR.js';
|
|
|
6
6
|
import { V as VerdocsToast } from './p-D97GxsI-.js';
|
|
7
7
|
import { S as SDKError } from './p-C1sRVZWv.js';
|
|
8
8
|
import { S as Store } from './p-C7hFgM52.js';
|
|
9
|
-
import { d as defineCustomElement$q } from './p-
|
|
9
|
+
import { d as defineCustomElement$q } from './p-BUE7R0tf.js';
|
|
10
10
|
import { d as defineCustomElement$p } from './p-C_yyK5xE.js';
|
|
11
11
|
import { d as defineCustomElement$o } from './p-BvV9rOTP.js';
|
|
12
12
|
import { d as defineCustomElement$n } from './p-BzspxU-o.js';
|
|
@@ -102,6 +102,9 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class VerdocsSign extends
|
|
|
102
102
|
this.agreed = false;
|
|
103
103
|
this.signatureId = null;
|
|
104
104
|
this.initialId = null;
|
|
105
|
+
this.signatureAdoptMode = 'type';
|
|
106
|
+
this.adoptedSignaturePreview = null;
|
|
107
|
+
this.adoptedInitialsPreview = null;
|
|
105
108
|
this.skippedFields = [];
|
|
106
109
|
this.documentsSingularPlural = 'document';
|
|
107
110
|
this.authStep = null;
|
|
@@ -253,6 +256,9 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class VerdocsSign extends
|
|
|
253
256
|
// to adopt at least once per session so the signing flow is explicit after removing the up-front progress dialog.
|
|
254
257
|
this.signatureId = null;
|
|
255
258
|
this.initialId = null;
|
|
259
|
+
this.signatureAdoptMode = 'type';
|
|
260
|
+
this.adoptedSignaturePreview = null;
|
|
261
|
+
this.adoptedInitialsPreview = null;
|
|
256
262
|
this.submitted = recipient.status === 'submitted';
|
|
257
263
|
this.loading = false;
|
|
258
264
|
this.isDone = this.submitted;
|
|
@@ -588,6 +594,9 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class VerdocsSign extends
|
|
|
588
594
|
if (e.detail === null) {
|
|
589
595
|
console.log('[SIGN] Clearing signature');
|
|
590
596
|
this.signatureId = null;
|
|
597
|
+
this.adoptedSignaturePreview = null;
|
|
598
|
+
this.adoptedInitialsPreview = null;
|
|
599
|
+
this.signatureAdoptMode = 'type';
|
|
591
600
|
const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, null, false);
|
|
592
601
|
this.updateRecipientFieldValue(field.name, updateResult);
|
|
593
602
|
if (field.required)
|
|
@@ -1050,7 +1059,7 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class VerdocsSign extends
|
|
|
1050
1059
|
});
|
|
1051
1060
|
}
|
|
1052
1061
|
render() {
|
|
1053
|
-
var _a;
|
|
1062
|
+
var _a, _b, _c;
|
|
1054
1063
|
if (this.showLoadError) {
|
|
1055
1064
|
return (h(Host, null, h("verdocs-ok-dialog", { heading: "Unable to Start Signing", message: `Sorry, your invite code is invalid or has expired. Please check your email for an updated invitation, or contact the sender.`, buttonLabel: "OK", onNext: () => {
|
|
1056
1065
|
window.location.reload();
|
|
@@ -1200,9 +1209,12 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class VerdocsSign extends
|
|
|
1200
1209
|
} })), this.showDone && (h("verdocs-ok-dialog", { heading: "You're Done!", message: `You can access the ${this.documentsSingularPlural} at any time by clicking on the link from the invitation email.<br /><br />After all recipients have completed their actions, you will receive an email with the completed document and certificate attached.`, hideCloseButton: true, onNext: () => {
|
|
1201
1210
|
this.showDone = false;
|
|
1202
1211
|
this.isDone = true;
|
|
1203
|
-
} })), this.adoptingSignature && (h("verdocs-adopt-signature-dialog", { name: formatFullName(this.recipient), nameLocked: !!((_a = this.recipient) === null || _a === void 0 ? void 0 : _a.name_locked), onNext: async (e) => {
|
|
1212
|
+
} })), this.adoptingSignature && (h("verdocs-adopt-signature-dialog", { name: formatFullName(this.recipient), nameLocked: !!((_a = this.recipient) === null || _a === void 0 ? void 0 : _a.name_locked), initialMode: this.adoptedSignaturePreview ? this.signatureAdoptMode : undefined, initialSignature: (_b = this.adoptedSignaturePreview) !== null && _b !== void 0 ? _b : undefined, initialInitials: (_c = this.adoptedInitialsPreview) !== null && _c !== void 0 ? _c : undefined, onNext: async (e) => {
|
|
1204
1213
|
console.log('[SIGN] Adopting signature/initials block', e.detail);
|
|
1205
1214
|
this.showSpinner = true;
|
|
1215
|
+
this.signatureAdoptMode = e.detail.mode;
|
|
1216
|
+
this.adoptedSignaturePreview = e.detail.signature;
|
|
1217
|
+
this.adoptedInitialsPreview = e.detail.initials;
|
|
1206
1218
|
// These arrive as base-64 encoded data URLs
|
|
1207
1219
|
const signatureBlob = await (await fetch(e.detail.signature)).blob();
|
|
1208
1220
|
const initialsBlob = await (await fetch(e.detail.initials)).blob();
|
|
@@ -1325,6 +1337,9 @@ const VerdocsSign$1 = /*@__PURE__*/ proxyCustomElement(class VerdocsSign extends
|
|
|
1325
1337
|
"agreed": [32],
|
|
1326
1338
|
"signatureId": [32],
|
|
1327
1339
|
"initialId": [32],
|
|
1340
|
+
"signatureAdoptMode": [32],
|
|
1341
|
+
"adoptedSignaturePreview": [32],
|
|
1342
|
+
"adoptedInitialsPreview": [32],
|
|
1328
1343
|
"skippedFields": [32],
|
|
1329
1344
|
"documentsSingularPlural": [32],
|
|
1330
1345
|
"authStep": [32],
|