@hubsync/esign-web-sdk 6.5.1 → 6.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"verdocs-sign.entry.esm.js","sources":["src/components/embeds/verdocs-sign/verdocs-sign.scss?tag=verdocs-sign","src/components/embeds/verdocs-sign/verdocs-sign.tsx"],"sourcesContent":["@import '../../../theme.scss';\n\nverdocs-sign {\n display: flex;\n overflow: hidden;\n min-height: 700px;\n position: relative;\n flex-direction: column;\n box-sizing: border-box;\n background-color: #f5f5f5;\n font-family: $verdocs-primary-font;\n\n verdocs-button > button.standard {\n background: #2a63f6;\n }\n\n div {\n display: block;\n box-sizing: border-box;\n }\n\n input {\n vertical-align: top;\n }\n\n > .document {\n flex: 1;\n width: 100%;\n height: 100%;\n align-self: center;\n display: flex;\n padding: 15px;\n // We add extra padding here so the flags (which are absolutely positioned \"outside\" the page)\n // are still visible within the scrollable area.\n padding-right: 140px;\n row-gap: 15px;\n max-width: 1200px;\n min-height: 200px;\n position: relative;\n overflow-y: scroll;\n align-items: center;\n box-sizing: border-box;\n flex-direction: column;\n\n .inner {\n width: 100%;\n max-width: 1028px;\n }\n\n .document-separator {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 20px;\n width: 100%;\n max-width: 1028px; // Match standard page width + margins\n box-sizing: border-box;\n background-color: $verdocs-grey-1;\n color: white;\n border-radius: 6px;\n font-size: 16px;\n font-weight: 500;\n margin-top: 20px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n\n svg {\n flex-shrink: 0;\n }\n\n // Remove margin for the very first one if desired, but 20px spacing is probably good even for the first one\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n // Formerly inline styles, moved here for responsive control\n .signed-document-container {\n width: 64%;\n margin-left: 260px;\n transition: all 0.3s ease;\n\n &.zoom-normal {\n width: 64%;\n margin-left: 260px;\n }\n\n &.zoom-zoom1 {\n width: 80%;\n margin-left: 200px;\n }\n\n &.zoom-zoom2 {\n width: 100%;\n margin-left: 150px;\n\n .verdocs-flag-instance {\n opacity: 0;\n pointer-events: none;\n }\n }\n }\n\n @media (max-width: 768px) {\n verdocs-sign-footer {\n padding: 0 10px;\n\n .buttons {\n gap: 8px;\n\n button {\n font-size: 10px;\n }\n }\n }\n\n .signed-document-container {\n width: 100%;\n margin-left: 0;\n\n // Ensure specific zoom levels don't override the mobile layout\n &.zoom-normal,\n &.zoom-zoom1,\n &.zoom-zoom2 {\n width: 100%;\n margin-left: 0;\n }\n }\n\n > .document {\n padding-right: 15px;\n }\n\n // Hide flags on mobile\n .verdocs-flag-instance {\n display: none !important;\n }\n\n // Hide toolbars on mobile\n .controls-toolbar {\n .center-controls {\n display: none;\n }\n\n .right-controls {\n .mobile-next-button {\n display: block;\n margin-right: 10px;\n }\n\n .minus,\n .plus {\n display: none;\n }\n }\n }\n }\n\n .cover {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n z-index: 5000;\n position: absolute;\n padding-top: 100px;\n align-items: center;\n flex-direction: column;\n background: rgba(0, 0, 0, 0.5);\n }\n\n verdocs-ok-dialog .background-overlay {\n align-items: flex-start;\n padding-top: 100px;\n }\n\n .loading-indicator {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n z-index: 10000;\n position: fixed;\n background-color: rgba(0, 0, 0, 0.7);\n }\n\n .fatal-error {\n position: absolute;\n z-index: 100;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: #4a4a4a;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .placeholder {\n position: absolute;\n opacity: 0.1;\n z-index: -1;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 612px;\n height: 792px;\n box-shadow: 0 0 10px 5px #0000000f;\n margin-top: 15px;\n }\n\n .message {\n max-width: 360px;\n width: 50%;\n font-size: 16px;\n background: white;\n box-shadow: 3px 3px 9px -1px #0000003f;\n }\n\n .header {\n color: white;\n font-size: 18px;\n font-weight: 500;\n padding: 5px 10px;\n margin: 0 0 10px 0;\n background: $verdocs-purple-shade;\n }\n\n p {\n margin: 1rem;\n font-size: 14px;\n font-weight: 400;\n padding: 0 10px;\n }\n }\n}\n\n@media print {\n verdocs-sign .header,\n .controls-toolbar,\n .verdocs-flag-instance,\n verdocs-signing-progress {\n display: none !important;\n }\n\n verdocs-sign {\n min-height: auto;\n background-color: white;\n\n > .document {\n overflow: visible;\n height: auto;\n display: block; // Flex can cause print issues\n padding: 0;\n margin: 0;\n\n .document-separator {\n display: none;\n }\n }\n\n .signed-document-container {\n width: 100%;\n margin: 0;\n }\n }\n}\n\n#verdocs-sign-header {\n color: #fff;\n width: 100%;\n display: flex;\n z-index: 1000;\n flex: 0 0 46px;\n font-size: 12px;\n column-gap: 15px;\n align-items: center;\n flex-direction: row;\n transition: all 0.25s;\n background-color: $medium-bg;\n box-shadow:\n 0 4px 4px 0 rgb(0 0 0 / 24%),\n 0 0 4px 0 rgb(0 0 0 / 12%);\n\n .inner {\n width: 100%;\n display: flex;\n margin: 0 auto;\n padding: 0 12px;\n max-width: 1200px;\n align-items: center;\n flex-direction: row;\n }\n\n .logo {\n width: 80px;\n display: none;\n margin: -6px 0 0 0;\n }\n\n .title {\n font-size: 18px;\n font-weight: 500;\n overflow: hidden;\n white-space: nowrap;\n padding: 0 10px 0 0;\n text-overflow: ellipsis;\n }\n}\n\n.spinner-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n background: #0000007f;\n justify-content: center;\n}\n\n.controls-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 54px;\n // 24px by design but the design had the right-most icon flush against the edge.\n // Since we have extra padding on the icons to make them more clickable, we need\n // to reduce the right padding here.\n padding: 0 12px 0 24px;\n background-color: #ffffff;\n border-bottom: 1px solid #e0e0e0;\n box-shadow: none;\n font-family: 'Inter', sans-serif;\n color: #424242;\n z-index: 1000;\n\n .left-controls {\n flex: 1;\n display: flex;\n align-items: center;\n\n .title {\n font-weight: 500;\n font-size: 16px;\n color: #242424;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n .center-controls {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-size: 14px;\n\n .label {\n color: #000000;\n font-weight: 300;\n }\n\n .select-wrapper {\n // Wrapper styles from before were mainly for the native select arrow logic.\n // With verdocs-select-input, we might not need as much here, but let's keep it clean.\n display: flex;\n align-items: center;\n\n verdocs-select-input {\n margin: 0;\n\n // Hide the label block inside the component\n .input-label {\n display: none;\n }\n\n .input-element {\n background: transparent;\n border: 1px solid #e0e0e0;\n height: 32px; // Match button height\n padding: 2px 8px;\n min-width: 60px;\n text-align: center;\n font-family: inherit;\n color: #424242;\n\n &:focus {\n border-color: #2a63f6;\n }\n }\n }\n }\n\n .count {\n color: #000000;\n font-weight: 300;\n }\n }\n\n .right-controls {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n // NOTE: This is the expected gap, but we built it into additional padding in the icons\n // to make them more clickable.\n // gap: 12px;\n\n .mobile-next-button {\n display: none;\n }\n\n .icon-button {\n width: 32px;\n height: 32px;\n display: flex;\n color: #424242;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: #f5f5f5;\n }\n\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n\n svg {\n display: block;\n width: 20px;\n height: 20px;\n }\n }\n }\n}\n","import { Element, Event, EventEmitter, Host, Fragment, Component, Prop, State, h } from '@stencil/core';\nimport { uploadEnvelopeFieldAttachment, VerdocsEndpoint, TRecipientAuthMethod, getEnvelopeDocumentDownloadLink, getEnvelopesZip } from '@verdocs/js-sdk';\nimport { askQuestion, DEFAULT_DISCLOSURES, integerSequence, isFieldFilled, isFieldValid } from '@verdocs/js-sdk';\nimport { verifySigner, IEnvelope, IEnvelopeField, IRecipient, TAuthenticateRecipientRequest } from '@verdocs/js-sdk';\nimport { fullNameToInitials, startSigningSession, deleteEnvelopeFieldAttachment, formatFullName } from '@verdocs/js-sdk';\nimport { updateEnvelopeField, sortFields, IKBAQuestion, ISignerTokenResponse, delegateRecipient } from '@verdocs/js-sdk';\nimport { createInitials, createSignature, envelopeRecipientAgree, envelopeRecipientDecline, envelopeRecipientSubmit } from '@verdocs/js-sdk';\nimport { getFieldId, renderDocumentField, renderDocumentFlag, updateDocumentFieldValue, defaultHeight } from '../../../utils/utils';\nimport { DocumentPageIcon } from '../../../utils/Icons';\nimport { IDocumentPageInfo } from '../../../utils/Types';\nimport { VerdocsToast } from '../../../utils/Toast';\nimport { SDKError } from '../../../utils/errors';\nimport { Store } from '../../../utils/Datastore';\n\nconst ToolbarMinusIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11 8C11.2761 8 11.5 8.22386 11.5 8.5C11.5 8.77614 11.2761 9 11 9H6C5.72386 9 5.5 8.77614 5.5 8.5C5.5 8.22386 5.72386 8 6 8H11ZM14 8.5C14 5.46243 11.5376 3 8.5 3C5.46243 3 3 5.46243 3 8.5C3 11.5376 5.46243 14 8.5 14C9.83879 14 11.0659 13.5217 12.0196 12.7266L16.1464 16.8536L16.2157 16.9114C16.4106 17.0464 16.68 17.0271 16.8536 16.8536C17.0488 16.6583 17.0488 16.3417 16.8536 16.1464L12.7266 12.0196C13.5217 11.0659 14 9.83879 14 8.5ZM4 8.5C4 6.01472 6.01472 4 8.5 4C10.9853 4 13 6.01472 13 8.5C13 10.9853 10.9853 13 8.5 13C6.01472 13 4 10.9853 4 8.5Z\" fill=\"#424242\" /></svg>`;\nconst ToolbarPlusIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.5 8.5C11.5 8.22386 11.2761 8 11 8H9V6C9 5.72386 8.77614 5.5 8.5 5.5C8.22386 5.5 8 5.72386 8 6V8H6C5.72386 8 5.5 8.22386 5.5 8.5C5.5 8.77614 5.72386 9 6 9H8V11C8 11.2761 8.22386 11.5 8.5 11.5C8.77614 11.5 9 11.2761 9 11V9H11C11.2761 9 11.5 8.77614 11.5 8.5ZM8.5 3C11.5376 3 14 5.46243 14 8.5C14 9.83879 13.5217 11.0659 12.7266 12.0196L16.8536 16.1464C17.0488 16.3417 17.0488 16.6583 16.8536 16.8536C16.68 17.0271 16.4106 17.0464 16.2157 16.9114L16.1464 16.8536L12.0196 12.7266C11.0659 13.5217 9.83879 14 8.5 14C5.46243 14 3 11.5376 3 8.5C3 5.46243 5.46243 3 8.5 3ZM8.5 4C6.01472 4 4 6.01472 4 8.5C4 10.9853 6.01472 13 8.5 13C10.9853 13 13 10.9853 13 8.5C13 6.01472 10.9853 4 8.5 4Z\" fill=\"#424242\" /></svg>`;\nconst ToolbarDownloadIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.5 16.9988C15.7761 16.9988 16 17.2226 16 17.4988C16 17.7442 15.8231 17.9484 15.5899 17.9907L15.5 17.9988H4.5C4.22386 17.9988 4 17.7749 4 17.4988C4 17.2533 4.17688 17.0492 4.41012 17.0068L4.5 16.9988H15.5ZM10.0001 2.00098C10.2456 2.00098 10.4497 2.17798 10.492 2.41124L10.5 2.50112L10.496 14.295L14.1414 10.6466C14.3148 10.4729 14.5842 10.4534 14.7792 10.5882L14.8485 10.646C15.0222 10.8194 15.0418 11.0888 14.907 11.2838L14.8492 11.3531L10.3574 15.8531C10.285 15.9257 10.1957 15.9714 10.1021 15.9901L9.99608 15.9999C9.83511 15.9999 9.69192 15.9237 9.60051 15.8056L5.14386 11.3537C4.94846 11.1586 4.94823 10.842 5.14336 10.6466C5.3168 10.4729 5.58621 10.4534 5.78117 10.5883L5.85046 10.6461L9.496 14.287L9.5 2.50083C9.50008 2.22469 9.724 2.00098 10.0001 2.00098Z\" fill=\"#424242\"/></svg>`;\nconst ToolbarPrintIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5 4.5C5 3.67157 5.67157 3 6.5 3H13.5C14.3284 3 15 3.67157 15 4.5V5H15.5C16.8807 5 18 6.11929 18 7.5V12.5C18 13.3284 17.3284 14 16.5 14H15V15.5C15 16.3284 14.3284 17 13.5 17H6.5C5.67157 17 5 16.3284 5 15.5V14H3.5C2.67157 14 2 13.3284 2 12.5V7.5C2 6.11929 3.11929 5 4.5 5H5V4.5ZM6 5H14V4.5C14 4.22386 13.7761 4 13.5 4H6.5C6.22386 4 6 4.22386 6 4.5V5ZM5 13V11.5C5 10.6716 5.67157 10 6.5 10H13.5C14.3284 10 15 10.6716 15 11.5V13H16.5C16.7761 13 17 12.7761 17 12.5V7.5C17 6.67157 16.3284 6 15.5 6H4.5C3.67157 6 3 6.67157 3 7.5V12.5C3 12.7761 3.22386 13 3.5 13H5ZM6.5 11C6.22386 11 6 11.2239 6 11.5V15.5C6 15.7761 6.22386 16 6.5 16H13.5C13.7761 16 14 15.7761 14 15.5V11.5C14 11.2239 13.7761 11 13.5 11H6.5Z\" fill=\"#424242\"/></svg>`;\n\n/**\n * Helper to generate a human-readable label for a field.\n */\nconst getFieldLabel = (field: IEnvelopeField) => {\n if (!field) return '';\n const typeMap: Record<string, string> = {\n signature: 'Signature',\n initial: 'Initials',\n date: 'Date',\n textbox: 'Text Field',\n checkbox: 'Checkbox',\n radio: 'Radio Button',\n dropdown: 'Dropdown',\n attachment: 'Attachment',\n payment: 'Payment',\n };\n\n const typeName = typeMap[field.type] || 'Field';\n if (field.required) {\n return `Required ${typeName}*`;\n }\n return `Optional ${typeName}`;\n};\n\n/**\n * Display an envelope signing experience. This will display the envelope's attached\n * documents with signing fields overlaid on each page.\n *\n * The component will attempt to initiate a signing session and load the specified\n * envelope. If successful, the recipient's fields will be enabled and the user will\n * be able to sign the envelope's attached documents. If not, an `sdkError` will be\n * thrown and the component will be blank/empty. To provide the best user experience,\n * applications should capture and handle this error to provide the user with\n * instructions/options for next steps based on the application's design and workflow.\n *\n * Unlike other components, this will always create its own endpoint to manage the\n * session session. This endpoint will be included in event callbacks for the\n * convenience of host applications that may wish to make server calls using the\n * signer's credentials once signing is complete (e.g. to obtain copies of\n * the signed attachments.)\n *\n * ```ts\n * <verdocs-sign\n * envelopeId={ENVELOPE_ID}\n * roleId={ROLE_ID}\n * inviteCode={INVITE_CODE}\n * onEnvelopeUpdated={({ detail }) => console.log('Envelope updated state:', detail) }\n * onSdkError={({ detail }) => { console.log('SDK error', detail) }}\n * />\n * ```\n */\n@Component({\n tag: 'verdocs-sign',\n styleUrl: 'verdocs-sign.scss',\n shadow: false,\n})\nexport class VerdocsSign {\n @Element() el: HTMLElement;\n\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop({ mutable: true }) endpoint: VerdocsEndpoint = new VerdocsEndpoint({ sessionType: 'signing' });\n\n /**\n * The ID of the envelope to sign.\n */\n @Prop({ reflect: true }) envelopeId: string | null = null;\n\n /**\n * The ID of the role that will be signing e.g. 'Recipient 1'\n */\n @Prop({ reflect: true }) roleId: string | null = null;\n\n /**\n * The invite code for the signer.\n */\n @Prop({ reflect: true }) inviteCode: string | null = null;\n\n /**\n * If set, (recommended), the host application should create a <DIV> element with a unique ID. When this\n * component renders, the header will be removed from its default location and placed in the target element.\n * This allows the parent application to more easily control its placement and scroll effects (e.g. \"fixed\").\n *\n * The movement of the header to the target container is not dynamic - it is performed only on the initial\n * render. Host applications should not conditionally render this container. If the header's visibility must\n * be externally controlled, use CSS display options to hide/show it instead.\n */\n @Prop() headerTargetId: string | null = null;\n\n /**\n * The style of the toolbar to display.\n */\n @Prop() toolbarStyle: 'controls' | 'menu' = 'controls';\n\n /**\n * Event fired if an error occurs. The event details will contain information about the error. Most errors will\n * terminate the process, and the calling application should correct the condition and re-render the component.\n */\n @Event({ composed: true }) sdkError: EventEmitter<SDKError>;\n\n /**\n * Event fired when the envelope is loaded for the first time.\n */\n @Event({ composed: true }) envelopeLoaded: EventEmitter<{ endpoint: VerdocsEndpoint; envelope: IEnvelope }>;\n\n /**\n * Event fired when the envelope is updated in any way.\n */\n @Event({ composed: true }) envelopeUpdated: EventEmitter<{ endpoint: VerdocsEndpoint; envelope: IEnvelope; event: string }>;\n\n @State() recipient: IRecipient | null = null;\n @State() hasSignature = false;\n @State() nextButtonLabel = 'Start';\n @State() nextSubmits = false;\n @State() fatalErrorHeader = '';\n @State() fatalErrorMessage = '';\n @State() focusedField = '';\n @State() disclosures = DEFAULT_DISCLOSURES;\n @State() fieldUpdateCounter = 0;\n @State() submitting = false;\n @State() submitted = false;\n @State() isDone = false;\n @State() showDone = false;\n @State() adoptingSignature = false;\n @State() showLoadError = false;\n @State() finishLater = false;\n @State() showFinishLater = false;\n @State() agreed = false;\n @State() signatureId: string | null = null;\n @State() initialId: string | null = null;\n\n @State() documentsSingularPlural = 'document';\n @State() authStep: string | null = null;\n @State() authMethodStates: Partial<Record<TRecipientAuthMethod, string>> = {};\n @State() pageNumber = 1;\n @State() kbaQuestions: IKBAQuestion[] | null = null;\n @State() showSpinner = false;\n // @State() fieldUpdateCounter = 0;\n @State() declining = false;\n @State() delegating = false;\n @State() delegated = false;\n @State() kbaChoices = [];\n @State() showDownloadDialog = false;\n\n @State() loading = true;\n @State() envelope: IEnvelope | null = null;\n @State() zoomLevel: 'normal' | 'zoom1' | 'zoom2' = 'normal';\n\n private renderedPages: Record<string, IDocumentPageInfo> = {};\n private observer: IntersectionObserver;\n\n async componentDidLoad() {\n this.updateZoomFromWindow();\n window.addEventListener('resize', () => this.updateZoomFromWindow());\n if (!this.envelopeId) {\n this.sdkError?.emit(new SDKError('[SIGN] Missing required envelopId', 500, ''));\n return;\n }\n\n if (!this.roleId) {\n this.sdkError?.emit(new SDKError('[SIGN] Missing required roleId', 500, ''));\n return;\n }\n\n if (!this.inviteCode) {\n this.sdkError?.emit(new SDKError('[SIGN] Missing required inviteCode', 500, ''));\n return;\n }\n\n try {\n console.log(`[SIGN] Processing invite code for ${this.envelopeId} / ${this.roleId}`);\n\n // NOTE: We don't listen to the store here because we are often an independent\n // session and might have a different \"view\" of the envelope.\n const response = await startSigningSession(this.endpoint, this.envelopeId, this.roleId, this.inviteCode);\n this.processAuthResponse(response);\n\n const fillable = this.getSortedFillableFields();\n if (fillable.length > 0) {\n setTimeout(() => {\n this.focusedField = fillable[0].name;\n }, 500);\n }\n } catch (e) {\n console.log('[SIGN] Error with signing session', e);\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n this.showLoadError = true;\n }\n }\n\n componentDidRender() {\n const headerTarget = this.headerTargetId ? document.getElementById(this.headerTargetId) : null;\n const headerEl = document.getElementById('verdocs-sign-header');\n if (headerTarget && headerEl) {\n console.log('[SIGN] Moving header');\n headerEl.remove();\n headerTarget.append(headerEl);\n }\n\n this.setupIntersectionObserver();\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n window.removeEventListener('resize', () => this.updateZoomFromWindow());\n }\n\n updateZoomFromWindow() {\n const width = window.innerWidth;\n if (width < 768) {\n if (this.zoomLevel !== 'zoom2') this.zoomLevel = 'zoom2';\n } else if (width < 1024) {\n if (this.zoomLevel !== 'zoom1') this.zoomLevel = 'zoom1';\n } else {\n if (this.zoomLevel !== 'normal') this.zoomLevel = 'normal';\n }\n }\n\n setupIntersectionObserver() {\n // We only want to set this up once the elements exist\n const pages = this.el.querySelectorAll('verdocs-envelope-document-page');\n if (pages.length === 0) return;\n\n if (this.observer) {\n this.observer.disconnect();\n }\n\n const container = this.el.querySelector('.signed-document-container');\n const options = {\n root: container,\n rootMargin: '-40% 0px -40% 0px', // Helper to trigger when the middle 20% is visible\n threshold: 0,\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const pageId = entry.target.id; // page-1\n const pageNum = parseInt(pageId.replace('page-', ''), 10);\n if (!isNaN(pageNum) && this.pageNumber !== pageNum) {\n // console.log('[SIGN] Updated page number via scroll', pageNum);\n this.pageNumber = pageNum;\n }\n }\n });\n }, options);\n\n pages.forEach(page => this.observer.observe(page));\n }\n\n processAuthResponse(response: ISignerTokenResponse) {\n const { envelope, recipient } = response;\n\n // TODO: Temporary fix for multi-doc ordering until the server-side ordering is fixed\n envelope.documents?.sort((a, b) => (a.order !== b.order ? b.order - a.order : b.created_at.localeCompare(a.created_at)));\n\n const { auth_step } = recipient;\n this.recipient = recipient;\n this.envelope = envelope;\n this.disclosures = this.envelope?.organization?.disclaimer || DEFAULT_DISCLOSURES;\n this.authStep = auth_step;\n this.delegated = !!recipient.delegated_to;\n this.agreed = recipient.agreed;\n this.signatureId = response.signatures?.[0]?.id || null;\n this.initialId = response.initials?.[0]?.id || null;\n this.submitted = recipient.status === 'submitted';\n this.loading = false;\n this.isDone = this.submitted;\n this.showDone = this.submitted;\n Store.updateEnvelope(this.envelopeId, envelope);\n\n if (this.envelope.documents.length > 0) {\n this.documentsSingularPlural = 'document(s)';\n }\n\n this.authMethodStates = recipient.auth_method_states || ({} as Record<TRecipientAuthMethod, string>);\n this.kbaQuestions = recipient.kba_questions;\n if (Object.values(this.authMethodStates).includes('failed')) {\n this.fatalErrorHeader = 'Recipient Verification Failed';\n this.fatalErrorMessage = 'We were unable to verify your identity. The sender has been notified.';\n this.isDone = true;\n }\n\n // TODO: Envelope \"complete\" | \"declined\" | \"canceled\"\n // TODO: Recipient \"canceled\"\n\n if (this.envelope.status === 'canceled') {\n this.fatalErrorHeader = 'Unable to Start Signing Session';\n this.fatalErrorMessage = 'This envelope has been canceled. The sender has been notified.';\n } else if (recipient.status === 'declined') {\n this.fatalErrorHeader = 'Declined';\n this.fatalErrorMessage = 'You have declined to sign this request. The sender has been notified.';\n } else if (this.agreed) {\n this.nextButtonLabel = 'Next';\n }\n\n this.checkRecipientFields();\n this.envelopeLoaded?.emit({ endpoint: this.endpoint, envelope: this.envelope });\n }\n\n handleClickAgree() {\n this.submitting = true;\n console.log('[SIGN] Accepting disclosures', this.disclosures);\n envelopeRecipientAgree(this.endpoint, this.envelopeId, this.roleId, this.disclosures)\n .then(() => {\n this.nextButtonLabel = 'Next';\n this.recipient.agreed = true;\n this.submitting = false;\n this.agreed = true; // The server returns a recipient object but it's not \"deep\" so we track this locally\n this.envelopeUpdated?.emit({ endpoint: this.endpoint, envelope: this.envelope, event: 'agreed' });\n })\n .catch(e => {\n console.log('[SIGN] Unable to accept disclosures', e);\n VerdocsToast('Unable to accept disclosures, please try again later', { style: 'error' });\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n this.submitting = false;\n });\n }\n\n handlePageSelect(e: any) {\n const pageNumber = parseInt(e.target.value);\n if (!isNaN(pageNumber)) {\n this.pageNumber = pageNumber;\n // We manually scroll the container to the top of the page element.\n // This avoids issues where the page might be nested or scrollIntoView behaves unexpectedly.\n const container = this.el.querySelector('.signed-document-container');\n const pageEl = this.el.querySelector(`#page-${pageNumber}`) as HTMLElement;\n\n if (container && pageEl) {\n // 20px buffer for visual spacing\n const top = pageEl.offsetTop - 20;\n container.scrollTo({ top, behavior: 'smooth' });\n }\n }\n }\n\n async handleOptionSelected(e: any) {\n switch (e.detail.id) {\n case 'later':\n this.finishLater = true;\n this.showFinishLater = true;\n this.envelopeUpdated?.emit({ endpoint: this.endpoint, envelope: this.envelope, event: 'later' });\n break;\n\n case 'delegate':\n this.delegating = true;\n break;\n\n case 'decline':\n this.declining = true;\n break;\n\n case 'print':\n window.print();\n this.envelopeUpdated?.emit({ endpoint: this.endpoint, envelope: this.envelope, event: 'printed' });\n break;\n\n case 'download':\n this.showDownloadDialog = true;\n break;\n }\n }\n\n handleZoomIn() {\n if (this.zoomLevel === 'normal') {\n this.zoomLevel = 'zoom1';\n } else if (this.zoomLevel === 'zoom1') {\n this.zoomLevel = 'zoom2';\n }\n }\n\n handleZoomOut() {\n if (this.zoomLevel === 'zoom1') {\n this.zoomLevel = 'normal';\n } else if (this.zoomLevel === 'zoom2') {\n this.zoomLevel = 'zoom1';\n }\n }\n\n updateRecipientFieldValue(fieldName: string, updateResult: any) {\n console.log('[SIGN] updateRecipientFieldValue', fieldName, updateResult);\n this.getRecipientFields().forEach(oldField => {\n if (oldField.name === fieldName) {\n oldField.value = updateResult.value;\n // TODO: Keeping this while attachments still rely on it\n oldField.settings = updateResult.settings;\n updateDocumentFieldValue(oldField);\n this.fieldUpdateCounter++;\n this.checkRecipientFields();\n }\n });\n }\n\n saveFieldChange(fieldName: string, value: string, prepared: boolean) {\n // Although the inputs disable themselves, the blur handler can still try to re-save\n // the value already in the field. Bypassing that here is easier than adding yet more\n // logic to the fields.\n const field = this.getRecipientFields().find(field => field.name === fieldName);\n if (field?.readonly) {\n return;\n }\n\n console.log('[SIGN] saveFieldChange', fieldName, { value, prepared });\n updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, fieldName, value, prepared)\n .then(updateResult => this.updateRecipientFieldValue(fieldName, updateResult))\n .catch(e => {\n if (e.response?.status === 401 && e.response?.data?.error === 'jwt expired') {\n console.log('[SIGN] Signing session expired');\n this.fatalErrorHeader = 'Signing Session Expired';\n this.fatalErrorMessage = 'Please reload your browser to continue.';\n } else {\n console.log('[SIGN] Server error', e);\n VerdocsToast('Unable to save change, please try again later', { style: 'error' });\n }\n\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n });\n }\n\n async handleFieldChange(field: IEnvelopeField, e: any) {\n const { value, checked } = e.target;\n\n switch (field.type as any) {\n // TODO: Remove legacy type when no longer needed\n case 'textarea':\n case 'textbox':\n return this.saveFieldChange(field.name, value, false);\n\n case 'checkbox': {\n return this.saveFieldChange(field.name, String(e.target.checked), false);\n }\n\n case 'radio': {\n return this.saveFieldChange(field.name, String(e.target.checked), false);\n }\n\n case 'dropdown':\n // TODO: Set prepared to false server-side.\n console.log('Saving dropdown', field.name, e.detail);\n return this.saveFieldChange(field.name, e.detail, false);\n\n case 'initial':\n // This can be caused by a focus-out event if the user clicks the field\n // after it's already filled in, then clicks something else like a textbox.\n // We don't visually indicate the focus, but it's still there.\n // NOTE: We now allow null to clear the field\n if (e.detail === undefined) {\n return;\n }\n\n if (e.detail === null) {\n console.log('[SIGN] Clearing initial');\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, null, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If we already have an initials block, apply it\n if (this.initialId) {\n console.log('[SIGN] Reusing initial', this.initialId);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.initialId, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If it's a UUID, it's an existing initial ID we can just reuse\n if (typeof e.detail === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e.detail)) {\n console.log('[SIGN] Reusing initial', e.detail);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, e.detail, false);\n this.initialId = e.detail;\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n this.showSpinner = true;\n const initialsBlob = await (await fetch(e.detail)).blob();\n return createInitials(this.endpoint, 'initial', initialsBlob) //\n .then(async newInitials => {\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, newInitials.id, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.initialId = newInitials.id;\n this.showSpinner = false;\n })\n .catch(e => {\n console.log('Error updating initials', e);\n VerdocsToast('Unable to save initials, please try again later', { style: 'error' });\n this.showSpinner = false;\n });\n\n case 'signature':\n // This can be caused by a focus-out event if the user clicks the field\n // after it's already filled in, then clicks something else like a textbox.\n // We don't visually indicate the focus, but it's still there.\n // NOTE: We now allow null to clear the field\n if (e.detail === undefined) {\n return;\n }\n\n if (e.detail === null) {\n console.log('[SIGN] Clearing signature');\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, null, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If we already have a signature block, apply it\n if (this.signatureId) {\n console.log('[SIGN] Reusing signature', this.signatureId);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.signatureId, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If it's a UUID, it's an existing signature ID we can just reuse\n if (typeof e.detail === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e.detail)) {\n console.log('[SIGN] Reusing signature', e.detail);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, e.detail, false);\n this.signatureId = e.detail;\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n this.showSpinner = true;\n const signatureBlob = await (await fetch(e.detail)).blob();\n console.log('[SIGN] Creating new signature');\n return createSignature(this.endpoint, 'signature', signatureBlob) //\n .then(async newSignature => {\n console.log('Signature update result', newSignature);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, newSignature.id, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.signatureId = newSignature.id;\n this.showSpinner = false;\n })\n .catch(e => {\n console.warn('[SIGN] Error updating signature', e);\n VerdocsToast('Unable to save signature, please try again later', { style: 'error' });\n this.showSpinner = false;\n });\n\n case 'date':\n const { formattedDate } = e.detail;\n if (formattedDate) {\n return this.saveFieldChange(field.name, formattedDate, false);\n }\n break;\n\n case 'timestamp':\n console.log('[SIGN] Updating timestamp', { value, ts: e.target.getAttribute('timestamp') });\n break;\n\n default:\n console.log('[SIGN] Unhandled field update', { value, checked }, field);\n break;\n }\n }\n\n getSortedFillableFields() {\n const recipientFields = this.getRecipientFields().filter(field => field.type !== 'timestamp' && !field.readonly);\n sortFields(recipientFields);\n return recipientFields;\n }\n\n handleNext() {\n if (this.nextSubmits) {\n try {\n // Patches the date picker to be forcibly removed if still showing during submission\n document.getElementById('air-datepicker-global-container')?.remove();\n\n this.submitting = true;\n const result = envelopeRecipientSubmit(this.endpoint, this.envelopeId, this.roleId);\n console.log('[SIGN] Submitted successfully', result);\n // TODO: The \"proper\" way is generating an error from Stencil\n // NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which\n // the new node is to be inserted is not a child of this node.\n window.location.reload();\n } catch (e) {\n console.log('[SIGN] Error submitting', e);\n }\n\n return;\n }\n\n const nextRequiredField = this.getNextRequiredField();\n\n if (nextRequiredField) {\n const id = getFieldId(nextRequiredField);\n const el = document.getElementById(id) as any;\n el?.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n el?.focusField();\n this.focusedField = nextRequiredField.name;\n }\n }\n\n getRecipientFields() {\n return this.envelope?.fields.filter(field => field.role_name === this.recipient.role_name) || [];\n }\n\n // See if everything that \"needs to be\" filled in is, and all \"fillable fields\" are valid\n checkRecipientFields() {\n const invalidFields = this.getRecipientFields().filter(field => !isFieldValid(field, this.getRecipientFields()));\n if (invalidFields.length < 1) {\n this.nextButtonLabel = 'Finish';\n if (!this.nextSubmits) {\n this.nextSubmits = true;\n }\n } else {\n this.nextButtonLabel = 'Next';\n this.nextSubmits = false;\n }\n this.updateAllFlags();\n }\n\n getNextRequiredField() {\n // Find and focus the next incomplete field (that is fillable)\n const emptyFields = this.getSortedFillableFields().filter(field => field.required && !isFieldFilled(field, this.getRecipientFields()));\n sortFields(emptyFields);\n\n // console.log(\n // '[SIGN] Pending fields',\n // emptyFields.map(f => `${f.name} (${f.type}) req=${f.required}`),\n // );\n\n if (emptyFields.length === 0) {\n const allUnfilled = this.getSortedFillableFields().filter(field => !isFieldFilled(field, this.getRecipientFields()));\n sortFields(allUnfilled);\n if (allUnfilled.length > 0) {\n // If we are here, there are no required fields left, but there are optional ones.\n return this.getNextFieldFromList(allUnfilled);\n }\n return null;\n }\n\n return this.getNextFieldFromList(emptyFields);\n }\n\n getNextFieldFromList(fields: IEnvelopeField[]) {\n const focusedIndex = fields.findIndex(field => field.name === this.focusedField);\n let nextFocusedIndex = focusedIndex + 1;\n if (nextFocusedIndex >= fields.length) {\n nextFocusedIndex = 0;\n }\n\n // Note: isFieldFilled check above should handle 'initialed'/'signed'.\n return fields[nextFocusedIndex];\n }\n\n handlePrev() {\n const allFields = this.getSortedFillableFields();\n const focusedIndex = allFields.findIndex(f => f.name === this.focusedField);\n if (focusedIndex > 0) {\n const prevField = allFields[focusedIndex - 1];\n const id = getFieldId(prevField);\n const el = document.getElementById(id) as any;\n el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el?.focusField?.();\n this.focusedField = prevField.name;\n }\n }\n\n updateAllFlags() {\n Object.values(this.renderedPages).forEach(pageInfo => {\n this.updateFlagsForPage(pageInfo);\n });\n }\n\n updateFlagsForPage(pageInfo: IDocumentPageInfo) {\n if (!pageInfo) return;\n\n const controlsDiv = document.getElementById(pageInfo.containerId + '-controls');\n if (!controlsDiv) return;\n\n // Remove existing flags\n const existingFlags = controlsDiv.querySelectorAll('.verdocs-flag-instance');\n existingFlags.forEach(el => el.remove());\n\n let nextField = this.getNextRequiredField();\n const focusedFieldObj = this.getRecipientFields().find(f => f.name === this.focusedField);\n\n // If the currently focused field is unfilled, we should point the flag to IT, not the next one.\n // getNextRequiredField() is designed for the \"Next\" button (skipping current), but the visual flag\n // should guide the user to the current task if it's incomplete.\n if (focusedFieldObj && !isFieldFilled(focusedFieldObj, this.getRecipientFields())) {\n nextField = focusedFieldObj;\n }\n\n if (nextField && nextField.page === pageInfo.pageNumber && nextField.document_id === pageInfo.documentId) {\n const variant = 'fill';\n let label = 'FILL';\n let showSkip = false;\n\n if (!nextField.required) {\n label = 'FILL';\n showSkip = true; // Use the X to skip? Or just text? \"Fill or Skip\" implies maybe just text.\n }\n\n renderDocumentFlag(pageInfo, nextField.y, nextField.height || defaultHeight(nextField.type), {\n variant,\n label,\n showSkip,\n onSkip: () => {\n this.handleNext();\n },\n onClick: () => {\n const id = getFieldId(nextField);\n const el = document.getElementById(id) as any;\n el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el?.focusField?.();\n },\n });\n }\n }\n\n attachFieldAttributes(pageInfo, field, el) {\n // We can get called multiple times as rendering completes and it's hard to avoid that\n // because it's a ton of work for the callers to know it's been done already. But we\n // don't want to attach multiple event listeners or we get dupe event handling, like\n // calling the server twice on every field update. Since JS has no removeAllEventListeners()\n // option, using removeEventListener() isn't reliable the way Stencil binds local function\n // contexts, and cloneNode messes up the rest of the rendering, we just track it with a flag.\n if (el.getAttribute('attached') === '1') {\n return;\n }\n el.setAttribute('attached', '1');\n\n el.addEventListener('input', (e: any) => {\n // console.log('[SIGN] onfieldInput', e.detail, e.target.value);\n // These field types don't emit fieldChange. Should we standardize on that? We don't tap \"input\" for fields like\n // text boxes because we'd be updating the field on every keystroke. We do those on blur which fires fieldChange.\n if (e.target.type === 'radio' || e.target.type === 'checkbox') {\n // if (e.target.type === 'radio' || e.target.name.includes('date') || e.target.name.includes('checkbox')) {\n this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());\n } else {\n this.checkRecipientFields();\n }\n });\n el.addEventListener('attached', async (e: any) => {\n console.log('[SIGN] onAttached', e.detail, e.target.value);\n this.showSpinner = true;\n try {\n const updateResult = await uploadEnvelopeFieldAttachment(this.endpoint, this.envelopeId, this.roleId, field.name, e.detail);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.checkRecipientFields();\n\n const newEl = renderDocumentField('envelope', field, pageInfo, { disabled: false, editable: false, draggable: false, done: this.isDone });\n this.attachFieldAttributes(pageInfo, field, newEl);\n\n this.showSpinner = false;\n } catch (e) {\n console.log('Error uploading attachment', e);\n VerdocsToast('Unable to upload attachment, please try again later', { style: 'error' });\n this.showSpinner = false;\n }\n });\n el.addEventListener('deleted', async (e: any) => {\n console.log('[SIGN] onDeleted', e.detail, e.target.value);\n this.showSpinner = true;\n try {\n const updateResult = await deleteEnvelopeFieldAttachment(this.endpoint, this.envelopeId, this.roleId, field.name);\n console.log('[SIGN] Deleted attachment', updateResult);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.checkRecipientFields();\n\n const newEl = renderDocumentField('envelope', field, pageInfo, { disabled: false, editable: false, draggable: false, done: this.isDone });\n this.attachFieldAttributes(pageInfo, field, newEl);\n\n this.showSpinner = false;\n } catch (e) {\n console.log('Error uploading attachment', e);\n VerdocsToast('Unable to upload attachment, please try again later', { style: 'error' });\n this.showSpinner = false;\n }\n });\n el.addEventListener('focusout', e => {\n // These field types trigger focusout as they're used, even without a value change.\n // Signature/Initial fields handle their own changes via fieldChange/adopt events, so we ignore focusout to prevent double-saves.\n if (field.type !== 'dropdown' && field.type !== 'attachment' && field.type !== 'signature' && field.type !== 'initial') {\n this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());\n }\n });\n el.addEventListener('fieldChange', e => {\n this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());\n });\n el.addEventListener('adopt', () => {\n this.focusedField = field.name;\n this.adoptingSignature = true;\n });\n\n el.setAttribute('templateid', this.envelope.template_id);\n el.setAttribute('fieldname', field.name);\n el.setAttribute('page', pageInfo.pageNumber);\n el.setAttribute('xScale', pageInfo.xScale);\n el.setAttribute('yScale', pageInfo.yScale);\n\n const fullName = formatFullName(this.recipient);\n el.setAttribute('initials', fullNameToInitials(fullName));\n el.setAttribute('name', fullName);\n if (this.signatureId) {\n el.setAttribute('signatureid', this.signatureId);\n }\n if (this.initialId) {\n el.setAttribute('initialid', this.initialId);\n }\n }\n\n handlePageRendered(e: any) {\n const pageInfo = e.detail as IDocumentPageInfo;\n this.renderedPages[`${pageInfo.documentId}:${pageInfo.pageNumber}`] = pageInfo;\n\n // console.log('Page rendered', pageInfo);\n\n // NOTE: We don't filter on pageNumber here because we need the position in the\n // entire list to set the tabIndex.\n const recipientFields = this.getSortedFillableFields();\n // console.log('[SIGN] Rendering fields for page', pageInfo.pageNumber, recipientFields);\n\n // First render the fields for the signer\n recipientFields\n .filter(field => field && field.document_id === pageInfo.documentId && field.page === pageInfo.pageNumber)\n .forEach((field, tabIndex) => {\n const el = renderDocumentField('envelope', field, pageInfo, { disabled: false, editable: false, draggable: false, done: this.isDone }, tabIndex);\n if (!el) {\n return;\n }\n\n if (Array.isArray(el)) {\n el.map(e => this.attachFieldAttributes(pageInfo, field, e));\n } else {\n this.attachFieldAttributes(pageInfo, field, el);\n }\n });\n\n // Now render the fields for other signers who have yet to act\n this.envelope.recipients\n .filter(r => r.role_name !== this.recipient.role_name && (r.status === 'invited' || r.status === 'opened' || r.status === 'pending'))\n .forEach(() => {\n this.getRecipientFields()\n .filter(field => field.document_id === pageInfo.documentId && field.page === pageInfo.pageNumber)\n .forEach(field => {\n const el = renderDocumentField('envelope', field, pageInfo, { disabled: true, editable: false, draggable: false, done: this.isDone });\n if (!el) {\n return;\n }\n\n if (Array.isArray(el)) {\n el.map(e => this.attachFieldAttributes(pageInfo, field, e));\n } else {\n this.attachFieldAttributes(pageInfo, field, el);\n }\n });\n });\n\n this.checkRecipientFields();\n this.updateFlagsForPage(pageInfo);\n }\n\n handleAuthenticateSigner(params: TAuthenticateRecipientRequest) {\n console.log('[SIGN] Submitting authentication step', params);\n verifySigner(this.endpoint, params)\n .then(r => {\n console.log('[SIGN] Verification successful', r);\n this.processAuthResponse(r);\n })\n .catch(e => {\n console.log('[SIGN] Error submitting authentication step', e);\n console.log(e.response?.data);\n if (e.response?.data?.error?.includes('failed')) {\n this.fatalErrorHeader = 'Recipient Verification Failed';\n this.fatalErrorMessage = 'We were unable to verify your identity. The sender has been notified.';\n this.isDone = true;\n } else {\n VerdocsToast(e.response?.data?.error || 'Unable to verify your identity. Please try again.', { style: 'error' });\n }\n });\n }\n\n render() {\n if (this.showLoadError) {\n return (\n <Host>\n <verdocs-ok-dialog\n heading=\"Unable to Start Signing\"\n message={`Sorry, your invite code is invalid or has expired. Please check your email for an updated invitation, or contact the sender.`}\n buttonLabel=\"OK\"\n onNext={() => {\n window.location.reload();\n }}\n />\n </Host>\n );\n }\n\n if (!this.envelope) {\n return (\n <Host>\n <verdocs-loader />\n </Host>\n );\n }\n\n if (this.fatalErrorMessage) {\n return (\n <Host class={{ agreed: this.agreed }}>\n <div class=\"fatal-error\">\n <div class=\"message\">\n <div class=\"header\">{this.fatalErrorHeader}</div>\n <p>{this.fatalErrorMessage}</p>\n </div>\n </div>\n </Host>\n );\n }\n\n if (this.delegated) {\n return (\n <Host class={{ agreed: false }}>\n <div class=\"fatal-error\">\n <div class=\"message\">\n <div class=\"header\">Delegated Signing Request</div>\n <p>You have delegated signing to another recipient. You will not be able to sign this request again.</p>\n </div>\n </div>\n </Host>\n );\n }\n\n if (this.isDone) {\n return (\n <Host class={{ agreed: this.agreed }}>\n <verdocs-view endpoint={this.endpoint} envelopeId={this.envelopeId} onSdkError={e => this.sdkError?.emit(e.detail)} />\n\n {this.showDone && (\n <verdocs-ok-dialog\n heading=\"You're Done!\"\n 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 document and envelope certificate attached.`}\n onNext={(e: any) => {\n e.preventDefault();\n e.stopPropagation();\n this.showDone = false;\n this.isDone = true;\n }}\n />\n )}\n\n {this.submitting && (\n <div class=\"loading-indicator\">\n <verdocs-loader />\n </div>\n )}\n </Host>\n );\n }\n\n if (this.delegating) {\n return (\n <Host class=\"agreed\">\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <verdocs-delegate-dialog\n endpoint={this.endpoint}\n envelope={this.envelope}\n onExit={() => (this.delegating = false)}\n onNext={(e: any) => {\n delegateRecipient(this.endpoint, this.envelopeId, this.roleId, e.detail)\n .then(r => {\n VerdocsToast('Delegation request submitted.', { style: 'success' });\n console.log('[SIGN] Delegated successfully', r);\n this.delegated = true;\n this.delegating = false;\n })\n .catch(e => {\n console.log('[SIGN] Error delegating request', e);\n VerdocsToast('Unable to process delegation request. Please try again later.', { style: 'error' });\n });\n }}\n />\n </Host>\n );\n }\n\n if (this.declining) {\n return (\n <Host class=\"agreed\">\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <verdocs-ok-dialog\n heading=\"Decline Signing Request\"\n message={`If you decline to sign this request, you will not be able to sign again in the future. The envelope sender will be notified.`}\n buttonLabel=\"OK\"\n showCancel={true}\n onExit={() => (this.declining = false)}\n onNext={() => {\n envelopeRecipientDecline(this.endpoint, this.envelopeId, this.roleId)\n .then(r => {\n console.log('[SIGN] Decline result', r);\n window.location.reload();\n })\n .catch(e => {\n console.warn('[SIGN] Error declining signing session', e);\n VerdocsToast('Unable to decline, please try again later', { style: 'error' });\n });\n }}\n />\n </Host>\n );\n }\n\n if (!this.agreed) {\n return (\n <Host class=\"agreed\">\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <verdocs-disclosure-dialog\n disclosures={this.disclosures}\n delegator={this.recipient.delegator}\n onDelegate={() => (this.delegating = true)}\n onDecline={() => (this.declining = true)}\n onAccept={() => this.handleClickAgree()}\n />\n </Host>\n );\n }\n\n if (this.authStep === 'passcode') {\n return <verdocs-passcode-dialog endpoint={this.endpoint} onNext={e => this.processAuthResponse(e.detail.response)} />;\n }\n\n if (this.authStep === 'email') {\n return (\n <verdocs-otp-dialog\n endpoint={this.endpoint}\n method=\"email\"\n onNext={async e => {\n this.processAuthResponse(e.detail.response);\n }}\n />\n );\n }\n\n if (this.authStep === 'kba' && !this.authMethodStates.kba) {\n return (\n <Host class=\"kba\">\n <div id=\"verdocs-sign-header\">\n <div class=\"inner\">\n <img src=\"https://verdocs.com/assets/white-logo.svg\" alt=\"Verdocs Logo\" class=\"logo\" />\n <div class=\"title\">{this.envelope.name}</div>\n </div>\n </div>\n\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <div class=\"cover\">\n <div class=\"kba\">\n <verdocs-kba-dialog\n mode=\"identity\"\n helptitle=\"Document requires identity verification\"\n helptext=\"Please complete your contact details to proceed.\"\n recipient={this.recipient}\n onNext={async e => {\n const recipDetails = e.detail as IRecipient;\n this.handleAuthenticateSigner({\n auth_method: 'kba',\n first_name: recipDetails.first_name,\n last_name: recipDetails.last_name,\n address: recipDetails.address,\n city: recipDetails.city,\n state: recipDetails.state,\n zip: recipDetails.zip,\n dob: recipDetails.dob,\n });\n }}\n />\n </div>\n </div>\n </Host>\n );\n }\n\n if (this.authStep === 'kba' && this.authMethodStates.kba === 'questions') {\n const questionNumber = this.kbaChoices.length;\n const kbaQuestion = this.kbaQuestions[questionNumber];\n return (\n <Host class=\"kba\">\n <div id=\"verdocs-sign-header\">\n <div class=\"inner\">\n <img src=\"https://verdocs.com/assets/white-logo.svg\" alt=\"Verdocs Logo\" class=\"logo\" />\n <div class=\"title\">{this.envelope.name}</div>\n </div>\n </div>\n\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <div class=\"cover\">\n <div class=\"kba\">\n {this.kbaChoices.length >= this.kbaQuestions.length ? (\n <verdocs-spinner />\n ) : (\n <verdocs-kba-dialog\n mode=\"choice\"\n helptitle=\"Your identity requires additional verification\"\n helptext={kbaQuestion?.prompt || 'Please select one of the options below.'}\n choices={kbaQuestion?.answer || ['Skip Question']}\n step={questionNumber + 1}\n steps={this.kbaQuestions.length}\n onNext={async (e: any) => {\n const answer = e.detail as string;\n this.kbaChoices = [...this.kbaChoices, answer];\n if (this.kbaChoices.length >= this.kbaQuestions.length) {\n const responses = this.kbaQuestions.map((q, i) => ({ type: q.type, answer: this.kbaChoices[i] }));\n console.log('Submitting KBA responses', this.kbaChoices, responses);\n this.handleAuthenticateSigner({ auth_method: 'kba', responses });\n }\n }}\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n\n const inProgressMenuOptions = [\n { id: 'later', label: 'Finish Later' }, //\n // {id: 'claim', label: 'Claim the Document', disabled: true},\n { id: 'decline', label: 'Decline to Sign' },\n { id: 'print', label: 'Print Without Signing' },\n { id: 'download', label: 'Download' },\n ];\n\n const doneMenuOptions = [\n { id: 'print', label: 'Print' },\n { id: 'download', label: 'Download' },\n ];\n\n if (this.recipient.delegator) {\n inProgressMenuOptions.unshift({ id: 'delegate', label: 'Delegate' });\n }\n\n const invalidFields = this.getRecipientFields().filter(field => !isFieldValid(field, this.getRecipientFields()));\n invalidFields.length > 0\n ? console.log(\n '[SIGN] Invalid fields remaining',\n invalidFields.map(field => field.name),\n )\n : console.log('[SIGN] All field valid');\n\n const totalPages = this.envelope.documents.reduce((acc, doc) => acc + doc.pages, 0);\n const pageOptions = integerSequence(1, totalPages).map(p => ({ label: p.toString(), value: p.toString() }));\n let globalPageCounter = 0;\n\n return (\n <Host>\n {this.toolbarStyle === 'menu' && (\n <div id=\"verdocs-sign-header\">\n <div class=\"inner\">\n <img src=\"https://verdocs.com/assets/white-logo.svg\" alt=\"Verdocs Logo\" class=\"logo\" />\n <div class=\"title\">{this.envelope.name}</div>\n <div style={{ flex: '1' }} />\n\n {!this.finishLater && <verdocs-button size=\"xsmall\" label={this.nextButtonLabel} disabled={!this.agreed || this.submitting} onClick={() => this.handleNext()} />}\n\n <div style={{ marginLeft: '10px' }} />\n <verdocs-dropdown options={!this.isDone && !this.finishLater ? inProgressMenuOptions : doneMenuOptions} onOptionSelected={e => this.handleOptionSelected(e)} />\n </div>\n </div>\n )}\n\n {this.toolbarStyle === 'controls' && (\n <div class=\"controls-toolbar\">\n <div class=\"left-controls\">\n <div class=\"title\">{this.envelope.name}</div>\n </div>\n <div class=\"center-controls\">\n <span class=\"label\">Page</span>\n <div class=\"select-wrapper\">\n <verdocs-select-input options={pageOptions} value={this.pageNumber.toString()} onInput={e => this.handlePageSelect(e)} />\n </div>\n <span class=\"count\">of {totalPages}</span>\n </div>\n <div class=\"right-controls\">\n <verdocs-button class=\"mobile-next-button\" label={this.nextButtonLabel} size=\"xsmall\" disabled={!this.agreed || this.submitting} onClick={() => this.handleNext()} />\n <div class={{ 'icon-button': true, 'minus': true, 'disabled': this.zoomLevel === 'normal' }} innerHTML={ToolbarMinusIcon} onClick={() => this.handleZoomOut()} />\n <div class={{ 'icon-button': true, 'plus': true, 'disabled': this.zoomLevel === 'zoom2' }} innerHTML={ToolbarPlusIcon} onClick={() => this.handleZoomIn()} />\n <div class=\"icon-button download\" innerHTML={ToolbarDownloadIcon} onClick={() => this.handleOptionSelected({ detail: { id: 'download' } })} />\n <div class=\"icon-button print\" innerHTML={ToolbarPrintIcon} onClick={() => this.handleOptionSelected({ detail: { id: 'print' } })} />\n </div>\n </div>\n )}\n\n {/* Progress Card */}\n {(() => {\n // Dependencies: focusedField, fieldUpdateCounter (to force re-calc)\n // console.log('[SIGN] Render progress', this.focusedField, this.fieldUpdateCounter);\n // Calculate detailed progress\n const allFields = this.getSortedFillableFields();\n const recipientFields = this.getRecipientFields();\n\n const isFilled = (f: IEnvelopeField) => isFieldFilled(f, recipientFields) && (f.type !== 'dropdown' || !!f.value);\n\n const requiredFields = allFields.filter(f => f.required);\n const requiredRemaining = requiredFields.filter(f => !isFilled(f)).length;\n\n const optionalFields = allFields.filter(f => !f.required);\n const optionalRemaining = optionalFields.filter(f => !isFilled(f)).length;\n\n const progress = {\n required: {\n remaining: requiredRemaining,\n total: requiredFields.length,\n },\n optional: {\n remaining: optionalRemaining,\n total: optionalFields.length,\n },\n };\n\n const focusedFieldObj = this.getSortedFillableFields().find(f => f.name === this.focusedField);\n const currentIndex = this.getSortedFillableFields().findIndex(f => f.name === this.focusedField) + 1;\n const totalFields = this.getSortedFillableFields().length;\n const remainingFields = this.getSortedFillableFields()\n .filter(f => f.required && !isFilled(f))\n .map(f => ({ name: f.name, type: f.type, required: f.required }));\n\n console.log('[SIGN] Progress Debug:', {\n allFields: allFields.length,\n requiredFields: requiredFields.length,\n requiredRemaining,\n optionalFields: optionalFields.length,\n optionalRemaining,\n filledFields: recipientFields.filter(f => isFilled(f)).map(f => ({ name: f.name, type: f.type, val: f.value })),\n });\n\n let mode: 'start' | 'signing' | 'completed' = 'start';\n // We only consider the user to have started \"signing\" if they have filled out at least one *fillable* field.\n // Readonly fields do not count.\n const anyFieldFilled = requiredRemaining < requiredFields.length || optionalRemaining < optionalFields.length;\n if (this.nextSubmits) {\n mode = 'completed';\n } else if (anyFieldFilled) {\n mode = 'signing';\n }\n\n return (\n <verdocs-signing-progress\n mode={mode}\n current={Math.max(1, currentIndex)}\n total={totalFields}\n remainingFields={remainingFields}\n progress={progress}\n fieldLabel={getFieldLabel(focusedFieldObj)}\n fieldCompleted={focusedFieldObj ? !!isFilled(focusedFieldObj) : false}\n onStarted={() => {\n this.adoptingSignature = true;\n // this.handleNext();\n }}\n onNext={() => this.handleNext()}\n onPrevious={() => this.handlePrev()}\n onExit={() => this.handleNext()}\n />\n );\n })()}\n\n <div class={`document signed-document-container zoom-${this.zoomLevel}`}>\n {(this.envelope.documents || []).map(envelopeDocument => {\n const pageNumbers = integerSequence(1, envelopeDocument.pages);\n\n return (\n <Fragment>\n {this.envelope.documents.length > 1 && (\n <div class=\"document-separator\">\n <div innerHTML={DocumentPageIcon} />\n <span>{envelopeDocument.name}</span>\n </div>\n )}\n\n {pageNumbers.map(pageNumber => {\n const pageSize = envelopeDocument.page_sizes?.[pageNumber] || { width: 612, height: 792 };\n globalPageCounter++;\n\n // In signing mode we show the original template page with all the recipient fields so we can show source formatting and\n // where everything went. This is also a visual indicator when optional fields weren't filled in by previous actors, or\n // future signers still need to act. Once we're \"done\" we flip to showing the envelope's documents which have the final\n // field vales (so far) stamped into them.\n // TODO: Confirm that a pure page-number match is good enough to find the matching template page. We need to make sure\n // we either don't reset our page numbers for additional attachments, or add match-on identifiers to work around that.\n // console.log('tp', templatePage, page);\n return (\n <verdocs-envelope-document-page\n id={`page-${globalPageCounter}`}\n envelopeId={this.envelopeId}\n documentId={envelopeDocument.id}\n endpoint={this.endpoint}\n virtualWidth={pageSize.width}\n virtualHeight={pageSize.height}\n pageNumber={pageNumber}\n onPageRendered={e => this.handlePageRendered(e)}\n type=\"filled\"\n layers={[\n { name: 'page', type: 'canvas' },\n { name: 'controls', type: 'div' },\n ]}\n />\n );\n })}\n </Fragment>\n );\n })}\n </div>\n\n {this.showFinishLater && (\n <verdocs-ok-dialog\n heading=\"You've saved your document to finish later.\"\n message={`To complete the ${this.documentsSingularPlural}, use the link in the original email notification inviting you to review and finish the document.`}\n onNext={() => {\n this.isDone = true;\n this.showFinishLater = false;\n }}\n />\n )}\n\n {this.showDone && (\n <verdocs-ok-dialog\n heading=\"You're Done!\"\n 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 document and envelope certificate attached.`}\n onNext={() => {\n this.showDone = false;\n this.isDone = true;\n }}\n />\n )}\n\n {this.adoptingSignature && (\n <verdocs-adopt-signature-dialog\n name={formatFullName(this.recipient)}\n onNext={async e => {\n console.log('[SIGN] Adopting signature/initials block', e.detail);\n\n this.showSpinner = true;\n\n // These arrive as base-64 encoded data URLs\n const signatureBlob = await (await fetch(e.detail.signature)).blob();\n const initialsBlob = await (await fetch(e.detail.initials)).blob();\n\n const sigResult = await createSignature(this.endpoint, 'signature', signatureBlob);\n console.log('[SIGN] Created signature', sigResult);\n this.signatureId = sigResult.id;\n\n const initResult = await createInitials(this.endpoint, 'initial', initialsBlob);\n console.log('[SIGN] Created initials', initResult);\n this.initialId = initResult.id;\n\n this.showSpinner = false;\n this.adoptingSignature = false;\n\n // If we have a focused field, we should auto-apply the new signature/initials to it\n if (this.focusedField) {\n const field = this.getRecipientFields().find(f => f.name === this.focusedField);\n if (field) {\n console.log('[SIGN] Auto-applying adopted signature to focused field', field.name);\n if (field.type === 'signature') {\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.signatureId, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n } else if (field.type === 'initial') {\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.initialId, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n }\n this.checkRecipientFields();\n }\n }\n }}\n onExit={() => (this.adoptingSignature = false)}\n />\n )}\n\n {(this.submitting || this.showSpinner) && (\n <verdocs-portal>\n <div class=\"spinner-overlay\">\n <verdocs-spinner />\n </div>\n </verdocs-portal>\n )}\n\n {this.showDownloadDialog && (\n <verdocs-download-dialog\n hasCertificate={this.envelope?.documents?.some(d => d.type === 'certificate')}\n onExit={() => (this.showDownloadDialog = false)}\n onNext={async e => {\n this.showDownloadDialog = false;\n const { action } = e.detail;\n console.log('[SIGN] Download action selected:', action);\n\n try {\n if (action === 'document') {\n // Download main document(s)\n const attachments = this.envelope.documents.filter(d => d.type === 'attachment');\n if (attachments.length === 1) {\n const url = await getEnvelopeDocumentDownloadLink(this.endpoint, attachments[0].id);\n window.open(url, '_blank');\n } else {\n // If multiple docs, we might want to zip them or just download the first one for now as per previous logic?\n // The requirement says \"Document\", implies the PDF.\n // Users might have multiple files though.\n // For now let's just do the zip of everything if multiple? Or loop?\n // Let's stick to the previous behavior \"firstDoc\" strategy if we can't do better,\n // or use getEnvelopeDocumentDownloadLink for each?\n // Best user experience for \"Document\" if multiple is probably just the first one or a zip of docs.\n // But \"All Files\" covers zip.\n // Let's assume the main document is the primary intent.\n const firstDoc = attachments[0];\n if (firstDoc) {\n const url = await getEnvelopeDocumentDownloadLink(this.endpoint, firstDoc.id);\n window.open(url, '_blank');\n }\n }\n } else if (action === 'certificate') {\n const cert = this.envelope.documents.find(d => d.type === 'certificate');\n if (cert) {\n const url = await getEnvelopeDocumentDownloadLink(this.endpoint, cert.id);\n window.open(url, '_blank');\n } else {\n VerdocsToast('Certificate not yet available.', { style: 'info' });\n }\n } else if (action === 'zip') {\n // The helper in verdocs-view used getEnvelopesZip with an array\n const blob = await getEnvelopesZip(this.endpoint, [this.envelopeId]);\n const url = window.URL.createObjectURL(blob.data);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${this.envelope.name}.zip`;\n document.body.appendChild(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n }\n } catch (err) {\n console.error('Download error', err);\n VerdocsToast('Unable to complete download request.', { style: 'error' });\n }\n }}\n />\n )}\n\n {!this.loading && !this.isDone && (\n <verdocs-sign-footer\n endpoint={this.endpoint}\n envelopeId={this.envelopeId}\n isDone={this.isDone}\n onAskQuestion={(e: any) => {\n askQuestion(this.endpoint, this.envelopeId, this.roleId, { question: e.detail.question })\n .then(() => VerdocsToast('Your question has been sent.', { style: 'success' }))\n .catch(e => {\n console.log('Error asking question', e);\n VerdocsToast('Unable to send question, please try again later.', { style: 'error' });\n });\n }}\n onDecline={() => (this.declining = true)}\n onFinishLater={() => (this.showFinishLater = true)}\n />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verdocs-sign.entry.esm.js","sources":["src/components/embeds/verdocs-sign/verdocs-sign.scss?tag=verdocs-sign","src/components/embeds/verdocs-sign/verdocs-sign.tsx"],"sourcesContent":["@import '../../../theme.scss';\n\nverdocs-sign {\n display: flex;\n overflow: hidden;\n min-height: 700px;\n position: relative;\n flex-direction: column;\n box-sizing: border-box;\n background-color: #f5f5f5;\n font-family: $verdocs-primary-font;\n\n verdocs-button > button.standard {\n background: #2a63f6;\n }\n\n div {\n display: block;\n box-sizing: border-box;\n }\n\n input {\n vertical-align: top;\n }\n\n > .document {\n flex: 1;\n width: 100%;\n height: 100%;\n align-self: center;\n display: flex;\n padding: 15px;\n // We add extra padding here so the flags (which are absolutely positioned \"outside\" the page)\n // are still visible within the scrollable area.\n padding-right: 140px;\n row-gap: 15px;\n max-width: 1200px;\n min-height: 200px;\n position: relative;\n overflow-y: scroll;\n align-items: center;\n box-sizing: border-box;\n flex-direction: column;\n\n .inner {\n width: 100%;\n max-width: 1028px;\n }\n\n .document-separator {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 12px 20px;\n width: 100%;\n max-width: 1028px; // Match standard page width + margins\n box-sizing: border-box;\n background-color: $verdocs-grey-1;\n color: white;\n border-radius: 6px;\n font-size: 16px;\n font-weight: 500;\n margin-top: 20px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n\n svg {\n flex-shrink: 0;\n }\n\n // Remove margin for the very first one if desired, but 20px spacing is probably good even for the first one\n &:first-child {\n margin-top: 0;\n }\n }\n }\n\n // Formerly inline styles, moved here for responsive control\n .signed-document-container {\n width: 64%;\n margin-left: 260px;\n transition: all 0.3s ease;\n\n &.zoom-normal {\n width: 64%;\n margin-left: 260px;\n }\n\n &.zoom-zoom1 {\n width: 80%;\n margin-left: 200px;\n }\n\n &.zoom-zoom2 {\n width: 100%;\n margin-left: 150px;\n\n .verdocs-flag-instance {\n opacity: 0;\n pointer-events: none;\n }\n }\n }\n\n @media (max-width: 768px) {\n verdocs-sign-footer {\n padding: 0 10px;\n\n .buttons {\n gap: 8px;\n\n button {\n font-size: 10px;\n }\n }\n }\n\n .signed-document-container {\n width: 100%;\n margin-left: 0;\n\n // Ensure specific zoom levels don't override the mobile layout\n &.zoom-normal,\n &.zoom-zoom1,\n &.zoom-zoom2 {\n width: 100%;\n margin-left: 0;\n }\n }\n\n > .document {\n padding-right: 15px;\n }\n\n // Hide flags on mobile\n .verdocs-flag-instance {\n display: none !important;\n }\n\n // Hide toolbars on mobile\n .controls-toolbar {\n .center-controls {\n display: none;\n }\n\n .right-controls {\n .mobile-next-button {\n display: block;\n margin-right: 10px;\n }\n\n .minus,\n .plus {\n display: none;\n }\n }\n }\n }\n\n .cover {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n z-index: 5000;\n position: absolute;\n padding-top: 100px;\n align-items: center;\n flex-direction: column;\n background: rgba(0, 0, 0, 0.5);\n }\n\n verdocs-ok-dialog .background-overlay {\n align-items: flex-start;\n padding-top: 100px;\n }\n\n .loading-indicator {\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n z-index: 10000;\n position: fixed;\n background-color: rgba(0, 0, 0, 0.7);\n }\n\n .fatal-error {\n position: absolute;\n z-index: 100;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: #4a4a4a;\n display: flex;\n align-items: center;\n justify-content: center;\n\n .placeholder {\n position: absolute;\n opacity: 0.1;\n z-index: -1;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 612px;\n height: 792px;\n box-shadow: 0 0 10px 5px #0000000f;\n margin-top: 15px;\n }\n\n .message {\n max-width: 360px;\n width: 50%;\n font-size: 16px;\n background: white;\n box-shadow: 3px 3px 9px -1px #0000003f;\n }\n\n .header {\n color: white;\n font-size: 18px;\n font-weight: 500;\n padding: 5px 10px;\n margin: 0 0 10px 0;\n background: $verdocs-purple-shade;\n }\n\n p {\n margin: 1rem;\n font-size: 14px;\n font-weight: 400;\n padding: 0 10px;\n }\n }\n}\n\n@media print {\n verdocs-sign .header,\n .controls-toolbar,\n .verdocs-flag-instance,\n verdocs-signing-progress {\n display: none !important;\n }\n\n verdocs-sign {\n min-height: auto;\n background-color: white;\n\n > .document {\n overflow: visible;\n height: auto;\n display: block; // Flex can cause print issues\n padding: 0;\n margin: 0;\n\n .document-separator {\n display: none;\n }\n }\n\n .signed-document-container {\n width: 100%;\n margin: 0;\n }\n }\n}\n\n#verdocs-sign-header {\n color: #fff;\n width: 100%;\n display: flex;\n z-index: 1000;\n flex: 0 0 46px;\n font-size: 12px;\n column-gap: 15px;\n align-items: center;\n flex-direction: row;\n transition: all 0.25s;\n background-color: $medium-bg;\n box-shadow:\n 0 4px 4px 0 rgb(0 0 0 / 24%),\n 0 0 4px 0 rgb(0 0 0 / 12%);\n\n .inner {\n width: 100%;\n display: flex;\n margin: 0 auto;\n padding: 0 12px;\n max-width: 1200px;\n align-items: center;\n flex-direction: row;\n }\n\n .logo {\n width: 80px;\n display: none;\n margin: -6px 0 0 0;\n }\n\n .title {\n font-size: 18px;\n font-weight: 500;\n overflow: hidden;\n white-space: nowrap;\n padding: 0 10px 0 0;\n text-overflow: ellipsis;\n }\n}\n\n.spinner-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1000;\n display: flex;\n align-items: center;\n background: #0000007f;\n justify-content: center;\n}\n\n.controls-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 54px;\n // 24px by design but the design had the right-most icon flush against the edge.\n // Since we have extra padding on the icons to make them more clickable, we need\n // to reduce the right padding here.\n padding: 0 12px 0 24px;\n background-color: #ffffff;\n border-bottom: 1px solid #e0e0e0;\n box-shadow: none;\n font-family: 'Inter', sans-serif;\n color: #424242;\n z-index: 1000;\n\n .left-controls {\n flex: 1;\n display: flex;\n align-items: center;\n\n .title {\n font-weight: 500;\n font-size: 16px;\n color: #242424;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n\n .center-controls {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n font-size: 14px;\n\n .label {\n color: #000000;\n font-weight: 300;\n }\n\n .select-wrapper {\n // Wrapper styles from before were mainly for the native select arrow logic.\n // With verdocs-select-input, we might not need as much here, but let's keep it clean.\n display: flex;\n align-items: center;\n\n verdocs-select-input {\n margin: 0;\n\n // Hide the label block inside the component\n .input-label {\n display: none;\n }\n\n .input-element {\n background: transparent;\n border: 1px solid #e0e0e0;\n height: 32px; // Match button height\n padding: 2px 8px;\n min-width: 60px;\n text-align: center;\n font-family: inherit;\n color: #424242;\n\n &:focus {\n border-color: #2a63f6;\n }\n }\n }\n }\n\n .count {\n color: #000000;\n font-weight: 300;\n }\n }\n\n .right-controls {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n // NOTE: This is the expected gap, but we built it into additional padding in the icons\n // to make them more clickable.\n // gap: 12px;\n\n .mobile-next-button {\n display: none;\n }\n\n .icon-button {\n width: 32px;\n height: 32px;\n display: flex;\n color: #424242;\n cursor: pointer;\n align-items: center;\n justify-content: center;\n transition: background-color 0.2s;\n\n &:hover {\n background-color: #f5f5f5;\n }\n\n &.disabled {\n opacity: 0.3;\n pointer-events: none;\n }\n\n svg {\n display: block;\n width: 20px;\n height: 20px;\n }\n }\n }\n}\n","import { Element, Event, EventEmitter, Host, Fragment, Component, Prop, State, h } from '@stencil/core';\nimport { uploadEnvelopeFieldAttachment, VerdocsEndpoint, TRecipientAuthMethod, getEnvelopeDocumentDownloadLink, getEnvelopesZip } from '@verdocs/js-sdk';\nimport { askQuestion, DEFAULT_DISCLOSURES, integerSequence, isFieldFilled, isFieldValid } from '@verdocs/js-sdk';\nimport { verifySigner, IEnvelope, IEnvelopeField, IRecipient, TAuthenticateRecipientRequest } from '@verdocs/js-sdk';\nimport { fullNameToInitials, startSigningSession, deleteEnvelopeFieldAttachment, formatFullName } from '@verdocs/js-sdk';\nimport { updateEnvelopeField, sortFields, IKBAQuestion, ISignerTokenResponse, delegateRecipient } from '@verdocs/js-sdk';\nimport { createInitials, createSignature, envelopeRecipientAgree, envelopeRecipientDecline, envelopeRecipientSubmit } from '@verdocs/js-sdk';\nimport { getFieldId, renderDocumentField, renderDocumentFlag, updateDocumentFieldValue, defaultHeight } from '../../../utils/utils';\nimport { DocumentPageIcon } from '../../../utils/Icons';\nimport { IDocumentPageInfo } from '../../../utils/Types';\nimport { VerdocsToast } from '../../../utils/Toast';\nimport { SDKError } from '../../../utils/errors';\nimport { Store } from '../../../utils/Datastore';\n\nconst ToolbarMinusIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11 8C11.2761 8 11.5 8.22386 11.5 8.5C11.5 8.77614 11.2761 9 11 9H6C5.72386 9 5.5 8.77614 5.5 8.5C5.5 8.22386 5.72386 8 6 8H11ZM14 8.5C14 5.46243 11.5376 3 8.5 3C5.46243 3 3 5.46243 3 8.5C3 11.5376 5.46243 14 8.5 14C9.83879 14 11.0659 13.5217 12.0196 12.7266L16.1464 16.8536L16.2157 16.9114C16.4106 17.0464 16.68 17.0271 16.8536 16.8536C17.0488 16.6583 17.0488 16.3417 16.8536 16.1464L12.7266 12.0196C13.5217 11.0659 14 9.83879 14 8.5ZM4 8.5C4 6.01472 6.01472 4 8.5 4C10.9853 4 13 6.01472 13 8.5C13 10.9853 10.9853 13 8.5 13C6.01472 13 4 10.9853 4 8.5Z\" fill=\"#424242\" /></svg>`;\nconst ToolbarPlusIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11.5 8.5C11.5 8.22386 11.2761 8 11 8H9V6C9 5.72386 8.77614 5.5 8.5 5.5C8.22386 5.5 8 5.72386 8 6V8H6C5.72386 8 5.5 8.22386 5.5 8.5C5.5 8.77614 5.72386 9 6 9H8V11C8 11.2761 8.22386 11.5 8.5 11.5C8.77614 11.5 9 11.2761 9 11V9H11C11.2761 9 11.5 8.77614 11.5 8.5ZM8.5 3C11.5376 3 14 5.46243 14 8.5C14 9.83879 13.5217 11.0659 12.7266 12.0196L16.8536 16.1464C17.0488 16.3417 17.0488 16.6583 16.8536 16.8536C16.68 17.0271 16.4106 17.0464 16.2157 16.9114L16.1464 16.8536L12.0196 12.7266C11.0659 13.5217 9.83879 14 8.5 14C5.46243 14 3 11.5376 3 8.5C3 5.46243 5.46243 3 8.5 3ZM8.5 4C6.01472 4 4 6.01472 4 8.5C4 10.9853 6.01472 13 8.5 13C10.9853 13 13 10.9853 13 8.5C13 6.01472 10.9853 4 8.5 4Z\" fill=\"#424242\" /></svg>`;\nconst ToolbarDownloadIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.5 16.9988C15.7761 16.9988 16 17.2226 16 17.4988C16 17.7442 15.8231 17.9484 15.5899 17.9907L15.5 17.9988H4.5C4.22386 17.9988 4 17.7749 4 17.4988C4 17.2533 4.17688 17.0492 4.41012 17.0068L4.5 16.9988H15.5ZM10.0001 2.00098C10.2456 2.00098 10.4497 2.17798 10.492 2.41124L10.5 2.50112L10.496 14.295L14.1414 10.6466C14.3148 10.4729 14.5842 10.4534 14.7792 10.5882L14.8485 10.646C15.0222 10.8194 15.0418 11.0888 14.907 11.2838L14.8492 11.3531L10.3574 15.8531C10.285 15.9257 10.1957 15.9714 10.1021 15.9901L9.99608 15.9999C9.83511 15.9999 9.69192 15.9237 9.60051 15.8056L5.14386 11.3537C4.94846 11.1586 4.94823 10.842 5.14336 10.6466C5.3168 10.4729 5.58621 10.4534 5.78117 10.5883L5.85046 10.6461L9.496 14.287L9.5 2.50083C9.50008 2.22469 9.724 2.00098 10.0001 2.00098Z\" fill=\"#424242\"/></svg>`;\nconst ToolbarPrintIcon = `<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5 4.5C5 3.67157 5.67157 3 6.5 3H13.5C14.3284 3 15 3.67157 15 4.5V5H15.5C16.8807 5 18 6.11929 18 7.5V12.5C18 13.3284 17.3284 14 16.5 14H15V15.5C15 16.3284 14.3284 17 13.5 17H6.5C5.67157 17 5 16.3284 5 15.5V14H3.5C2.67157 14 2 13.3284 2 12.5V7.5C2 6.11929 3.11929 5 4.5 5H5V4.5ZM6 5H14V4.5C14 4.22386 13.7761 4 13.5 4H6.5C6.22386 4 6 4.22386 6 4.5V5ZM5 13V11.5C5 10.6716 5.67157 10 6.5 10H13.5C14.3284 10 15 10.6716 15 11.5V13H16.5C16.7761 13 17 12.7761 17 12.5V7.5C17 6.67157 16.3284 6 15.5 6H4.5C3.67157 6 3 6.67157 3 7.5V12.5C3 12.7761 3.22386 13 3.5 13H5ZM6.5 11C6.22386 11 6 11.2239 6 11.5V15.5C6 15.7761 6.22386 16 6.5 16H13.5C13.7761 16 14 15.7761 14 15.5V11.5C14 11.2239 13.7761 11 13.5 11H6.5Z\" fill=\"#424242\"/></svg>`;\n\n/**\n * Helper to generate a human-readable label for a field.\n */\nconst getFieldLabel = (field: IEnvelopeField) => {\n if (!field) return '';\n const typeMap: Record<string, string> = {\n signature: 'Signature',\n initial: 'Initials',\n date: 'Date',\n textbox: 'Text Field',\n checkbox: 'Checkbox',\n radio: 'Radio Button',\n dropdown: 'Dropdown',\n attachment: 'Attachment',\n payment: 'Payment',\n };\n\n const typeName = typeMap[field.type] || 'Field';\n if (field.required) {\n return `Required ${typeName}*`;\n }\n return `Optional ${typeName}`;\n};\n\n/**\n * Display an envelope signing experience. This will display the envelope's attached\n * documents with signing fields overlaid on each page.\n *\n * The component will attempt to initiate a signing session and load the specified\n * envelope. If successful, the recipient's fields will be enabled and the user will\n * be able to sign the envelope's attached documents. If not, an `sdkError` will be\n * thrown and the component will be blank/empty. To provide the best user experience,\n * applications should capture and handle this error to provide the user with\n * instructions/options for next steps based on the application's design and workflow.\n *\n * Unlike other components, this will always create its own endpoint to manage the\n * session session. This endpoint will be included in event callbacks for the\n * convenience of host applications that may wish to make server calls using the\n * signer's credentials once signing is complete (e.g. to obtain copies of\n * the signed attachments.)\n *\n * ```ts\n * <verdocs-sign\n * envelopeId={ENVELOPE_ID}\n * roleId={ROLE_ID}\n * inviteCode={INVITE_CODE}\n * onEnvelopeUpdated={({ detail }) => console.log('Envelope updated state:', detail) }\n * onSdkError={({ detail }) => { console.log('SDK error', detail) }}\n * />\n * ```\n */\n@Component({\n tag: 'verdocs-sign',\n styleUrl: 'verdocs-sign.scss',\n shadow: false,\n})\nexport class VerdocsSign {\n @Element() el: HTMLElement;\n\n /**\n * The endpoint to use to communicate with Verdocs. If not set, the default endpoint will be used.\n */\n @Prop({ mutable: true }) endpoint: VerdocsEndpoint = new VerdocsEndpoint({ sessionType: 'signing' });\n\n /**\n * The ID of the envelope to sign.\n */\n @Prop({ reflect: true }) envelopeId: string | null = null;\n\n /**\n * The ID of the role that will be signing e.g. 'Recipient 1'\n */\n @Prop({ reflect: true }) roleId: string | null = null;\n\n /**\n * The invite code for the signer.\n */\n @Prop({ reflect: true }) inviteCode: string | null = null;\n\n /**\n * If set, (recommended), the host application should create a <DIV> element with a unique ID. When this\n * component renders, the header will be removed from its default location and placed in the target element.\n * This allows the parent application to more easily control its placement and scroll effects (e.g. \"fixed\").\n *\n * The movement of the header to the target container is not dynamic - it is performed only on the initial\n * render. Host applications should not conditionally render this container. If the header's visibility must\n * be externally controlled, use CSS display options to hide/show it instead.\n */\n @Prop() headerTargetId: string | null = null;\n\n /**\n * The style of the toolbar to display.\n */\n @Prop() toolbarStyle: 'controls' | 'menu' = 'controls';\n\n /**\n * Event fired if an error occurs. The event details will contain information about the error. Most errors will\n * terminate the process, and the calling application should correct the condition and re-render the component.\n */\n @Event({ composed: true }) sdkError: EventEmitter<SDKError>;\n\n /**\n * Event fired when the envelope is loaded for the first time.\n */\n @Event({ composed: true }) envelopeLoaded: EventEmitter<{ endpoint: VerdocsEndpoint; envelope: IEnvelope }>;\n\n /**\n * Event fired when the envelope is updated in any way.\n */\n @Event({ composed: true }) envelopeUpdated: EventEmitter<{ endpoint: VerdocsEndpoint; envelope: IEnvelope; event: string }>;\n\n @State() recipient: IRecipient | null = null;\n @State() hasSignature = false;\n @State() nextButtonLabel = 'Start';\n @State() nextSubmits = false;\n @State() fatalErrorHeader = '';\n @State() fatalErrorMessage = '';\n @State() focusedField = '';\n @State() disclosures = DEFAULT_DISCLOSURES;\n @State() fieldUpdateCounter = 0;\n @State() submitting = false;\n @State() submitted = false;\n @State() isDone = false;\n @State() showDone = false;\n @State() adoptingSignature = false;\n @State() showLoadError = false;\n @State() finishLater = false;\n @State() showFinishLater = false;\n @State() agreed = false;\n @State() signatureId: string | null = null;\n @State() initialId: string | null = null;\n\n @State() documentsSingularPlural = 'document';\n @State() authStep: string | null = null;\n @State() authMethodStates: Partial<Record<TRecipientAuthMethod, string>> = {};\n @State() pageNumber = 1;\n @State() kbaQuestions: IKBAQuestion[] | null = null;\n @State() showSpinner = false;\n // @State() fieldUpdateCounter = 0;\n @State() declining = false;\n @State() delegating = false;\n @State() delegated = false;\n @State() kbaChoices = [];\n @State() showDownloadDialog = false;\n\n @State() loading = true;\n @State() envelope: IEnvelope | null = null;\n @State() zoomLevel: 'normal' | 'zoom1' | 'zoom2' = 'normal';\n\n private renderedPages: Record<string, IDocumentPageInfo> = {};\n private observer: IntersectionObserver;\n\n async componentDidLoad() {\n this.updateZoomFromWindow();\n window.addEventListener('resize', () => this.updateZoomFromWindow());\n if (!this.envelopeId) {\n this.sdkError?.emit(new SDKError('[SIGN] Missing required envelopId', 500, ''));\n return;\n }\n\n if (!this.roleId) {\n this.sdkError?.emit(new SDKError('[SIGN] Missing required roleId', 500, ''));\n return;\n }\n\n if (!this.inviteCode) {\n this.sdkError?.emit(new SDKError('[SIGN] Missing required inviteCode', 500, ''));\n return;\n }\n\n try {\n console.log(`[SIGN] Processing invite code for ${this.envelopeId} / ${this.roleId}`);\n\n // NOTE: We don't listen to the store here because we are often an independent\n // session and might have a different \"view\" of the envelope.\n const response = await startSigningSession(this.endpoint, this.envelopeId, this.roleId, this.inviteCode);\n this.processAuthResponse(response);\n\n const fillable = this.getSortedFillableFields();\n if (fillable.length > 0) {\n setTimeout(() => {\n this.focusedField = fillable[0].name;\n }, 500);\n }\n } catch (e) {\n console.log('[SIGN] Error with signing session', e);\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n this.showLoadError = true;\n }\n }\n\n componentDidRender() {\n const headerTarget = this.headerTargetId ? document.getElementById(this.headerTargetId) : null;\n const headerEl = document.getElementById('verdocs-sign-header');\n if (headerTarget && headerEl) {\n console.log('[SIGN] Moving header');\n headerEl.remove();\n headerTarget.append(headerEl);\n }\n\n this.setupIntersectionObserver();\n }\n\n disconnectedCallback() {\n this.observer?.disconnect();\n window.removeEventListener('resize', () => this.updateZoomFromWindow());\n }\n\n updateZoomFromWindow() {\n const width = window.innerWidth;\n if (width < 768) {\n if (this.zoomLevel !== 'zoom2') this.zoomLevel = 'zoom2';\n } else if (width < 1024) {\n if (this.zoomLevel !== 'zoom1') this.zoomLevel = 'zoom1';\n } else {\n if (this.zoomLevel !== 'normal') this.zoomLevel = 'normal';\n }\n }\n\n setupIntersectionObserver() {\n // We only want to set this up once the elements exist\n const pages = this.el.querySelectorAll('verdocs-envelope-document-page');\n if (pages.length === 0) return;\n\n if (this.observer) {\n this.observer.disconnect();\n }\n\n const container = this.el.querySelector('.signed-document-container');\n const options = {\n root: container,\n rootMargin: '-40% 0px -40% 0px', // Helper to trigger when the middle 20% is visible\n threshold: 0,\n };\n\n this.observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n const pageId = entry.target.id; // page-1\n const pageNum = parseInt(pageId.replace('page-', ''), 10);\n if (!isNaN(pageNum) && this.pageNumber !== pageNum) {\n // console.log('[SIGN] Updated page number via scroll', pageNum);\n this.pageNumber = pageNum;\n }\n }\n });\n }, options);\n\n pages.forEach(page => this.observer.observe(page));\n }\n\n processAuthResponse(response: ISignerTokenResponse) {\n const { envelope, recipient } = response;\n\n // TODO: Temporary fix for multi-doc ordering until the server-side ordering is fixed\n envelope.documents?.sort((a, b) => (a.order !== b.order ? b.order - a.order : b.created_at.localeCompare(a.created_at)));\n\n const { auth_step } = recipient;\n this.recipient = recipient;\n this.envelope = envelope;\n this.disclosures = this.envelope?.organization?.disclaimer || DEFAULT_DISCLOSURES;\n this.authStep = auth_step;\n this.delegated = !!recipient.delegated_to;\n this.agreed = recipient.agreed;\n this.signatureId = response.signatures?.[0]?.id || null;\n this.initialId = response.initials?.[0]?.id || null;\n this.submitted = recipient.status === 'submitted';\n this.loading = false;\n this.isDone = this.submitted;\n this.showDone = this.submitted;\n Store.updateEnvelope(this.envelopeId, envelope);\n\n if (this.envelope.documents.length > 0) {\n this.documentsSingularPlural = 'document(s)';\n }\n\n this.authMethodStates = recipient.auth_method_states || ({} as Record<TRecipientAuthMethod, string>);\n this.kbaQuestions = recipient.kba_questions;\n if (Object.values(this.authMethodStates).includes('failed')) {\n this.fatalErrorHeader = 'Recipient Verification Failed';\n this.fatalErrorMessage = 'We were unable to verify your identity. The sender has been notified.';\n this.isDone = true;\n }\n\n // TODO: Envelope \"complete\" | \"declined\" | \"canceled\"\n // TODO: Recipient \"canceled\"\n\n if (this.envelope.status === 'canceled') {\n this.fatalErrorHeader = 'Unable to Start Signing Session';\n this.fatalErrorMessage = 'This envelope has been canceled. The sender has been notified.';\n } else if (recipient.status === 'declined') {\n this.fatalErrorHeader = 'Declined';\n this.fatalErrorMessage = 'You have declined to sign this request. The sender has been notified.';\n } else if (this.agreed) {\n this.nextButtonLabel = 'Next';\n }\n\n this.checkRecipientFields();\n this.envelopeLoaded?.emit({ endpoint: this.endpoint, envelope: this.envelope });\n }\n\n handleClickAgree() {\n this.submitting = true;\n console.log('[SIGN] Accepting disclosures', this.disclosures);\n envelopeRecipientAgree(this.endpoint, this.envelopeId, this.roleId, this.disclosures)\n .then(() => {\n this.nextButtonLabel = 'Next';\n this.recipient.agreed = true;\n this.submitting = false;\n this.agreed = true; // The server returns a recipient object but it's not \"deep\" so we track this locally\n this.envelopeUpdated?.emit({ endpoint: this.endpoint, envelope: this.envelope, event: 'agreed' });\n })\n .catch(e => {\n console.log('[SIGN] Unable to accept disclosures', e);\n VerdocsToast('Unable to accept disclosures, please try again later', { style: 'error' });\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n this.submitting = false;\n });\n }\n\n handlePageSelect(e: any) {\n const pageNumber = parseInt(e.target.value);\n if (!isNaN(pageNumber)) {\n this.pageNumber = pageNumber;\n // We manually scroll the container to the top of the page element.\n // This avoids issues where the page might be nested or scrollIntoView behaves unexpectedly.\n const container = this.el.querySelector('.signed-document-container');\n const pageEl = this.el.querySelector(`#page-${pageNumber}`) as HTMLElement;\n\n if (container && pageEl) {\n // 20px buffer for visual spacing\n const top = pageEl.offsetTop - 20;\n container.scrollTo({ top, behavior: 'smooth' });\n }\n }\n }\n\n async handleOptionSelected(e: any) {\n switch (e.detail.id) {\n case 'later':\n this.finishLater = true;\n this.showFinishLater = true;\n this.envelopeUpdated?.emit({ endpoint: this.endpoint, envelope: this.envelope, event: 'later' });\n break;\n\n case 'delegate':\n this.delegating = true;\n break;\n\n case 'decline':\n this.declining = true;\n break;\n\n case 'print':\n window.print();\n this.envelopeUpdated?.emit({ endpoint: this.endpoint, envelope: this.envelope, event: 'printed' });\n break;\n\n case 'download':\n this.showDownloadDialog = true;\n break;\n }\n }\n\n handleZoomIn() {\n if (this.zoomLevel === 'normal') {\n this.zoomLevel = 'zoom1';\n } else if (this.zoomLevel === 'zoom1') {\n this.zoomLevel = 'zoom2';\n }\n }\n\n handleZoomOut() {\n if (this.zoomLevel === 'zoom1') {\n this.zoomLevel = 'normal';\n } else if (this.zoomLevel === 'zoom2') {\n this.zoomLevel = 'zoom1';\n }\n }\n\n updateRecipientFieldValue(fieldName: string, updateResult: any) {\n console.log('[SIGN] updateRecipientFieldValue', fieldName, updateResult);\n this.getRecipientFields().forEach(oldField => {\n if (oldField.name === fieldName) {\n oldField.value = updateResult.value;\n // TODO: Keeping this while attachments still rely on it\n oldField.settings = updateResult.settings;\n updateDocumentFieldValue(oldField);\n this.fieldUpdateCounter++;\n this.checkRecipientFields();\n }\n });\n }\n\n saveFieldChange(fieldName: string, value: string, prepared: boolean) {\n // Although the inputs disable themselves, the blur handler can still try to re-save\n // the value already in the field. Bypassing that here is easier than adding yet more\n // logic to the fields.\n const field = this.getRecipientFields().find(field => field.name === fieldName);\n if (field?.readonly) {\n return;\n }\n\n console.log('[SIGN] saveFieldChange', fieldName, { value, prepared });\n updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, fieldName, value, prepared)\n .then(updateResult => this.updateRecipientFieldValue(fieldName, updateResult))\n .catch(e => {\n if (e.response?.status === 401 && e.response?.data?.error === 'jwt expired') {\n console.log('[SIGN] Signing session expired');\n this.fatalErrorHeader = 'Signing Session Expired';\n this.fatalErrorMessage = 'Please reload your browser to continue.';\n } else {\n console.log('[SIGN] Server error', e);\n VerdocsToast('Unable to save change, please try again later', { style: 'error' });\n }\n\n this.sdkError?.emit(new SDKError(e.message, e.response?.status, e.response?.data));\n });\n }\n\n async handleFieldChange(field: IEnvelopeField, e: any) {\n const { value, checked } = e.target;\n\n switch (field.type as any) {\n // TODO: Remove legacy type when no longer needed\n case 'textarea':\n case 'textbox':\n return this.saveFieldChange(field.name, value, false);\n\n case 'checkbox': {\n return this.saveFieldChange(field.name, String(e.target.checked), false);\n }\n\n case 'radio': {\n return this.saveFieldChange(field.name, String(e.target.checked), false);\n }\n\n case 'dropdown':\n // TODO: Set prepared to false server-side.\n console.log('Saving dropdown', field.name, e.detail);\n return this.saveFieldChange(field.name, e.detail, false);\n\n case 'initial':\n // This can be caused by a focus-out event if the user clicks the field\n // after it's already filled in, then clicks something else like a textbox.\n // We don't visually indicate the focus, but it's still there.\n // NOTE: We now allow null to clear the field\n if (e.detail === undefined) {\n return;\n }\n\n if (e.detail === null) {\n console.log('[SIGN] Clearing initial');\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, null, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If we already have an initials block, apply it\n if (this.initialId) {\n console.log('[SIGN] Reusing initial', this.initialId);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.initialId, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If it's a UUID, it's an existing initial ID we can just reuse\n if (typeof e.detail === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e.detail)) {\n console.log('[SIGN] Reusing initial', e.detail);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, e.detail, false);\n this.initialId = e.detail;\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n this.showSpinner = true;\n const initialsBlob = await (await fetch(e.detail)).blob();\n return createInitials(this.endpoint, 'initial', initialsBlob) //\n .then(async newInitials => {\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, newInitials.id, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.initialId = newInitials.id;\n this.showSpinner = false;\n })\n .catch(e => {\n console.log('Error updating initials', e);\n VerdocsToast('Unable to save initials, please try again later', { style: 'error' });\n this.showSpinner = false;\n });\n\n case 'signature':\n // This can be caused by a focus-out event if the user clicks the field\n // after it's already filled in, then clicks something else like a textbox.\n // We don't visually indicate the focus, but it's still there.\n // NOTE: We now allow null to clear the field\n if (e.detail === undefined) {\n return;\n }\n\n if (e.detail === null) {\n console.log('[SIGN] Clearing signature');\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, null, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If we already have a signature block, apply it\n if (this.signatureId) {\n console.log('[SIGN] Reusing signature', this.signatureId);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.signatureId, false);\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n // If it's a UUID, it's an existing signature ID we can just reuse\n if (typeof e.detail === 'string' && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e.detail)) {\n console.log('[SIGN] Reusing signature', e.detail);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, e.detail, false);\n this.signatureId = e.detail;\n return this.updateRecipientFieldValue(field.name, updateResult);\n }\n\n this.showSpinner = true;\n const signatureBlob = await (await fetch(e.detail)).blob();\n console.log('[SIGN] Creating new signature');\n return createSignature(this.endpoint, 'signature', signatureBlob) //\n .then(async newSignature => {\n console.log('Signature update result', newSignature);\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, newSignature.id, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.signatureId = newSignature.id;\n this.showSpinner = false;\n })\n .catch(e => {\n console.warn('[SIGN] Error updating signature', e);\n VerdocsToast('Unable to save signature, please try again later', { style: 'error' });\n this.showSpinner = false;\n });\n\n case 'date':\n const { formattedDate } = e.detail;\n if (formattedDate) {\n return this.saveFieldChange(field.name, formattedDate, false);\n }\n break;\n\n case 'timestamp':\n console.log('[SIGN] Updating timestamp', { value, ts: e.target.getAttribute('timestamp') });\n break;\n\n default:\n console.log('[SIGN] Unhandled field update', { value, checked }, field);\n break;\n }\n }\n\n getSortedFillableFields() {\n const recipientFields = this.getRecipientFields().filter(field => field.type !== 'timestamp' && !field.readonly);\n sortFields(recipientFields);\n return recipientFields;\n }\n\n handleNext() {\n if (this.nextSubmits) {\n try {\n // Patches the date picker to be forcibly removed if still showing during submission\n document.getElementById('air-datepicker-global-container')?.remove();\n\n this.submitting = true;\n const result = envelopeRecipientSubmit(this.endpoint, this.envelopeId, this.roleId);\n console.log('[SIGN] Submitted successfully', result);\n // TODO: The \"proper\" way is generating an error from Stencil\n // NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which\n // the new node is to be inserted is not a child of this node.\n window.location.reload();\n } catch (e) {\n console.log('[SIGN] Error submitting', e);\n }\n\n return;\n }\n\n const nextRequiredField = this.getNextRequiredField();\n\n if (nextRequiredField) {\n const id = getFieldId(nextRequiredField);\n const el = document.getElementById(id) as any;\n el?.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n el?.focusField();\n this.focusedField = nextRequiredField.name;\n }\n }\n\n getRecipientFields() {\n return this.envelope?.fields.filter(field => field.role_name === this.recipient.role_name) || [];\n }\n\n // See if everything that \"needs to be\" filled in is, and all \"fillable fields\" are valid\n checkRecipientFields() {\n const invalidFields = this.getRecipientFields().filter(field => !isFieldValid(field, this.getRecipientFields()));\n if (invalidFields.length < 1) {\n this.nextButtonLabel = 'Finish';\n if (!this.nextSubmits) {\n this.nextSubmits = true;\n }\n } else {\n this.nextButtonLabel = 'Next';\n this.nextSubmits = false;\n }\n this.updateAllFlags();\n }\n\n getNextRequiredField() {\n // Find and focus the next incomplete field (that is fillable)\n const emptyFields = this.getSortedFillableFields().filter(field => field.required && !isFieldFilled(field, this.getRecipientFields()));\n sortFields(emptyFields);\n\n // console.log(\n // '[SIGN] Pending fields',\n // emptyFields.map(f => `${f.name} (${f.type}) req=${f.required}`),\n // );\n\n if (emptyFields.length === 0) {\n const allUnfilled = this.getSortedFillableFields().filter(field => !isFieldFilled(field, this.getRecipientFields()));\n sortFields(allUnfilled);\n if (allUnfilled.length > 0) {\n // If we are here, there are no required fields left, but there are optional ones.\n return this.getNextFieldFromList(allUnfilled);\n }\n return null;\n }\n\n return this.getNextFieldFromList(emptyFields);\n }\n\n getNextFieldFromList(fields: IEnvelopeField[]) {\n const focusedIndex = fields.findIndex(field => field.name === this.focusedField);\n let nextFocusedIndex = focusedIndex + 1;\n if (nextFocusedIndex >= fields.length) {\n nextFocusedIndex = 0;\n }\n\n // Note: isFieldFilled check above should handle 'initialed'/'signed'.\n return fields[nextFocusedIndex];\n }\n\n handlePrev() {\n const allFields = this.getSortedFillableFields();\n const focusedIndex = allFields.findIndex(f => f.name === this.focusedField);\n if (focusedIndex > 0) {\n const prevField = allFields[focusedIndex - 1];\n const id = getFieldId(prevField);\n const el = document.getElementById(id) as any;\n el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el?.focusField?.();\n this.focusedField = prevField.name;\n }\n }\n\n updateAllFlags() {\n Object.values(this.renderedPages).forEach(pageInfo => {\n this.updateFlagsForPage(pageInfo);\n });\n }\n\n updateFlagsForPage(pageInfo: IDocumentPageInfo) {\n if (!pageInfo) return;\n\n const controlsDiv = document.getElementById(pageInfo.containerId + '-controls');\n if (!controlsDiv) return;\n\n // Remove existing flags\n const existingFlags = controlsDiv.querySelectorAll('.verdocs-flag-instance');\n existingFlags.forEach(el => el.remove());\n\n let nextField = this.getNextRequiredField();\n const focusedFieldObj = this.getRecipientFields().find(f => f.name === this.focusedField);\n\n // If the currently focused field is unfilled, we should point the flag to IT, not the next one.\n // getNextRequiredField() is designed for the \"Next\" button (skipping current), but the visual flag\n // should guide the user to the current task if it's incomplete.\n if (focusedFieldObj && !isFieldFilled(focusedFieldObj, this.getRecipientFields())) {\n nextField = focusedFieldObj;\n }\n\n if (nextField && nextField.page === pageInfo.pageNumber && nextField.document_id === pageInfo.documentId) {\n const variant = 'fill';\n let label = 'FILL';\n let showSkip = false;\n\n if (!nextField.required) {\n label = 'FILL';\n showSkip = true; // Use the X to skip? Or just text? \"Fill or Skip\" implies maybe just text.\n }\n\n renderDocumentFlag(pageInfo, nextField.y, nextField.height || defaultHeight(nextField.type), {\n variant,\n label,\n showSkip,\n onSkip: () => {\n this.handleNext();\n },\n onClick: () => {\n const id = getFieldId(nextField);\n const el = document.getElementById(id) as any;\n el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n el?.focusField?.();\n },\n });\n }\n }\n\n attachFieldAttributes(pageInfo, field, el) {\n // We can get called multiple times as rendering completes and it's hard to avoid that\n // because it's a ton of work for the callers to know it's been done already. But we\n // don't want to attach multiple event listeners or we get dupe event handling, like\n // calling the server twice on every field update. Since JS has no removeAllEventListeners()\n // option, using removeEventListener() isn't reliable the way Stencil binds local function\n // contexts, and cloneNode messes up the rest of the rendering, we just track it with a flag.\n if (el.getAttribute('attached') === '1') {\n return;\n }\n el.setAttribute('attached', '1');\n\n el.addEventListener('input', (e: any) => {\n // console.log('[SIGN] onfieldInput', e.detail, e.target.value);\n // These field types don't emit fieldChange. Should we standardize on that? We don't tap \"input\" for fields like\n // text boxes because we'd be updating the field on every keystroke. We do those on blur which fires fieldChange.\n if (e.target.type === 'radio' || e.target.type === 'checkbox') {\n // if (e.target.type === 'radio' || e.target.name.includes('date') || e.target.name.includes('checkbox')) {\n this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());\n } else {\n this.checkRecipientFields();\n }\n });\n el.addEventListener('attached', async (e: any) => {\n console.log('[SIGN] onAttached', e.detail, e.target.value);\n this.showSpinner = true;\n try {\n const updateResult = await uploadEnvelopeFieldAttachment(this.endpoint, this.envelopeId, this.roleId, field.name, e.detail);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.checkRecipientFields();\n\n const newEl = renderDocumentField('envelope', field, pageInfo, { disabled: false, editable: false, draggable: false, done: this.isDone });\n this.attachFieldAttributes(pageInfo, field, newEl);\n\n this.showSpinner = false;\n } catch (e) {\n console.log('Error uploading attachment', e);\n VerdocsToast('Unable to upload attachment, please try again later', { style: 'error' });\n this.showSpinner = false;\n }\n });\n el.addEventListener('deleted', async (e: any) => {\n console.log('[SIGN] onDeleted', e.detail, e.target.value);\n this.showSpinner = true;\n try {\n const updateResult = await deleteEnvelopeFieldAttachment(this.endpoint, this.envelopeId, this.roleId, field.name);\n console.log('[SIGN] Deleted attachment', updateResult);\n this.updateRecipientFieldValue(field.name, updateResult);\n this.checkRecipientFields();\n\n const newEl = renderDocumentField('envelope', field, pageInfo, { disabled: false, editable: false, draggable: false, done: this.isDone });\n this.attachFieldAttributes(pageInfo, field, newEl);\n\n this.showSpinner = false;\n } catch (e) {\n console.log('Error uploading attachment', e);\n VerdocsToast('Unable to upload attachment, please try again later', { style: 'error' });\n this.showSpinner = false;\n }\n });\n el.addEventListener('focusout', e => {\n // These field types trigger focusout as they're used, even without a value change.\n // Signature/Initial fields handle their own changes via fieldChange/adopt events, so we ignore focusout to prevent double-saves.\n if (field.type !== 'dropdown' && field.type !== 'attachment' && field.type !== 'signature' && field.type !== 'initial') {\n this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());\n }\n });\n el.addEventListener('fieldChange', e => {\n this.handleFieldChange(field, e).finally(() => this.checkRecipientFields());\n });\n el.addEventListener('adopt', () => {\n this.focusedField = field.name;\n this.adoptingSignature = true;\n });\n\n el.setAttribute('templateid', this.envelope.template_id);\n el.setAttribute('fieldname', field.name);\n el.setAttribute('page', pageInfo.pageNumber);\n el.setAttribute('xScale', pageInfo.xScale);\n el.setAttribute('yScale', pageInfo.yScale);\n\n const fullName = formatFullName(this.recipient);\n el.setAttribute('initials', fullNameToInitials(fullName));\n el.setAttribute('name', fullName);\n if (this.signatureId) {\n el.setAttribute('signatureid', this.signatureId);\n }\n if (this.initialId) {\n el.setAttribute('initialid', this.initialId);\n }\n }\n\n handlePageRendered(e: any) {\n const pageInfo = e.detail as IDocumentPageInfo;\n this.renderedPages[`${pageInfo.documentId}:${pageInfo.pageNumber}`] = pageInfo;\n\n // console.log('Page rendered', pageInfo);\n\n // NOTE: We don't filter on pageNumber here because we need the position in the\n // entire list to set the tabIndex.\n const recipientFields = this.getSortedFillableFields();\n // console.log('[SIGN] Rendering fields for page', pageInfo.pageNumber, recipientFields);\n\n // First render the fields for the signer\n recipientFields\n .filter(field => field && field.document_id === pageInfo.documentId && field.page === pageInfo.pageNumber)\n .forEach((field, tabIndex) => {\n const el = renderDocumentField('envelope', field, pageInfo, { disabled: false, editable: false, draggable: false, done: this.isDone }, tabIndex);\n if (!el) {\n return;\n }\n\n if (Array.isArray(el)) {\n el.map(e => this.attachFieldAttributes(pageInfo, field, e));\n } else {\n this.attachFieldAttributes(pageInfo, field, el);\n }\n });\n\n // Now render the fields for other signers who have yet to act\n this.envelope.recipients\n .filter(r => r.role_name !== this.recipient.role_name && (r.status === 'invited' || r.status === 'opened' || r.status === 'pending'))\n .forEach(() => {\n this.getRecipientFields()\n .filter(field => field.document_id === pageInfo.documentId && field.page === pageInfo.pageNumber)\n .forEach(field => {\n const el = renderDocumentField('envelope', field, pageInfo, { disabled: true, editable: false, draggable: false, done: this.isDone });\n if (!el) {\n return;\n }\n\n if (Array.isArray(el)) {\n el.map(e => this.attachFieldAttributes(pageInfo, field, e));\n } else {\n this.attachFieldAttributes(pageInfo, field, el);\n }\n });\n });\n\n this.checkRecipientFields();\n this.updateFlagsForPage(pageInfo);\n }\n\n handleAuthenticateSigner(params: TAuthenticateRecipientRequest) {\n console.log('[SIGN] Submitting authentication step', params);\n verifySigner(this.endpoint, params)\n .then(r => {\n console.log('[SIGN] Verification successful', r);\n this.processAuthResponse(r);\n })\n .catch(e => {\n console.log('[SIGN] Error submitting authentication step', e);\n console.log(e.response?.data);\n if (e.response?.data?.error?.includes('failed')) {\n this.fatalErrorHeader = 'Recipient Verification Failed';\n this.fatalErrorMessage = 'We were unable to verify your identity. The sender has been notified.';\n this.isDone = true;\n } else {\n VerdocsToast(e.response?.data?.error || 'Unable to verify your identity. Please try again.', { style: 'error' });\n }\n });\n }\n\n render() {\n if (this.showLoadError) {\n return (\n <Host>\n <verdocs-ok-dialog\n heading=\"Unable to Start Signing\"\n message={`Sorry, your invite code is invalid or has expired. Please check your email for an updated invitation, or contact the sender.`}\n buttonLabel=\"OK\"\n onNext={() => {\n window.location.reload();\n }}\n />\n </Host>\n );\n }\n\n if (!this.envelope) {\n return (\n <Host>\n <verdocs-loader />\n </Host>\n );\n }\n\n if (this.fatalErrorMessage) {\n return (\n <Host class={{ agreed: this.agreed }}>\n <div class=\"fatal-error\">\n <div class=\"message\">\n <div class=\"header\">{this.fatalErrorHeader}</div>\n <p>{this.fatalErrorMessage}</p>\n </div>\n </div>\n </Host>\n );\n }\n\n if (this.delegated) {\n return (\n <Host class={{ agreed: false }}>\n <div class=\"fatal-error\">\n <div class=\"message\">\n <div class=\"header\">Delegated Signing Request</div>\n <p>You have delegated signing to another recipient. You will not be able to sign this request again.</p>\n </div>\n </div>\n </Host>\n );\n }\n\n if (this.isDone) {\n return (\n <Host class={{ agreed: this.agreed }}>\n <verdocs-view endpoint={this.endpoint} envelopeId={this.envelopeId} onSdkError={e => this.sdkError?.emit(e.detail)} />\n\n {this.showDone && (\n <verdocs-ok-dialog\n heading=\"You're Done!\"\n 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 document and envelope certificate attached.`}\n onNext={(e: any) => {\n e.preventDefault();\n e.stopPropagation();\n this.showDone = false;\n this.isDone = true;\n }}\n />\n )}\n\n {this.submitting && (\n <div class=\"loading-indicator\">\n <verdocs-loader />\n </div>\n )}\n </Host>\n );\n }\n\n if (this.delegating) {\n return (\n <Host class=\"agreed\">\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <verdocs-delegate-dialog\n endpoint={this.endpoint}\n envelope={this.envelope}\n onExit={() => (this.delegating = false)}\n onNext={(e: any) => {\n delegateRecipient(this.endpoint, this.envelopeId, this.roleId, e.detail)\n .then(r => {\n VerdocsToast('Delegation request submitted.', { style: 'success' });\n console.log('[SIGN] Delegated successfully', r);\n this.delegated = true;\n this.delegating = false;\n })\n .catch(e => {\n console.log('[SIGN] Error delegating request', e);\n VerdocsToast('Unable to process delegation request. Please try again later.', { style: 'error' });\n });\n }}\n />\n </Host>\n );\n }\n\n if (this.declining) {\n return (\n <Host class=\"agreed\">\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <verdocs-ok-dialog\n heading=\"Decline Signing Request\"\n message={`If you decline to sign this request, you will not be able to sign again in the future. The envelope sender will be notified.`}\n buttonLabel=\"OK\"\n showCancel={true}\n onExit={() => (this.declining = false)}\n onNext={() => {\n envelopeRecipientDecline(this.endpoint, this.envelopeId, this.roleId)\n .then(r => {\n console.log('[SIGN] Decline result', r);\n window.location.reload();\n })\n .catch(e => {\n console.warn('[SIGN] Error declining signing session', e);\n VerdocsToast('Unable to decline, please try again later', { style: 'error' });\n });\n }}\n />\n </Host>\n );\n }\n\n if (!this.agreed) {\n return (\n <Host class=\"agreed\">\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <verdocs-disclosure-dialog\n disclosures={this.disclosures}\n delegator={this.recipient.delegator}\n onDelegate={() => (this.delegating = true)}\n onDecline={() => (this.declining = true)}\n onAccept={() => this.handleClickAgree()}\n />\n </Host>\n );\n }\n\n if (this.authStep === 'passcode') {\n return <verdocs-passcode-dialog endpoint={this.endpoint} onNext={e => this.processAuthResponse(e.detail.response)} />;\n }\n\n if (this.authStep === 'email') {\n return (\n <verdocs-otp-dialog\n endpoint={this.endpoint}\n method=\"email\"\n onNext={async e => {\n this.processAuthResponse(e.detail.response);\n }}\n />\n );\n }\n\n if (this.authStep === 'kba' && !this.authMethodStates.kba) {\n return (\n <Host class=\"kba\">\n <div id=\"verdocs-sign-header\">\n <div class=\"inner\">\n <img src=\"https://verdocs.com/assets/white-logo.svg\" alt=\"Verdocs Logo\" class=\"logo\" />\n <div class=\"title\">{this.envelope.name}</div>\n </div>\n </div>\n\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <div class=\"cover\">\n <div class=\"kba\">\n <verdocs-kba-dialog\n mode=\"identity\"\n helptitle=\"Document requires identity verification\"\n helptext=\"Please complete your contact details to proceed.\"\n recipient={this.recipient}\n onNext={async e => {\n const recipDetails = e.detail as IRecipient;\n this.handleAuthenticateSigner({\n auth_method: 'kba',\n first_name: recipDetails.first_name,\n last_name: recipDetails.last_name,\n address: recipDetails.address,\n city: recipDetails.city,\n state: recipDetails.state,\n zip: recipDetails.zip,\n dob: recipDetails.dob,\n });\n }}\n />\n </div>\n </div>\n </Host>\n );\n }\n\n if (this.authStep === 'kba' && this.authMethodStates.kba === 'questions') {\n const questionNumber = this.kbaChoices.length;\n const kbaQuestion = this.kbaQuestions[questionNumber];\n return (\n <Host class=\"kba\">\n <div id=\"verdocs-sign-header\">\n <div class=\"inner\">\n <img src=\"https://verdocs.com/assets/white-logo.svg\" alt=\"Verdocs Logo\" class=\"logo\" />\n <div class=\"title\">{this.envelope.name}</div>\n </div>\n </div>\n\n <div class=\"document\" style={{ paddingTop: '15px' }}>\n <img\n src=\"https://public-assets.verdocs.com/loading-placeholder.png\"\n style={{ width: '612px', height: '792px', boxShadow: '0 0 10px 5px #0000000f', marginTop: '15px' }}\n alt=\"Placeholder page\"\n />\n </div>\n\n <div class=\"cover\">\n <div class=\"kba\">\n {this.kbaChoices.length >= this.kbaQuestions.length ? (\n <verdocs-spinner />\n ) : (\n <verdocs-kba-dialog\n mode=\"choice\"\n helptitle=\"Your identity requires additional verification\"\n helptext={kbaQuestion?.prompt || 'Please select one of the options below.'}\n choices={kbaQuestion?.answer || ['Skip Question']}\n step={questionNumber + 1}\n steps={this.kbaQuestions.length}\n onNext={async (e: any) => {\n const answer = e.detail as string;\n this.kbaChoices = [...this.kbaChoices, answer];\n if (this.kbaChoices.length >= this.kbaQuestions.length) {\n const responses = this.kbaQuestions.map((q, i) => ({ type: q.type, answer: this.kbaChoices[i] }));\n console.log('Submitting KBA responses', this.kbaChoices, responses);\n this.handleAuthenticateSigner({ auth_method: 'kba', responses });\n }\n }}\n />\n )}\n </div>\n </div>\n </Host>\n );\n }\n\n const inProgressMenuOptions = [\n { id: 'later', label: 'Finish Later' }, //\n // {id: 'claim', label: 'Claim the Document', disabled: true},\n { id: 'decline', label: 'Decline to Sign' },\n { id: 'print', label: 'Print Without Signing' },\n { id: 'download', label: 'Download' },\n ];\n\n const doneMenuOptions = [\n { id: 'print', label: 'Print' },\n { id: 'download', label: 'Download' },\n ];\n\n if (this.recipient.delegator) {\n inProgressMenuOptions.unshift({ id: 'delegate', label: 'Delegate' });\n }\n console.log('this.getRecipientFields()', this.getRecipientFields());\n\n const invalidFields = this.getRecipientFields().filter(field => !isFieldValid(field, this.getRecipientFields()));\n invalidFields.length > 0\n ? console.log(\n '[SIGN] Invalid fields remaining',\n invalidFields.map(field => field.name),\n )\n : console.log('[SIGN] All field valid');\n\n const totalPages = this.envelope.documents.reduce((acc, doc) => acc + doc.pages, 0);\n const pageOptions = integerSequence(1, totalPages).map(p => ({ label: p.toString(), value: p.toString() }));\n let globalPageCounter = 0;\n\n return (\n <Host>\n {this.toolbarStyle === 'menu' && (\n <div id=\"verdocs-sign-header\">\n <div class=\"inner\">\n <img src=\"https://verdocs.com/assets/white-logo.svg\" alt=\"Verdocs Logo\" class=\"logo\" />\n <div class=\"title\">{this.envelope.name}</div>\n <div style={{ flex: '1' }} />\n\n {!this.finishLater && <verdocs-button size=\"xsmall\" label={this.nextButtonLabel} disabled={!this.agreed || this.submitting} onClick={() => this.handleNext()} />}\n\n <div style={{ marginLeft: '10px' }} />\n <verdocs-dropdown options={!this.isDone && !this.finishLater ? inProgressMenuOptions : doneMenuOptions} onOptionSelected={e => this.handleOptionSelected(e)} />\n </div>\n </div>\n )}\n\n {this.toolbarStyle === 'controls' && (\n <div class=\"controls-toolbar\">\n <div class=\"left-controls\">\n <div class=\"title\">{this.envelope.name}</div>\n </div>\n <div class=\"center-controls\">\n <span class=\"label\">Page</span>\n <div class=\"select-wrapper\">\n <verdocs-select-input options={pageOptions} value={this.pageNumber.toString()} onInput={e => this.handlePageSelect(e)} />\n </div>\n <span class=\"count\">of {totalPages}</span>\n </div>\n <div class=\"right-controls\">\n <verdocs-button class=\"mobile-next-button\" label={this.nextButtonLabel} size=\"xsmall\" disabled={!this.agreed || this.submitting} onClick={() => this.handleNext()} />\n <div class={{ 'icon-button': true, 'minus': true, 'disabled': this.zoomLevel === 'normal' }} innerHTML={ToolbarMinusIcon} onClick={() => this.handleZoomOut()} />\n <div class={{ 'icon-button': true, 'plus': true, 'disabled': this.zoomLevel === 'zoom2' }} innerHTML={ToolbarPlusIcon} onClick={() => this.handleZoomIn()} />\n <div class=\"icon-button download\" innerHTML={ToolbarDownloadIcon} onClick={() => this.handleOptionSelected({ detail: { id: 'download' } })} />\n <div class=\"icon-button print\" innerHTML={ToolbarPrintIcon} onClick={() => this.handleOptionSelected({ detail: { id: 'print' } })} />\n </div>\n </div>\n )}\n\n {/* Progress Card */}\n {(() => {\n // Dependencies: focusedField, fieldUpdateCounter (to force re-calc)\n // console.log('[SIGN] Render progress', this.focusedField, this.fieldUpdateCounter);\n // Calculate detailed progress\n const allFields = this.getSortedFillableFields();\n const recipientFields = this.getRecipientFields();\n\n const isFilled = (f: IEnvelopeField) => isFieldFilled(f, recipientFields) && (f.type !== 'dropdown' || !!f.value);\n\n const requiredFields = allFields.filter(f => f.required);\n const requiredRemaining = requiredFields.filter(f => !isFilled(f)).length;\n\n const optionalFields = allFields.filter(f => !f.required);\n const optionalRemaining = optionalFields.filter(f => !isFilled(f)).length;\n\n const progress = {\n required: {\n remaining: requiredRemaining,\n total: requiredFields.length,\n },\n optional: {\n remaining: optionalRemaining,\n total: optionalFields.length,\n },\n };\n\n const focusedFieldObj = this.getSortedFillableFields().find(f => f.name === this.focusedField);\n const currentIndex = this.getSortedFillableFields().findIndex(f => f.name === this.focusedField) + 1;\n const totalFields = this.getSortedFillableFields().length;\n const remainingFields = this.getSortedFillableFields()\n .filter(f => f.required && !isFilled(f))\n .map(f => ({ name: f.name, type: f.type, required: f.required }));\n\n console.log('[SIGN] Progress Debug:', {\n allFields: allFields.length,\n requiredFields: requiredFields.length,\n requiredRemaining,\n optionalFields: optionalFields.length,\n optionalRemaining,\n filledFields: recipientFields.filter(f => isFilled(f)).map(f => ({ name: f.name, type: f.type, val: f.value })),\n });\n\n let mode: 'start' | 'signing' | 'completed' = 'start';\n // We only consider the user to have started \"signing\" if they have filled out at least one *fillable* field.\n // Readonly fields do not count.\n const anyFieldFilled = requiredRemaining < requiredFields.length || optionalRemaining < optionalFields.length;\n if (this.nextSubmits) {\n mode = 'completed';\n } else if (anyFieldFilled) {\n mode = 'signing';\n }\n\n return (\n <verdocs-signing-progress\n mode={mode}\n current={Math.max(1, currentIndex)}\n total={totalFields}\n remainingFields={remainingFields}\n progress={progress}\n fieldLabel={getFieldLabel(focusedFieldObj)}\n fieldCompleted={focusedFieldObj ? !!isFilled(focusedFieldObj) : false}\n onStarted={() => {\n this.adoptingSignature = true;\n // this.handleNext();\n }}\n onNext={() => this.handleNext()}\n onPrevious={() => this.handlePrev()}\n onExit={() => this.handleNext()}\n />\n );\n })()}\n\n <div class={`document signed-document-container zoom-${this.zoomLevel}`}>\n {(this.envelope.documents || []).map(envelopeDocument => {\n const pageNumbers = integerSequence(1, envelopeDocument.pages);\n\n return (\n <Fragment>\n {this.envelope.documents.length > 1 && (\n <div class=\"document-separator\">\n <div innerHTML={DocumentPageIcon} />\n <span>{envelopeDocument.name}</span>\n </div>\n )}\n\n {pageNumbers.map(pageNumber => {\n const pageSize = envelopeDocument.page_sizes?.[pageNumber] || { width: 612, height: 792 };\n globalPageCounter++;\n\n // In signing mode we show the original template page with all the recipient fields so we can show source formatting and\n // where everything went. This is also a visual indicator when optional fields weren't filled in by previous actors, or\n // future signers still need to act. Once we're \"done\" we flip to showing the envelope's documents which have the final\n // field vales (so far) stamped into them.\n // TODO: Confirm that a pure page-number match is good enough to find the matching template page. We need to make sure\n // we either don't reset our page numbers for additional attachments, or add match-on identifiers to work around that.\n // console.log('tp', templatePage, page);\n return (\n <verdocs-envelope-document-page\n id={`page-${globalPageCounter}`}\n envelopeId={this.envelopeId}\n documentId={envelopeDocument.id}\n endpoint={this.endpoint}\n virtualWidth={pageSize.width}\n virtualHeight={pageSize.height}\n pageNumber={pageNumber}\n onPageRendered={e => this.handlePageRendered(e)}\n type=\"filled\"\n layers={[\n { name: 'page', type: 'canvas' },\n { name: 'controls', type: 'div' },\n ]}\n />\n );\n })}\n </Fragment>\n );\n })}\n </div>\n\n {this.showFinishLater && (\n <verdocs-ok-dialog\n heading=\"You've saved your document to finish later.\"\n message={`To complete the ${this.documentsSingularPlural}, use the link in the original email notification inviting you to review and finish the document.`}\n onNext={() => {\n this.isDone = true;\n this.showFinishLater = false;\n }}\n />\n )}\n\n {this.showDone && (\n <verdocs-ok-dialog\n heading=\"You're Done!\"\n 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 document and envelope certificate attached.`}\n onNext={() => {\n this.showDone = false;\n this.isDone = true;\n }}\n />\n )}\n\n {this.adoptingSignature && (\n <verdocs-adopt-signature-dialog\n name={formatFullName(this.recipient)}\n onNext={async e => {\n console.log('[SIGN] Adopting signature/initials block', e.detail);\n\n this.showSpinner = true;\n\n // These arrive as base-64 encoded data URLs\n const signatureBlob = await (await fetch(e.detail.signature)).blob();\n const initialsBlob = await (await fetch(e.detail.initials)).blob();\n\n const sigResult = await createSignature(this.endpoint, 'signature', signatureBlob);\n console.log('[SIGN] Created signature', sigResult);\n this.signatureId = sigResult.id;\n\n const initResult = await createInitials(this.endpoint, 'initial', initialsBlob);\n console.log('[SIGN] Created initials', initResult);\n this.initialId = initResult.id;\n\n this.showSpinner = false;\n this.adoptingSignature = false;\n\n // If we have a focused field, we should auto-apply the new signature/initials to it\n if (this.focusedField) {\n const field = this.getRecipientFields().find(f => f.name === this.focusedField);\n if (field) {\n console.log('[SIGN] Auto-applying adopted signature to focused field', field.name);\n if (field.type === 'signature') {\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.signatureId, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n } else if (field.type === 'initial') {\n const updateResult = await updateEnvelopeField(this.endpoint, this.envelopeId, this.roleId, field.name, this.initialId, false);\n this.updateRecipientFieldValue(field.name, updateResult);\n }\n this.checkRecipientFields();\n }\n }\n }}\n onExit={() => (this.adoptingSignature = false)}\n />\n )}\n\n {(this.submitting || this.showSpinner) && (\n <verdocs-portal>\n <div class=\"spinner-overlay\">\n <verdocs-spinner />\n </div>\n </verdocs-portal>\n )}\n\n {this.showDownloadDialog && (\n <verdocs-download-dialog\n hasCertificate={this.envelope?.documents?.some(d => d.type === 'certificate')}\n onExit={() => (this.showDownloadDialog = false)}\n onNext={async e => {\n this.showDownloadDialog = false;\n const { action } = e.detail;\n console.log('[SIGN] Download action selected:', action);\n\n try {\n if (action === 'document') {\n // Download main document(s)\n const attachments = this.envelope.documents.filter(d => d.type === 'attachment');\n if (attachments.length === 1) {\n const url = await getEnvelopeDocumentDownloadLink(this.endpoint, attachments[0].id);\n window.open(url, '_blank');\n } else {\n // If multiple docs, we might want to zip them or just download the first one for now as per previous logic?\n // The requirement says \"Document\", implies the PDF.\n // Users might have multiple files though.\n // For now let's just do the zip of everything if multiple? Or loop?\n // Let's stick to the previous behavior \"firstDoc\" strategy if we can't do better,\n // or use getEnvelopeDocumentDownloadLink for each?\n // Best user experience for \"Document\" if multiple is probably just the first one or a zip of docs.\n // But \"All Files\" covers zip.\n // Let's assume the main document is the primary intent.\n const firstDoc = attachments[0];\n if (firstDoc) {\n const url = await getEnvelopeDocumentDownloadLink(this.endpoint, firstDoc.id);\n window.open(url, '_blank');\n }\n }\n } else if (action === 'certificate') {\n const cert = this.envelope.documents.find(d => d.type === 'certificate');\n if (cert) {\n const url = await getEnvelopeDocumentDownloadLink(this.endpoint, cert.id);\n window.open(url, '_blank');\n } else {\n VerdocsToast('Certificate not yet available.', { style: 'info' });\n }\n } else if (action === 'zip') {\n // The helper in verdocs-view used getEnvelopesZip with an array\n const blob = await getEnvelopesZip(this.endpoint, [this.envelopeId]);\n const url = window.URL.createObjectURL(blob.data);\n const a = document.createElement('a');\n a.href = url;\n a.download = `${this.envelope.name}.zip`;\n document.body.appendChild(a);\n a.click();\n a.remove();\n window.URL.revokeObjectURL(url);\n }\n } catch (err) {\n console.error('Download error', err);\n VerdocsToast('Unable to complete download request.', { style: 'error' });\n }\n }}\n />\n )}\n\n {!this.loading && !this.isDone && (\n <verdocs-sign-footer\n endpoint={this.endpoint}\n envelopeId={this.envelopeId}\n isDone={this.isDone}\n onAskQuestion={(e: any) => {\n askQuestion(this.endpoint, this.envelopeId, this.roleId, { question: e.detail.question })\n .then(() => VerdocsToast('Your question has been sent.', { style: 'success' }))\n .catch(e => {\n console.log('Error asking question', e);\n VerdocsToast('Unable to send question, please try again later.', { style: 'error' });\n });\n }}\n onDecline={() => (this.declining = true)}\n onFinishLater={() => (this.showFinishLater = true)}\n />\n )}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}