@arbidocs/blocks 0.5.102 → 0.5.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ConnectedCallDock-NEZJNTKH.js +1 -1
- package/dist/ConnectedCallDock-P7LK2HYF.cjs +1 -1
- package/dist/ConnectedCallRoom-FXTR4YFI.cjs +1 -1
- package/dist/ConnectedCallRoom-K3X6ICCG.js +1 -1
- package/dist/ConnectedNativeDocxComparison-7VJKOKYU.cjs +2 -2
- package/dist/ConnectedNativeDocxComparison-FENZYWDH.js +2 -2
- package/dist/ConnectedNativeDocxEditor-CNQAMO2N.js +2 -2
- package/dist/ConnectedNativeDocxEditor-HB5BHGZ2.cjs +2 -2
- package/dist/ConnectedStreamedWordArtifact-BF6JET2D.cjs +2 -2
- package/dist/ConnectedStreamedWordArtifact-ILMKFCDC.js +2 -2
- package/dist/{DocumentReviewCard-UUMBYSHO.cjs → DocumentReviewCard-FSOBIVED.cjs} +14 -14
- package/dist/{DocumentReviewCard-UUMBYSHO.cjs.map → DocumentReviewCard-FSOBIVED.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-UEFTDEOL.js → DocumentReviewCard-XB7BE7MZ.js} +9 -9
- package/dist/{DocumentReviewCard-UEFTDEOL.js.map → DocumentReviewCard-XB7BE7MZ.js.map} +1 -1
- package/dist/{FilesViewerDialog-R5VNYH72.js → FilesViewerDialog-5PL3HGYO.js} +8 -8
- package/dist/{FilesViewerDialog-R5VNYH72.js.map → FilesViewerDialog-5PL3HGYO.js.map} +1 -1
- package/dist/{FilesViewerDialog-B6AQP2UB.cjs → FilesViewerDialog-GEIQCBBK.cjs} +9 -9
- package/dist/{FilesViewerDialog-B6AQP2UB.cjs.map → FilesViewerDialog-GEIQCBBK.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-WD754UBK.js → WorkspaceTableView-SX5FIC4C.js} +3 -3
- package/dist/{WorkspaceTableView-WD754UBK.js.map → WorkspaceTableView-SX5FIC4C.js.map} +1 -1
- package/dist/{WorkspaceTableView-3D6SYOWT.cjs → WorkspaceTableView-Y2GX5GB2.cjs} +3 -3
- package/dist/{WorkspaceTableView-3D6SYOWT.cjs.map → WorkspaceTableView-Y2GX5GB2.cjs.map} +1 -1
- package/dist/agents/index.cjs +178 -177
- package/dist/agents/index.js +5 -4
- package/dist/chat/index.cjs +1 -1
- package/dist/chat/index.js +1 -1
- package/dist/{chunk-D3DOHXBQ.cjs → chunk-4LK74S7T.cjs} +24 -24
- package/dist/{chunk-D3DOHXBQ.cjs.map → chunk-4LK74S7T.cjs.map} +1 -1
- package/dist/{chunk-PL2CVHBB.cjs → chunk-7Z5CSFYV.cjs} +5 -5
- package/dist/{chunk-PL2CVHBB.cjs.map → chunk-7Z5CSFYV.cjs.map} +1 -1
- package/dist/{chunk-FKFUAU4F.js → chunk-ASOPBELQ.js} +7 -6
- package/dist/chunk-ASOPBELQ.js.map +1 -0
- package/dist/{chunk-ICE2ZKN4.js → chunk-BQHTBUOA.js} +3 -3
- package/dist/{chunk-ICE2ZKN4.js.map → chunk-BQHTBUOA.js.map} +1 -1
- package/dist/{chunk-JJ5BXK3Q.cjs → chunk-COCZMF7B.cjs} +7 -6
- package/dist/chunk-COCZMF7B.cjs.map +1 -0
- package/dist/{chunk-CMEIU2GA.cjs → chunk-CRKWD7B5.cjs} +28 -28
- package/dist/{chunk-CMEIU2GA.cjs.map → chunk-CRKWD7B5.cjs.map} +1 -1
- package/dist/{chunk-AMIPT72L.cjs → chunk-DGOVO2QO.cjs} +8 -8
- package/dist/{chunk-AMIPT72L.cjs.map → chunk-DGOVO2QO.cjs.map} +1 -1
- package/dist/{chunk-L3CWX2BN.cjs → chunk-DZGLEEUT.cjs} +4 -4
- package/dist/{chunk-L3CWX2BN.cjs.map → chunk-DZGLEEUT.cjs.map} +1 -1
- package/dist/{chunk-ZGAUD357.cjs → chunk-EIV4H2PZ.cjs} +4 -4
- package/dist/{chunk-ZGAUD357.cjs.map → chunk-EIV4H2PZ.cjs.map} +1 -1
- package/dist/{chunk-VVCSEYDP.cjs → chunk-G4D4UGSW.cjs} +4 -4
- package/dist/{chunk-VVCSEYDP.cjs.map → chunk-G4D4UGSW.cjs.map} +1 -1
- package/dist/{chunk-GCW7PS3D.js → chunk-I6WRLTWU.js} +3 -3
- package/dist/{chunk-GCW7PS3D.js.map → chunk-I6WRLTWU.js.map} +1 -1
- package/dist/{chunk-AUQF6UJZ.js → chunk-JAIMJTXQ.js} +4 -4
- package/dist/{chunk-AUQF6UJZ.js.map → chunk-JAIMJTXQ.js.map} +1 -1
- package/dist/chunk-JCMKYQGZ.js +26 -0
- package/dist/chunk-JCMKYQGZ.js.map +1 -0
- package/dist/{chunk-6AETD75K.js → chunk-K2G2P66L.js} +3 -3
- package/dist/{chunk-6AETD75K.js.map → chunk-K2G2P66L.js.map} +1 -1
- package/dist/{chunk-W4QYNRBU.cjs → chunk-KVQ6O54R.cjs} +46 -46
- package/dist/{chunk-W4QYNRBU.cjs.map → chunk-KVQ6O54R.cjs.map} +1 -1
- package/dist/{chunk-4YQBT5EL.cjs → chunk-KXNC24EF.cjs} +35 -35
- package/dist/{chunk-4YQBT5EL.cjs.map → chunk-KXNC24EF.cjs.map} +1 -1
- package/dist/{chunk-PCSJODXV.js → chunk-M6DTLHCN.js} +3 -3
- package/dist/{chunk-PCSJODXV.js.map → chunk-M6DTLHCN.js.map} +1 -1
- package/dist/{chunk-S67KFB54.js → chunk-NTXO6IYE.js} +3 -3
- package/dist/{chunk-S67KFB54.js.map → chunk-NTXO6IYE.js.map} +1 -1
- package/dist/{chunk-HC54CTGN.cjs → chunk-OSR3GCJG.cjs} +11 -11
- package/dist/chunk-OSR3GCJG.cjs.map +1 -0
- package/dist/{chunk-6TYZ33WH.cjs → chunk-OSWKA2NQ.cjs} +6 -6
- package/dist/chunk-OSWKA2NQ.cjs.map +1 -0
- package/dist/{chunk-TOT4HHHN.js → chunk-P5RTO2WL.js} +3 -24
- package/dist/chunk-P5RTO2WL.js.map +1 -0
- package/dist/chunk-QECKDZ47.cjs +31 -0
- package/dist/chunk-QECKDZ47.cjs.map +1 -0
- package/dist/{chunk-QM6OI62U.js → chunk-QVY5DH2R.js} +5 -5
- package/dist/{chunk-QM6OI62U.js.map → chunk-QVY5DH2R.js.map} +1 -1
- package/dist/{chunk-PP2NXTOP.js → chunk-RUV2ERID.js} +12 -12
- package/dist/{chunk-PP2NXTOP.js.map → chunk-RUV2ERID.js.map} +1 -1
- package/dist/{chunk-MDMQDVCA.cjs → chunk-S3SWSAUB.cjs} +4 -4
- package/dist/{chunk-MDMQDVCA.cjs.map → chunk-S3SWSAUB.cjs.map} +1 -1
- package/dist/{chunk-CDOW3H4B.js → chunk-SOY6UUFS.js} +3 -3
- package/dist/{chunk-CDOW3H4B.js.map → chunk-SOY6UUFS.js.map} +1 -1
- package/dist/{chunk-6S2LRXJ4.js → chunk-SYMZ6L3C.js} +6 -6
- package/dist/chunk-SYMZ6L3C.js.map +1 -0
- package/dist/{chunk-ZKTMTYFN.js → chunk-UYFWLP74.js} +6 -6
- package/dist/{chunk-ZKTMTYFN.js.map → chunk-UYFWLP74.js.map} +1 -1
- package/dist/{chunk-SOS2WASA.cjs → chunk-WZAHVTTO.cjs} +2 -26
- package/dist/chunk-WZAHVTTO.cjs.map +1 -0
- package/dist/{chunk-4RQDYXLE.js → chunk-ZR4TH6DZ.js} +5 -5
- package/dist/{chunk-4RQDYXLE.js.map → chunk-ZR4TH6DZ.js.map} +1 -1
- package/dist/collaboration/index.cjs +69 -69
- package/dist/collaboration/index.js +1 -1
- package/dist/collaboration/mail/MailActionBar.d.ts +3 -2
- package/dist/collaboration/mail/MailAddToWorkspaceDialog.d.ts +20 -0
- package/dist/collaboration/mail/MailFiledChips.d.ts +15 -0
- package/dist/collaboration/mail/MailMessageView.d.ts +3 -3
- package/dist/connect/docx.cjs +2 -2
- package/dist/connect/docx.js +2 -2
- package/dist/connect/index.cjs +1083 -810
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +503 -230
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +7 -7
- package/dist/connect/viewer.js +6 -6
- package/dist/connection/connectors/ConnectedMailboxSyncDialog.d.ts +3 -1
- package/dist/connection/connectors/native-mailbox.d.ts +19 -0
- package/dist/connection/files/imports/EmailImportPanel.d.ts +2 -2
- package/dist/connection/files/imports/NativeMailImportRow.d.ts +11 -0
- package/dist/connection/mail/ConnectedMailConversation.d.ts +3 -4
- package/dist/connection/mail/ConnectedMailbox.d.ts +1 -4
- package/dist/connection/mail/types.d.ts +2 -4
- package/dist/connection/mail/useMailMessageChange.d.ts +11 -2
- package/dist/connection/mail/useMailboxDefaults.d.ts +6 -3
- package/dist/connection/workspace-access/ConnectedGrantWorkspaceAccessDialog.d.ts +1 -1
- package/dist/document-tools/viewer/index.cjs +1 -1
- package/dist/document-tools/viewer/index.cjs.map +1 -1
- package/dist/document-tools/viewer/index.js +1 -1
- package/dist/document-tools/viewer/index.js.map +1 -1
- package/dist/embed/index.cjs +13 -13
- package/dist/embed/index.js +7 -7
- package/dist/files/import/ImportParts.d.ts +6 -3
- package/dist/files/index.cjs +224 -224
- package/dist/files/index.js +3 -3
- package/dist/index.cjs +337 -336
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +9 -8
- package/dist/index.js.map +1 -1
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +1 -1
- package/dist/studio/index.js +1 -1
- package/dist/workflow-canvas/index.cjs +21 -20
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workflow-canvas/index.js +11 -10
- package/dist/workflow-canvas/index.js.map +1 -1
- package/dist/workspaces/index.cjs +33 -28
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.d.ts +1 -1
- package/dist/workspaces/index.js +3 -2
- package/dist/workspaces/index.js.map +1 -1
- package/dist/workspaces/workspace-roles.d.ts +11 -4
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/chunk-6S2LRXJ4.js.map +0 -1
- package/dist/chunk-6TYZ33WH.cjs.map +0 -1
- package/dist/chunk-FKFUAU4F.js.map +0 -1
- package/dist/chunk-HC54CTGN.cjs.map +0 -1
- package/dist/chunk-JJ5BXK3Q.cjs.map +0 -1
- package/dist/chunk-SOS2WASA.cjs.map +0 -1
- package/dist/chunk-TOT4HHHN.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/document-tools/viewer/AnnotatedPdfViewer.tsx","../../../src/document-tools/viewer/SignaturePlacementViewer.tsx","../../../src/document-tools/viewer/SignatureRequestEditor.tsx"],"names":["PdfViewer","KitPdfViewer","useMemo","useAnnotationLayer","useEffect","useCallback","jsx","AnnotationPageOverlay","jsxs","useDocumentTools","useState","useRef","groups","Button"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * The PDF viewer with the document's MARKUP on it: toolbar, per-page overlay and the freeze dialog.\n *\n * The original is never touched. The marks are the version's markup on the server (native PDF\n * annotations in its `{doc}-markup.pdf`, see `createMarkupStore` in `@arbidocs/react/document-tools`),\n * with the document's own privacy:\n * a shared document has one markup that owners and collaborators edit and guests read; a private\n * one is its owner's. Edits autosave a few seconds after the last change and when the viewer\n * closes; colleagues' changes are merged in. \"Freeze\" renders a new PDF with the marks built in and\n * saves it as a separate document derived from the original (see `uploadFrozenCopy`). Load it\n * lazily: it brings in pdf-lib, which nothing else needs.\n *\n * Needs a `<DocumentToolsProvider>` (API client, user, notify, open, refresh) inside a React Query\n * `QueryClientProvider`. `viewer` is the PDF viewer to draw on (default: the kit `PdfViewer`); a host\n * passes its own binding of it, e.g. one that reports the visible page.\n *\n * `editing` off is the default reading view: the marks show and comments open, read-only, with no\n * toolbar. Unsaved edits still go out when switching from editing to reading.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState, type ComponentType } from 'react'\nimport {\n AnnotationPageOverlay,\n AnnotationToolbar,\n FreezeDialog,\n redactionLogCsv,\n useAnnotationLayer,\n type AnnotationController,\n type AnnotationStore,\n type FreezeChoices,\n} from '@arbidocs/react/annotations'\nimport { freezePdfInBrowser } from '@arbidocs/react/annotations/freeze'\nimport {\n createMarkupStore,\n fetchMarkupPdf,\n SIGNED_LOCKED_REASON,\n redactionLogName,\n uploadFrozenCopy,\n useDocumentTools,\n useIsOnline,\n type MarkupSnapshot,\n} from '@arbidocs/react/document-tools'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport { Download } from 'lucide-react'\n\n/** Autosave this long after the last change (the design's \"a few seconds\"). */\nexport const MARKUP_AUTOSAVE_MS = 2500\n/** Look for colleagues' changes this often while idle. */\nexport const MARKUP_PULL_MS = 20_000\n\n/** The PDF viewer the marks are drawn on: the kit viewer's props, with a page-overlay slot. */\nexport type DocumentPdfViewer = ComponentType<PdfViewerProps>\n\nexport interface AnnotatedPdfViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay'\n> {\n file: Blob\n documentId: string\n /** The version on screen when it is not the current one (its markup is shown, read-only). */\n version?: number\n fileName: string | null | undefined\n /** The original's workspace sharing and folder, which the frozen copy takes. */\n shared?: boolean\n folder?: string | null\n /** The original's workspace: the frozen copy is uploaded there, named on the request. */\n workspaceId?: string | null\n /** Annotate mode (toolbar, tools). Off: the marks are shown read-only. Default on. */\n editing?: boolean\n /** After each save: the markup's revision and how many marks it holds. */\n onMarkupChange?: (snapshot: MarkupSnapshot) => void\n /** Where the layer lives; defaults to the version's markup on the server. */\n store?: AnnotationStore\n /** The PDF viewer to draw on. Default: the kit `PdfViewer` from `@arbidocs/react/viewers`. */\n viewer?: DocumentPdfViewer\n /**\n * The version is signed, so locked: marks still go in the markup layer, but there is no\n * \"Download with markup\" (they are never written into its PDF).\n */\n signed?: boolean\n /**\n * One's saved signature or initials to place (PDF tab › My signature): arms the stamp tool with\n * the picture; the next click on a page places it. A new `key` arms it again.\n */\n placeStamp?: { image: string; label: string; key: number } | null\n}\n\nconst FALLBACK_AUTHOR = 'You'\n\n/** The same controller, view only: what the overlay gets outside annotate mode. */\nfunction viewOnly(controller: AnnotationController): AnnotationController {\n return { ...controller, readOnly: true, tool: 'select', setTool: () => {} }\n}\n\nexport function AnnotatedPdfViewer({\n file,\n documentId,\n version,\n fileName,\n shared = false,\n folder,\n workspaceId,\n editing = true,\n onMarkupChange,\n store: storeOverride,\n viewer: PdfViewer = KitPdfViewer,\n signed = false,\n placeStamp = null,\n ...viewerProps\n}: AnnotatedPdfViewerProps) {\n const {\n client,\n user,\n notify,\n saveFile,\n uploadDocument,\n openDocument,\n onDocumentsChanged,\n registerBeforeFileShare,\n } = useDocumentTools()\n const online = useIsOnline()\n const onChangeRef = useRef(onMarkupChange)\n onChangeRef.current = onMarkupChange\n const store = useMemo(\n () =>\n storeOverride ??\n createMarkupStore({\n version,\n client,\n onSaved: (snapshot) => onChangeRef.current?.(snapshot),\n }),\n // A new store per document version: its revision and tombstones belong to that markup.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [storeOverride, client, documentId, version]\n )\n const author = user?.name || FALLBACK_AUTHOR\n const controller = useAnnotationLayer({\n documentId,\n store,\n author,\n autosaveMs: MARKUP_AUTOSAVE_MS,\n online,\n pullMs: MARKUP_PULL_MS,\n // An older version is read-only; the hook also asks the store (a guest cannot write).\n readOnly: version !== undefined,\n })\n const shown = useMemo(\n () => (editing && !controller.readOnly ? controller : viewOnly(controller)),\n [editing, controller]\n )\n\n // Place my signature: the stamp tool, armed with the picture.\n const { setSettings, setTool } = controller\n useEffect(() => {\n if (!placeStamp) return\n setSettings({ stampImage: { image: placeStamp.image, label: placeStamp.label } })\n setTool('stamp')\n // eslint-disable-next-line react-hooks/exhaustive-deps -- once per request (its key)\n }, [placeStamp?.key])\n\n // Leaving annotate mode: write what is still waiting on the autosave timer.\n const { flush } = controller\n useEffect(\n () => registerBeforeFileShare(documentId, flush),\n [documentId, flush, registerBeforeFileShare]\n )\n useEffect(() => {\n if (!editing) void flush()\n }, [editing, flush])\n\n // Edits that cannot be saved right now (offline, or the server refused): warn before leaving.\n const atRisk = controller.dirty && (controller.offline || !!controller.error)\n useEffect(() => {\n if (!atRisk) return\n const warn = (e: BeforeUnloadEvent) => {\n e.preventDefault()\n e.returnValue = ''\n }\n window.addEventListener('beforeunload', warn)\n return () => window.removeEventListener('beforeunload', warn)\n }, [atRisk])\n\n const [freezeOpen, setFreezeOpen] = useState(false)\n const [busy, setBusy] = useState(false)\n const [progress, setProgress] = useState<{ done: number; total: number } | null>(null)\n const [error, setError] = useState<string | null>(null)\n\n const openFreeze = useCallback(() => {\n setError(null)\n setFreezeOpen(true)\n }, [])\n\n const downloadWithMarkup = useCallback(async () => {\n try {\n await controller.flush()\n const { blob, fileName: name } = await fetchMarkupPdf(client, documentId, version)\n saveFile(blob, name)\n } catch (e) {\n notify(e instanceof Error ? e.message : 'The markup could not be downloaded', 'error')\n }\n }, [controller, client, documentId, version, saveFile, notify])\n\n const handleFreeze = useCallback(\n async (choices: FreezeChoices) => {\n setBusy(true)\n setError(null)\n try {\n await controller.flush()\n // The log is taken from the layer as it is frozen; it never holds the redacted text.\n const log = choices.redactionLog ? redactionLogCsv(controller.layer) : null\n const bytes = new Uint8Array(await file.arrayBuffer())\n const result = await freezePdfInBrowser(bytes, controller.layer, {\n ...choices,\n author,\n onProgress: (done, total) => setProgress({ done, total }),\n })\n const redacted = result.provenance.redactions.count > 0\n const newDocId = await uploadFrozenCopy(\n uploadDocument,\n result.bytes,\n { documentId, fileName, shared, folder, workspaceId },\n redacted\n )\n if (log) saveFile(new Blob([log], { type: 'text/csv' }), redactionLogName(fileName))\n if (newDocId) {\n // The copy joins the list beside the original, which stays where it was.\n await onDocumentsChanged?.([newDocId], 'copy')\n openDocument?.(newDocId)\n }\n notify(\n redacted\n ? 'Redacted copy saved as a new document'\n : 'Annotated copy saved as a new document',\n 'success',\n { description: 'The original is unchanged and still in your files.' }\n )\n for (const warning of result.warnings) notify(warning, 'warning')\n setFreezeOpen(false)\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The copy could not be created')\n } finally {\n setBusy(false)\n setProgress(null)\n }\n },\n [\n controller,\n author,\n file,\n fileName,\n documentId,\n shared,\n folder,\n workspaceId,\n uploadDocument,\n saveFile,\n notify,\n onDocumentsChanged,\n openDocument,\n ]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber, pageWidthPt }: { pageNumber: number; pageWidthPt: number | undefined }) => (\n <AnnotationPageOverlay controller={shown} pageNumber={pageNumber} pageWidthPt={pageWidthPt} />\n ),\n [shown]\n )\n\n const hasMarks = controller.layer.annotations.length > 0\n\n return (\n <div\n className=\"flex h-full min-h-0 flex-col\"\n data-testid=\"annotated-pdf-viewer\"\n data-mode={editing ? 'edit' : 'view'}\n data-markup-status={controller.status}\n >\n {editing && (\n <AnnotationToolbar\n controller={controller}\n onFreeze={controller.readOnly ? undefined : openFreeze}\n actions={\n hasMarks && !controller.dirty && version === undefined ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:cursor-not-allowed disabled:text-muted-foreground disabled:no-underline pointer-coarse:min-h-11\"\n data-testid=\"annotation-download-markup\"\n title={\n signed\n ? SIGNED_LOCKED_REASON\n : 'Download the PDF with these annotations (opens in Acrobat or Preview)'\n }\n disabled={signed}\n onClick={() => void downloadWithMarkup()}\n >\n <Download size={14} />\n Download with markup\n </button>\n ) : null\n }\n />\n )}\n {!editing && controller.status === 'error' && (\n <div className=\"border-b px-3 py-1.5 text-xs text-destructive\" data-testid=\"markup-error\">\n The markup could not be loaded: {controller.error}\n </div>\n )}\n <div className=\"min-h-0 flex-1\">\n <PdfViewer {...viewerProps} file={file} renderPageOverlay={renderPageOverlay} />\n </div>\n {editing && (\n <FreezeDialog\n open={freezeOpen}\n onOpenChange={setFreezeOpen}\n controller={controller}\n onConfirm={handleFreeze}\n busy={busy}\n progress={progress}\n error={error}\n />\n )}\n </div>\n )\n}\n","/**\n * Choose where a signature goes: the PDF with the annotation overlay's box tool, kept in memory\n * only. The box is not an annotation; it is handed to the Sign dialog, and the backend draws the\n * signature there. Needs no `<DocumentToolsProvider>`.\n */\n\nimport { useCallback, useEffect, useMemo, type ReactElement } from 'react'\nimport {\n AnnotationPageOverlay,\n createMemoryStore,\n useAnnotationLayer,\n type BoxAnnotation,\n} from '@arbidocs/react/annotations'\nimport {\n isLegibleSignatureBox,\n toAppearance,\n type SignatureAppearance,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\n\nconst SIGNATURE_BOX_COLOR = '#1c7ed6'\n\nexport interface SignaturePlacementViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay'\n> {\n file: Blob\n documentId: string\n onCancel: () => void\n /** The chosen box, or undefined for the default spot (bottom of the last page). */\n onContinue: (appearance: SignatureAppearance | undefined) => void\n /** The PDF viewer to draw on. Default: the kit `PdfViewer` from `@arbidocs/react/viewers`. */\n viewer?: DocumentPdfViewer\n}\n\nexport function SignaturePlacementViewer({\n file,\n documentId,\n onCancel,\n onContinue,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: SignaturePlacementViewerProps): ReactElement {\n const store = useMemo(() => createMemoryStore(), [])\n const controller = useAnnotationLayer({ documentId, store, author: 'signature' })\n const boxes = controller.layer.annotations.filter((a): a is BoxAnnotation => a.kind === 'box')\n const box = boxes.at(-1)\n const isTooSmall = box !== undefined && !isLegibleSignatureBox(box.rect)\n\n // Draw with the box tool; once there is a box, select it so it can be moved or resized.\n useEffect(() => {\n if (controller.status !== 'ready') return\n controller.setSettings({ colors: { ...controller.settings.colors, box: SIGNATURE_BOX_COLOR } })\n // eslint-disable-next-line react-hooks/exhaustive-deps -- once, when the layer is ready\n }, [controller.status])\n useEffect(() => {\n if (controller.status !== 'ready') return\n // One signature box: drawing another replaces it.\n for (const old of boxes.slice(0, -1)) controller.remove(old.id)\n if (box) {\n controller.select(box.id)\n controller.setTool('select')\n } else {\n controller.setTool('box')\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- react to the boxes only\n }, [controller.status, boxes.length, box?.id])\n\n const redraw = useCallback(() => {\n if (box) controller.remove(box.id)\n controller.setTool('box')\n }, [box, controller])\n\n const renderPageOverlay = useCallback(\n ({ pageNumber, pageWidthPt }: { pageNumber: number; pageWidthPt: number | undefined }) => (\n <AnnotationPageOverlay\n controller={controller}\n pageNumber={pageNumber}\n pageWidthPt={pageWidthPt}\n />\n ),\n [controller]\n )\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"signature-placement-viewer\">\n <div className=\"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2 text-sm\">\n <span className=\"mr-auto text-muted-foreground\" data-testid=\"signature-placement-hint\">\n {isTooSmall\n ? 'This box is small: the signature will print small. Make it larger to keep it legible.'\n : box\n ? 'Move or resize the box, then continue.'\n : 'Drag a box where your signature goes, or continue to sign at the end.'}\n </span>\n {box && (\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={redraw}>\n Redraw\n </Button>\n )}\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onCancel}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => onContinue(box ? toAppearance(box) : undefined)}\n data-testid=\"signature-placement-continue\"\n >\n Continue\n </Button>\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer {...viewerProps} file={file} renderPageOverlay={renderPageOverlay} />\n </div>\n </div>\n )\n}\n","/**\n * Prepare a document for signature: add the signers, then place each field (signature, initials,\n * date signed, name) where it goes on the PDF of the version shown, for the signer it is for.\n * A Word document's own signature fields (Insert › Signature field) are placed on opening, each\n * for the signer it names. \"Find signature blocks\" proposes fields from the document's execution\n * blocks (\"Director\", \"Witness name\", \"[Signature]\", \"Date:\"); the author assigns a signer per\n * block. A signer is a workspace member or anyone by email: someone not in the workspace is\n * invited (as a guest) when it is sent, and signs once they join. Save it as a draft or send it:\n * each signer is notified and walked through their fields. Needs a `<DocumentToolsProvider>`\n * inside a React Query `QueryClientProvider`.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState, type ReactElement } from 'react'\nimport { MailPlus, PenLine, ScanSearch, Send, UserPlus, X } from 'lucide-react'\nimport {\n FIELD_TYPE_LABELS,\n SIGNATURE_FIELD_TYPES,\n fieldsFromSuggestions,\n isEmailSigner,\n newFieldId,\n sendBlocker,\n signatureFieldSuggestions,\n splitSuggestions,\n suggestSignatureFields,\n useDocumentTools,\n useInviteSigners,\n useSaveSignatureRequest,\n useSignerCandidates,\n type SignatureField,\n type SignatureFieldType,\n type SignatureRequest,\n type SuggestedSignatureField,\n} from '@arbidocs/react/document-tools'\nimport { Button, Checkbox, Input, Label, cn } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\nimport { SIGNER_COLORS, SignatureFieldsOverlay } from './SignatureFieldsOverlay'\n\nexport interface SignatureRequestEditorProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay'\n> {\n /** The PDF of the version shown (`GET /view?version=`): the fields are placed on it. */\n file: Blob\n documentId: string\n /** The version `file` is of; omitted = the current version. */\n version?: number\n /** A draft to go on editing. */\n draft?: SignatureRequest | null\n onCancel: () => void\n onSaved: (request: SignatureRequest) => void\n viewer?: DocumentPdfViewer\n /** Send a version-specific file grant, without inviting signers into the workspace. */\n shareFile?: boolean\n selfSigning?: boolean\n}\n\nconst selectClass =\n 'h-8 rounded-md border border-input bg-background px-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring'\n\nexport function SignatureRequestEditor({\n file,\n documentId,\n version,\n draft,\n shareFile = false,\n selfSigning = false,\n onCancel,\n onSaved,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: SignatureRequestEditorProps): ReactElement {\n const { client, notify, user, prepareFileShare } = useDocumentTools()\n const candidates = useSignerCandidates()\n const save = useSaveSignatureRequest()\n const [sharing, setSharing] = useState(false)\n const invite = useInviteSigners()\n const [fields, setFields] = useState<SignatureField[]>(() => draft?.fields ?? [])\n const [signers, setSigners] = useState<string[]>(() => [\n ...new Set(\n selfSigning && user?.email\n ? [user.email.toLowerCase()]\n : (draft?.fields ?? []).map((f) => f.signer)\n ),\n ])\n const [current, setCurrent] = useState<string | null>(signers[0] ?? null)\n const [placing, setPlacing] = useState<SignatureFieldType | null>(null)\n const [selectedId, setSelectedId] = useState<string | null>(null)\n const [message, setMessage] = useState(draft?.message ?? '')\n const [suggestions, setSuggestions] = useState<SuggestedSignatureField[] | null>(null)\n const [assign, setAssign] = useState<Record<number, string | undefined>>({})\n const [finding, setFinding] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [newEmail, setNewEmail] = useState('')\n /** Names the Word document's fields give their signers, by email. */\n const [givenNames, setGivenNames] = useState<Record<string, string>>({})\n /** Signers to invite before sending, waiting for the author to confirm. */\n const [confirmInvite, setConfirmInvite] = useState<string[] | null>(null)\n\n const people = useMemo(() => candidates.data ?? [], [candidates.data])\n const members = useMemo(\n () => new Map(people.map((p) => [p.email.toLowerCase(), p.externalId])),\n [people]\n )\n const me = people.find((p) => p.email.toLowerCase() === user?.email?.toLowerCase())\n const nameOf = useCallback(\n (token: string) => {\n const person = people.find((p) => p.externalId === token)\n if (person) return person.name\n const invited = draft?.signers.find((s) => s.external_id === token)\n if (invited) return invited.name || invited.email || token\n const email = token.toLowerCase()\n const member = people.find((p) => p.email.toLowerCase() === email)\n return member?.name ?? givenNames[email] ?? token\n },\n [people, draft, givenNames]\n )\n /** A signer by name and email (\"Dana Day (dana@example.com)\"), or the email alone when unnamed. */\n const nameAndEmailOf = (token: string) => {\n const name = nameOf(token)\n return isEmailSigner(token) && name !== token ? `${name} (${token})` : name\n }\n /** Not in the workspace yet: an email that is no member's (they are invited when it is sent). */\n const isInvitee = useCallback(\n (token: string) =>\n (isEmailSigner(token) && !members.has(token.toLowerCase())) ||\n draft?.signers.find((s) => s.external_id === token)?.progress === 'invited',\n [members, draft]\n )\n const colorOf = useCallback(\n (ext: string) => {\n const i = signers.indexOf(ext)\n return SIGNER_COLORS[(i < 0 ? 0 : i) % SIGNER_COLORS.length]!\n },\n [signers]\n )\n const selected = fields.find((f) => f.id === selectedId) ?? null\n const blocker = signers.length === 0 ? 'Add a signer.' : sendBlocker(fields)\n\n const addSigner = (token: string) => {\n if (!token) return\n // A member's email is the member.\n const ext = isEmailSigner(token)\n ? (members.get(token.trim().toLowerCase()) ?? token.trim().toLowerCase())\n : token\n if (signers.includes(ext)) return\n setSigners((s) => [...s, ext])\n setCurrent(ext)\n setPlacing((p) => p ?? 'signature')\n }\n const removeSigner = (ext: string) => {\n setSigners((s) => s.filter((x) => x !== ext))\n setFields((fs) => fs.filter((f) => f.signer !== ext))\n if (current === ext) setCurrent(signers.find((x) => x !== ext) ?? null)\n }\n\n const updateField = (id: string, patch: Partial<SignatureField>) =>\n setFields((fs) => fs.map((f) => (f.id === id ? { ...f, ...patch } : f)))\n\n /** The Word document's own fields, placed on opening a new request (each for the signer it names). */\n const placedOnce = useRef(false)\n useEffect(() => {\n if (draft || placedOnce.current || candidates.isLoading) return\n placedOnce.current = true\n let live = true\n void signatureFieldSuggestions(client, documentId, version)\n .then(({ fields: found, signers: namedSigners }) => {\n if (!live) return\n const { placed, extras } = splitSuggestions(found ?? [])\n // Who the Word fields name, even when none of them is found on the PDF (placed by hand).\n const named = Object.fromEntries([\n ...namedSigners.map((s) => [s.email.toLowerCase(), s.name]),\n ...placed.flatMap((s) =>\n s.signer_email && s.signer_name ? [[s.signer_email.toLowerCase(), s.signer_name]] : []\n ),\n ])\n setGivenNames((n) => ({ ...n, ...named }))\n if (!placed.length) return\n const added = fieldsFromSuggestions(placed, {}, members)\n setFields((fs) => [...fs, ...added])\n const assigned = [...new Set(added.map((f) => f.signer))]\n setSigners((s) => [...s, ...assigned.filter((t) => !s.includes(t))])\n setCurrent((c) => c ?? assigned[0] ?? null)\n // Fields placed with no signer, and the signature lines found besides: offered, not added.\n const open = placed.filter((s) => !s.signer_email)\n if (open.length || extras.length) {\n setSuggestions([...open, ...extras])\n setAssign({})\n }\n notify(\n `${added.length} field${added.length === 1 ? '' : 's'} placed from the document.`,\n 'success'\n )\n })\n .catch(() => {\n /* no fields to place: the author places them */\n })\n return () => {\n live = false\n }\n }, [draft, candidates.isLoading, client, documentId, version, members, notify])\n\n const findBlocks = async () => {\n setFinding(true)\n setError(null)\n try {\n const found = await suggestSignatureFields(client, documentId, version)\n setSuggestions(found)\n // Block n goes to the n-th signer when there are enough; otherwise left for the author.\n const groups = [...new Set(found.map((s) => s.group))]\n setAssign(Object.fromEntries(groups.map((g, i) => [g, signers[i]])))\n if (found.length === 0) notify('No signature blocks were found in this document.', 'info')\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signature blocks could not be read')\n } finally {\n setFinding(false)\n }\n }\n\n const applySuggestions = () => {\n if (!suggestions) return\n const added = fieldsFromSuggestions(suggestions, assign, members)\n setFields((fs) => [...fs, ...added])\n const assigned = [...new Set(added.map((f) => f.signer))]\n setSigners((s) => [...s, ...assigned.filter((ext) => !s.includes(ext))])\n if (!current && assigned[0]) setCurrent(assigned[0])\n setSuggestions(null)\n notify(`${added.length} field${added.length === 1 ? '' : 's'} added.`, 'success')\n }\n\n const submit = async (send: boolean, invited = false) => {\n setError(null)\n const invitees = signers.filter((t) => isEmailSigner(t) && !members.has(t.toLowerCase()))\n if (!shareFile && send && invitees.length && !invited) {\n setConfirmInvite(invitees)\n return\n }\n try {\n if (shareFile) {\n setSharing(true)\n const { createFileShare, fileShareSigningRequest } =\n await import('@arbidocs/react/document-tools')\n const fileFields = fields.map((f) => ({\n ...f,\n signer: (people.find((p) => p.externalId === f.signer)?.email ?? f.signer).toLowerCase(),\n }))\n await prepareFileShare(documentId)\n const shared = await createFileShare(client, documentId, {\n version: version ?? 1,\n fields: fileFields,\n message,\n recipients: [...new Set(fileFields.map((f) => f.signer))].map((email) => ({\n email,\n permission: 'sign' as const,\n })),\n })\n onSaved(fileShareSigningRequest(shared))\n window.location.assign(`/shared-files/${shared.external_id}`)\n return\n }\n if (send && invitees.length && me?.role === 'owner') {\n await invite.mutateAsync({ documentId, emails: invitees })\n }\n const request = await save.mutateAsync({\n documentId,\n version,\n fields,\n message: message.trim() || undefined,\n requestId: draft?.status === 'draft' ? draft.external_id : undefined,\n send,\n })\n const waiting = request.signers.filter((s) => s.progress === 'invited').length\n notify(\n send\n ? `Sent for signature to ${request.signers.length} signer${request.signers.length === 1 ? '' : 's'}.` +\n (waiting\n ? ` ${waiting} ${waiting === 1 ? 'is' : 'are'} asked once they join the workspace.`\n : '')\n : 'Draft saved.',\n 'success'\n )\n setConfirmInvite(null)\n onSaved(request)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'The request could not be saved')\n } finally {\n setSharing(false)\n }\n }\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) => (\n <SignatureFieldsOverlay\n page={pageNumber - 1}\n fields={fields}\n colorOf={colorOf}\n labelOf={(f) => `${FIELD_TYPE_LABELS[f.type]} · ${nameOf(f.signer).split(' ')[0]}`}\n editable\n placing={current ? placing : null}\n selectedId={selectedId}\n onSelect={setSelectedId}\n onCreate={(box) => {\n if (!current || !placing) return\n const field: SignatureField = {\n id: newFieldId(),\n type: placing,\n page: pageNumber - 1,\n signer: current,\n required: true,\n ...box,\n }\n setFields((fs) => [...fs, field])\n setSelectedId(field.id)\n }}\n onChange={(id, box) => updateField(id, box)}\n onRemove={(id) => {\n setFields((fs) => fs.filter((f) => f.id !== id))\n setSelectedId(null)\n }}\n />\n ),\n [fields, colorOf, nameOf, current, placing, selectedId]\n )\n\n const groups = suggestions ? [...new Set(suggestions.map((s) => s.group))] : []\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"signature-request-editor\">\n <div className=\"space-y-2 border-b border-border px-3 py-2 text-sm\">\n {shareFile && (\n <p className=\"border-b px-3 py-2 text-sm text-muted-foreground\">\n Recipients receive only this file version. They will not join this workspace. An email\n will link them to review and sign.\n </p>\n )}\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium\">Signers</span>\n {signers.map((ext) => (\n <span\n key={ext}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full border py-0.5 pr-1 pl-2',\n current === ext && 'bg-muted'\n )}\n style={{ borderColor: colorOf(ext) }}\n >\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5\"\n onClick={() => setCurrent(ext)}\n aria-pressed={current === ext}\n data-testid={`signer-chip-${ext}`}\n >\n <span className=\"size-2.5 rounded-full\" style={{ background: colorOf(ext) }} />\n {nameOf(ext)}\n {isInvitee(ext) && (\n <span className=\"text-xs text-muted-foreground\" data-testid=\"signer-invited\">\n (to invite)\n </span>\n )}\n </button>\n <button\n type=\"button\"\n aria-label={`Remove ${nameOf(ext)}`}\n className=\"rounded-full p-0.5 hover:bg-accent\"\n onClick={() => removeSigner(ext)}\n >\n <X className=\"size-3\" />\n </button>\n </span>\n ))}\n <label className=\"inline-flex items-center gap-1 text-muted-foreground\">\n <UserPlus className=\"size-4\" aria-hidden />\n <span className=\"sr-only\">Add a signer</span>\n <select\n className={selectClass}\n value=\"\"\n onChange={(e) => addSigner(e.target.value)}\n disabled={candidates.isLoading}\n data-testid=\"signature-add-signer\"\n >\n <option value=\"\">\n {candidates.isLoading ? 'Loading members…' : 'Add a signer…'}\n </option>\n {people\n .filter((p) => !signers.includes(p.externalId))\n .map((p) => (\n <option key={p.externalId} value={p.externalId}>\n {p.name} ({p.email})\n </option>\n ))}\n </select>\n </label>\n <form\n className=\"inline-flex items-center gap-1\"\n onSubmit={(e) => {\n e.preventDefault()\n if (!isEmailSigner(newEmail)) return\n addSigner(newEmail)\n setNewEmail('')\n }}\n >\n <Input\n type=\"email\"\n value={newEmail}\n onChange={(e) => setNewEmail(e.target.value)}\n placeholder=\"Or anyone, by email\"\n aria-label=\"Signer's email\"\n className=\"h-8 w-52\"\n data-testid=\"signature-add-email\"\n />\n <Button\n type=\"submit\"\n size=\"sm\"\n variant=\"ghost\"\n disabled={!isEmailSigner(newEmail)}\n aria-label=\"Add this signer\"\n data-testid=\"signature-add-email-submit\"\n >\n <MailPlus className=\"size-4\" aria-hidden />\n </Button>\n </form>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-muted-foreground\">\n {current ? `Place for ${nameOf(current)}:` : 'Add a signer, then place their fields.'}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n variant={placing === null ? 'default' : 'outline'}\n onClick={() => setPlacing(null)}\n >\n Select fields\n </Button>\n {SIGNATURE_FIELD_TYPES.map((type) => (\n <Button\n key={type}\n type=\"button\"\n size=\"sm\"\n variant={placing === type && current ? 'default' : 'outline'}\n disabled={!current}\n onClick={() => setPlacing(type)}\n aria-pressed={placing === type && !!current}\n data-testid={`signature-place-${type}`}\n >\n {FIELD_TYPE_LABELS[type]}\n </Button>\n ))}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={findBlocks}\n disabled={finding}\n data-testid=\"signature-find-blocks\"\n >\n <ScanSearch className=\"mr-1 size-4\" aria-hidden />\n {finding ? 'Looking…' : 'Find signature blocks'}\n </Button>\n <span className=\"ml-auto flex items-center gap-2\">\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onCancel}>\n Cancel\n </Button>\n {!shareFile && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => submit(false)}\n disabled={save.isPending || fields.length === 0}\n data-testid=\"signature-save-draft\"\n >\n Save draft\n </Button>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => submit(true)}\n disabled={sharing || save.isPending || !!blocker}\n title={blocker ?? undefined}\n data-testid=\"signature-send\"\n >\n <Send className=\"mr-1 size-4\" aria-hidden />\n {sharing || save.isPending ? 'Sending…' : 'Send for signature'}\n </Button>\n </span>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <Input\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n maxLength={2000}\n placeholder=\"Message to the signers (optional)\"\n className=\"h-8 max-w-md\"\n data-testid=\"signature-message\"\n />\n <span className=\"text-muted-foreground\" data-testid=\"signature-editor-summary\">\n {fields.length} field{fields.length === 1 ? '' : 's'}\n {blocker ? ` · ${blocker}` : ' · ready to send'}\n </span>\n </div>\n {selected && (\n <div\n className=\"flex flex-wrap items-center gap-3 rounded-md bg-muted px-2 py-1.5\"\n data-testid=\"signature-field-details\"\n >\n <PenLine className=\"size-4\" aria-hidden />\n <select\n className={selectClass}\n value={selected.type}\n aria-label=\"Field type\"\n onChange={(e) =>\n updateField(selected.id, { type: e.target.value as SignatureFieldType })\n }\n >\n {SIGNATURE_FIELD_TYPES.map((t) => (\n <option key={t} value={t}>\n {FIELD_TYPE_LABELS[t]}\n </option>\n ))}\n </select>\n <select\n className={selectClass}\n value={selected.signer}\n aria-label=\"Signer\"\n onChange={(e) => updateField(selected.id, { signer: e.target.value })}\n data-testid=\"signature-field-signer\"\n >\n {signers.map((ext) => (\n <option key={ext} value={ext}>\n {nameOf(ext)}\n </option>\n ))}\n </select>\n <span className=\"flex items-center gap-1.5\">\n <Checkbox\n id=\"signature-field-required\"\n checked={selected.required}\n onCheckedChange={(c) => updateField(selected.id, { required: c === true })}\n />\n <Label htmlFor=\"signature-field-required\" className=\"font-normal\">\n Required\n </Label>\n </span>\n </div>\n )}\n {suggestions && suggestions.length > 0 && (\n <div className=\"space-y-1.5 rounded-md border p-2\" data-testid=\"signature-suggestions\">\n <div className=\"font-medium\">\n Found {groups.length} signature block{groups.length === 1 ? '' : 's'}. Choose who\n signs each.\n </div>\n {groups.map((g) => {\n const inBlock = suggestions.filter((s) => s.group === g)\n const role = inBlock.find((s) => s.role)?.role\n return (\n <div key={g} className=\"flex flex-wrap items-center gap-2\">\n <span className=\"min-w-40\">\n {role ?? `Block ${g + 1}`}{' '}\n <span className=\"text-muted-foreground\">\n (p. {inBlock[0]!.page + 1}:{' '}\n {inBlock.map((s) => FIELD_TYPE_LABELS[s.type]).join(', ')})\n </span>\n </span>\n <select\n className={selectClass}\n value={assign[g] ?? ''}\n onChange={(e) => setAssign((a) => ({ ...a, [g]: e.target.value || undefined }))}\n data-testid={`signature-suggestion-signer-${g}`}\n >\n <option value=\"\">Skip</option>\n {people.map((p) => (\n <option key={p.externalId} value={p.externalId}>\n {p.name}\n </option>\n ))}\n {signers\n .filter((t) => !people.some((p) => p.externalId === t))\n .map((t) => (\n <option key={t} value={t}>\n {nameOf(t)}\n </option>\n ))}\n </select>\n </div>\n )\n })}\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={applySuggestions}\n disabled={!Object.values(assign).some(Boolean)}\n data-testid=\"signature-suggestions-apply\"\n >\n Add fields\n </Button>\n <Button type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setSuggestions(null)}>\n Dismiss\n </Button>\n </div>\n </div>\n )}\n {confirmInvite && (\n <div\n className=\"space-y-1.5 rounded-md border border-amber-300 bg-amber-50 p-2 text-amber-950 dark:border-amber-800 dark:bg-amber-950/40 dark:text-amber-100\"\n data-testid=\"signature-invite-confirm\"\n >\n <p>\n Not in this workspace yet:{' '}\n <strong>{confirmInvite.map(nameAndEmailOf).join(', ')}</strong>.{' '}\n {me?.role === 'owner'\n ? 'They are invited as guests and asked to sign when they join.'\n : 'Ask a workspace owner to invite them: they are asked to sign when they join.'}\n </p>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => submit(true, true)}\n disabled={save.isPending || invite.isPending}\n data-testid=\"signature-invite-send\"\n >\n {me?.role === 'owner' ? 'Invite and send' : 'Send'}\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setConfirmInvite(null)}\n >\n Cancel\n </Button>\n </div>\n </div>\n )}\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"signature-editor-error\">\n {error}\n </p>\n )}\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer {...viewerProps} file={file} renderPageOverlay={renderPageOverlay} />\n </div>\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/document-tools/viewer/AnnotatedPdfViewer.tsx","../../../src/document-tools/viewer/SignaturePlacementViewer.tsx","../../../src/document-tools/viewer/SignatureRequestEditor.tsx"],"names":["PdfViewer","KitPdfViewer","useMemo","useAnnotationLayer","useEffect","useCallback","jsx","AnnotationPageOverlay","jsxs","useDocumentTools","useState","useRef","groups","Button"],"mappings":";;;;;;;;;;;;;;AA8CO,IAAM,kBAAA,GAAqB;AAE3B,IAAM,cAAA,GAAiB;AAuC9B,IAAM,eAAA,GAAkB,KAAA;AAGxB,SAAS,SAAS,UAAA,EAAwD;AACxE,EAAA,OAAO,EAAE,GAAG,UAAA,EAAY,QAAA,EAAU,MAAM,IAAA,EAAM,QAAA,EAAU,SAAS,MAAM;AAAA,EAAC,CAAA,EAAE;AAC5E;AAEO,SAAS,kBAAA,CAAmB;AAAA,EACjC,IAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,MAAA;AAAA,EACA,WAAA;AAAA,EACA,OAAA,GAAU,IAAA;AAAA,EACV,cAAA;AAAA,EACA,KAAA,EAAO,aAAA;AAAA,EACP,QAAQA,WAAA,GAAYC,SAAA;AAAA,EACpB,MAAA,GAAS,KAAA;AAAA,EACT,UAAA,GAAa,IAAA;AAAA,EACb,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,MACE,gBAAA,EAAiB;AACrB,EAAA,MAAM,SAAS,WAAA,EAAY;AAC3B,EAAA,MAAM,WAAA,GAAc,OAAO,cAAc,CAAA;AACzC,EAAA,WAAA,CAAY,OAAA,GAAU,cAAA;AACtB,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,MACE,iBACA,iBAAA,CAAkB;AAAA,MAChB,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA,EAAS,CAAC,QAAA,KAAa,WAAA,CAAY,UAAU,QAAQ;AAAA,KACtD,CAAA;AAAA;AAAA;AAAA,IAGH,CAAC,aAAA,EAAe,MAAA,EAAQ,UAAA,EAAY,OAAO;AAAA,GAC7C;AACA,EAAA,MAAM,MAAA,GAAS,MAAM,IAAA,IAAQ,eAAA;AAC7B,EAAA,MAAM,aAAa,kBAAA,CAAmB;AAAA,IACpC,UAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA,EAAY,kBAAA;AAAA,IACZ,MAAA;AAAA,IACA,MAAA,EAAQ,cAAA;AAAA;AAAA,IAER,UAAU,OAAA,KAAY;AAAA,GACvB,CAAA;AACD,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,MAAO,OAAA,IAAW,CAAC,WAAW,QAAA,GAAW,UAAA,GAAa,SAAS,UAAU,CAAA;AAAA,IACzE,CAAC,SAAS,UAAU;AAAA,GACtB;AAGA,EAAA,MAAM,EAAE,WAAA,EAAa,OAAA,EAAQ,GAAI,UAAA;AACjC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAA,EAAY;AACjB,IAAA,WAAA,CAAY,EAAE,UAAA,EAAY,EAAE,KAAA,EAAO,UAAA,CAAW,OAAO,KAAA,EAAO,UAAA,CAAW,KAAA,EAAM,EAAG,CAAA;AAChF,IAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,EAEjB,CAAA,EAAG,CAAC,UAAA,EAAY,GAAG,CAAC,CAAA;AAGpB,EAAA,MAAM,EAAE,OAAM,GAAI,UAAA;AAClB,EAAA,SAAA;AAAA,IACE,MAAM,uBAAA,CAAwB,UAAA,EAAY,KAAK,CAAA;AAAA,IAC/C,CAAC,UAAA,EAAY,KAAA,EAAO,uBAAuB;AAAA,GAC7C;AACA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,OAAA,EAAS,KAAK,KAAA,EAAM;AAAA,EAC3B,CAAA,EAAG,CAAC,OAAA,EAAS,KAAK,CAAC,CAAA;AAGnB,EAAA,MAAM,SAAS,UAAA,CAAW,KAAA,KAAU,WAAW,OAAA,IAAW,CAAC,CAAC,UAAA,CAAW,KAAA,CAAA;AACvE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAA,EAAQ;AACb,IAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAyB;AACrC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,CAAA,CAAE,WAAA,GAAc,EAAA;AAAA,IAClB,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,gBAAgB,IAAI,CAAA;AAC5C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,cAAA,EAAgB,IAAI,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAiD,IAAI,CAAA;AACrF,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAwB,IAAI,CAAA;AAEtD,EAAA,MAAM,UAAA,GAAa,YAAY,MAAM;AACnC,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,aAAA,CAAc,IAAI,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAAqB,YAAY,YAAY;AACjD,IAAA,IAAI;AACF,MAAA,MAAM,WAAW,KAAA,EAAM;AACvB,MAAA,MAAM,EAAE,MAAM,QAAA,EAAU,IAAA,KAAS,MAAM,cAAA,CAAe,MAAA,EAAQ,UAAA,EAAY,OAAO,CAAA;AACjF,MAAA,QAAA,CAAS,MAAM,IAAI,CAAA;AAAA,IACrB,SAAS,CAAA,EAAG;AACV,MAAA,MAAA,CAAO,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,sCAAsC,OAAO,CAAA;AAAA,IACvF;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,MAAA,EAAQ,YAAY,OAAA,EAAS,QAAA,EAAU,MAAM,CAAC,CAAA;AAE9D,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,OAAO,OAAA,KAA2B;AAChC,MAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,MAAA,QAAA,CAAS,IAAI,CAAA;AACb,MAAA,IAAI;AACF,QAAA,MAAM,WAAW,KAAA,EAAM;AAEvB,QAAA,MAAM,MAAM,OAAA,CAAQ,YAAA,GAAe,eAAA,CAAgB,UAAA,CAAW,KAAK,CAAA,GAAI,IAAA;AACvE,QAAA,MAAM,QAAQ,IAAI,UAAA,CAAW,MAAM,IAAA,CAAK,aAAa,CAAA;AACrD,QAAA,MAAM,MAAA,GAAS,MAAM,kBAAA,CAAmB,KAAA,EAAO,WAAW,KAAA,EAAO;AAAA,UAC/D,GAAG,OAAA;AAAA,UACH,MAAA;AAAA,UACA,UAAA,EAAY,CAAC,IAAA,EAAM,KAAA,KAAU,YAAY,EAAE,IAAA,EAAM,OAAO;AAAA,SACzD,CAAA;AACD,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,UAAA,CAAW,UAAA,CAAW,KAAA,GAAQ,CAAA;AACtD,QAAA,MAAM,WAAW,MAAM,gBAAA;AAAA,UACrB,cAAA;AAAA,UACA,MAAA,CAAO,KAAA;AAAA,UACP,EAAE,UAAA,EAAY,QAAA,EAAU,MAAA,EAAQ,QAAQ,WAAA,EAAY;AAAA,UACpD;AAAA,SACF;AACA,QAAA,IAAI,GAAA,EAAK,QAAA,CAAS,IAAI,IAAA,CAAK,CAAC,GAAG,CAAA,EAAG,EAAE,IAAA,EAAM,UAAA,EAAY,CAAA,EAAG,gBAAA,CAAiB,QAAQ,CAAC,CAAA;AACnF,QAAA,IAAI,QAAA,EAAU;AAEZ,UAAA,MAAM,kBAAA,GAAqB,CAAC,QAAQ,CAAA,EAAG,MAAM,CAAA;AAC7C,UAAA,YAAA,GAAe,QAAQ,CAAA;AAAA,QACzB;AACA,QAAA,MAAA;AAAA,UACE,WACI,uCAAA,GACA,wCAAA;AAAA,UACJ,SAAA;AAAA,UACA,EAAE,aAAa,oDAAA;AAAqD,SACtE;AACA,QAAA,KAAA,MAAW,OAAA,IAAW,MAAA,CAAO,QAAA,EAAU,MAAA,CAAO,SAAS,SAAS,CAAA;AAChE,QAAA,aAAA,CAAc,KAAK,CAAA;AAAA,MACrB,SAAS,CAAA,EAAG;AACV,QAAA,QAAA,CAAS,CAAA,YAAa,KAAA,GAAQ,CAAA,CAAE,OAAA,GAAU,+BAA+B,CAAA;AAAA,MAC3E,CAAA,SAAE;AACA,QAAA,OAAA,CAAQ,KAAK,CAAA;AACb,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MAClB;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE,UAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,QAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,iBAAA,GAAoB,WAAA;AAAA,IACxB,CAAC,EAAE,UAAA,EAAY,WAAA,EAAY,yBACxB,qBAAA,EAAA,EAAsB,UAAA,EAAY,KAAA,EAAO,UAAA,EAAwB,WAAA,EAA0B,CAAA;AAAA,IAE9F,CAAC,KAAK;AAAA,GACR;AAEA,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,WAAA,CAAY,MAAA,GAAS,CAAA;AAEvD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,8BAAA;AAAA,MACV,aAAA,EAAY,sBAAA;AAAA,MACZ,WAAA,EAAW,UAAU,MAAA,GAAS,MAAA;AAAA,MAC9B,sBAAoB,UAAA,CAAW,MAAA;AAAA,MAE9B,QAAA,EAAA;AAAA,QAAA,OAAA,oBACC,GAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,UAAA;AAAA,YACA,QAAA,EAAU,UAAA,CAAW,QAAA,GAAW,MAAA,GAAY,UAAA;AAAA,YAC5C,SACE,QAAA,IAAY,CAAC,UAAA,CAAW,KAAA,IAAS,YAAY,MAAA,mBAC3C,IAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,SAAA,EAAU,8KAAA;AAAA,gBACV,aAAA,EAAY,4BAAA;AAAA,gBACZ,KAAA,EACE,SACI,oBAAA,GACA,uEAAA;AAAA,gBAEN,QAAA,EAAU,MAAA;AAAA,gBACV,OAAA,EAAS,MAAM,KAAK,kBAAA,EAAmB;AAAA,gBAEvC,QAAA,EAAA;AAAA,kCAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAM,EAAA,EAAI,CAAA;AAAA,kBAAE;AAAA;AAAA;AAAA,aAExB,GACE;AAAA;AAAA,SAER;AAAA,QAED,CAAC,OAAA,IAAW,UAAA,CAAW,MAAA,KAAW,OAAA,yBAChC,KAAA,EAAA,EAAI,SAAA,EAAU,+CAAA,EAAgD,aAAA,EAAY,cAAA,EAAe,QAAA,EAAA;AAAA,UAAA,kCAAA;AAAA,UACvD,UAAA,CAAW;AAAA,SAAA,EAC9C,CAAA;AAAA,wBAEF,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAA,GAAA,CAACD,eAAW,GAAG,WAAA,EAAa,IAAA,EAAY,iBAAA,EAAsC,CAAA,EAChF,CAAA;AAAA,QACC,OAAA,oBACC,GAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAM,UAAA;AAAA,YACN,YAAA,EAAc,aAAA;AAAA,YACd,UAAA;AAAA,YACA,SAAA,EAAW,YAAA;AAAA,YACX,IAAA;AAAA,YACA,QAAA;AAAA,YACA;AAAA;AAAA;AACF;AAAA;AAAA,GAEJ;AAEJ;AC9SA,IAAM,mBAAA,GAAsB,SAAA;AAerB,SAAS,wBAAA,CAAyB;AAAA,EACvC,IAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAQA,WAAA,GAAYC,SAAAA;AAAA,EACpB,GAAG;AACL,CAAA,EAAgD;AAC9C,EAAA,MAAM,QAAQC,OAAAA,CAAQ,MAAM,iBAAA,EAAkB,EAAG,EAAE,CAAA;AACnD,EAAA,MAAM,aAAaC,kBAAAA,CAAmB,EAAE,YAAY,KAAA,EAAO,MAAA,EAAQ,aAAa,CAAA;AAChF,EAAA,MAAM,KAAA,GAAQ,WAAW,KAAA,CAAM,WAAA,CAAY,OAAO,CAAC,CAAA,KAA0B,CAAA,CAAE,IAAA,KAAS,KAAK,CAAA;AAC7F,EAAA,MAAM,GAAA,GAAM,KAAA,CAAM,EAAA,CAAG,EAAE,CAAA;AACvB,EAAA,MAAM,aAAa,GAAA,KAAQ,MAAA,IAAa,CAAC,qBAAA,CAAsB,IAAI,IAAI,CAAA;AAGvE,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,UAAA,CAAW,WAAW,OAAA,EAAS;AACnC,IAAA,UAAA,CAAW,WAAA,CAAY,EAAE,MAAA,EAAQ,EAAE,GAAG,UAAA,CAAW,QAAA,CAAS,MAAA,EAAQ,GAAA,EAAK,mBAAA,EAAoB,EAAG,CAAA;AAAA,EAEhG,CAAA,EAAG,CAAC,UAAA,CAAW,MAAM,CAAC,CAAA;AACtB,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,UAAA,CAAW,WAAW,OAAA,EAAS;AAEnC,IAAA,KAAA,MAAW,GAAA,IAAO,MAAM,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,EAAG,UAAA,CAAW,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AAC9D,IAAA,IAAI,GAAA,EAAK;AACP,MAAA,UAAA,CAAW,MAAA,CAAO,IAAI,EAAE,CAAA;AACxB,MAAA,UAAA,CAAW,QAAQ,QAAQ,CAAA;AAAA,IAC7B,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,IAC1B;AAAA,EAEF,CAAA,EAAG,CAAC,UAAA,CAAW,MAAA,EAAQ,MAAM,MAAA,EAAQ,GAAA,EAAK,EAAE,CAAC,CAAA;AAE7C,EAAA,MAAM,MAAA,GAASC,YAAY,MAAM;AAC/B,IAAA,IAAI,GAAA,EAAK,UAAA,CAAW,MAAA,CAAO,GAAA,CAAI,EAAE,CAAA;AACjC,IAAA,UAAA,CAAW,QAAQ,KAAK,CAAA;AAAA,EAC1B,CAAA,EAAG,CAAC,GAAA,EAAK,UAAU,CAAC,CAAA;AAEpB,EAAA,MAAM,iBAAA,GAAoBA,WAAAA;AAAA,IACxB,CAAC,EAAE,UAAA,EAAY,WAAA,uBACbC,GAAAA;AAAA,MAACC,qBAAAA;AAAA,MAAA;AAAA,QACC,UAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,IAEF,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAA+B,eAAY,4BAAA,EACxD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4EAAA,EACb,QAAA,EAAA;AAAA,sBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,+BAAA,EAAgC,aAAA,EAAY,4BACzD,QAAA,EAAA,UAAA,GACG,uFAAA,GACA,GAAA,GACE,wCAAA,GACA,uEAAA,EACR,CAAA;AAAA,MACC,GAAA,oBACCA,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAA,QAAA,EAEjE,CAAA;AAAA,sBAEFA,GAAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,QAAA,EAAU,QAAA,EAAA,QAAA,EAErE,CAAA;AAAA,sBACAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,IAAA,EAAK,IAAA;AAAA,UACL,SAAS,MAAM,UAAA,CAAW,MAAM,YAAA,CAAa,GAAG,IAAI,MAAS,CAAA;AAAA,UAC7D,aAAA,EAAY,8BAAA;AAAA,UACb,QAAA,EAAA;AAAA;AAAA;AAED,KAAA,EACF,CAAA;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAAA,GAAAA,CAACN,WAAA,EAAA,EAAW,GAAG,WAAA,EAAa,IAAA,EAAY,iBAAA,EAAsC,CAAA,EAChF;AAAA,GAAA,EACF,CAAA;AAEJ;AC7DA,IAAM,WAAA,GACJ,uIAAA;AAEK,SAAS,sBAAA,CAAuB;AAAA,EACrC,IAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,WAAA,GAAc,KAAA;AAAA,EACd,QAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAQA,WAAA,GAAYC,SAAAA;AAAA,EACpB,GAAG;AACL,CAAA,EAA8C;AAC5C,EAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,gBAAA,KAAqBQ,gBAAAA,EAAiB;AACpE,EAAA,MAAM,aAAa,mBAAA,EAAoB;AACvC,EAAA,MAAM,OAAO,uBAAA,EAAwB;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,SAAS,gBAAA,EAAiB;AAChC,EAAA,MAAM,CAAC,QAAQ,SAAS,CAAA,GAAIA,SAA2B,MAAM,KAAA,EAAO,MAAA,IAAU,EAAE,CAAA;AAChF,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAmB,MAAM;AAAA,IACrD,GAAG,IAAI,GAAA;AAAA,MACL,eAAe,IAAA,EAAM,KAAA,GACjB,CAAC,IAAA,CAAK,MAAM,WAAA,EAAa,CAAA,GAAA,CACxB,KAAA,EAAO,UAAU,EAAC,EAAG,IAAI,CAAC,CAAA,KAAM,EAAE,MAAM;AAAA;AAC/C,GACD,CAAA;AACD,EAAA,MAAM,CAAC,SAAS,UAAU,CAAA,GAAIA,SAAwB,OAAA,CAAQ,CAAC,KAAK,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAoC,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAChE,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,IAAIA,QAAAA,CAAS,KAAA,EAAO,WAAW,EAAE,CAAA;AAC3D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAA2C,IAAI,CAAA;AACrF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,QAAAA,CAA6C,EAAE,CAAA;AAC3E,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,SAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,SAAS,EAAE,CAAA;AAE3C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,QAAAA,CAAiC,EAAE,CAAA;AAEvE,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,SAA0B,IAAI,CAAA;AAExE,EAAA,MAAM,MAAA,GAASR,OAAAA,CAAQ,MAAM,UAAA,CAAW,IAAA,IAAQ,EAAC,EAAG,CAAC,UAAA,CAAW,IAAI,CAAC,CAAA;AACrE,EAAA,MAAM,OAAA,GAAUA,OAAAA;AAAA,IACd,MAAM,IAAI,GAAA,CAAI,MAAA,CAAO,IAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,MAAM,WAAA,EAAY,EAAG,CAAA,CAAE,UAAU,CAAC,CAAC,CAAA;AAAA,IACtE,CAAC,MAAM;AAAA,GACT;AACA,EAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,CAAM,WAAA,EAAY,KAAM,IAAA,EAAM,KAAA,EAAO,WAAA,EAAa,CAAA;AAClF,EAAA,MAAM,MAAA,GAASG,WAAAA;AAAA,IACb,CAAC,KAAA,KAAkB;AACjB,MAAA,MAAM,SAAS,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,eAAe,KAAK,CAAA;AACxD,MAAA,IAAI,MAAA,SAAe,MAAA,CAAO,IAAA;AAC1B,MAAA,MAAM,OAAA,GAAU,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,gBAAgB,KAAK,CAAA;AAClE,MAAA,IAAI,OAAA,EAAS,OAAO,OAAA,CAAQ,IAAA,IAAQ,QAAQ,KAAA,IAAS,KAAA;AACrD,MAAA,MAAM,KAAA,GAAQ,MAAM,WAAA,EAAY;AAChC,MAAA,MAAM,MAAA,GAAS,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,CAAM,WAAA,EAAY,KAAM,KAAK,CAAA;AACjE,MAAA,OAAO,MAAA,EAAQ,IAAA,IAAQ,UAAA,CAAW,KAAK,CAAA,IAAK,KAAA;AAAA,IAC9C,CAAA;AAAA,IACA,CAAC,MAAA,EAAQ,KAAA,EAAO,UAAU;AAAA,GAC5B;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,KAAA,KAAkB;AACxC,IAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA;AACzB,IAAA,OAAO,aAAA,CAAc,KAAK,CAAA,IAAK,IAAA,KAAS,QAAQ,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA,GAAM,IAAA;AAAA,EACzE,CAAA;AAEA,EAAA,MAAM,SAAA,GAAYA,WAAAA;AAAA,IAChB,CAAC,UACE,aAAA,CAAc,KAAK,KAAK,CAAC,OAAA,CAAQ,IAAI,KAAA,CAAM,WAAA,EAAa,CAAA,IACzD,KAAA,EAAO,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,WAAA,KAAgB,KAAK,CAAA,EAAG,QAAA,KAAa,SAAA;AAAA,IACpE,CAAC,SAAS,KAAK;AAAA,GACjB;AACA,EAAA,MAAM,OAAA,GAAUA,WAAAA;AAAA,IACd,CAAC,GAAA,KAAgB;AACf,MAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA;AAC7B,MAAA,OAAO,eAAe,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,IAAK,cAAc,MAAM,CAAA;AAAA,IAC7D,CAAA;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AACA,EAAA,MAAM,QAAA,GAAW,OAAO,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,UAAU,CAAA,IAAK,IAAA;AAC5D,EAAA,MAAM,UAAU,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,eAAA,GAAkB,YAAY,MAAM,CAAA;AAE3E,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAkB;AACnC,IAAA,IAAI,CAAC,KAAA,EAAO;AAEZ,IAAA,MAAM,MAAM,aAAA,CAAc,KAAK,CAAA,GAC1B,OAAA,CAAQ,IAAI,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAa,CAAA,IAAK,KAAA,CAAM,IAAA,EAAK,CAAE,aAAY,GACrE,KAAA;AACJ,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAG,CAAA,EAAG;AAC3B,IAAA,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,GAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAC7B,IAAA,UAAA,CAAW,GAAG,CAAA;AACd,IAAA,UAAA,CAAW,CAAC,CAAA,KAAM,CAAA,IAAK,WAAW,CAAA;AAAA,EACpC,CAAA;AACA,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAAgB;AACpC,IAAA,UAAA,CAAW,CAAC,MAAM,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,KAAM,GAAG,CAAC,CAAA;AAC5C,IAAA,SAAA,CAAU,CAAC,OAAO,EAAA,CAAG,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,GAAG,CAAC,CAAA;AACpD,IAAA,IAAI,OAAA,KAAY,GAAA,EAAK,UAAA,CAAW,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,KAAM,GAAG,CAAA,IAAK,IAAI,CAAA;AAAA,EACxE,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,CAAC,EAAA,EAAY,KAAA,KAC/B,UAAU,CAAC,EAAA,KAAO,GAAG,GAAA,CAAI,CAAC,MAAO,CAAA,CAAE,EAAA,KAAO,KAAK,EAAE,GAAG,GAAG,GAAG,KAAA,EAAM,GAAI,CAAE,CAAC,CAAA;AAGzE,EAAA,MAAM,UAAA,GAAaM,OAAO,KAAK,CAAA;AAC/B,EAAAP,UAAU,MAAM;AACd,IAAA,IAAI,KAAA,IAAS,UAAA,CAAW,OAAA,IAAW,UAAA,CAAW,SAAA,EAAW;AACzD,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,IAAA,IAAI,IAAA,GAAO,IAAA;AACX,IAAA,KAAK,yBAAA,CAA0B,MAAA,EAAQ,UAAA,EAAY,OAAO,CAAA,CACvD,IAAA,CAAK,CAAC,EAAE,MAAA,EAAQ,KAAA,EAAO,OAAA,EAAS,YAAA,EAAa,KAAM;AAClD,MAAA,IAAI,CAAC,IAAA,EAAM;AACX,MAAA,MAAM,EAAE,MAAA,EAAQ,MAAA,KAAW,gBAAA,CAAiB,KAAA,IAAS,EAAE,CAAA;AAEvD,MAAA,MAAM,KAAA,GAAQ,OAAO,WAAA,CAAY;AAAA,QAC/B,GAAG,YAAA,CAAa,GAAA,CAAI,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,KAAA,CAAM,WAAA,EAAY,EAAG,CAAA,CAAE,IAAI,CAAC,CAAA;AAAA,QAC1D,GAAG,MAAA,CAAO,OAAA;AAAA,UAAQ,CAAC,CAAA,KACjB,CAAA,CAAE,YAAA,IAAgB,CAAA,CAAE,cAAc,CAAC,CAAC,CAAA,CAAE,YAAA,CAAa,aAAY,EAAG,CAAA,CAAE,WAAW,CAAC,IAAI;AAAC;AACvF,OACD,CAAA;AACD,MAAA,aAAA,CAAc,CAAC,CAAA,MAAO,EAAE,GAAG,CAAA,EAAG,GAAG,OAAM,CAAE,CAAA;AACzC,MAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AACpB,MAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,MAAA,EAAQ,IAAI,OAAO,CAAA;AACvD,MAAA,SAAA,CAAU,CAAC,EAAA,KAAO,CAAC,GAAG,EAAA,EAAI,GAAG,KAAK,CAAC,CAAA;AACnC,MAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACxD,MAAA,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,GAAG,CAAA,EAAG,GAAG,QAAA,CAAS,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,QAAA,CAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AACnE,MAAA,UAAA,CAAW,CAAC,CAAA,KAAM,CAAA,IAAK,QAAA,CAAS,CAAC,KAAK,IAAI,CAAA;AAE1C,MAAA,MAAM,OAAO,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,YAAY,CAAA;AACjD,MAAA,IAAI,IAAA,CAAK,MAAA,IAAU,MAAA,CAAO,MAAA,EAAQ;AAChC,QAAA,cAAA,CAAe,CAAC,GAAG,IAAA,EAAM,GAAG,MAAM,CAAC,CAAA;AACnC,QAAA,SAAA,CAAU,EAAE,CAAA;AAAA,MACd;AACA,MAAA,MAAA;AAAA,QACE,CAAA,EAAG,MAAM,MAAM,CAAA,MAAA,EAAS,MAAM,MAAA,KAAW,CAAA,GAAI,KAAK,GAAG,CAAA,0BAAA,CAAA;AAAA,QACrD;AAAA,OACF;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,IAEb,CAAC,CAAA;AACH,IAAA,OAAO,MAAM;AACX,MAAA,IAAA,GAAO,KAAA;AAAA,IACT,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,UAAA,CAAW,SAAA,EAAW,QAAQ,UAAA,EAAY,OAAA,EAAS,OAAA,EAAS,MAAM,CAAC,CAAA;AAE9E,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,UAAA,CAAW,IAAI,CAAA;AACf,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,GAAQ,MAAM,sBAAA,CAAuB,MAAA,EAAQ,YAAY,OAAO,CAAA;AACtE,MAAA,cAAA,CAAe,KAAK,CAAA;AAEpB,MAAA,MAAMQ,OAAAA,GAAS,CAAC,GAAG,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAC,CAAC,CAAA;AACrD,MAAA,SAAA,CAAU,MAAA,CAAO,WAAA,CAAYA,OAAAA,CAAO,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACnE,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,MAAA,CAAO,oDAAoD,MAAM,CAAA;AAAA,IAC3F,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,oCAAoC,CAAA;AAAA,IACpF,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,MAAM,KAAA,GAAQ,qBAAA,CAAsB,WAAA,EAAa,MAAA,EAAQ,OAAO,CAAA;AAChE,IAAA,SAAA,CAAU,CAAC,EAAA,KAAO,CAAC,GAAG,EAAA,EAAI,GAAG,KAAK,CAAC,CAAA;AACnC,IAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAI,GAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA;AACxD,IAAA,UAAA,CAAW,CAAC,CAAA,KAAM,CAAC,GAAG,CAAA,EAAG,GAAG,QAAA,CAAS,MAAA,CAAO,CAAC,GAAA,KAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,CAAC,CAAC,CAAC,CAAA;AACvE,IAAA,IAAI,CAAC,WAAW,QAAA,CAAS,CAAC,GAAG,UAAA,CAAW,QAAA,CAAS,CAAC,CAAC,CAAA;AACnD,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,MAAA,CAAO,CAAA,EAAG,KAAA,CAAM,MAAM,CAAA,MAAA,EAAS,KAAA,CAAM,WAAW,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,OAAA,CAAA,EAAW,SAAS,CAAA;AAAA,EAClF,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,OAAO,IAAA,EAAe,OAAA,GAAU,KAAA,KAAU;AACvD,IAAA,QAAA,CAAS,IAAI,CAAA;AACb,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAM,aAAA,CAAc,CAAC,CAAA,IAAK,CAAC,OAAA,CAAQ,GAAA,CAAI,CAAA,CAAE,WAAA,EAAa,CAAC,CAAA;AACxF,IAAA,IAAI,CAAC,SAAA,IAAa,IAAA,IAAQ,QAAA,CAAS,MAAA,IAAU,CAAC,OAAA,EAAS;AACrD,MAAA,gBAAA,CAAiB,QAAQ,CAAA;AACzB,MAAA;AAAA,IACF;AACA,IAAA,IAAI;AACF,MAAA,IAAI,SAAA,EAAW;AACb,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,MAAM,EAAE,eAAA,EAAiB,uBAAA,EAAwB,GAC/C,MAAM,OAAO,gCAAgC,CAAA;AAC/C,QAAA,MAAM,UAAA,GAAa,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,UACpC,GAAG,CAAA;AAAA,UACH,MAAA,EAAA,CAAS,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,KAAe,CAAA,CAAE,MAAM,CAAA,EAAG,KAAA,IAAS,CAAA,CAAE,QAAQ,WAAA;AAAY,SACzF,CAAE,CAAA;AACF,QAAA,MAAM,iBAAiB,UAAU,CAAA;AACjC,QAAA,MAAM,MAAA,GAAS,MAAM,eAAA,CAAgB,MAAA,EAAQ,UAAA,EAAY;AAAA,UACvD,SAAS,OAAA,IAAW,CAAA;AAAA,UACpB,MAAA,EAAQ,UAAA;AAAA,UACR,OAAA;AAAA,UACA,YAAY,CAAC,GAAG,IAAI,GAAA,CAAI,WAAW,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,KAAA,MAAW;AAAA,YACxE,KAAA;AAAA,YACA,UAAA,EAAY;AAAA,WACd,CAAE;AAAA,SACH,CAAA;AACD,QAAA,OAAA,CAAQ,uBAAA,CAAwB,MAAM,CAAC,CAAA;AACvC,QAAA,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,CAAA,cAAA,EAAiB,MAAA,CAAO,WAAW,CAAA,CAAE,CAAA;AAC5D,QAAA;AAAA,MACF;AACA,MAAA,IAAI,IAAA,IAAQ,QAAA,CAAS,MAAA,IAAU,EAAA,EAAI,SAAS,OAAA,EAAS;AACnD,QAAA,MAAM,OAAO,WAAA,CAAY,EAAE,UAAA,EAAY,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC3D;AACA,MAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,WAAA,CAAY;AAAA,QACrC,UAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,OAAA,EAAS,OAAA,CAAQ,IAAA,EAAK,IAAK,KAAA,CAAA;AAAA,QAC3B,SAAA,EAAW,KAAA,EAAO,MAAA,KAAW,OAAA,GAAU,MAAM,WAAA,GAAc,KAAA,CAAA;AAAA,QAC3D;AAAA,OACD,CAAA;AACD,MAAA,MAAM,OAAA,GAAU,QAAQ,OAAA,CAAQ,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,QAAA,KAAa,SAAS,CAAA,CAAE,MAAA;AACxE,MAAA,MAAA;AAAA,QACE,IAAA,GACI,yBAAyB,OAAA,CAAQ,OAAA,CAAQ,MAAM,CAAA,OAAA,EAAU,OAAA,CAAQ,OAAA,CAAQ,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,CAAA,CAAA,IAC7F,OAAA,GACG,IAAI,OAAO,CAAA,CAAA,EAAI,YAAY,CAAA,GAAI,IAAA,GAAO,KAAK,CAAA,oCAAA,CAAA,GAC3C,EAAA,CAAA,GACN,cAAA;AAAA,QACJ;AAAA,OACF;AACA,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA,OAAA,CAAQ,OAAO,CAAA;AAAA,IACjB,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,gCAAgC,CAAA;AAAA,IAChF,CAAA,SAAE;AACA,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoBP,WAAAA;AAAA,IACxB,CAAC,EAAE,UAAA,EAAW,qBACZC,GAAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,MAAM,UAAA,GAAa,CAAA;AAAA,QACnB,MAAA;AAAA,QACA,OAAA;AAAA,QACA,SAAS,CAAC,CAAA,KAAM,CAAA,EAAG,iBAAA,CAAkB,EAAE,IAAI,CAAC,CAAA,MAAA,EAAM,MAAA,CAAO,EAAE,MAAM,CAAA,CAAE,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA,CAAA;AAAA,QAChF,QAAA,EAAQ,IAAA;AAAA,QACR,OAAA,EAAS,UAAU,OAAA,GAAU,IAAA;AAAA,QAC7B,UAAA;AAAA,QACA,QAAA,EAAU,aAAA;AAAA,QACV,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,UAAA,IAAI,CAAC,OAAA,IAAW,CAAC,OAAA,EAAS;AAC1B,UAAA,MAAM,KAAA,GAAwB;AAAA,YAC5B,IAAI,UAAA,EAAW;AAAA,YACf,IAAA,EAAM,OAAA;AAAA,YACN,MAAM,UAAA,GAAa,CAAA;AAAA,YACnB,MAAA,EAAQ,OAAA;AAAA,YACR,QAAA,EAAU,IAAA;AAAA,YACV,GAAG;AAAA,WACL;AACA,UAAA,SAAA,CAAU,CAAC,EAAA,KAAO,CAAC,GAAG,EAAA,EAAI,KAAK,CAAC,CAAA;AAChC,UAAA,aAAA,CAAc,MAAM,EAAE,CAAA;AAAA,QACxB,CAAA;AAAA,QACA,UAAU,CAAC,EAAA,EAAI,GAAA,KAAQ,WAAA,CAAY,IAAI,GAAG,CAAA;AAAA,QAC1C,QAAA,EAAU,CAAC,EAAA,KAAO;AAChB,UAAA,SAAA,CAAU,CAAC,OAAO,EAAA,CAAG,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAC,CAAA;AAC/C,UAAA,aAAA,CAAc,IAAI,CAAA;AAAA,QACpB;AAAA;AAAA,KACF;AAAA,IAEF,CAAC,MAAA,EAAQ,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAS,SAAS,UAAU;AAAA,GACxD;AAEA,EAAA,MAAM,MAAA,GAAS,WAAA,GAAc,CAAC,GAAG,IAAI,GAAA,CAAI,WAAA,CAAY,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,KAAK,CAAC,CAAC,IAAI,EAAC;AAE9E,EAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAA+B,eAAY,0BAAA,EACxD,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACZ,QAAA,EAAA;AAAA,MAAA,SAAA,oBACCF,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,oDAAmD,QAAA,EAAA,2HAAA,EAGhE,CAAA;AAAA,sBAEFE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,QAAA,EAAA,SAAA,EAAO,CAAA;AAAA,QACpC,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACZE,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAW,EAAA;AAAA,cACT,uEAAA;AAAA,cACA,YAAY,GAAA,IAAO;AAAA,aACrB;AAAA,YACA,KAAA,EAAO,EAAE,WAAA,EAAa,OAAA,CAAQ,GAAG,CAAA,EAAE;AAAA,YAEnC,QAAA,EAAA;AAAA,8BAAAA,IAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,SAAA,EAAU,kCAAA;AAAA,kBACV,OAAA,EAAS,MAAM,UAAA,CAAW,GAAG,CAAA;AAAA,kBAC7B,gBAAc,OAAA,KAAY,GAAA;AAAA,kBAC1B,aAAA,EAAa,eAAe,GAAG,CAAA,CAAA;AAAA,kBAE/B,QAAA,EAAA;AAAA,oCAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,KAAA,EAAO,EAAE,UAAA,EAAY,OAAA,CAAQ,GAAG,CAAA,EAAE,EAAG,CAAA;AAAA,oBAC5E,OAAO,GAAG,CAAA;AAAA,oBACV,SAAA,CAAU,GAAG,CAAA,oBACZA,GAAAA,CAAC,UAAK,SAAA,EAAU,+BAAA,EAAgC,aAAA,EAAY,gBAAA,EAAiB,QAAA,EAAA,aAAA,EAE7E;AAAA;AAAA;AAAA,eAEJ;AAAA,8BACAA,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAY,CAAA,OAAA,EAAU,MAAA,CAAO,GAAG,CAAC,CAAA,CAAA;AAAA,kBACjC,SAAA,EAAU,oCAAA;AAAA,kBACV,OAAA,EAAS,MAAM,YAAA,CAAa,GAAG,CAAA;AAAA,kBAE/B,QAAA,kBAAAA,GAAAA,CAAC,CAAA,EAAA,EAAE,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AACxB;AAAA,WAAA;AAAA,UA7BK;AAAA,SA+BR,CAAA;AAAA,wBACDE,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,sDAAA,EACf,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC,CAAA;AAAA,0BACzCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,WAAU,QAAA,EAAA,cAAA,EAAY,CAAA;AAAA,0BACtCE,IAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,WAAA;AAAA,cACX,KAAA,EAAM,EAAA;AAAA,cACN,UAAU,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACzC,UAAU,UAAA,CAAW,SAAA;AAAA,cACrB,aAAA,EAAY,sBAAA;AAAA,cAEZ,QAAA,EAAA;AAAA,gCAAAF,IAAC,QAAA,EAAA,EAAO,KAAA,EAAM,IACX,QAAA,EAAA,UAAA,CAAW,SAAA,GAAY,0BAAqB,oBAAA,EAC/C,CAAA;AAAA,gBACC,OACE,MAAA,CAAO,CAAC,MAAM,CAAC,OAAA,CAAQ,SAAS,CAAA,CAAE,UAAU,CAAC,CAAA,CAC7C,GAAA,CAAI,CAAC,CAAA,qBACJE,KAAC,QAAA,EAAA,EAA0B,KAAA,EAAO,EAAE,UAAA,EACjC,QAAA,EAAA;AAAA,kBAAA,CAAA,CAAE,IAAA;AAAA,kBAAK,IAAA;AAAA,kBAAG,CAAA,CAAE,KAAA;AAAA,kBAAM;AAAA,iBAAA,EAAA,EADR,CAAA,CAAE,UAEf,CACD;AAAA;AAAA;AAAA;AACL,SAAA,EACF,CAAA;AAAA,wBACAA,IAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,gCAAA;AAAA,YACV,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,CAAA,CAAE,cAAA,EAAe;AACjB,cAAA,IAAI,CAAC,aAAA,CAAc,QAAQ,CAAA,EAAG;AAC9B,cAAA,SAAA,CAAU,QAAQ,CAAA;AAClB,cAAA,WAAA,CAAY,EAAE,CAAA;AAAA,YAChB,CAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAF,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,OAAA;AAAA,kBACL,KAAA,EAAO,QAAA;AAAA,kBACP,UAAU,CAAC,CAAA,KAAM,WAAA,CAAY,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,kBAC3C,WAAA,EAAY,qBAAA;AAAA,kBACZ,YAAA,EAAW,gBAAA;AAAA,kBACX,SAAA,EAAU,UAAA;AAAA,kBACV,aAAA,EAAY;AAAA;AAAA,eACd;AAAA,8BACAA,GAAAA;AAAA,gBAACO,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,OAAA;AAAA,kBACR,QAAA,EAAU,CAAC,aAAA,CAAc,QAAQ,CAAA;AAAA,kBACjC,YAAA,EAAW,iBAAA;AAAA,kBACX,aAAA,EAAY,4BAAA;AAAA,kBAEZ,0BAAAP,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC;AAAA;AAAA;AAC3C;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,sBACAE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA,OAAA,GAAU,aAAa,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA,CAAA,GAAM,wCAAA,EAC/C,CAAA;AAAA,wBACAA,GAAAA;AAAA,UAACO,MAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,OAAA,KAAY,IAAA,GAAO,SAAA,GAAY,SAAA;AAAA,YACxC,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,YAC/B,QAAA,EAAA;AAAA;AAAA,SAED;AAAA,QACC,qBAAA,CAAsB,GAAA,CAAI,CAAC,IAAA,qBAC1BP,GAAAA;AAAA,UAACO,MAAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAS,OAAA,KAAY,IAAA,IAAQ,OAAA,GAAU,SAAA,GAAY,SAAA;AAAA,YACnD,UAAU,CAAC,OAAA;AAAA,YACX,OAAA,EAAS,MAAM,UAAA,CAAW,IAAI,CAAA;AAAA,YAC9B,cAAA,EAAc,OAAA,KAAY,IAAA,IAAQ,CAAC,CAAC,OAAA;AAAA,YACpC,aAAA,EAAa,mBAAmB,IAAI,CAAA,CAAA;AAAA,YAEnC,4BAAkB,IAAI;AAAA,WAAA;AAAA,UATlB;AAAA,SAWR,CAAA;AAAA,wBACDL,IAAAA;AAAA,UAACK,MAAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,IAAA;AAAA,YACL,OAAA,EAAQ,OAAA;AAAA,YACR,OAAA,EAAS,UAAA;AAAA,YACT,QAAA,EAAU,OAAA;AAAA,YACV,aAAA,EAAY,uBAAA;AAAA,YAEZ,QAAA,EAAA;AAAA,8BAAAP,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,aAAA,EAAc,eAAW,IAAA,EAAC,CAAA;AAAA,cAC/C,UAAU,eAAA,GAAa;AAAA;AAAA;AAAA,SAC1B;AAAA,wBACAE,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,iCAAA,EACd,QAAA,EAAA;AAAA,0BAAAF,GAAAA,CAACO,MAAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,QAAA,EAAU,QAAA,EAAA,QAAA,EAErE,CAAA;AAAA,UACC,CAAC,6BACAP,GAAAA;AAAA,YAACO,MAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,OAAA,EAAQ,SAAA;AAAA,cACR,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,MAAM,MAAA,CAAO,KAAK,CAAA;AAAA,cAC3B,QAAA,EAAU,IAAA,CAAK,SAAA,IAAa,MAAA,CAAO,MAAA,KAAW,CAAA;AAAA,cAC9C,aAAA,EAAY,sBAAA;AAAA,cACb,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BAEFL,IAAAA;AAAA,YAACK,MAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,MAAM,MAAA,CAAO,IAAI,CAAA;AAAA,cAC1B,QAAA,EAAU,OAAA,IAAW,IAAA,CAAK,SAAA,IAAa,CAAC,CAAC,OAAA;AAAA,cACzC,OAAO,OAAA,IAAW,MAAA;AAAA,cAClB,aAAA,EAAY,gBAAA;AAAA,cAEZ,QAAA,EAAA;AAAA,gCAAAP,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,eAAW,IAAA,EAAC,CAAA;AAAA,gBACzC,OAAA,IAAW,IAAA,CAAK,SAAA,GAAY,eAAA,GAAa;AAAA;AAAA;AAAA;AAC5C,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,sBACAE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,wBAAAF,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,OAAA;AAAA,YACP,UAAU,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,YAC1C,SAAA,EAAW,GAAA;AAAA,YACX,WAAA,EAAY,mCAAA;AAAA,YACZ,SAAA,EAAU,cAAA;AAAA,YACV,aAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBACAE,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,eAAY,0BAAA,EACjD,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,MAAA;AAAA,UAAO,QAAA;AAAA,UAAO,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAA;AAAA,UAChD,OAAA,GAAU,CAAA,MAAA,EAAM,OAAO,CAAA,CAAA,GAAK;AAAA,SAAA,EAC/B;AAAA,OAAA,EACF,CAAA;AAAA,MACC,4BACCA,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,mEAAA;AAAA,UACV,aAAA,EAAY,yBAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAF,GAAAA,CAAC,OAAA,EAAA,EAAQ,SAAA,EAAU,QAAA,EAAS,eAAW,IAAA,EAAC,CAAA;AAAA,4BACxCA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,WAAA;AAAA,gBACX,OAAO,QAAA,CAAS,IAAA;AAAA,gBAChB,YAAA,EAAW,YAAA;AAAA,gBACX,QAAA,EAAU,CAAC,CAAA,KACT,WAAA,CAAY,QAAA,CAAS,EAAA,EAAI,EAAE,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,KAAA,EAA6B,CAAA;AAAA,gBAGxE,QAAA,EAAA,qBAAA,CAAsB,GAAA,CAAI,CAAC,CAAA,qBAC1BA,GAAAA,CAAC,QAAA,EAAA,EAAe,KAAA,EAAO,CAAA,EACpB,QAAA,EAAA,iBAAA,CAAkB,CAAC,CAAA,EAAA,EADT,CAEb,CACD;AAAA;AAAA,aACH;AAAA,4BACAA,GAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,WAAA;AAAA,gBACX,OAAO,QAAA,CAAS,MAAA;AAAA,gBAChB,YAAA,EAAW,QAAA;AAAA,gBACX,QAAA,EAAU,CAAC,CAAA,KAAM,WAAA,CAAY,QAAA,CAAS,EAAA,EAAI,EAAE,MAAA,EAAQ,CAAA,CAAE,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,gBACpE,aAAA,EAAY,wBAAA;AAAA,gBAEX,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,qBACZA,GAAAA,CAAC,QAAA,EAAA,EAAiB,KAAA,EAAO,GAAA,EACtB,QAAA,EAAA,MAAA,CAAO,GAAG,CAAA,EAAA,EADA,GAEb,CACD;AAAA;AAAA,aACH;AAAA,4BACAE,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2BAAA,EACd,QAAA,EAAA;AAAA,8BAAAF,GAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,EAAA,EAAG,0BAAA;AAAA,kBACH,SAAS,QAAA,CAAS,QAAA;AAAA,kBAClB,eAAA,EAAiB,CAAC,CAAA,KAAM,WAAA,CAAY,QAAA,CAAS,IAAI,EAAE,QAAA,EAAU,CAAA,KAAM,IAAA,EAAM;AAAA;AAAA,eAC3E;AAAA,8BACAA,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAQ,0BAAA,EAA2B,SAAA,EAAU,eAAc,QAAA,EAAA,UAAA,EAElE;AAAA,aAAA,EACF;AAAA;AAAA;AAAA,OACF;AAAA,MAED,WAAA,IAAe,WAAA,CAAY,MAAA,GAAS,CAAA,oBACnCE,KAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAoC,aAAA,EAAY,uBAAA,EAC7D,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACpB,MAAA,CAAO,MAAA;AAAA,UAAO,kBAAA;AAAA,UAAiB,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAA;AAAA,UAAI;AAAA,SAAA,EAEvE,CAAA;AAAA,QACC,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,KAAM;AACjB,UAAA,MAAM,UAAU,WAAA,CAAY,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,UAAU,CAAC,CAAA;AACvD,UAAA,MAAM,OAAO,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,IAAI,CAAA,EAAG,IAAA;AAC1C,UAAA,uBACEA,IAAAA,CAAC,KAAA,EAAA,EAAY,SAAA,EAAU,mCAAA,EACrB,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,cAAA,IAAA,IAAQ,CAAA,MAAA,EAAS,IAAI,CAAC,CAAA,CAAA;AAAA,cAAI,GAAA;AAAA,8BAC3BA,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAwB,QAAA,EAAA;AAAA,gBAAA,MAAA;AAAA,gBACjC,OAAA,CAAQ,CAAC,CAAA,CAAG,IAAA,GAAO,CAAA;AAAA,gBAAE,GAAA;AAAA,gBAAE,GAAA;AAAA,gBAC3B,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,iBAAA,CAAkB,EAAE,IAAI,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,gBAAE;AAAA,eAAA,EAC5D;AAAA,aAAA,EACF,CAAA;AAAA,4BACAA,IAAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,WAAA;AAAA,gBACX,KAAA,EAAO,MAAA,CAAO,CAAC,CAAA,IAAK,EAAA;AAAA,gBACpB,UAAU,CAAC,CAAA,KAAM,SAAA,CAAU,CAAC,OAAO,EAAE,GAAG,CAAA,EAAG,CAAC,CAAC,GAAG,CAAA,CAAE,MAAA,CAAO,KAAA,IAAS,QAAU,CAAE,CAAA;AAAA,gBAC9E,aAAA,EAAa,+BAA+B,CAAC,CAAA,CAAA;AAAA,gBAE7C,QAAA,EAAA;AAAA,kCAAAF,GAAAA,CAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAG,QAAA,EAAA,MAAA,EAAI,CAAA;AAAA,kBACpB,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXA,GAAAA,CAAC,QAAA,EAAA,EAA0B,KAAA,EAAO,CAAA,CAAE,UAAA,EACjC,QAAA,EAAA,CAAA,CAAE,IAAA,EAAA,EADQ,CAAA,CAAE,UAEf,CACD,CAAA;AAAA,kBACA,OAAA,CACE,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,UAAA,KAAe,CAAC,CAAC,EACrD,GAAA,CAAI,CAAC,CAAA,qBACJA,GAAAA,CAAC,QAAA,EAAA,EAAe,KAAA,EAAO,CAAA,EACpB,QAAA,EAAA,MAAA,CAAO,CAAC,CAAA,EAAA,EADE,CAEb,CACD;AAAA;AAAA;AAAA;AACL,WAAA,EAAA,EA3BQ,CA4BV,CAAA;AAAA,QAEJ,CAAC,CAAA;AAAA,wBACDE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,0BAAAF,GAAAA;AAAA,YAACO,MAAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,IAAA;AAAA,cACL,OAAA,EAAS,gBAAA;AAAA,cACT,UAAU,CAAC,MAAA,CAAO,OAAO,MAAM,CAAA,CAAE,KAAK,OAAO,CAAA;AAAA,cAC7C,aAAA,EAAY,6BAAA;AAAA,cACb,QAAA,EAAA;AAAA;AAAA,WAED;AAAA,0BACAP,GAAAA,CAACO,MAAAA,EAAA,EAAO,MAAK,QAAA,EAAS,IAAA,EAAK,IAAA,EAAK,OAAA,EAAQ,SAAQ,OAAA,EAAS,MAAM,cAAA,CAAe,IAAI,GAAG,QAAA,EAAA,SAAA,EAErF;AAAA,SAAA,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MAED,iCACCL,IAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,8IAAA;AAAA,UACV,aAAA,EAAY,0BAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAAA,KAAC,GAAA,EAAA,EAAE,QAAA,EAAA;AAAA,cAAA,4BAAA;AAAA,cAC0B,GAAA;AAAA,8BAC3BF,IAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,aAAA,CAAc,IAAI,cAAc,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,EAAE,CAAA;AAAA,cAAS,GAAA;AAAA,cAAE,GAAA;AAAA,cAChE,EAAA,EAAI,IAAA,KAAS,OAAA,GACV,0EAAA,GACA;AAAA,aAAA,EACN,CAAA;AAAA,4BACAE,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,8BAAAF,GAAAA;AAAA,gBAACO,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAS,MAAM,MAAA,CAAO,IAAA,EAAM,IAAI,CAAA;AAAA,kBAChC,QAAA,EAAU,IAAA,CAAK,SAAA,IAAa,MAAA,CAAO,SAAA;AAAA,kBACnC,aAAA,EAAY,uBAAA;AAAA,kBAEX,QAAA,EAAA,EAAA,EAAI,IAAA,KAAS,OAAA,GAAU,iBAAA,GAAoB;AAAA;AAAA,eAC9C;AAAA,8BACAP,GAAAA;AAAA,gBAACO,MAAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,IAAA,EAAK,IAAA;AAAA,kBACL,OAAA,EAAQ,OAAA;AAAA,kBACR,OAAA,EAAS,MAAM,gBAAA,CAAiB,IAAI,CAAA;AAAA,kBACrC,QAAA,EAAA;AAAA;AAAA;AAED,aAAA,EACF;AAAA;AAAA;AAAA,OACF;AAAA,MAED,KAAA,oBACCP,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yBAAwB,IAAA,EAAK,OAAA,EAAQ,aAAA,EAAY,wBAAA,EAC3D,QAAA,EAAA,KAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,oBACAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACb,QAAA,kBAAAA,GAAAA,CAACN,WAAA,EAAA,EAAW,GAAG,WAAA,EAAa,IAAA,EAAY,iBAAA,EAAsC,CAAA,EAChF;AAAA,GAAA,EACF,CAAA;AAEJ","file":"index.js","sourcesContent":["/**\n * The PDF viewer with the document's MARKUP on it: toolbar, per-page overlay and the freeze dialog.\n *\n * The original is never touched. The marks are the version's markup on the server (native PDF\n * annotations in its `{doc}-markup.pdf`, see `createMarkupStore` in `@arbidocs/react/document-tools`),\n * with the document's own privacy:\n * a shared document has one markup that owners and collaborators edit and guests read; a private\n * one is its owner's. Edits autosave a few seconds after the last change and when the viewer\n * closes; colleagues' changes are merged in. \"Freeze\" renders a new PDF with the marks built in and\n * saves it as a separate document derived from the original (see `uploadFrozenCopy`). Load it\n * lazily: it brings in pdf-lib, which nothing else needs.\n *\n * Needs a `<DocumentToolsProvider>` (API client, user, notify, open, refresh) inside a React Query\n * `QueryClientProvider`. `viewer` is the PDF viewer to draw on (default: the kit `PdfViewer`); a host\n * passes its own binding of it, e.g. one that reports the visible page.\n *\n * `editing` off is the default reading view: the marks show and comments open, read-only, with no\n * toolbar. Unsaved edits still go out when switching from editing to reading.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState, type ComponentType } from 'react'\nimport {\n AnnotationPageOverlay,\n AnnotationToolbar,\n FreezeDialog,\n redactionLogCsv,\n useAnnotationLayer,\n type AnnotationController,\n type AnnotationStore,\n type FreezeChoices,\n} from '@arbidocs/react/annotations'\nimport { freezePdfInBrowser } from '@arbidocs/react/annotations/freeze'\nimport {\n createMarkupStore,\n fetchMarkupPdf,\n SIGNED_LOCKED_REASON,\n redactionLogName,\n uploadFrozenCopy,\n useDocumentTools,\n useIsOnline,\n type MarkupSnapshot,\n} from '@arbidocs/react/document-tools'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport { Download } from 'lucide-react'\n\n/** Autosave this long after the last change (the design's \"a few seconds\"). */\nexport const MARKUP_AUTOSAVE_MS = 2500\n/** Look for colleagues' changes this often while idle. */\nexport const MARKUP_PULL_MS = 20_000\n\n/** The PDF viewer the marks are drawn on: the kit viewer's props, with a page-overlay slot. */\nexport type DocumentPdfViewer = ComponentType<PdfViewerProps>\n\nexport interface AnnotatedPdfViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay'\n> {\n file: Blob\n documentId: string\n /** The version on screen when it is not the current one (its markup is shown, read-only). */\n version?: number\n fileName: string | null | undefined\n /** The original's workspace sharing and folder, which the frozen copy takes. */\n shared?: boolean\n folder?: string | null\n /** The original's workspace: the frozen copy is uploaded there, named on the request. */\n workspaceId?: string | null\n /** Annotate mode (toolbar, tools). Off: the marks are shown read-only. Default on. */\n editing?: boolean\n /** After each save: the markup's revision and how many marks it holds. */\n onMarkupChange?: (snapshot: MarkupSnapshot) => void\n /** Where the layer lives; defaults to the version's markup on the server. */\n store?: AnnotationStore\n /** The PDF viewer to draw on. Default: the kit `PdfViewer` from `@arbidocs/react/viewers`. */\n viewer?: DocumentPdfViewer\n /**\n * The version is signed, so locked: marks still go in the markup layer, but there is no\n * \"Download with markup\" (they are never written into its PDF).\n */\n signed?: boolean\n /**\n * One's saved signature or initials to place (PDF tab › My signature): arms the stamp tool with\n * the picture; the next click on a page places it. A new `key` arms it again.\n */\n placeStamp?: { image: string; label: string; key: number } | null\n}\n\nconst FALLBACK_AUTHOR = 'You'\n\n/** The same controller, view only: what the overlay gets outside annotate mode. */\nfunction viewOnly(controller: AnnotationController): AnnotationController {\n return { ...controller, readOnly: true, tool: 'select', setTool: () => {} }\n}\n\nexport function AnnotatedPdfViewer({\n file,\n documentId,\n version,\n fileName,\n shared = false,\n folder,\n workspaceId,\n editing = true,\n onMarkupChange,\n store: storeOverride,\n viewer: PdfViewer = KitPdfViewer,\n signed = false,\n placeStamp = null,\n ...viewerProps\n}: AnnotatedPdfViewerProps) {\n const {\n client,\n user,\n notify,\n saveFile,\n uploadDocument,\n openDocument,\n onDocumentsChanged,\n registerBeforeFileShare,\n } = useDocumentTools()\n const online = useIsOnline()\n const onChangeRef = useRef(onMarkupChange)\n onChangeRef.current = onMarkupChange\n const store = useMemo(\n () =>\n storeOverride ??\n createMarkupStore({\n version,\n client,\n onSaved: (snapshot) => onChangeRef.current?.(snapshot),\n }),\n // A new store per document version: its revision and tombstones belong to that markup.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [storeOverride, client, documentId, version]\n )\n const author = user?.name || FALLBACK_AUTHOR\n const controller = useAnnotationLayer({\n documentId,\n store,\n author,\n autosaveMs: MARKUP_AUTOSAVE_MS,\n online,\n pullMs: MARKUP_PULL_MS,\n // An older version is read-only; the hook also asks the store (a guest cannot write).\n readOnly: version !== undefined,\n })\n const shown = useMemo(\n () => (editing && !controller.readOnly ? controller : viewOnly(controller)),\n [editing, controller]\n )\n\n // Place my signature: the stamp tool, armed with the picture.\n const { setSettings, setTool } = controller\n useEffect(() => {\n if (!placeStamp) return\n setSettings({ stampImage: { image: placeStamp.image, label: placeStamp.label } })\n setTool('stamp')\n // eslint-disable-next-line react-hooks/exhaustive-deps -- once per request (its key)\n }, [placeStamp?.key])\n\n // Leaving annotate mode: write what is still waiting on the autosave timer.\n const { flush } = controller\n useEffect(\n () => registerBeforeFileShare(documentId, flush),\n [documentId, flush, registerBeforeFileShare]\n )\n useEffect(() => {\n if (!editing) void flush()\n }, [editing, flush])\n\n // Edits that cannot be saved right now (offline, or the server refused): warn before leaving.\n const atRisk = controller.dirty && (controller.offline || !!controller.error)\n useEffect(() => {\n if (!atRisk) return\n const warn = (e: BeforeUnloadEvent) => {\n e.preventDefault()\n e.returnValue = ''\n }\n window.addEventListener('beforeunload', warn)\n return () => window.removeEventListener('beforeunload', warn)\n }, [atRisk])\n\n const [freezeOpen, setFreezeOpen] = useState(false)\n const [busy, setBusy] = useState(false)\n const [progress, setProgress] = useState<{ done: number; total: number } | null>(null)\n const [error, setError] = useState<string | null>(null)\n\n const openFreeze = useCallback(() => {\n setError(null)\n setFreezeOpen(true)\n }, [])\n\n const downloadWithMarkup = useCallback(async () => {\n try {\n await controller.flush()\n const { blob, fileName: name } = await fetchMarkupPdf(client, documentId, version)\n saveFile(blob, name)\n } catch (e) {\n notify(e instanceof Error ? e.message : 'The markup could not be downloaded', 'error')\n }\n }, [controller, client, documentId, version, saveFile, notify])\n\n const handleFreeze = useCallback(\n async (choices: FreezeChoices) => {\n setBusy(true)\n setError(null)\n try {\n await controller.flush()\n // The log is taken from the layer as it is frozen; it never holds the redacted text.\n const log = choices.redactionLog ? redactionLogCsv(controller.layer) : null\n const bytes = new Uint8Array(await file.arrayBuffer())\n const result = await freezePdfInBrowser(bytes, controller.layer, {\n ...choices,\n author,\n onProgress: (done, total) => setProgress({ done, total }),\n })\n const redacted = result.provenance.redactions.count > 0\n const newDocId = await uploadFrozenCopy(\n uploadDocument,\n result.bytes,\n { documentId, fileName, shared, folder, workspaceId },\n redacted\n )\n if (log) saveFile(new Blob([log], { type: 'text/csv' }), redactionLogName(fileName))\n if (newDocId) {\n // The copy joins the list beside the original, which stays where it was.\n await onDocumentsChanged?.([newDocId], 'copy')\n openDocument?.(newDocId)\n }\n notify(\n redacted\n ? 'Redacted copy saved as a new document'\n : 'Annotated copy saved as a new document',\n 'success',\n { description: 'The original is unchanged and still in your files.' }\n )\n for (const warning of result.warnings) notify(warning, 'warning')\n setFreezeOpen(false)\n } catch (e) {\n setError(e instanceof Error ? e.message : 'The copy could not be created')\n } finally {\n setBusy(false)\n setProgress(null)\n }\n },\n [\n controller,\n author,\n file,\n fileName,\n documentId,\n shared,\n folder,\n workspaceId,\n uploadDocument,\n saveFile,\n notify,\n onDocumentsChanged,\n openDocument,\n ]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber, pageWidthPt }: { pageNumber: number; pageWidthPt: number | undefined }) => (\n <AnnotationPageOverlay controller={shown} pageNumber={pageNumber} pageWidthPt={pageWidthPt} />\n ),\n [shown]\n )\n\n const hasMarks = controller.layer.annotations.length > 0\n\n return (\n <div\n className=\"flex h-full min-h-0 flex-col\"\n data-testid=\"annotated-pdf-viewer\"\n data-mode={editing ? 'edit' : 'view'}\n data-markup-status={controller.status}\n >\n {editing && (\n <AnnotationToolbar\n controller={controller}\n onFreeze={controller.readOnly ? undefined : openFreeze}\n actions={\n hasMarks && !controller.dirty && version === undefined ? (\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 text-xs text-primary hover:underline disabled:cursor-not-allowed disabled:text-muted-foreground disabled:no-underline pointer-coarse:min-h-11\"\n data-testid=\"annotation-download-markup\"\n title={\n signed\n ? SIGNED_LOCKED_REASON\n : 'Download the PDF with these annotations (opens in Acrobat or Preview)'\n }\n disabled={signed}\n onClick={() => void downloadWithMarkup()}\n >\n <Download size={14} />\n Download with markup\n </button>\n ) : null\n }\n />\n )}\n {!editing && controller.status === 'error' && (\n <div className=\"border-b px-3 py-1.5 text-xs text-destructive\" data-testid=\"markup-error\">\n The markup could not be loaded: {controller.error}\n </div>\n )}\n <div className=\"min-h-0 flex-1\">\n <PdfViewer {...viewerProps} file={file} renderPageOverlay={renderPageOverlay} />\n </div>\n {editing && (\n <FreezeDialog\n open={freezeOpen}\n onOpenChange={setFreezeOpen}\n controller={controller}\n onConfirm={handleFreeze}\n busy={busy}\n progress={progress}\n error={error}\n />\n )}\n </div>\n )\n}\n","/**\n * Choose where a signature goes: the PDF with the annotation overlay's box tool, kept in memory\n * only. The box is not an annotation; it is handed to the Sign dialog, and the backend draws the\n * signature there. Needs no `<DocumentToolsProvider>`.\n */\n\nimport { useCallback, useEffect, useMemo, type ReactElement } from 'react'\nimport {\n AnnotationPageOverlay,\n createMemoryStore,\n useAnnotationLayer,\n type BoxAnnotation,\n} from '@arbidocs/react/annotations'\nimport {\n isLegibleSignatureBox,\n toAppearance,\n type SignatureAppearance,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\n\nconst SIGNATURE_BOX_COLOR = '#1c7ed6'\n\nexport interface SignaturePlacementViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay'\n> {\n file: Blob\n documentId: string\n onCancel: () => void\n /** The chosen box, or undefined for the default spot (bottom of the last page). */\n onContinue: (appearance: SignatureAppearance | undefined) => void\n /** The PDF viewer to draw on. Default: the kit `PdfViewer` from `@arbidocs/react/viewers`. */\n viewer?: DocumentPdfViewer\n}\n\nexport function SignaturePlacementViewer({\n file,\n documentId,\n onCancel,\n onContinue,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: SignaturePlacementViewerProps): ReactElement {\n const store = useMemo(() => createMemoryStore(), [])\n const controller = useAnnotationLayer({ documentId, store, author: 'signature' })\n const boxes = controller.layer.annotations.filter((a): a is BoxAnnotation => a.kind === 'box')\n const box = boxes.at(-1)\n const isTooSmall = box !== undefined && !isLegibleSignatureBox(box.rect)\n\n // Draw with the box tool; once there is a box, select it so it can be moved or resized.\n useEffect(() => {\n if (controller.status !== 'ready') return\n controller.setSettings({ colors: { ...controller.settings.colors, box: SIGNATURE_BOX_COLOR } })\n // eslint-disable-next-line react-hooks/exhaustive-deps -- once, when the layer is ready\n }, [controller.status])\n useEffect(() => {\n if (controller.status !== 'ready') return\n // One signature box: drawing another replaces it.\n for (const old of boxes.slice(0, -1)) controller.remove(old.id)\n if (box) {\n controller.select(box.id)\n controller.setTool('select')\n } else {\n controller.setTool('box')\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- react to the boxes only\n }, [controller.status, boxes.length, box?.id])\n\n const redraw = useCallback(() => {\n if (box) controller.remove(box.id)\n controller.setTool('box')\n }, [box, controller])\n\n const renderPageOverlay = useCallback(\n ({ pageNumber, pageWidthPt }: { pageNumber: number; pageWidthPt: number | undefined }) => (\n <AnnotationPageOverlay\n controller={controller}\n pageNumber={pageNumber}\n pageWidthPt={pageWidthPt}\n />\n ),\n [controller]\n )\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"signature-placement-viewer\">\n <div className=\"flex flex-wrap items-center gap-2 border-b border-border px-3 py-2 text-sm\">\n <span className=\"mr-auto text-muted-foreground\" data-testid=\"signature-placement-hint\">\n {isTooSmall\n ? 'This box is small: the signature will print small. Make it larger to keep it legible.'\n : box\n ? 'Move or resize the box, then continue.'\n : 'Drag a box where your signature goes, or continue to sign at the end.'}\n </span>\n {box && (\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={redraw}>\n Redraw\n </Button>\n )}\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onCancel}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => onContinue(box ? toAppearance(box) : undefined)}\n data-testid=\"signature-placement-continue\"\n >\n Continue\n </Button>\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer {...viewerProps} file={file} renderPageOverlay={renderPageOverlay} />\n </div>\n </div>\n )\n}\n","/**\n * Prepare a document for signature: add the signers, then place each field (signature, initials,\n * date signed, name) where it goes on the PDF of the version shown, for the signer it is for.\n * A Word document's own signature fields (Insert › Signature field) are placed on opening, each\n * for the signer it names. \"Find signature blocks\" proposes fields from the document's execution\n * blocks (\"Director\", \"Witness name\", \"[Signature]\", \"Date:\"); the author assigns a signer per\n * block. A signer is a workspace member or anyone by email: someone not in the workspace is\n * invited (as a guest) when it is sent, and signs once they join. Save it as a draft or send it:\n * each signer is notified and walked through their fields. Needs a `<DocumentToolsProvider>`\n * inside a React Query `QueryClientProvider`.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState, type ReactElement } from 'react'\nimport { MailPlus, PenLine, ScanSearch, Send, UserPlus, X } from 'lucide-react'\nimport {\n FIELD_TYPE_LABELS,\n SIGNATURE_FIELD_TYPES,\n fieldsFromSuggestions,\n isEmailSigner,\n newFieldId,\n sendBlocker,\n signatureFieldSuggestions,\n splitSuggestions,\n suggestSignatureFields,\n useDocumentTools,\n useInviteSigners,\n useSaveSignatureRequest,\n useSignerCandidates,\n type SignatureField,\n type SignatureFieldType,\n type SignatureRequest,\n type SuggestedSignatureField,\n} from '@arbidocs/react/document-tools'\nimport { Button, Checkbox, Input, Label, cn } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\nimport { SIGNER_COLORS, SignatureFieldsOverlay } from './SignatureFieldsOverlay'\n\nexport interface SignatureRequestEditorProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay'\n> {\n /** The PDF of the version shown (`GET /view?version=`): the fields are placed on it. */\n file: Blob\n documentId: string\n /** The version `file` is of; omitted = the current version. */\n version?: number\n /** A draft to go on editing. */\n draft?: SignatureRequest | null\n onCancel: () => void\n onSaved: (request: SignatureRequest) => void\n viewer?: DocumentPdfViewer\n /** Send a version-specific file grant, without inviting signers into the workspace. */\n shareFile?: boolean\n selfSigning?: boolean\n}\n\nconst selectClass =\n 'h-8 rounded-md border border-input bg-background px-2 text-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring'\n\nexport function SignatureRequestEditor({\n file,\n documentId,\n version,\n draft,\n shareFile = false,\n selfSigning = false,\n onCancel,\n onSaved,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: SignatureRequestEditorProps): ReactElement {\n const { client, notify, user, prepareFileShare } = useDocumentTools()\n const candidates = useSignerCandidates()\n const save = useSaveSignatureRequest()\n const [sharing, setSharing] = useState(false)\n const invite = useInviteSigners()\n const [fields, setFields] = useState<SignatureField[]>(() => draft?.fields ?? [])\n const [signers, setSigners] = useState<string[]>(() => [\n ...new Set(\n selfSigning && user?.email\n ? [user.email.toLowerCase()]\n : (draft?.fields ?? []).map((f) => f.signer)\n ),\n ])\n const [current, setCurrent] = useState<string | null>(signers[0] ?? null)\n const [placing, setPlacing] = useState<SignatureFieldType | null>(null)\n const [selectedId, setSelectedId] = useState<string | null>(null)\n const [message, setMessage] = useState(draft?.message ?? '')\n const [suggestions, setSuggestions] = useState<SuggestedSignatureField[] | null>(null)\n const [assign, setAssign] = useState<Record<number, string | undefined>>({})\n const [finding, setFinding] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [newEmail, setNewEmail] = useState('')\n /** Names the Word document's fields give their signers, by email. */\n const [givenNames, setGivenNames] = useState<Record<string, string>>({})\n /** Signers to invite before sending, waiting for the author to confirm. */\n const [confirmInvite, setConfirmInvite] = useState<string[] | null>(null)\n\n const people = useMemo(() => candidates.data ?? [], [candidates.data])\n const members = useMemo(\n () => new Map(people.map((p) => [p.email.toLowerCase(), p.externalId])),\n [people]\n )\n const me = people.find((p) => p.email.toLowerCase() === user?.email?.toLowerCase())\n const nameOf = useCallback(\n (token: string) => {\n const person = people.find((p) => p.externalId === token)\n if (person) return person.name\n const invited = draft?.signers.find((s) => s.external_id === token)\n if (invited) return invited.name || invited.email || token\n const email = token.toLowerCase()\n const member = people.find((p) => p.email.toLowerCase() === email)\n return member?.name ?? givenNames[email] ?? token\n },\n [people, draft, givenNames]\n )\n /** A signer by name and email (\"Dana Day (dana@example.com)\"), or the email alone when unnamed. */\n const nameAndEmailOf = (token: string) => {\n const name = nameOf(token)\n return isEmailSigner(token) && name !== token ? `${name} (${token})` : name\n }\n /** Not in the workspace yet: an email that is no member's (they are invited when it is sent). */\n const isInvitee = useCallback(\n (token: string) =>\n (isEmailSigner(token) && !members.has(token.toLowerCase())) ||\n draft?.signers.find((s) => s.external_id === token)?.progress === 'invited',\n [members, draft]\n )\n const colorOf = useCallback(\n (ext: string) => {\n const i = signers.indexOf(ext)\n return SIGNER_COLORS[(i < 0 ? 0 : i) % SIGNER_COLORS.length]!\n },\n [signers]\n )\n const selected = fields.find((f) => f.id === selectedId) ?? null\n const blocker = signers.length === 0 ? 'Add a signer.' : sendBlocker(fields)\n\n const addSigner = (token: string) => {\n if (!token) return\n // A member's email is the member.\n const ext = isEmailSigner(token)\n ? (members.get(token.trim().toLowerCase()) ?? token.trim().toLowerCase())\n : token\n if (signers.includes(ext)) return\n setSigners((s) => [...s, ext])\n setCurrent(ext)\n setPlacing((p) => p ?? 'signature')\n }\n const removeSigner = (ext: string) => {\n setSigners((s) => s.filter((x) => x !== ext))\n setFields((fs) => fs.filter((f) => f.signer !== ext))\n if (current === ext) setCurrent(signers.find((x) => x !== ext) ?? null)\n }\n\n const updateField = (id: string, patch: Partial<SignatureField>) =>\n setFields((fs) => fs.map((f) => (f.id === id ? { ...f, ...patch } : f)))\n\n /** The Word document's own fields, placed on opening a new request (each for the signer it names). */\n const placedOnce = useRef(false)\n useEffect(() => {\n if (draft || placedOnce.current || candidates.isLoading) return\n placedOnce.current = true\n let live = true\n void signatureFieldSuggestions(client, documentId, version)\n .then(({ fields: found, signers: namedSigners }) => {\n if (!live) return\n const { placed, extras } = splitSuggestions(found ?? [])\n // Who the Word fields name, even when none of them is found on the PDF (placed by hand).\n const named = Object.fromEntries([\n ...namedSigners.map((s) => [s.email.toLowerCase(), s.name]),\n ...placed.flatMap((s) =>\n s.signer_email && s.signer_name ? [[s.signer_email.toLowerCase(), s.signer_name]] : []\n ),\n ])\n setGivenNames((n) => ({ ...n, ...named }))\n if (!placed.length) return\n const added = fieldsFromSuggestions(placed, {}, members)\n setFields((fs) => [...fs, ...added])\n const assigned = [...new Set(added.map((f) => f.signer))]\n setSigners((s) => [...s, ...assigned.filter((t) => !s.includes(t))])\n setCurrent((c) => c ?? assigned[0] ?? null)\n // Fields placed with no signer, and the signature lines found besides: offered, not added.\n const open = placed.filter((s) => !s.signer_email)\n if (open.length || extras.length) {\n setSuggestions([...open, ...extras])\n setAssign({})\n }\n notify(\n `${added.length} field${added.length === 1 ? '' : 's'} placed from the document.`,\n 'success'\n )\n })\n .catch(() => {\n /* no fields to place: the author places them */\n })\n return () => {\n live = false\n }\n }, [draft, candidates.isLoading, client, documentId, version, members, notify])\n\n const findBlocks = async () => {\n setFinding(true)\n setError(null)\n try {\n const found = await suggestSignatureFields(client, documentId, version)\n setSuggestions(found)\n // Block n goes to the n-th signer when there are enough; otherwise left for the author.\n const groups = [...new Set(found.map((s) => s.group))]\n setAssign(Object.fromEntries(groups.map((g, i) => [g, signers[i]])))\n if (found.length === 0) notify('No signature blocks were found in this document.', 'info')\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signature blocks could not be read')\n } finally {\n setFinding(false)\n }\n }\n\n const applySuggestions = () => {\n if (!suggestions) return\n const added = fieldsFromSuggestions(suggestions, assign, members)\n setFields((fs) => [...fs, ...added])\n const assigned = [...new Set(added.map((f) => f.signer))]\n setSigners((s) => [...s, ...assigned.filter((ext) => !s.includes(ext))])\n if (!current && assigned[0]) setCurrent(assigned[0])\n setSuggestions(null)\n notify(`${added.length} field${added.length === 1 ? '' : 's'} added.`, 'success')\n }\n\n const submit = async (send: boolean, invited = false) => {\n setError(null)\n const invitees = signers.filter((t) => isEmailSigner(t) && !members.has(t.toLowerCase()))\n if (!shareFile && send && invitees.length && !invited) {\n setConfirmInvite(invitees)\n return\n }\n try {\n if (shareFile) {\n setSharing(true)\n const { createFileShare, fileShareSigningRequest } =\n await import('@arbidocs/react/document-tools')\n const fileFields = fields.map((f) => ({\n ...f,\n signer: (people.find((p) => p.externalId === f.signer)?.email ?? f.signer).toLowerCase(),\n }))\n await prepareFileShare(documentId)\n const shared = await createFileShare(client, documentId, {\n version: version ?? 1,\n fields: fileFields,\n message,\n recipients: [...new Set(fileFields.map((f) => f.signer))].map((email) => ({\n email,\n permission: 'sign' as const,\n })),\n })\n onSaved(fileShareSigningRequest(shared))\n window.location.assign(`/shared-files/${shared.external_id}`)\n return\n }\n if (send && invitees.length && me?.role === 'owner') {\n await invite.mutateAsync({ documentId, emails: invitees })\n }\n const request = await save.mutateAsync({\n documentId,\n version,\n fields,\n message: message.trim() || undefined,\n requestId: draft?.status === 'draft' ? draft.external_id : undefined,\n send,\n })\n const waiting = request.signers.filter((s) => s.progress === 'invited').length\n notify(\n send\n ? `Sent for signature to ${request.signers.length} signer${request.signers.length === 1 ? '' : 's'}.` +\n (waiting\n ? ` ${waiting} ${waiting === 1 ? 'is' : 'are'} asked once they join the workspace.`\n : '')\n : 'Draft saved.',\n 'success'\n )\n setConfirmInvite(null)\n onSaved(request)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'The request could not be saved')\n } finally {\n setSharing(false)\n }\n }\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) => (\n <SignatureFieldsOverlay\n page={pageNumber - 1}\n fields={fields}\n colorOf={colorOf}\n labelOf={(f) => `${FIELD_TYPE_LABELS[f.type]} · ${nameOf(f.signer).split(' ')[0]}`}\n editable\n placing={current ? placing : null}\n selectedId={selectedId}\n onSelect={setSelectedId}\n onCreate={(box) => {\n if (!current || !placing) return\n const field: SignatureField = {\n id: newFieldId(),\n type: placing,\n page: pageNumber - 1,\n signer: current,\n required: true,\n ...box,\n }\n setFields((fs) => [...fs, field])\n setSelectedId(field.id)\n }}\n onChange={(id, box) => updateField(id, box)}\n onRemove={(id) => {\n setFields((fs) => fs.filter((f) => f.id !== id))\n setSelectedId(null)\n }}\n />\n ),\n [fields, colorOf, nameOf, current, placing, selectedId]\n )\n\n const groups = suggestions ? [...new Set(suggestions.map((s) => s.group))] : []\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"signature-request-editor\">\n <div className=\"space-y-2 border-b border-border px-3 py-2 text-sm\">\n {shareFile && (\n <p className=\"border-b px-3 py-2 text-sm text-muted-foreground\">\n Recipients receive only this file version. They will not join this workspace. An email\n will link them to review and sign.\n </p>\n )}\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium\">Signers</span>\n {signers.map((ext) => (\n <span\n key={ext}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full border py-0.5 pr-1 pl-2',\n current === ext && 'bg-muted'\n )}\n style={{ borderColor: colorOf(ext) }}\n >\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1.5\"\n onClick={() => setCurrent(ext)}\n aria-pressed={current === ext}\n data-testid={`signer-chip-${ext}`}\n >\n <span className=\"size-2.5 rounded-full\" style={{ background: colorOf(ext) }} />\n {nameOf(ext)}\n {isInvitee(ext) && (\n <span className=\"text-xs text-muted-foreground\" data-testid=\"signer-invited\">\n (to invite)\n </span>\n )}\n </button>\n <button\n type=\"button\"\n aria-label={`Remove ${nameOf(ext)}`}\n className=\"rounded-full p-0.5 hover:bg-accent\"\n onClick={() => removeSigner(ext)}\n >\n <X className=\"size-3\" />\n </button>\n </span>\n ))}\n <label className=\"inline-flex items-center gap-1 text-muted-foreground\">\n <UserPlus className=\"size-4\" aria-hidden />\n <span className=\"sr-only\">Add a signer</span>\n <select\n className={selectClass}\n value=\"\"\n onChange={(e) => addSigner(e.target.value)}\n disabled={candidates.isLoading}\n data-testid=\"signature-add-signer\"\n >\n <option value=\"\">\n {candidates.isLoading ? 'Loading members…' : 'Add a signer…'}\n </option>\n {people\n .filter((p) => !signers.includes(p.externalId))\n .map((p) => (\n <option key={p.externalId} value={p.externalId}>\n {p.name} ({p.email})\n </option>\n ))}\n </select>\n </label>\n <form\n className=\"inline-flex items-center gap-1\"\n onSubmit={(e) => {\n e.preventDefault()\n if (!isEmailSigner(newEmail)) return\n addSigner(newEmail)\n setNewEmail('')\n }}\n >\n <Input\n type=\"email\"\n value={newEmail}\n onChange={(e) => setNewEmail(e.target.value)}\n placeholder=\"Or anyone, by email\"\n aria-label=\"Signer's email\"\n className=\"h-8 w-52\"\n data-testid=\"signature-add-email\"\n />\n <Button\n type=\"submit\"\n size=\"sm\"\n variant=\"ghost\"\n disabled={!isEmailSigner(newEmail)}\n aria-label=\"Add this signer\"\n data-testid=\"signature-add-email-submit\"\n >\n <MailPlus className=\"size-4\" aria-hidden />\n </Button>\n </form>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"text-muted-foreground\">\n {current ? `Place for ${nameOf(current)}:` : 'Add a signer, then place their fields.'}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n variant={placing === null ? 'default' : 'outline'}\n onClick={() => setPlacing(null)}\n >\n Select fields\n </Button>\n {SIGNATURE_FIELD_TYPES.map((type) => (\n <Button\n key={type}\n type=\"button\"\n size=\"sm\"\n variant={placing === type && current ? 'default' : 'outline'}\n disabled={!current}\n onClick={() => setPlacing(type)}\n aria-pressed={placing === type && !!current}\n data-testid={`signature-place-${type}`}\n >\n {FIELD_TYPE_LABELS[type]}\n </Button>\n ))}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={findBlocks}\n disabled={finding}\n data-testid=\"signature-find-blocks\"\n >\n <ScanSearch className=\"mr-1 size-4\" aria-hidden />\n {finding ? 'Looking…' : 'Find signature blocks'}\n </Button>\n <span className=\"ml-auto flex items-center gap-2\">\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onCancel}>\n Cancel\n </Button>\n {!shareFile && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => submit(false)}\n disabled={save.isPending || fields.length === 0}\n data-testid=\"signature-save-draft\"\n >\n Save draft\n </Button>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => submit(true)}\n disabled={sharing || save.isPending || !!blocker}\n title={blocker ?? undefined}\n data-testid=\"signature-send\"\n >\n <Send className=\"mr-1 size-4\" aria-hidden />\n {sharing || save.isPending ? 'Sending…' : 'Send for signature'}\n </Button>\n </span>\n </div>\n <div className=\"flex flex-wrap items-center gap-2\">\n <Input\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n maxLength={2000}\n placeholder=\"Message to the signers (optional)\"\n className=\"h-8 max-w-md\"\n data-testid=\"signature-message\"\n />\n <span className=\"text-muted-foreground\" data-testid=\"signature-editor-summary\">\n {fields.length} field{fields.length === 1 ? '' : 's'}\n {blocker ? ` · ${blocker}` : ' · ready to send'}\n </span>\n </div>\n {selected && (\n <div\n className=\"flex flex-wrap items-center gap-3 rounded-md bg-muted px-2 py-1.5\"\n data-testid=\"signature-field-details\"\n >\n <PenLine className=\"size-4\" aria-hidden />\n <select\n className={selectClass}\n value={selected.type}\n aria-label=\"Field type\"\n onChange={(e) =>\n updateField(selected.id, { type: e.target.value as SignatureFieldType })\n }\n >\n {SIGNATURE_FIELD_TYPES.map((t) => (\n <option key={t} value={t}>\n {FIELD_TYPE_LABELS[t]}\n </option>\n ))}\n </select>\n <select\n className={selectClass}\n value={selected.signer}\n aria-label=\"Signer\"\n onChange={(e) => updateField(selected.id, { signer: e.target.value })}\n data-testid=\"signature-field-signer\"\n >\n {signers.map((ext) => (\n <option key={ext} value={ext}>\n {nameOf(ext)}\n </option>\n ))}\n </select>\n <span className=\"flex items-center gap-1.5\">\n <Checkbox\n id=\"signature-field-required\"\n checked={selected.required}\n onCheckedChange={(c) => updateField(selected.id, { required: c === true })}\n />\n <Label htmlFor=\"signature-field-required\" className=\"font-normal\">\n Required\n </Label>\n </span>\n </div>\n )}\n {suggestions && suggestions.length > 0 && (\n <div className=\"space-y-1.5 rounded-md border p-2\" data-testid=\"signature-suggestions\">\n <div className=\"font-medium\">\n Found {groups.length} signature block{groups.length === 1 ? '' : 's'}. Choose who\n signs each.\n </div>\n {groups.map((g) => {\n const inBlock = suggestions.filter((s) => s.group === g)\n const role = inBlock.find((s) => s.role)?.role\n return (\n <div key={g} className=\"flex flex-wrap items-center gap-2\">\n <span className=\"min-w-40\">\n {role ?? `Block ${g + 1}`}{' '}\n <span className=\"text-muted-foreground\">\n (p. {inBlock[0]!.page + 1}:{' '}\n {inBlock.map((s) => FIELD_TYPE_LABELS[s.type]).join(', ')})\n </span>\n </span>\n <select\n className={selectClass}\n value={assign[g] ?? ''}\n onChange={(e) => setAssign((a) => ({ ...a, [g]: e.target.value || undefined }))}\n data-testid={`signature-suggestion-signer-${g}`}\n >\n <option value=\"\">Skip</option>\n {people.map((p) => (\n <option key={p.externalId} value={p.externalId}>\n {p.name}\n </option>\n ))}\n {signers\n .filter((t) => !people.some((p) => p.externalId === t))\n .map((t) => (\n <option key={t} value={t}>\n {nameOf(t)}\n </option>\n ))}\n </select>\n </div>\n )\n })}\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={applySuggestions}\n disabled={!Object.values(assign).some(Boolean)}\n data-testid=\"signature-suggestions-apply\"\n >\n Add fields\n </Button>\n <Button type=\"button\" size=\"sm\" variant=\"ghost\" onClick={() => setSuggestions(null)}>\n Dismiss\n </Button>\n </div>\n </div>\n )}\n {confirmInvite && (\n <div\n className=\"space-y-1.5 rounded-md border border-amber-300 bg-amber-50 p-2 text-amber-950 dark:border-amber-800 dark:bg-amber-950/40 dark:text-amber-100\"\n data-testid=\"signature-invite-confirm\"\n >\n <p>\n Not in this workspace yet:{' '}\n <strong>{confirmInvite.map(nameAndEmailOf).join(', ')}</strong>.{' '}\n {me?.role === 'owner'\n ? 'They are invited with read-only access and asked to sign when they join.'\n : 'Ask a workspace owner to invite them: they are asked to sign when they join.'}\n </p>\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => submit(true, true)}\n disabled={save.isPending || invite.isPending}\n data-testid=\"signature-invite-send\"\n >\n {me?.role === 'owner' ? 'Invite and send' : 'Send'}\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setConfirmInvite(null)}\n >\n Cancel\n </Button>\n </div>\n </div>\n )}\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"signature-editor-error\">\n {error}\n </p>\n )}\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer {...viewerProps} file={file} renderPageOverlay={renderPageOverlay} />\n </div>\n </div>\n )\n}\n"]}
|
package/dist/embed/index.cjs
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkDGOVO2QO_cjs = require('../chunk-DGOVO2QO.cjs');
|
|
5
5
|
require('../chunk-PIWT2GCY.cjs');
|
|
6
|
-
require('../chunk-
|
|
7
|
-
require('../chunk-
|
|
6
|
+
require('../chunk-S3SWSAUB.cjs');
|
|
7
|
+
require('../chunk-DZGLEEUT.cjs');
|
|
8
8
|
require('../chunk-JNVJQCGF.cjs');
|
|
9
9
|
require('../chunk-TJY7XPDE.cjs');
|
|
10
10
|
require('../chunk-XNW62J54.cjs');
|
|
11
11
|
require('../chunk-53RXGFJ6.cjs');
|
|
12
12
|
require('../chunk-QN5GTCPB.cjs');
|
|
13
13
|
require('../chunk-6KQVTMRL.cjs');
|
|
14
|
-
require('../chunk-
|
|
14
|
+
require('../chunk-KXNC24EF.cjs');
|
|
15
15
|
require('../chunk-MMSHLHTA.cjs');
|
|
16
|
-
require('../chunk-
|
|
16
|
+
require('../chunk-OSWKA2NQ.cjs');
|
|
17
17
|
require('../chunk-223D4727.cjs');
|
|
18
18
|
require('../chunk-SNUBQMIS.cjs');
|
|
19
19
|
require('../chunk-QQMMCXBP.cjs');
|
|
@@ -43,8 +43,8 @@ require('../chunk-4PA6VCCR.cjs');
|
|
|
43
43
|
require('../chunk-AHDJXIUB.cjs');
|
|
44
44
|
require('../chunk-RL2HI6NP.cjs');
|
|
45
45
|
require('../chunk-6UZC4XVV.cjs');
|
|
46
|
-
require('../chunk-TTPJ2G3G.cjs');
|
|
47
46
|
require('../chunk-XNXNLXIC.cjs');
|
|
47
|
+
require('../chunk-TTPJ2G3G.cjs');
|
|
48
48
|
require('../chunk-VYJF4ZQY.cjs');
|
|
49
49
|
require('../chunk-M74FWYNL.cjs');
|
|
50
50
|
require('../chunk-QUMUAJ2P.cjs');
|
|
@@ -71,8 +71,8 @@ require('../chunk-HSLPFBK2.cjs');
|
|
|
71
71
|
require('../chunk-QGVOT7E4.cjs');
|
|
72
72
|
require('../chunk-QRAQZTJE.cjs');
|
|
73
73
|
require('../chunk-UDSHVNU3.cjs');
|
|
74
|
-
require('../chunk-IPSHAMO2.cjs');
|
|
75
74
|
require('../chunk-FX3K6LNZ.cjs');
|
|
75
|
+
require('../chunk-IPSHAMO2.cjs');
|
|
76
76
|
require('../chunk-ZBP4ZSAJ.cjs');
|
|
77
77
|
require('../chunk-PPCATBOY.cjs');
|
|
78
78
|
require('../chunk-WGWP4ATS.cjs');
|
|
@@ -86,27 +86,27 @@ require('../chunk-DES3K4SD.cjs');
|
|
|
86
86
|
|
|
87
87
|
Object.defineProperty(exports, "ArbiChat", {
|
|
88
88
|
enumerable: true,
|
|
89
|
-
get: function () { return
|
|
89
|
+
get: function () { return chunkDGOVO2QO_cjs.ArbiChat; }
|
|
90
90
|
});
|
|
91
91
|
Object.defineProperty(exports, "ConnectedCompactLogin", {
|
|
92
92
|
enumerable: true,
|
|
93
|
-
get: function () { return
|
|
93
|
+
get: function () { return chunkDGOVO2QO_cjs.ConnectedCompactLogin; }
|
|
94
94
|
});
|
|
95
95
|
Object.defineProperty(exports, "ConnectedEmbeddedChat", {
|
|
96
96
|
enumerable: true,
|
|
97
|
-
get: function () { return
|
|
97
|
+
get: function () { return chunkDGOVO2QO_cjs.ConnectedEmbeddedChat; }
|
|
98
98
|
});
|
|
99
99
|
Object.defineProperty(exports, "ConnectedLoginPage", {
|
|
100
100
|
enumerable: true,
|
|
101
|
-
get: function () { return
|
|
101
|
+
get: function () { return chunkDGOVO2QO_cjs.ConnectedLoginPage; }
|
|
102
102
|
});
|
|
103
103
|
Object.defineProperty(exports, "EmbeddedChatPanel", {
|
|
104
104
|
enumerable: true,
|
|
105
|
-
get: function () { return
|
|
105
|
+
get: function () { return chunkDGOVO2QO_cjs.EmbeddedChatPanel; }
|
|
106
106
|
});
|
|
107
107
|
Object.defineProperty(exports, "defaultHost", {
|
|
108
108
|
enumerable: true,
|
|
109
|
-
get: function () { return
|
|
109
|
+
get: function () { return chunkDGOVO2QO_cjs.defaultHost; }
|
|
110
110
|
});
|
|
111
111
|
Object.defineProperty(exports, "useConnection", {
|
|
112
112
|
enumerable: true,
|
package/dist/embed/index.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { ArbiChat, ConnectedCompactLogin, ConnectedEmbeddedChat, ConnectedLoginPage, EmbeddedChatPanel, defaultHost } from '../chunk-
|
|
2
|
+
export { ArbiChat, ConnectedCompactLogin, ConnectedEmbeddedChat, ConnectedLoginPage, EmbeddedChatPanel, defaultHost } from '../chunk-JAIMJTXQ.js';
|
|
3
3
|
import '../chunk-GARDQALH.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-M6DTLHCN.js';
|
|
5
|
+
import '../chunk-K2G2P66L.js';
|
|
6
6
|
import '../chunk-DBHBJIF4.js';
|
|
7
7
|
import '../chunk-CDDOLWSF.js';
|
|
8
8
|
import '../chunk-AZDPAV7E.js';
|
|
9
9
|
import '../chunk-AYIPCUPG.js';
|
|
10
10
|
import '../chunk-BMHW7WTF.js';
|
|
11
11
|
import '../chunk-3PV25ICC.js';
|
|
12
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-I6WRLTWU.js';
|
|
13
13
|
import '../chunk-N77UYRV7.js';
|
|
14
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-SYMZ6L3C.js';
|
|
15
15
|
import '../chunk-RC6VTY2H.js';
|
|
16
16
|
import '../chunk-OHRWYRTH.js';
|
|
17
17
|
import '../chunk-PBQNZWSX.js';
|
|
@@ -41,8 +41,8 @@ import '../chunk-ZQ5YTC3P.js';
|
|
|
41
41
|
import '../chunk-RLWIUUQ5.js';
|
|
42
42
|
import '../chunk-L3BEWZWT.js';
|
|
43
43
|
import '../chunk-P4CH2ATT.js';
|
|
44
|
-
import '../chunk-U53SIJES.js';
|
|
45
44
|
import '../chunk-IU5CHOEU.js';
|
|
45
|
+
import '../chunk-U53SIJES.js';
|
|
46
46
|
import '../chunk-FVZ2CN4A.js';
|
|
47
47
|
import '../chunk-I6F6RBKV.js';
|
|
48
48
|
import '../chunk-OJIX5NBN.js';
|
|
@@ -69,8 +69,8 @@ import '../chunk-PMJPPXX5.js';
|
|
|
69
69
|
import '../chunk-XEZCSRFG.js';
|
|
70
70
|
import '../chunk-ECYOIRXR.js';
|
|
71
71
|
import '../chunk-XDDORJPA.js';
|
|
72
|
-
import '../chunk-X5YMI6A7.js';
|
|
73
72
|
import '../chunk-SLSBJRWW.js';
|
|
73
|
+
import '../chunk-X5YMI6A7.js';
|
|
74
74
|
import '../chunk-H773F7OR.js';
|
|
75
75
|
import '../chunk-NPLYHR2E.js';
|
|
76
76
|
import '../chunk-YUHSDOPW.js';
|
|
@@ -97,10 +97,13 @@ export interface ImportFamilySectionProps {
|
|
|
97
97
|
label: string;
|
|
98
98
|
/** Connected account shown next to the label. */
|
|
99
99
|
identity?: string | null;
|
|
100
|
-
/**
|
|
101
|
-
|
|
100
|
+
/**
|
|
101
|
+
* The single family action: Connect when disconnected, Reconnect when re-consent is due. None for
|
|
102
|
+
* a source with no connection of its own (the user's own mailbox).
|
|
103
|
+
*/
|
|
104
|
+
action?: ImportFamilyActionKind;
|
|
102
105
|
isActionPending?: boolean;
|
|
103
|
-
onAction
|
|
106
|
+
onAction?: () => void;
|
|
104
107
|
testId?: string;
|
|
105
108
|
actionButton?: {
|
|
106
109
|
testId?: string;
|