@signiphi/pdf-signer 0.2.0-beta.2 → 0.2.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/viewer.html +1 -5
- package/dist/components/index.js +2746 -901
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +2513 -669
- package/dist/components/index.mjs.map +1 -1
- package/dist/core/index.js +420 -20
- package/dist/core/index.js.map +1 -1
- package/dist/core/index.mjs +420 -20
- package/dist/core/index.mjs.map +1 -1
- package/dist/hooks/index.js +506 -211
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +507 -212
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.css +214 -191
- package/dist/index.css.map +1 -1
- package/dist/index.js +3019 -893
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2762 -653
- package/dist/index.mjs.map +1 -1
- package/dist/styles/index.css +202 -172
- package/dist/types/index.js.map +1 -1
- package/dist/types/index.mjs.map +1 -1
- package/dist/utils/index.js +792 -147
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +777 -148
- package/dist/utils/index.mjs.map +1 -1
- package/package.json +2 -2
- package/scripts/copy-utils.js +14 -3
- package/src/styles/index.css +33 -3
- package/dist/__tests__/helpers/fixtures.d.ts +0 -43
- package/dist/__tests__/helpers/fixtures.d.ts.map +0 -1
- package/dist/__tests__/helpers/mocks.d.ts +0 -333
- package/dist/__tests__/helpers/mocks.d.ts.map +0 -1
- package/dist/__tests__/setup.d.ts +0 -6
- package/dist/__tests__/setup.d.ts.map +0 -1
- package/dist/components/AcknowledgementModal.d.ts +0 -21
- package/dist/components/AcknowledgementModal.d.ts.map +0 -1
- package/dist/components/AcknowledgementsSidebar.d.ts +0 -22
- package/dist/components/AcknowledgementsSidebar.d.ts.map +0 -1
- package/dist/components/AttachmentUpload.d.ts +0 -17
- package/dist/components/AttachmentUpload.d.ts.map +0 -1
- package/dist/components/EditableFieldsPanel.d.ts +0 -30
- package/dist/components/EditableFieldsPanel.d.ts.map +0 -1
- package/dist/components/ErrorBoundary.d.ts +0 -67
- package/dist/components/ErrorBoundary.d.ts.map +0 -1
- package/dist/components/FormFieldsView.d.ts +0 -46
- package/dist/components/FormFieldsView.d.ts.map +0 -1
- package/dist/components/InitialsModal.d.ts +0 -16
- package/dist/components/InitialsModal.d.ts.map +0 -1
- package/dist/components/PdfViewerStyled.d.ts +0 -16
- package/dist/components/PdfViewerStyled.d.ts.map +0 -1
- package/dist/components/PoweredBySigniphi.d.ts +0 -11
- package/dist/components/PoweredBySigniphi.d.ts.map +0 -1
- package/dist/components/RequiredFieldNavigation.d.ts +0 -18
- package/dist/components/RequiredFieldNavigation.d.ts.map +0 -1
- package/dist/components/SignatureCanvas.d.ts +0 -12
- package/dist/components/SignatureCanvas.d.ts.map +0 -1
- package/dist/components/SignatureInitialsBox.d.ts +0 -25
- package/dist/components/SignatureInitialsBox.d.ts.map +0 -1
- package/dist/components/SignatureModal.d.ts +0 -21
- package/dist/components/SignatureModal.d.ts.map +0 -1
- package/dist/components/SigningInstructions.d.ts +0 -12
- package/dist/components/SigningInstructions.d.ts.map +0 -1
- package/dist/components/SubmissionForm.d.ts +0 -52
- package/dist/components/SubmissionForm.d.ts.map +0 -1
- package/dist/components/UnacknowledgedFieldsModal.d.ts +0 -23
- package/dist/components/UnacknowledgedFieldsModal.d.ts.map +0 -1
- package/dist/components/ViewToggleToolbar.d.ts +0 -38
- package/dist/components/ViewToggleToolbar.d.ts.map +0 -1
- package/dist/components/form-fields/CheckboxRenderer.d.ts +0 -10
- package/dist/components/form-fields/CheckboxRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/DateFieldRenderer.d.ts +0 -14
- package/dist/components/form-fields/DateFieldRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/DropdownRenderer.d.ts +0 -14
- package/dist/components/form-fields/DropdownRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/FormFieldRenderer.d.ts +0 -22
- package/dist/components/form-fields/FormFieldRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/InitialsFieldRenderer.d.ts +0 -16
- package/dist/components/form-fields/InitialsFieldRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/RadioGroupRenderer.d.ts +0 -10
- package/dist/components/form-fields/RadioGroupRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/SignatureFieldRenderer.d.ts +0 -16
- package/dist/components/form-fields/SignatureFieldRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/TextFieldRenderer.d.ts +0 -14
- package/dist/components/form-fields/TextFieldRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/TextLabelRenderer.d.ts +0 -14
- package/dist/components/form-fields/TextLabelRenderer.d.ts.map +0 -1
- package/dist/components/form-fields/index.d.ts +0 -14
- package/dist/components/form-fields/index.d.ts.map +0 -1
- package/dist/components/index.d.ts +0 -17
- package/dist/components/index.d.ts.map +0 -1
- package/dist/core/PdfViewerCore.d.ts +0 -19
- package/dist/core/PdfViewerCore.d.ts.map +0 -1
- package/dist/core/SignatureCaptureCore.d.ts +0 -37
- package/dist/core/SignatureCaptureCore.d.ts.map +0 -1
- package/dist/core/index.d.ts +0 -3
- package/dist/core/index.d.ts.map +0 -1
- package/dist/hooks/index.d.ts +0 -9
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/useAcknowledgements.d.ts +0 -50
- package/dist/hooks/useAcknowledgements.d.ts.map +0 -1
- package/dist/hooks/useAttachments.d.ts +0 -25
- package/dist/hooks/useAttachments.d.ts.map +0 -1
- package/dist/hooks/useFieldFiltering.d.ts +0 -29
- package/dist/hooks/useFieldFiltering.d.ts.map +0 -1
- package/dist/hooks/useFormFields.d.ts +0 -23
- package/dist/hooks/useFormFields.d.ts.map +0 -1
- package/dist/hooks/useMultiSignerContext.d.ts +0 -25
- package/dist/hooks/useMultiSignerContext.d.ts.map +0 -1
- package/dist/hooks/usePdfViewer.d.ts +0 -52
- package/dist/hooks/usePdfViewer.d.ts.map +0 -1
- package/dist/hooks/useRequiredFieldNavigation.d.ts +0 -16
- package/dist/hooks/useRequiredFieldNavigation.d.ts.map +0 -1
- package/dist/hooks/useSignatureCapture.d.ts +0 -17
- package/dist/hooks/useSignatureCapture.d.ts.map +0 -1
- package/dist/hooks/useSignatures.d.ts +0 -29
- package/dist/hooks/useSignatures.d.ts.map +0 -1
- package/dist/index.d.ts +0 -17
- package/dist/index.d.ts.map +0 -1
- package/dist/integrations/index.d.ts +0 -6
- package/dist/integrations/index.d.ts.map +0 -1
- package/dist/integrations/next-config.d.ts +0 -46
- package/dist/integrations/next-config.d.ts.map +0 -1
- package/dist/integrations/vite-plugin.d.ts +0 -48
- package/dist/integrations/vite-plugin.d.ts.map +0 -1
- package/dist/lib/index.d.ts +0 -3
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/lib/ui/accordion.d.ts +0 -8
- package/dist/lib/ui/accordion.d.ts.map +0 -1
- package/dist/lib/ui/alert.d.ts +0 -9
- package/dist/lib/ui/alert.d.ts.map +0 -1
- package/dist/lib/ui/button.d.ts +0 -12
- package/dist/lib/ui/button.d.ts.map +0 -1
- package/dist/lib/ui/calendar.d.ts +0 -10
- package/dist/lib/ui/calendar.d.ts.map +0 -1
- package/dist/lib/ui/card.d.ts +0 -9
- package/dist/lib/ui/card.d.ts.map +0 -1
- package/dist/lib/ui/checkbox.d.ts +0 -5
- package/dist/lib/ui/checkbox.d.ts.map +0 -1
- package/dist/lib/ui/dialog.d.ts +0 -20
- package/dist/lib/ui/dialog.d.ts.map +0 -1
- package/dist/lib/ui/index.d.ts +0 -13
- package/dist/lib/ui/index.d.ts.map +0 -1
- package/dist/lib/ui/input.d.ts +0 -6
- package/dist/lib/ui/input.d.ts.map +0 -1
- package/dist/lib/ui/label.d.ts +0 -6
- package/dist/lib/ui/label.d.ts.map +0 -1
- package/dist/lib/ui/popover.d.ts +0 -7
- package/dist/lib/ui/popover.d.ts.map +0 -1
- package/dist/lib/ui/radio-group.d.ts +0 -6
- package/dist/lib/ui/radio-group.d.ts.map +0 -1
- package/dist/lib/ui/select.d.ts +0 -14
- package/dist/lib/ui/select.d.ts.map +0 -1
- package/dist/lib/utils.d.ts +0 -7
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -278
- package/dist/types/index.d.ts.map +0 -1
- package/dist/utils/attachment-validators.d.ts +0 -118
- package/dist/utils/attachment-validators.d.ts.map +0 -1
- package/dist/utils/audit-trail.d.ts +0 -27
- package/dist/utils/audit-trail.d.ts.map +0 -1
- package/dist/utils/date-validation.d.ts +0 -30
- package/dist/utils/date-validation.d.ts.map +0 -1
- package/dist/utils/errors.d.ts +0 -106
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/field-extraction.d.ts +0 -36
- package/dist/utils/field-extraction.d.ts.map +0 -1
- package/dist/utils/field-visibility.d.ts +0 -104
- package/dist/utils/field-visibility.d.ts.map +0 -1
- package/dist/utils/index.d.ts +0 -18
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/logger.d.ts +0 -16
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/pdf-field-type-helpers.d.ts +0 -78
- package/dist/utils/pdf-field-type-helpers.d.ts.map +0 -1
- package/dist/utils/pdf-helpers.d.ts +0 -38
- package/dist/utils/pdf-helpers.d.ts.map +0 -1
- package/dist/utils/pdf-lib-loader.d.ts +0 -45
- package/dist/utils/pdf-lib-loader.d.ts.map +0 -1
- package/dist/utils/pdf-manipulation.d.ts +0 -93
- package/dist/utils/pdf-manipulation.d.ts.map +0 -1
- package/dist/utils/pdf-metadata.d.ts +0 -41
- package/dist/utils/pdf-metadata.d.ts.map +0 -1
- package/dist/utils/pdf-validators.d.ts +0 -149
- package/dist/utils/pdf-validators.d.ts.map +0 -1
- package/dist/utils/pdf-viewer-filter.d.ts +0 -35
- package/dist/utils/pdf-viewer-filter.d.ts.map +0 -1
- package/dist/utils/pdf-widget-helpers.d.ts +0 -98
- package/dist/utils/pdf-widget-helpers.d.ts.map +0 -1
- package/dist/utils/pdfjs-config.d.ts +0 -56
- package/dist/utils/pdfjs-config.d.ts.map +0 -1
- package/dist/utils/pdfjs-version-check.d.ts +0 -28
- package/dist/utils/pdfjs-version-check.d.ts.map +0 -1
- package/dist/utils/performance-monitor.d.ts +0 -172
- package/dist/utils/performance-monitor.d.ts.map +0 -1
- package/dist/utils/tracking.d.ts +0 -89
- package/dist/utils/tracking.d.ts.map +0 -1
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/index.ts"],"names":["FormFieldType","SubmissionStatus"],"mappings":";;;AAGO,IAAK,aAAA,qBAAAA,cAAAA,KAAL;AACL,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,YAAA,CAAA,GAAa,YAAA;AARH,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AAuRL,IAAK,gBAAA,qBAAAC,iBAAAA,KAAL;AACL,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,kBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,kBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AAJA,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA","file":"index.js","sourcesContent":["/**\n * Form field types supported by the PDF signer\n */\nexport enum FormFieldType {\n TEXT = 'text',\n SIGNATURE = 'signature',\n INITIALS = 'initials',\n DATE = 'date',\n CHECKBOX = 'checkbox',\n RADIO = 'radio',\n DROPDOWN = 'dropdown',\n TEXT_LABEL = 'text_label',\n}\n\n/**\n * Position and dimensions of a form field on a PDF page\n */\nexport interface FormFieldPosition {\n x: number;\n y: number;\n width: number;\n height: number;\n page: number; // 1-indexed page number\n}\n\n/**\n * Acknowledgement for form fields\n */\nexport interface Acknowledgement {\n id: string;\n title: string;\n description: string;\n}\n\n/**\n * Form field definition with all properties\n */\nexport interface FormField {\n id: string;\n fieldId: string; // Immutable UUID for reliable field identification across PDF regenerations\n type: FormFieldType;\n name: string;\n label: string;\n position: FormFieldPosition;\n required: boolean;\n placeholder?: string;\n options?: string[]; // For dropdown/radio fields\n radioPositions?: FormFieldPosition[]; // For radio fields with multiple option positions\n defaultValue?: string;\n value?: string; // For filled values\n fontSize?: number; // Font size for text fields (8-72 points)\n multiline?: boolean; // Enable multiline text input for text fields\n maxLength?: number; // Maximum character length for text fields\n\n // Multiple signers support\n assignedSignerEmail?: string; // Email of the signer this field is assigned to\n assignedSignerRole?: string; // Role of the signer (for display purposes)\n visibleToOthers?: boolean; // Whether other signers can see this field (default: false)\n\n // Acknowledgements\n acknowledgements?: Acknowledgement[]; // Optional acknowledgements that signers must accept\n}\n\n/**\n * PDF page information with rendered image\n */\nexport interface PdfPage {\n pageNumber: number;\n width: number;\n height: number;\n imageUrl: string;\n renderWidth?: number; // Rendered image width (for scale calculation)\n renderHeight?: number; // Rendered image height (for scale calculation)\n}\n\n/**\n * PDF viewer application interface (for PDF.js integration)\n */\nexport interface PDFViewerApplication {\n initializedPromise?: Promise<void>;\n pdfLoadingTask?: { promise: Promise<void> };\n pdfDocument?: {\n annotationStorage?: {\n serializable?: {\n map?: Map<string, unknown>;\n };\n getAll?: () => Record<string, unknown>;\n getValue?: (key: string) => unknown;\n setValue?: (key: string, value: unknown) => void;\n };\n getFieldObjects?: () => Promise<Record<string, unknown[]>>;\n saveDocument?: () => Promise<Uint8Array>;\n getData?: () => Promise<Uint8Array>;\n };\n pdfViewer?: {\n currentPageNumber?: number;\n pagesCount?: number;\n container?: HTMLElement;\n update?: () => void;\n increaseScale?: () => void;\n decreaseScale?: () => void;\n nextPage?: () => void;\n previousPage?: () => void;\n };\n}\n\n/**\n * Configuration for PDF.js worker and viewer\n */\nexport interface PdfJsConfig {\n workerSrc?: string;\n viewerBasePath?: string; // Base path for PDF.js viewer (defaults to CDN)\n}\n\n/**\n * Attachment metadata\n */\nexport interface Attachment {\n id: string;\n file: File;\n name: string;\n size: number;\n type: string;\n uploadedAt: Date;\n preview?: string; // Data URL for image previews\n}\n\n/**\n * Attachment validation constraints\n */\nexport interface AttachmentConstraints {\n maxFileSize: number; // in bytes (default: 10MB)\n maxTotalSize: number; // in bytes (default: 50MB)\n maxFiles: number; // maximum number of files (default: 10)\n allowedTypes: string[]; // MIME types (e.g., ['image/*', 'application/pdf'])\n allowedExtensions?: string[]; // File extensions (e.g., ['.pdf', '.jpg', '.png'])\n}\n\n/**\n * Attachment validation result\n */\nexport interface AttachmentValidationResult {\n isValid: boolean;\n errors: string[];\n}\n\n/**\n * Audit trail metadata for compliance and forensics\n */\nexport interface AuditTrailMetadata {\n userAgent?: string;\n screenResolution?: string;\n timezone?: string;\n language?: string;\n platform?: string;\n ipAddress?: string;\n geolocation?: {\n latitude: number;\n longitude: number;\n accuracy?: number;\n };\n}\n\n/**\n * Document metadata for PDF properties\n */\nexport interface DocumentMetadata {\n submissionId?: string;\n documentId?: string;\n author?: string;\n signerEmail?: string;\n signerInitials?: string;\n createdAt?: Date;\n}\n\n/**\n * Form submission data\n */\nexport interface SubmissionData {\n formFieldValues: Record<string, string>;\n signatures: Record<string, string>; // Base64 data URLs\n attachments?: Attachment[];\n pdfBytes: Uint8Array;\n auditTrail?: AuditTrailMetadata;\n metadata?: DocumentMetadata;\n}\n\n/**\n * Validation error\n */\nexport interface ValidationError {\n field: string;\n message: string;\n}\n\n/**\n * PDF viewer ref methods\n */\nexport interface PdfViewerRef {\n loadPdf: (pdfUrl: string) => Promise<void>;\n getFormFieldValues: () => Promise<Record<string, string>>;\n setFormFieldValues: (values: Record<string, string>) => Promise<void>;\n getAllFieldNames: () => Promise<string[]>;\n saveDocument: () => Promise<Uint8Array | null>;\n getPDFViewerApplication: () => PDFViewerApplication | null;\n injectPlaceholders: (fields: Array<{ id: string; name: string; placeholder?: string }>) => void;\n zoomIn: () => Promise<void>;\n zoomOut: () => Promise<void>;\n nextPage: () => Promise<void>;\n previousPage: () => Promise<void>;\n getCurrentPage: () => Promise<number | null>;\n getTotalPages: () => Promise<number | null>;\n attachFieldClickInterceptors: (onFieldClick: (fieldName: string) => boolean) => void;\n addFieldIndicator: (fieldName: string, indicatorType?: 'completed' | 'pending-ack' | 'info', allowedFieldIds?: string) => void;\n removeFieldIndicator: (fieldName: string) => void;\n}\n\n/**\n * Signature canvas ref methods\n */\nexport interface SignatureCanvasRef {\n clear: () => void;\n getSignatureDataUrl: () => string | null;\n isEmpty: () => boolean;\n}\n\n/**\n * Signer information for multi-signer documents\n */\nexport interface Signer {\n id: string;\n email: string;\n name: string;\n signOrder: number; // 1 = primary, 2+ = secondary\n status: 'pending' | 'viewed' | 'signed' | 'declined';\n signedAt?: string;\n}\n\n/**\n * Multi-signer context for determining field visibility and behavior\n * Used internally by hooks and utilities to manage multi-signer logic\n */\nexport interface MultiSignerContext {\n /** Whether this is a multi-signer document */\n isMultiSigner: boolean;\n /** Current signer object (null for single-signer mode) */\n currentSigner: Signer | null;\n /** Current signer's email address */\n currentSignerEmail: string;\n /** Whether current signer is a primary signer (signOrder === 1) */\n isPrimarySigner: boolean;\n /** Whether current signer is the final signer (signOrder === totalSigners) */\n isFinalSigner: boolean;\n}\n\n/**\n * Document submission\n */\nexport interface Submission {\n id: string;\n documentId: string;\n status: 'pending' | 'signed' | 'declined' | 'expired';\n createdAt: string;\n updatedAt: string;\n formFields?: FormField[];\n pdfUrl?: string;\n signedAt?: string;\n declinedAt?: string;\n expiresAt?: string;\n isMultipleSignature?: boolean;\n signers?: Signer[];\n}\n\n/**\n * Type aliases for compatibility with dm-web-frontend naming conventions\n */\nexport type EsignFormField = FormField;\nexport type EsignSigner = Signer;\n\n/**\n * Submission status enum\n */\nexport enum SubmissionStatus {\n PENDING = 'pending',\n SIGNED = 'signed',\n DECLINED = 'declined',\n EXPIRED = 'expired',\n}\n\n/**\n * Field error type for validation\n */\nexport interface FieldError {\n fieldName: string;\n message: string;\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/types/index.ts"],"names":["FormFieldType","SubmissionStatus"],"mappings":";;;AAGO,IAAK,aAAA,qBAAAA,cAAAA,KAAL;AACL,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,YAAA,CAAA,GAAa,YAAA;AARH,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AA8SL,IAAK,gBAAA,qBAAAC,iBAAAA,KAAL;AACL,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,kBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,kBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AAJA,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA","file":"index.js","sourcesContent":["/**\r\n * Form field types supported by the PDF signer\r\n */\r\nexport enum FormFieldType {\r\n TEXT = 'text',\r\n SIGNATURE = 'signature',\r\n INITIALS = 'initials',\r\n DATE = 'date',\r\n CHECKBOX = 'checkbox',\r\n RADIO = 'radio',\r\n DROPDOWN = 'dropdown',\r\n TEXT_LABEL = 'text_label',\r\n}\r\n\r\n/**\r\n * Position and dimensions of a form field on a PDF page\r\n */\r\nexport interface FormFieldPosition {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n page: number; // 1-indexed page number\r\n}\r\n\r\n/**\r\n * Acknowledgement for form fields\r\n */\r\nexport interface Acknowledgement {\r\n id: string;\r\n title: string;\r\n description: string;\r\n}\r\n\r\n/**\r\n * Form field definition with all properties\r\n */\r\nexport interface FormField {\r\n id: string;\r\n fieldId: string; // Immutable UUID for reliable field identification across PDF regenerations\r\n type: FormFieldType;\r\n name: string;\r\n label: string;\r\n position: FormFieldPosition;\r\n required: boolean;\r\n placeholder?: string;\r\n options?: string[]; // For dropdown/radio fields\r\n radioPositions?: FormFieldPosition[]; // For radio fields with multiple option positions\r\n defaultValue?: string;\r\n value?: string; // For filled values\r\n fontSize?: number; // Font size for text fields (8-72 points)\r\n multiline?: boolean; // Enable multiline text input for text fields\r\n maxLength?: number; // Maximum character length for text fields\r\n\r\n // Multiple signers support\r\n assignedSignerEmail?: string; // Email of the signer this field is assigned to, or grouped assignment:\r\n // - Individual: \"user@example.com\" (specific signer)\r\n // - Grouped: \"to-recipients\" (all signers - convenience feature)\r\n // - Grouped: \"additional-signers\" (all signers - legacy)\r\n // - Unassigned: undefined (visible to all)\r\n assignedSignerRole?: string; // Role of the signer (for display purposes)\r\n visibleToOthers?: boolean; // Whether other signers can see this field (default: false)\r\n\r\n // Label metadata\r\n isLabelAutoGenerated?: boolean; // True when label was generated from field name, not set by user/metadata\r\n\r\n // Acknowledgements\r\n acknowledgements?: Acknowledgement[]; // Optional acknowledgements that signers must accept\r\n}\r\n\r\n/**\r\n * PDF page information with rendered image\r\n */\r\nexport interface PdfPage {\r\n pageNumber: number;\r\n width: number;\r\n height: number;\r\n imageUrl: string;\r\n renderWidth?: number; // Rendered image width (for scale calculation)\r\n renderHeight?: number; // Rendered image height (for scale calculation)\r\n}\r\n\r\n/**\r\n * PDF viewer application interface (for PDF.js integration)\r\n */\r\nexport interface PDFViewerApplication {\r\n initializedPromise?: Promise<void>;\r\n pdfLoadingTask?: { promise: Promise<void> };\r\n pdfDocument?: {\r\n annotationStorage?: {\r\n serializable?: {\r\n map?: Map<string, unknown>;\r\n };\r\n getAll?: () => Record<string, unknown>;\r\n getValue?: (key: string) => unknown;\r\n setValue?: (key: string, value: unknown) => void;\r\n };\r\n getFieldObjects?: () => Promise<Record<string, unknown[]>>;\r\n saveDocument?: () => Promise<Uint8Array>;\r\n getData?: () => Promise<Uint8Array>;\r\n };\r\n pdfViewer?: {\r\n currentPageNumber?: number;\r\n pagesCount?: number;\r\n currentScale?: number;\r\n container?: HTMLElement;\r\n update?: () => void;\r\n increaseScale?: () => void;\r\n decreaseScale?: () => void;\r\n nextPage?: () => void;\r\n previousPage?: () => void;\r\n };\r\n eventBus?: {\r\n on?: (eventName: string, handler: () => void) => void;\r\n off?: (eventName: string, handler: () => void) => void;\r\n };\r\n}\r\n\r\n/**\r\n * Configuration for PDF.js worker and viewer\r\n */\r\nexport interface PdfJsConfig {\r\n workerSrc?: string;\r\n viewerBasePath?: string; // Base path for PDF.js viewer (defaults to CDN)\r\n}\r\n\r\n/**\r\n * Attachment metadata\r\n */\r\nexport interface Attachment {\r\n id: string;\r\n file: File;\r\n name: string;\r\n size: number;\r\n type: string;\r\n uploadedAt: Date;\r\n preview?: string; // Data URL for image previews\r\n}\r\n\r\n/**\r\n * Attachment validation constraints\r\n */\r\nexport interface AttachmentConstraints {\r\n maxFileSize: number; // in bytes (default: 25MB)\r\n maxTotalSize: number; // in bytes (default: 50MB)\r\n maxFiles: number; // maximum number of files (default: 10)\r\n allowedTypes: string[]; // MIME types (e.g., ['image/*', 'application/pdf'])\r\n allowedExtensions?: string[]; // File extensions (e.g., ['.pdf', '.jpg', '.png'])\r\n}\r\n\r\n/**\r\n * Attachment validation result\r\n */\r\nexport interface AttachmentValidationResult {\r\n isValid: boolean;\r\n errors: string[];\r\n}\r\n\r\n/**\r\n * Audit trail metadata for compliance and forensics\r\n */\r\nexport interface AuditTrailMetadata {\r\n userAgent?: string;\r\n screenResolution?: string;\r\n timezone?: string;\r\n language?: string;\r\n platform?: string;\r\n ipAddress?: string;\r\n geolocation?: {\r\n latitude: number;\r\n longitude: number;\r\n accuracy?: number;\r\n };\r\n}\r\n\r\n/**\r\n * Document metadata for PDF properties\r\n */\r\nexport interface DocumentMetadata {\r\n submissionId?: string;\r\n documentId?: string;\r\n author?: string;\r\n signerEmail?: string;\r\n signerInitials?: string;\r\n createdAt?: Date;\r\n}\r\n\r\n/**\r\n * Form submission data\r\n */\r\nexport interface SubmissionData {\r\n formFieldValues: Record<string, string>;\r\n signatures: Record<string, string>; // Base64 data URLs\r\n attachments?: Attachment[];\r\n pdfBytes: Uint8Array;\r\n auditTrail?: AuditTrailMetadata;\r\n metadata?: DocumentMetadata;\r\n}\r\n\r\n/**\r\n * Validation error\r\n */\r\nexport interface ValidationError {\r\n field: string;\r\n message: string;\r\n}\r\n\r\n/**\r\n * PDF viewer ref methods\r\n */\r\nexport interface PdfViewerRef {\r\n loadPdf: (pdfUrl: string) => Promise<void>;\r\n getFormFieldValues: () => Promise<Record<string, string>>;\r\n setFormFieldValues: (values: Record<string, string>) => Promise<void>;\r\n getAllFieldNames: () => Promise<string[]>;\r\n saveDocument: () => Promise<Uint8Array | null>;\r\n getPDFViewerApplication: () => PDFViewerApplication | null;\r\n injectPlaceholders: (fields: Array<{ id: string; name: string; placeholder?: string }>) => void;\r\n injectRadioLabels: (fields: Array<{ id: string; name: string; type: string; options?: string[] }>) => void;\r\n setFieldMetadata: (fields: FormField[]) => void;\r\n zoomIn: () => Promise<void>;\r\n zoomOut: () => Promise<void>;\r\n nextPage: () => Promise<void>;\r\n previousPage: () => Promise<void>;\r\n getCurrentPage: () => Promise<number | null>;\r\n getTotalPages: () => Promise<number | null>;\r\n attachFieldClickInterceptors: (onFieldClick: (fieldName: string, element?: HTMLElement) => boolean) => Promise<void>;\r\n attachFieldChangeListeners: (onFieldChange: (fieldName: string, value: string, element: HTMLElement) => void) => Promise<() => void>;\r\n addFieldIndicator: (fieldName: string, indicatorType?: 'completed' | 'pending-ack' | 'info', allowedFieldIds?: string) => void;\r\n removeFieldIndicator: (fieldName: string) => void;\r\n addDateFieldIndicator: (fieldName: string) => void;\r\n removeDateFieldIndicator: (fieldName: string) => void;\r\n previewSignature: (fieldName: string, dataUrl: string | null) => void;\r\n previewInitials: (fieldName: string, text: string | null) => void;\r\n clearFieldPreviews: (fieldName?: string) => void;\r\n}\r\n\r\n/**\r\n * Signature canvas ref methods\r\n */\r\nexport interface SignatureCanvasRef {\r\n clear: () => void;\r\n getSignatureDataUrl: () => string | null;\r\n isEmpty: () => boolean;\r\n}\r\n\r\n/**\r\n * Signer information for multi-signer documents\r\n */\r\nexport type RecipientType = 'signer' | 'viewer' | 'cc';\r\n\r\nexport interface Signer {\r\n id: string;\r\n email: string;\r\n name: string;\r\n signOrder: number; // 1 = primary, 2+ = secondary\r\n status: 'pending' | 'viewed' | 'signed' | 'declined';\r\n signedAt?: string;\r\n recipientType?: RecipientType; // Defaults to 'signer'\r\n}\r\n\r\n/**\r\n * Multi-signer context for determining field visibility and behavior\r\n * Used internally by hooks and utilities to manage multi-signer logic\r\n */\r\nexport interface MultiSignerContext {\r\n /** Whether this is a multi-signer document */\r\n isMultiSigner: boolean;\r\n /** Current signer object (null for single-signer mode) */\r\n currentSigner: Signer | null;\r\n /** Current signer's email address */\r\n currentSignerEmail: string;\r\n /** Whether current signer is a primary signer (signOrder === 1) */\r\n isPrimarySigner: boolean;\r\n /** Whether current signer is the final signer (signOrder === totalSigners) */\r\n isFinalSigner: boolean;\r\n}\r\n\r\n/**\r\n * Document submission\r\n */\r\nexport interface Submission {\r\n id: string;\r\n documentId: string;\r\n status: 'pending' | 'signed' | 'declined' | 'expired';\r\n createdAt: string;\r\n updatedAt: string;\r\n formFields?: FormField[];\r\n pdfUrl?: string;\r\n signedAt?: string;\r\n declinedAt?: string;\r\n expiresAt?: string;\r\n isMultipleSignature?: boolean;\r\n signers?: Signer[];\r\n}\r\n\r\n/**\r\n * Type aliases for compatibility with dm-web-frontend naming conventions\r\n */\r\nexport type EsignFormField = FormField;\r\nexport type EsignSigner = Signer;\r\n\r\n/**\r\n * Submission status enum\r\n */\r\nexport enum SubmissionStatus {\r\n PENDING = 'pending',\r\n SIGNED = 'signed',\r\n DECLINED = 'declined',\r\n EXPIRED = 'expired',\r\n}\r\n\r\n/**\r\n * Field error type for validation\r\n */\r\nexport interface FieldError {\r\n fieldName: string;\r\n message: string;\r\n}\r\n\r\n"]}
|
package/dist/types/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/types/index.ts"],"names":["FormFieldType","SubmissionStatus"],"mappings":";AAGO,IAAK,aAAA,qBAAAA,cAAAA,KAAL;AACL,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,YAAA,CAAA,GAAa,YAAA;AARH,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AAuRL,IAAK,gBAAA,qBAAAC,iBAAAA,KAAL;AACL,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,kBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,kBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AAJA,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA","file":"index.mjs","sourcesContent":["/**\n * Form field types supported by the PDF signer\n */\nexport enum FormFieldType {\n TEXT = 'text',\n SIGNATURE = 'signature',\n INITIALS = 'initials',\n DATE = 'date',\n CHECKBOX = 'checkbox',\n RADIO = 'radio',\n DROPDOWN = 'dropdown',\n TEXT_LABEL = 'text_label',\n}\n\n/**\n * Position and dimensions of a form field on a PDF page\n */\nexport interface FormFieldPosition {\n x: number;\n y: number;\n width: number;\n height: number;\n page: number; // 1-indexed page number\n}\n\n/**\n * Acknowledgement for form fields\n */\nexport interface Acknowledgement {\n id: string;\n title: string;\n description: string;\n}\n\n/**\n * Form field definition with all properties\n */\nexport interface FormField {\n id: string;\n fieldId: string; // Immutable UUID for reliable field identification across PDF regenerations\n type: FormFieldType;\n name: string;\n label: string;\n position: FormFieldPosition;\n required: boolean;\n placeholder?: string;\n options?: string[]; // For dropdown/radio fields\n radioPositions?: FormFieldPosition[]; // For radio fields with multiple option positions\n defaultValue?: string;\n value?: string; // For filled values\n fontSize?: number; // Font size for text fields (8-72 points)\n multiline?: boolean; // Enable multiline text input for text fields\n maxLength?: number; // Maximum character length for text fields\n\n // Multiple signers support\n assignedSignerEmail?: string; // Email of the signer this field is assigned to\n assignedSignerRole?: string; // Role of the signer (for display purposes)\n visibleToOthers?: boolean; // Whether other signers can see this field (default: false)\n\n // Acknowledgements\n acknowledgements?: Acknowledgement[]; // Optional acknowledgements that signers must accept\n}\n\n/**\n * PDF page information with rendered image\n */\nexport interface PdfPage {\n pageNumber: number;\n width: number;\n height: number;\n imageUrl: string;\n renderWidth?: number; // Rendered image width (for scale calculation)\n renderHeight?: number; // Rendered image height (for scale calculation)\n}\n\n/**\n * PDF viewer application interface (for PDF.js integration)\n */\nexport interface PDFViewerApplication {\n initializedPromise?: Promise<void>;\n pdfLoadingTask?: { promise: Promise<void> };\n pdfDocument?: {\n annotationStorage?: {\n serializable?: {\n map?: Map<string, unknown>;\n };\n getAll?: () => Record<string, unknown>;\n getValue?: (key: string) => unknown;\n setValue?: (key: string, value: unknown) => void;\n };\n getFieldObjects?: () => Promise<Record<string, unknown[]>>;\n saveDocument?: () => Promise<Uint8Array>;\n getData?: () => Promise<Uint8Array>;\n };\n pdfViewer?: {\n currentPageNumber?: number;\n pagesCount?: number;\n container?: HTMLElement;\n update?: () => void;\n increaseScale?: () => void;\n decreaseScale?: () => void;\n nextPage?: () => void;\n previousPage?: () => void;\n };\n}\n\n/**\n * Configuration for PDF.js worker and viewer\n */\nexport interface PdfJsConfig {\n workerSrc?: string;\n viewerBasePath?: string; // Base path for PDF.js viewer (defaults to CDN)\n}\n\n/**\n * Attachment metadata\n */\nexport interface Attachment {\n id: string;\n file: File;\n name: string;\n size: number;\n type: string;\n uploadedAt: Date;\n preview?: string; // Data URL for image previews\n}\n\n/**\n * Attachment validation constraints\n */\nexport interface AttachmentConstraints {\n maxFileSize: number; // in bytes (default: 10MB)\n maxTotalSize: number; // in bytes (default: 50MB)\n maxFiles: number; // maximum number of files (default: 10)\n allowedTypes: string[]; // MIME types (e.g., ['image/*', 'application/pdf'])\n allowedExtensions?: string[]; // File extensions (e.g., ['.pdf', '.jpg', '.png'])\n}\n\n/**\n * Attachment validation result\n */\nexport interface AttachmentValidationResult {\n isValid: boolean;\n errors: string[];\n}\n\n/**\n * Audit trail metadata for compliance and forensics\n */\nexport interface AuditTrailMetadata {\n userAgent?: string;\n screenResolution?: string;\n timezone?: string;\n language?: string;\n platform?: string;\n ipAddress?: string;\n geolocation?: {\n latitude: number;\n longitude: number;\n accuracy?: number;\n };\n}\n\n/**\n * Document metadata for PDF properties\n */\nexport interface DocumentMetadata {\n submissionId?: string;\n documentId?: string;\n author?: string;\n signerEmail?: string;\n signerInitials?: string;\n createdAt?: Date;\n}\n\n/**\n * Form submission data\n */\nexport interface SubmissionData {\n formFieldValues: Record<string, string>;\n signatures: Record<string, string>; // Base64 data URLs\n attachments?: Attachment[];\n pdfBytes: Uint8Array;\n auditTrail?: AuditTrailMetadata;\n metadata?: DocumentMetadata;\n}\n\n/**\n * Validation error\n */\nexport interface ValidationError {\n field: string;\n message: string;\n}\n\n/**\n * PDF viewer ref methods\n */\nexport interface PdfViewerRef {\n loadPdf: (pdfUrl: string) => Promise<void>;\n getFormFieldValues: () => Promise<Record<string, string>>;\n setFormFieldValues: (values: Record<string, string>) => Promise<void>;\n getAllFieldNames: () => Promise<string[]>;\n saveDocument: () => Promise<Uint8Array | null>;\n getPDFViewerApplication: () => PDFViewerApplication | null;\n injectPlaceholders: (fields: Array<{ id: string; name: string; placeholder?: string }>) => void;\n zoomIn: () => Promise<void>;\n zoomOut: () => Promise<void>;\n nextPage: () => Promise<void>;\n previousPage: () => Promise<void>;\n getCurrentPage: () => Promise<number | null>;\n getTotalPages: () => Promise<number | null>;\n attachFieldClickInterceptors: (onFieldClick: (fieldName: string) => boolean) => void;\n addFieldIndicator: (fieldName: string, indicatorType?: 'completed' | 'pending-ack' | 'info', allowedFieldIds?: string) => void;\n removeFieldIndicator: (fieldName: string) => void;\n}\n\n/**\n * Signature canvas ref methods\n */\nexport interface SignatureCanvasRef {\n clear: () => void;\n getSignatureDataUrl: () => string | null;\n isEmpty: () => boolean;\n}\n\n/**\n * Signer information for multi-signer documents\n */\nexport interface Signer {\n id: string;\n email: string;\n name: string;\n signOrder: number; // 1 = primary, 2+ = secondary\n status: 'pending' | 'viewed' | 'signed' | 'declined';\n signedAt?: string;\n}\n\n/**\n * Multi-signer context for determining field visibility and behavior\n * Used internally by hooks and utilities to manage multi-signer logic\n */\nexport interface MultiSignerContext {\n /** Whether this is a multi-signer document */\n isMultiSigner: boolean;\n /** Current signer object (null for single-signer mode) */\n currentSigner: Signer | null;\n /** Current signer's email address */\n currentSignerEmail: string;\n /** Whether current signer is a primary signer (signOrder === 1) */\n isPrimarySigner: boolean;\n /** Whether current signer is the final signer (signOrder === totalSigners) */\n isFinalSigner: boolean;\n}\n\n/**\n * Document submission\n */\nexport interface Submission {\n id: string;\n documentId: string;\n status: 'pending' | 'signed' | 'declined' | 'expired';\n createdAt: string;\n updatedAt: string;\n formFields?: FormField[];\n pdfUrl?: string;\n signedAt?: string;\n declinedAt?: string;\n expiresAt?: string;\n isMultipleSignature?: boolean;\n signers?: Signer[];\n}\n\n/**\n * Type aliases for compatibility with dm-web-frontend naming conventions\n */\nexport type EsignFormField = FormField;\nexport type EsignSigner = Signer;\n\n/**\n * Submission status enum\n */\nexport enum SubmissionStatus {\n PENDING = 'pending',\n SIGNED = 'signed',\n DECLINED = 'declined',\n EXPIRED = 'expired',\n}\n\n/**\n * Field error type for validation\n */\nexport interface FieldError {\n fieldName: string;\n message: string;\n}\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/types/index.ts"],"names":["FormFieldType","SubmissionStatus"],"mappings":";AAGO,IAAK,aAAA,qBAAAA,cAAAA,KAAL;AACL,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,WAAA,CAAA,GAAY,WAAA;AACZ,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,eAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,eAAA,YAAA,CAAA,GAAa,YAAA;AARH,EAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA;AA8SL,IAAK,gBAAA,qBAAAC,iBAAAA,KAAL;AACL,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AACV,EAAAA,kBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,kBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,kBAAA,SAAA,CAAA,GAAU,SAAA;AAJA,EAAA,OAAAA,iBAAAA;AAAA,CAAA,EAAA,gBAAA,IAAA,EAAA","file":"index.mjs","sourcesContent":["/**\r\n * Form field types supported by the PDF signer\r\n */\r\nexport enum FormFieldType {\r\n TEXT = 'text',\r\n SIGNATURE = 'signature',\r\n INITIALS = 'initials',\r\n DATE = 'date',\r\n CHECKBOX = 'checkbox',\r\n RADIO = 'radio',\r\n DROPDOWN = 'dropdown',\r\n TEXT_LABEL = 'text_label',\r\n}\r\n\r\n/**\r\n * Position and dimensions of a form field on a PDF page\r\n */\r\nexport interface FormFieldPosition {\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n page: number; // 1-indexed page number\r\n}\r\n\r\n/**\r\n * Acknowledgement for form fields\r\n */\r\nexport interface Acknowledgement {\r\n id: string;\r\n title: string;\r\n description: string;\r\n}\r\n\r\n/**\r\n * Form field definition with all properties\r\n */\r\nexport interface FormField {\r\n id: string;\r\n fieldId: string; // Immutable UUID for reliable field identification across PDF regenerations\r\n type: FormFieldType;\r\n name: string;\r\n label: string;\r\n position: FormFieldPosition;\r\n required: boolean;\r\n placeholder?: string;\r\n options?: string[]; // For dropdown/radio fields\r\n radioPositions?: FormFieldPosition[]; // For radio fields with multiple option positions\r\n defaultValue?: string;\r\n value?: string; // For filled values\r\n fontSize?: number; // Font size for text fields (8-72 points)\r\n multiline?: boolean; // Enable multiline text input for text fields\r\n maxLength?: number; // Maximum character length for text fields\r\n\r\n // Multiple signers support\r\n assignedSignerEmail?: string; // Email of the signer this field is assigned to, or grouped assignment:\r\n // - Individual: \"user@example.com\" (specific signer)\r\n // - Grouped: \"to-recipients\" (all signers - convenience feature)\r\n // - Grouped: \"additional-signers\" (all signers - legacy)\r\n // - Unassigned: undefined (visible to all)\r\n assignedSignerRole?: string; // Role of the signer (for display purposes)\r\n visibleToOthers?: boolean; // Whether other signers can see this field (default: false)\r\n\r\n // Label metadata\r\n isLabelAutoGenerated?: boolean; // True when label was generated from field name, not set by user/metadata\r\n\r\n // Acknowledgements\r\n acknowledgements?: Acknowledgement[]; // Optional acknowledgements that signers must accept\r\n}\r\n\r\n/**\r\n * PDF page information with rendered image\r\n */\r\nexport interface PdfPage {\r\n pageNumber: number;\r\n width: number;\r\n height: number;\r\n imageUrl: string;\r\n renderWidth?: number; // Rendered image width (for scale calculation)\r\n renderHeight?: number; // Rendered image height (for scale calculation)\r\n}\r\n\r\n/**\r\n * PDF viewer application interface (for PDF.js integration)\r\n */\r\nexport interface PDFViewerApplication {\r\n initializedPromise?: Promise<void>;\r\n pdfLoadingTask?: { promise: Promise<void> };\r\n pdfDocument?: {\r\n annotationStorage?: {\r\n serializable?: {\r\n map?: Map<string, unknown>;\r\n };\r\n getAll?: () => Record<string, unknown>;\r\n getValue?: (key: string) => unknown;\r\n setValue?: (key: string, value: unknown) => void;\r\n };\r\n getFieldObjects?: () => Promise<Record<string, unknown[]>>;\r\n saveDocument?: () => Promise<Uint8Array>;\r\n getData?: () => Promise<Uint8Array>;\r\n };\r\n pdfViewer?: {\r\n currentPageNumber?: number;\r\n pagesCount?: number;\r\n currentScale?: number;\r\n container?: HTMLElement;\r\n update?: () => void;\r\n increaseScale?: () => void;\r\n decreaseScale?: () => void;\r\n nextPage?: () => void;\r\n previousPage?: () => void;\r\n };\r\n eventBus?: {\r\n on?: (eventName: string, handler: () => void) => void;\r\n off?: (eventName: string, handler: () => void) => void;\r\n };\r\n}\r\n\r\n/**\r\n * Configuration for PDF.js worker and viewer\r\n */\r\nexport interface PdfJsConfig {\r\n workerSrc?: string;\r\n viewerBasePath?: string; // Base path for PDF.js viewer (defaults to CDN)\r\n}\r\n\r\n/**\r\n * Attachment metadata\r\n */\r\nexport interface Attachment {\r\n id: string;\r\n file: File;\r\n name: string;\r\n size: number;\r\n type: string;\r\n uploadedAt: Date;\r\n preview?: string; // Data URL for image previews\r\n}\r\n\r\n/**\r\n * Attachment validation constraints\r\n */\r\nexport interface AttachmentConstraints {\r\n maxFileSize: number; // in bytes (default: 25MB)\r\n maxTotalSize: number; // in bytes (default: 50MB)\r\n maxFiles: number; // maximum number of files (default: 10)\r\n allowedTypes: string[]; // MIME types (e.g., ['image/*', 'application/pdf'])\r\n allowedExtensions?: string[]; // File extensions (e.g., ['.pdf', '.jpg', '.png'])\r\n}\r\n\r\n/**\r\n * Attachment validation result\r\n */\r\nexport interface AttachmentValidationResult {\r\n isValid: boolean;\r\n errors: string[];\r\n}\r\n\r\n/**\r\n * Audit trail metadata for compliance and forensics\r\n */\r\nexport interface AuditTrailMetadata {\r\n userAgent?: string;\r\n screenResolution?: string;\r\n timezone?: string;\r\n language?: string;\r\n platform?: string;\r\n ipAddress?: string;\r\n geolocation?: {\r\n latitude: number;\r\n longitude: number;\r\n accuracy?: number;\r\n };\r\n}\r\n\r\n/**\r\n * Document metadata for PDF properties\r\n */\r\nexport interface DocumentMetadata {\r\n submissionId?: string;\r\n documentId?: string;\r\n author?: string;\r\n signerEmail?: string;\r\n signerInitials?: string;\r\n createdAt?: Date;\r\n}\r\n\r\n/**\r\n * Form submission data\r\n */\r\nexport interface SubmissionData {\r\n formFieldValues: Record<string, string>;\r\n signatures: Record<string, string>; // Base64 data URLs\r\n attachments?: Attachment[];\r\n pdfBytes: Uint8Array;\r\n auditTrail?: AuditTrailMetadata;\r\n metadata?: DocumentMetadata;\r\n}\r\n\r\n/**\r\n * Validation error\r\n */\r\nexport interface ValidationError {\r\n field: string;\r\n message: string;\r\n}\r\n\r\n/**\r\n * PDF viewer ref methods\r\n */\r\nexport interface PdfViewerRef {\r\n loadPdf: (pdfUrl: string) => Promise<void>;\r\n getFormFieldValues: () => Promise<Record<string, string>>;\r\n setFormFieldValues: (values: Record<string, string>) => Promise<void>;\r\n getAllFieldNames: () => Promise<string[]>;\r\n saveDocument: () => Promise<Uint8Array | null>;\r\n getPDFViewerApplication: () => PDFViewerApplication | null;\r\n injectPlaceholders: (fields: Array<{ id: string; name: string; placeholder?: string }>) => void;\r\n injectRadioLabels: (fields: Array<{ id: string; name: string; type: string; options?: string[] }>) => void;\r\n setFieldMetadata: (fields: FormField[]) => void;\r\n zoomIn: () => Promise<void>;\r\n zoomOut: () => Promise<void>;\r\n nextPage: () => Promise<void>;\r\n previousPage: () => Promise<void>;\r\n getCurrentPage: () => Promise<number | null>;\r\n getTotalPages: () => Promise<number | null>;\r\n attachFieldClickInterceptors: (onFieldClick: (fieldName: string, element?: HTMLElement) => boolean) => Promise<void>;\r\n attachFieldChangeListeners: (onFieldChange: (fieldName: string, value: string, element: HTMLElement) => void) => Promise<() => void>;\r\n addFieldIndicator: (fieldName: string, indicatorType?: 'completed' | 'pending-ack' | 'info', allowedFieldIds?: string) => void;\r\n removeFieldIndicator: (fieldName: string) => void;\r\n addDateFieldIndicator: (fieldName: string) => void;\r\n removeDateFieldIndicator: (fieldName: string) => void;\r\n previewSignature: (fieldName: string, dataUrl: string | null) => void;\r\n previewInitials: (fieldName: string, text: string | null) => void;\r\n clearFieldPreviews: (fieldName?: string) => void;\r\n}\r\n\r\n/**\r\n * Signature canvas ref methods\r\n */\r\nexport interface SignatureCanvasRef {\r\n clear: () => void;\r\n getSignatureDataUrl: () => string | null;\r\n isEmpty: () => boolean;\r\n}\r\n\r\n/**\r\n * Signer information for multi-signer documents\r\n */\r\nexport type RecipientType = 'signer' | 'viewer' | 'cc';\r\n\r\nexport interface Signer {\r\n id: string;\r\n email: string;\r\n name: string;\r\n signOrder: number; // 1 = primary, 2+ = secondary\r\n status: 'pending' | 'viewed' | 'signed' | 'declined';\r\n signedAt?: string;\r\n recipientType?: RecipientType; // Defaults to 'signer'\r\n}\r\n\r\n/**\r\n * Multi-signer context for determining field visibility and behavior\r\n * Used internally by hooks and utilities to manage multi-signer logic\r\n */\r\nexport interface MultiSignerContext {\r\n /** Whether this is a multi-signer document */\r\n isMultiSigner: boolean;\r\n /** Current signer object (null for single-signer mode) */\r\n currentSigner: Signer | null;\r\n /** Current signer's email address */\r\n currentSignerEmail: string;\r\n /** Whether current signer is a primary signer (signOrder === 1) */\r\n isPrimarySigner: boolean;\r\n /** Whether current signer is the final signer (signOrder === totalSigners) */\r\n isFinalSigner: boolean;\r\n}\r\n\r\n/**\r\n * Document submission\r\n */\r\nexport interface Submission {\r\n id: string;\r\n documentId: string;\r\n status: 'pending' | 'signed' | 'declined' | 'expired';\r\n createdAt: string;\r\n updatedAt: string;\r\n formFields?: FormField[];\r\n pdfUrl?: string;\r\n signedAt?: string;\r\n declinedAt?: string;\r\n expiresAt?: string;\r\n isMultipleSignature?: boolean;\r\n signers?: Signer[];\r\n}\r\n\r\n/**\r\n * Type aliases for compatibility with dm-web-frontend naming conventions\r\n */\r\nexport type EsignFormField = FormField;\r\nexport type EsignSigner = Signer;\r\n\r\n/**\r\n * Submission status enum\r\n */\r\nexport enum SubmissionStatus {\r\n PENDING = 'pending',\r\n SIGNED = 'signed',\r\n DECLINED = 'declined',\r\n EXPIRED = 'expired',\r\n}\r\n\r\n/**\r\n * Field error type for validation\r\n */\r\nexport interface FieldError {\r\n fieldName: string;\r\n message: string;\r\n}\r\n\r\n"]}
|