@arbidocs/blocks 0.4.164 → 0.4.165
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/{ConnectedNativeDocxComparison-SAYKB52H.js → ConnectedNativeDocxComparison-7WXIDRDY.js} +17 -17
- package/dist/{ConnectedStreamedWordArtifact-2T6ZBLUV.js.map → ConnectedNativeDocxComparison-7WXIDRDY.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-4LSTT6MZ.cjs → ConnectedNativeDocxComparison-XV2UHRBQ.cjs} +18 -18
- package/dist/{ConnectedNativeDocxComparison-4LSTT6MZ.cjs.map → ConnectedNativeDocxComparison-XV2UHRBQ.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-G6RTBKEB.js → ConnectedNativeDocxEditor-X3FEGMRT.js} +15 -15
- package/dist/{ConnectedNativeDocxEditor-G6RTBKEB.js.map → ConnectedNativeDocxEditor-X3FEGMRT.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-OGZ3UPSY.cjs → ConnectedNativeDocxEditor-Z7KSH5RK.cjs} +17 -17
- package/dist/{ConnectedNativeDocxEditor-OGZ3UPSY.cjs.map → ConnectedNativeDocxEditor-Z7KSH5RK.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-2T6ZBLUV.js → ConnectedStreamedWordArtifact-JV56WYWK.js} +17 -17
- package/dist/{ConnectedNativeDocxComparison-SAYKB52H.js.map → ConnectedStreamedWordArtifact-JV56WYWK.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-5SIOSURE.cjs → ConnectedStreamedWordArtifact-UNZIAYWQ.cjs} +18 -18
- package/dist/ConnectedStreamedWordArtifact-UNZIAYWQ.cjs.map +1 -0
- package/dist/{NativeDocxEditor-T2PJIZMU.cjs → NativeDocxEditor-WAUI2YRU.cjs} +9 -9
- package/dist/{NativeDocxEditor-T2PJIZMU.cjs.map → NativeDocxEditor-WAUI2YRU.cjs.map} +1 -1
- package/dist/{NativeDocxEditor-TBTBD6TC.js → NativeDocxEditor-XEDC4UFE.js} +5 -5
- package/dist/{NativeDocxEditor-TBTBD6TC.js.map → NativeDocxEditor-XEDC4UFE.js.map} +1 -1
- package/dist/{WorkspaceTableView-G22XS4ZK.cjs → WorkspaceTableView-OMBC2G5K.cjs} +13 -13
- package/dist/{WorkspaceTableView-G22XS4ZK.cjs.map → WorkspaceTableView-OMBC2G5K.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-EJKJZ6R4.js → WorkspaceTableView-QVOLTH5Z.js} +11 -11
- package/dist/{WorkspaceTableView-EJKJZ6R4.js.map → WorkspaceTableView-QVOLTH5Z.js.map} +1 -1
- package/dist/agents/index.cjs +271 -271
- package/dist/agents/index.js +14 -14
- package/dist/calls/index.cjs +4 -4
- package/dist/calls/index.js +3 -3
- package/dist/chat/index.cjs +140 -140
- package/dist/chat/index.js +6 -6
- package/dist/{chunk-ZV4DNZ5N.cjs → chunk-2MX3RAF4.cjs} +11 -11
- package/dist/{chunk-ZV4DNZ5N.cjs.map → chunk-2MX3RAF4.cjs.map} +1 -1
- package/dist/{chunk-W7M5QVJ3.js → chunk-2NTQH63V.js} +13 -13
- package/dist/{chunk-W7M5QVJ3.js.map → chunk-2NTQH63V.js.map} +1 -1
- package/dist/{chunk-ZPE7334Z.js → chunk-5BKVKWKQ.js} +6 -6
- package/dist/{chunk-ZPE7334Z.js.map → chunk-5BKVKWKQ.js.map} +1 -1
- package/dist/{chunk-XYYOZATD.js → chunk-6RKMFTUJ.js} +8 -8
- package/dist/{chunk-XYYOZATD.js.map → chunk-6RKMFTUJ.js.map} +1 -1
- package/dist/{chunk-YEYN3GHT.js → chunk-6SOWJFWJ.js} +4 -4
- package/dist/{chunk-YEYN3GHT.js.map → chunk-6SOWJFWJ.js.map} +1 -1
- package/dist/{chunk-3EYPVHSY.js → chunk-A7HNGO5F.js} +3 -3
- package/dist/{chunk-3EYPVHSY.js.map → chunk-A7HNGO5F.js.map} +1 -1
- package/dist/{chunk-TNESYDBR.cjs → chunk-AXCTDWFH.cjs} +3 -3
- package/dist/{chunk-TNESYDBR.cjs.map → chunk-AXCTDWFH.cjs.map} +1 -1
- package/dist/{chunk-Y3AXV27O.cjs → chunk-C3GS4WQE.cjs} +5 -5
- package/dist/{chunk-Y3AXV27O.cjs.map → chunk-C3GS4WQE.cjs.map} +1 -1
- package/dist/{chunk-5A2QQAF5.cjs → chunk-C45WOKZW.cjs} +3 -3
- package/dist/{chunk-5A2QQAF5.cjs.map → chunk-C45WOKZW.cjs.map} +1 -1
- package/dist/{chunk-ZAVEMQ37.cjs → chunk-DWZXSPMB.cjs} +3 -3
- package/dist/{chunk-ZAVEMQ37.cjs.map → chunk-DWZXSPMB.cjs.map} +1 -1
- package/dist/{chunk-AVXRXPII.js → chunk-EJHJQKUF.js} +3 -3
- package/dist/{chunk-AVXRXPII.js.map → chunk-EJHJQKUF.js.map} +1 -1
- package/dist/{chunk-KM7P35MJ.js → chunk-FPFMKSSB.js} +3 -3
- package/dist/{chunk-KM7P35MJ.js.map → chunk-FPFMKSSB.js.map} +1 -1
- package/dist/{chunk-D7BUC2GM.js → chunk-GMJZ4FO7.js} +4 -4
- package/dist/{chunk-D7BUC2GM.js.map → chunk-GMJZ4FO7.js.map} +1 -1
- package/dist/{chunk-4GITK3Q5.cjs → chunk-HCAXURWO.cjs} +3 -3
- package/dist/{chunk-4GITK3Q5.cjs.map → chunk-HCAXURWO.cjs.map} +1 -1
- package/dist/{chunk-6XIXNH26.js → chunk-HDJSU5IS.js} +3 -3
- package/dist/{chunk-6XIXNH26.js.map → chunk-HDJSU5IS.js.map} +1 -1
- package/dist/{chunk-OHCYJFV2.cjs → chunk-HHNYVJV3.cjs} +7 -7
- package/dist/{chunk-OHCYJFV2.cjs.map → chunk-HHNYVJV3.cjs.map} +1 -1
- package/dist/{chunk-5WLORPGX.js → chunk-HQYN5EFX.js} +3 -3
- package/dist/{chunk-5WLORPGX.js.map → chunk-HQYN5EFX.js.map} +1 -1
- package/dist/{chunk-BGXWPVHR.js → chunk-HZJQQVKL.js} +3 -3
- package/dist/{chunk-BGXWPVHR.js.map → chunk-HZJQQVKL.js.map} +1 -1
- package/dist/{chunk-UORU5S7Y.js → chunk-I4HFM5HB.js} +3 -3
- package/dist/{chunk-UORU5S7Y.js.map → chunk-I4HFM5HB.js.map} +1 -1
- package/dist/{chunk-DX5Y2NO5.cjs → chunk-IHPQO2TG.cjs} +5 -5
- package/dist/{chunk-DX5Y2NO5.cjs.map → chunk-IHPQO2TG.cjs.map} +1 -1
- package/dist/{chunk-5D5YDIBC.cjs → chunk-JB4EXO3V.cjs} +7 -7
- package/dist/{chunk-5D5YDIBC.cjs.map → chunk-JB4EXO3V.cjs.map} +1 -1
- package/dist/{chunk-GWSGIZQ5.js → chunk-KCIYZ76I.js} +3 -3
- package/dist/{chunk-GWSGIZQ5.js.map → chunk-KCIYZ76I.js.map} +1 -1
- package/dist/{chunk-NVVBRQN2.cjs → chunk-M7C4FHLU.cjs} +13 -13
- package/dist/{chunk-NVVBRQN2.cjs.map → chunk-M7C4FHLU.cjs.map} +1 -1
- package/dist/{chunk-ETJFC6MO.cjs → chunk-MPXUHCEV.cjs} +4 -4
- package/dist/{chunk-ETJFC6MO.cjs.map → chunk-MPXUHCEV.cjs.map} +1 -1
- package/dist/{chunk-UJEH5REK.cjs → chunk-OGQSYL3P.cjs} +12 -12
- package/dist/{chunk-UJEH5REK.cjs.map → chunk-OGQSYL3P.cjs.map} +1 -1
- package/dist/chunk-OSWZ4K34.cjs +18 -0
- package/dist/{chunk-ITMHL3HI.cjs.map → chunk-OSWZ4K34.cjs.map} +1 -1
- package/dist/chunk-PMHAJRKF.cjs +18 -0
- package/dist/{chunk-NMU6VW4D.cjs.map → chunk-PMHAJRKF.cjs.map} +1 -1
- package/dist/{chunk-L5GDCJPP.js → chunk-QARJQJAX.js} +4 -4
- package/dist/{chunk-L5GDCJPP.js.map → chunk-QARJQJAX.js.map} +1 -1
- package/dist/{chunk-LPUQHIVP.cjs → chunk-R2N5VIVI.cjs} +5 -5
- package/dist/{chunk-LPUQHIVP.cjs.map → chunk-R2N5VIVI.cjs.map} +1 -1
- package/dist/{chunk-XHJAYCPQ.js → chunk-SLLNLFFP.js} +4 -4
- package/dist/{chunk-XHJAYCPQ.js.map → chunk-SLLNLFFP.js.map} +1 -1
- package/dist/{chunk-CVDIWVSU.js → chunk-SQQU3WRB.js} +3 -3
- package/dist/{chunk-CVDIWVSU.js.map → chunk-SQQU3WRB.js.map} +1 -1
- package/dist/{chunk-OISSVUGI.cjs → chunk-U7OUZHBH.cjs} +3 -3
- package/dist/{chunk-OISSVUGI.cjs.map → chunk-U7OUZHBH.cjs.map} +1 -1
- package/dist/{chunk-YRI5HWSS.js → chunk-UKKTT3JE.js} +7 -7
- package/dist/{chunk-YRI5HWSS.js.map → chunk-UKKTT3JE.js.map} +1 -1
- package/dist/{chunk-F5RV6Z4T.cjs → chunk-V24UHHL4.cjs} +62 -62
- package/dist/{chunk-F5RV6Z4T.cjs.map → chunk-V24UHHL4.cjs.map} +1 -1
- package/dist/{chunk-ECERC6TI.js → chunk-VHJHY7TT.js} +3 -3
- package/dist/{chunk-ECERC6TI.js.map → chunk-VHJHY7TT.js.map} +1 -1
- package/dist/{chunk-UUN2WGGM.cjs → chunk-VIV56KDN.cjs} +5 -5
- package/dist/{chunk-UUN2WGGM.cjs.map → chunk-VIV56KDN.cjs.map} +1 -1
- package/dist/{chunk-XER3JLC7.js → chunk-VTTDCHBZ.js} +3 -3
- package/dist/{chunk-XER3JLC7.js.map → chunk-VTTDCHBZ.js.map} +1 -1
- package/dist/{chunk-LMQOTLG4.cjs → chunk-WE5DABTC.cjs} +3 -3
- package/dist/{chunk-LMQOTLG4.cjs.map → chunk-WE5DABTC.cjs.map} +1 -1
- package/dist/{chunk-NS7NVX4E.cjs → chunk-WLFMHGHK.cjs} +6 -6
- package/dist/{chunk-NS7NVX4E.cjs.map → chunk-WLFMHGHK.cjs.map} +1 -1
- package/dist/{chunk-G2Z2KARY.cjs → chunk-X6Z6IWRY.cjs} +6 -6
- package/dist/{chunk-G2Z2KARY.cjs.map → chunk-X6Z6IWRY.cjs.map} +1 -1
- package/dist/{chunk-H55HBIBH.js → chunk-XA6QWXOQ.js} +4 -4
- package/dist/{chunk-H55HBIBH.js.map → chunk-XA6QWXOQ.js.map} +1 -1
- package/dist/{chunk-FN5LMFMI.js → chunk-XBTOPW6B.js} +5 -5
- package/dist/{chunk-FN5LMFMI.js.map → chunk-XBTOPW6B.js.map} +1 -1
- package/dist/{chunk-IZ6SDB2Q.js → chunk-YG3BXG5M.js} +5 -5
- package/dist/{chunk-IZ6SDB2Q.js.map → chunk-YG3BXG5M.js.map} +1 -1
- package/dist/{chunk-AYJZRBHG.cjs → chunk-YMWMVV4H.cjs} +4 -4
- package/dist/{chunk-AYJZRBHG.cjs.map → chunk-YMWMVV4H.cjs.map} +1 -1
- package/dist/{chunk-GFVIFXWT.cjs → chunk-YNLWAD57.cjs} +5 -5
- package/dist/{chunk-GFVIFXWT.cjs.map → chunk-YNLWAD57.cjs.map} +1 -1
- package/dist/{chunk-RY2SODRN.js → chunk-ZSDL36BI.js} +4 -4
- package/dist/{chunk-RY2SODRN.js.map → chunk-ZSDL36BI.js.map} +1 -1
- package/dist/citations/index.cjs +1 -1
- package/dist/citations/index.js +1 -1
- package/dist/collaboration/index.cjs +71 -71
- package/dist/collaboration/index.js +2 -2
- package/dist/connect/docx.cjs +21 -21
- package/dist/connect/docx.js +17 -17
- package/dist/connect/index.cjs +746 -746
- package/dist/connect/index.js +37 -37
- package/dist/connect/viewer.cjs +72 -72
- package/dist/connect/viewer.js +21 -21
- package/dist/document-tools/index.cjs +21 -21
- package/dist/document-tools/index.js +4 -4
- package/dist/docx/index.cjs +52 -52
- package/dist/docx/index.js +5 -5
- package/dist/facts/index.cjs +58 -58
- package/dist/facts/index.js +8 -8
- package/dist/files/index.cjs +242 -242
- package/dist/files/index.js +10 -10
- package/dist/home/index.cjs +31 -31
- package/dist/home/index.js +6 -6
- package/dist/index.cjs +1243 -1243
- package/dist/index.js +27 -27
- package/dist/retrieval/index.cjs +1 -1
- package/dist/retrieval/index.js +1 -1
- package/dist/settings/index.cjs +175 -175
- package/dist/settings/index.js +6 -6
- package/dist/shell/index.cjs +13 -13
- package/dist/shell/index.js +5 -5
- package/dist/studio/index.cjs +8 -8
- package/dist/studio/index.js +7 -7
- package/dist/workflow-canvas/index.cjs +27 -27
- package/dist/workflow-canvas/index.js +14 -14
- package/dist/workspaces/index.cjs +2 -2
- package/dist/workspaces/index.js +2 -2
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-LWDSDCMO.js +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-RCHS4ZEH.cjs +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-5SIOSURE.cjs.map +0 -1
- package/dist/chunk-ITMHL3HI.cjs +0 -18
- package/dist/chunk-NMU6VW4D.cjs +0 -18
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var chunkUWIILWDI_cjs = require('./chunk-UWIILWDI.cjs');
|
|
5
4
|
var chunkNMZI3K6R_cjs = require('./chunk-NMZI3K6R.cjs');
|
|
5
|
+
var chunkDWZXSPMB_cjs = require('./chunk-DWZXSPMB.cjs');
|
|
6
6
|
var chunkJPWPR6QU_cjs = require('./chunk-JPWPR6QU.cjs');
|
|
7
|
-
var
|
|
7
|
+
var chunkUWIILWDI_cjs = require('./chunk-UWIILWDI.cjs');
|
|
8
8
|
var lucideReact = require('lucide-react');
|
|
9
9
|
var ui = require('@arbidocs/react/ui');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -646,7 +646,7 @@ function SavedSignatureSettings() {
|
|
|
646
646
|
}
|
|
647
647
|
),
|
|
648
648
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
649
|
-
|
|
649
|
+
chunkDWZXSPMB_cjs.ConfirmDialog,
|
|
650
650
|
{
|
|
651
651
|
isOpen: confirming,
|
|
652
652
|
onClose: () => setConfirming(false),
|
|
@@ -861,5 +861,5 @@ exports.SignatureStatus = SignatureStatus;
|
|
|
861
861
|
exports.SignedEditNote = SignedEditNote;
|
|
862
862
|
exports.VersionSnapshotBar = VersionSnapshotBar;
|
|
863
863
|
exports.formatSignedAt = formatSignedAt;
|
|
864
|
-
//# sourceMappingURL=chunk-
|
|
865
|
-
//# sourceMappingURL=chunk-
|
|
864
|
+
//# sourceMappingURL=chunk-R2N5VIVI.cjs.map
|
|
865
|
+
//# sourceMappingURL=chunk-R2N5VIVI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/document-tools/DocumentToolButtons.tsx","../src/document-tools/MarkupNotices.tsx","../src/document-tools/MarkupViewNote.tsx","../src/document-tools/SignatureStatus.tsx","../src/document-tools/SignatureCertificate.tsx","../src/document-tools/VersionSnapshotBar.tsx","../src/document-tools/PlaceMySignatureButton.tsx","../src/document-tools/SavedSignatureSettings.tsx","../src/document-tools/SignatureRequestBanner.tsx"],"names":["jsxs","Button","jsx","PencilLine","FileText","Download","PenLine","Users","Fragment","ViewerStatusNote","useOptionalDocumentTools","Popover","PopoverTrigger","PopoverContent","certificateLink","useState","useRef","matchSignedCopy","cn","LINK","useDocumentTools","fetchSavedSignature","DropdownMenu","DropdownMenuTrigger","Signature","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuLabel","INFORMAL_SIGNATURE_NOTE","AdoptSignatureDialog","storeSavedSignature","useSavedSignature","useStoreSavedSignature","useDeleteSavedSignature","SettingsCard","Trash2","ConfirmDialog","SIGNER_PROGRESS_LABELS","useDocumentSignatureRequests","useVoidSignatureRequest","useInviteSigners","useSignerCandidates","Send","FilePenLine"],"mappings":"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","file":"chunk-LPUQHIVP.cjs","sourcesContent":["/**\n * The viewer-header buttons of the PDF document tools: Annotate, Show original, Download with\n * markup and Sign. Separate parts so a host can place them among its own header actions. On a\n * narrow (`compact`) header each is icon-only; its accessible name stays.\n */\n\nimport type { ReactElement } from 'react'\nimport { Download, FileText, PenLine, PencilLine, Users } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\n\nconst TOUCH = 'pointer-coarse:min-h-11'\n\ninterface ToggleProps {\n /** On (pressed). */\n active: boolean\n onClick: () => void\n compact?: boolean\n}\n\n/** Annotate mode: highlight, comment, stamp, redact. */\nexport function AnnotateButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Annotate: highlight, comment, stamp, redact\"\n aria-label=\"Annotate\"\n data-testid=\"annotate-toggle\"\n className={TOUCH}\n onClick={onClick}\n >\n <PencilLine className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Annotate</span>}\n </Button>\n )\n}\n\n/** The markup is the default view of a marked-up PDF; this shows the untouched file. */\nexport function ShowOriginalButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title={active ? 'Show the markup again' : 'Show the original, without markup'}\n aria-label=\"Show original\"\n data-testid=\"markup-show-original\"\n className={TOUCH}\n onClick={onClick}\n >\n <FileText className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Show original</span>}\n </Button>\n )\n}\n\n/**\n * \"Download with markup\": the PDF with its annotations, which Acrobat and Preview show. With a\n * `disabledReason` (a signed, locked version) it is off and says why.\n */\nexport function DownloadMarkupButton({\n onClick,\n disabledReason,\n}: {\n onClick: () => void\n disabledReason?: string\n}): ReactElement {\n const button = (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n title={\n disabledReason ??\n 'Download with markup: the PDF with its annotations (opens in Acrobat or Preview)'\n }\n aria-label=\"Download with markup\"\n aria-description={disabledReason}\n disabled={!!disabledReason}\n data-testid=\"markup-download\"\n className={TOUCH}\n onClick={onClick}\n >\n <Download className=\"size-4\" />\n </Button>\n )\n // A disabled button gets no pointer events, so the reason sits on a wrapper too.\n return disabledReason ? (\n <span title={disabledReason} className=\"inline-flex\" data-testid=\"markup-download-locked\">\n {button}\n </span>\n ) : (\n button\n )\n}\n\n/** One line where a signed version's content can be edited: an edit is a new, unsigned version. */\nexport function SignedEditNote(): ReactElement {\n return (\n <p\n className=\"border-b px-3 py-1.5 text-xs text-muted-foreground\"\n data-testid=\"signed-edit-note\"\n >\n Editing creates a new unsigned version\n </p>\n )\n}\n\n/** Sign: choose where the signature goes, then sign. */\nexport function SignButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Sign document\"\n aria-label=\"Sign\"\n data-testid=\"sign-document-button\"\n className={TOUCH}\n onClick={onClick}\n >\n <PenLine className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Sign</span>}\n </Button>\n )\n}\n\n/** Prepare the document for others to sign: place their fields and send it. */\nexport function RequestSignaturesButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Request signatures\"\n aria-label=\"Request signatures\"\n data-testid=\"request-signatures-button\"\n className={TOUCH}\n onClick={onClick}\n >\n <Users className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Request signatures</span>}\n </Button>\n )\n}\n","/**\n * The one-line notices above the PDF about its markup: annotations found in this browser from\n * before markup was saved on the server (for a shared document: add them to the shared markup, or\n * discard), and markup that sits on an older version (open it, or copy its open comments here).\n */\n\nimport type { LegacyPrompt, OlderMarkupNote } from '@arbidocs/react/document-tools'\n\nconst BAR = 'flex flex-wrap items-center justify-between gap-2 border-b px-3 py-2 text-xs'\nconst LINK =\n 'font-medium text-primary hover:underline disabled:opacity-50 disabled:no-underline pointer-coarse:min-h-11'\n\nexport interface MarkupNoticesProps {\n legacyPrompt: LegacyPrompt | null\n olderNote: OlderMarkupNote | null\n onOpenVersion: (version: number) => void\n}\n\nexport function MarkupNotices({ legacyPrompt, olderNote, onOpenVersion }: MarkupNoticesProps) {\n return (\n <>\n {legacyPrompt && (\n <div className={BAR} role=\"status\" data-testid=\"markup-migration-prompt\">\n <span>\n {legacyPrompt.count} annotation{legacyPrompt.count === 1 ? '' : 's'} on this document\n {legacyPrompt.count === 1 ? ' is' : ' are'} saved only in this browser. Add{' '}\n {legacyPrompt.count === 1 ? 'it' : 'them'} to the shared markup, where everyone with\n access sees {legacyPrompt.count === 1 ? 'it' : 'them'}?\n </span>\n <span className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n className={LINK}\n disabled={legacyPrompt.busy}\n data-testid=\"markup-migration-add\"\n onClick={legacyPrompt.add}\n >\n {legacyPrompt.busy ? 'Adding…' : 'Add to shared markup'}\n </button>\n <button\n type=\"button\"\n className={LINK}\n disabled={legacyPrompt.busy}\n data-testid=\"markup-migration-discard\"\n onClick={legacyPrompt.discard}\n >\n Discard\n </button>\n </span>\n </div>\n )}\n {olderNote && (\n <div className={BAR} data-testid=\"markup-older-version-note\">\n <span>\n The markup is on version {olderNote.version}. This version started without it.\n {olderNote.signed && (\n <span data-testid=\"markup-older-version-signed\">\n {' '}\n It is signed: comments copied here are kept beside it, and the signed PDF does not\n change.\n </span>\n )}\n </span>\n <span className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n className={LINK}\n data-testid=\"markup-open-older-version\"\n onClick={() => onOpenVersion(olderNote.version)}\n >\n Open version {olderNote.version}\n </button>\n <button\n type=\"button\"\n className={LINK}\n disabled={olderNote.busy}\n data-testid=\"markup-copy-open-threads\"\n title=\"Copy the unresolved comment threads onto this version (redactions never carry over)\"\n onClick={olderNote.copy}\n >\n {olderNote.busy ? 'Copying…' : 'Copy open comments here'}\n </button>\n </span>\n </div>\n )}\n </>\n )\n}\n","/**\n * Which view of a marked-up PDF is on screen, spelled out beside the title, with the switch to the\n * other one. The narrow header's \"Show original\" is an unlabelled page icon, so on its own it read\n * as no control at all, and nothing said whether the page showed the markup or the original.\n */\n\nimport type { ReactElement } from 'react'\nimport { ViewerStatusNote } from '../files/ViewerLayout'\n\nexport interface MarkupViewNoteProps {\n showOriginal: boolean\n onToggle: () => void\n}\n\nexport function MarkupViewNote({ showOriginal, onToggle }: MarkupViewNoteProps): ReactElement {\n return (\n <ViewerStatusNote testId=\"markup-view-note\">\n {showOriginal ? 'Original, without markup' : 'With markup'}\n {' · '}\n <button\n type=\"button\"\n className=\"font-medium text-primary hover:underline pointer-coarse:min-h-11\"\n data-testid=\"markup-view-note-toggle\"\n onClick={onToggle}\n >\n {showOriginal ? 'Show markup' : 'Show original'}\n </button>\n </ViewerStatusNote>\n )\n}\n","/**\n * The \"Signed — locked\" note in the viewer header (a signed version changes only by a further\n * signature), which opens the signature details: who signed and when,\n * whether the document is unchanged since, and \"View certificate\", the public page anyone can\n * check the signature on (the same page the signature on the PDF links to). Read from the PDF\n * itself (GET .../signatures). A counter-signed copy lists every signature, oldest first.\n */\n\nimport type { ReactElement, ReactNode } from 'react'\nimport {\n certificateLink,\n useOptionalDocumentTools,\n type SignatureStatusResponse,\n} from '@arbidocs/react/document-tools'\nimport { Popover, PopoverContent, PopoverTrigger } from '@arbidocs/react/ui'\n\n/** \"14 Oct 2026, 12:00\" in the reader's locale and time zone. */\nexport function formatSignedAt(iso: string): string {\n const date = new Date(iso)\n if (Number.isNaN(date.getTime())) return iso\n return date.toLocaleString([], { dateStyle: 'medium', timeStyle: 'short' })\n}\n\nexport interface SignatureStatusProps {\n status: SignatureStatusResponse\n /** How the signing time is shown. Default: {@link formatSignedAt}. */\n formatDate?: (iso: string) => string\n /**\n * The certificate page of a signature in this app. Preferred over the `certificate_url` the API\n * returns (which is on the deployment domain). Default: the enclosing `<DocumentToolsProvider>`'s\n * `certificateUrl`, if any; without either, the API's `certificate_url`, else\n * `/verify/{reference}` on this origin.\n */\n certificateUrl?: (reference: string) => string\n}\n\nfunction Row({ label, field, children }: { label: string; field: string; children: ReactNode }) {\n return (\n <div className=\"grid grid-cols-[5.5rem_1fr] gap-2\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"min-w-0 break-words\" data-testid={`signature-detail-${field}`}>\n {children}\n </dd>\n </div>\n )\n}\n\nexport function SignatureStatus({\n status,\n formatDate = formatSignedAt,\n certificateUrl,\n}: SignatureStatusProps): ReactElement {\n const tools = useOptionalDocumentTools()\n const hostCertificateUrl = certificateUrl ?? tools?.certificateUrl\n const signatures = status.signatures ?? []\n // A signed copy can be counter-signed: each signature is listed, oldest first.\n const isCounterSigned = signatures.length > 1\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"flex-shrink-0 text-sm text-muted-foreground underline decoration-dotted underline-offset-4 hover:text-foreground pointer-coarse:min-h-11\"\n data-testid=\"document-signature-status\"\n aria-label={`${status.intact ? 'Signed, locked' : 'Modified after signing'}: show signature details`}\n >\n {status.intact ? 'Signed — locked' : 'Modified after signing'}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"max-h-[70vh] w-80 overflow-y-auto p-3 text-sm\"\n align=\"start\"\n data-testid=\"signature-details\"\n >\n <p className=\"mb-2 font-medium\" data-testid=\"signature-details-title\">\n {isCounterSigned\n ? `Electronic signatures (${signatures.length})`\n : 'Electronic signature'}\n </p>\n {signatures.map((signature, index) => (\n <dl\n key={signature.reference}\n className={`mb-3 space-y-1 ${index > 0 ? 'border-t border-border pt-2' : ''}`}\n data-testid={`signature-item-${index}`}\n >\n <Row label=\"Signed by\" field=\"signer\">\n {signature.signer_name || signature.signer_email}\n </Row>\n <Row label=\"On\" field=\"time\">\n {formatDate(signature.signed_at)}\n </Row>\n <dd>\n <a\n href={certificateLink(signature, hostCertificateUrl)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center font-medium text-primary hover:underline pointer-coarse:min-h-11\"\n data-testid={`signature-certificate-link-${index}`}\n >\n View certificate\n </a>\n </dd>\n </dl>\n ))}\n <p\n className={`border-t border-border pt-2 ${status.intact ? '' : 'text-red-text'}`}\n data-testid=\"signature-detail-intact\"\n >\n {status.intact\n ? isCounterSigned\n ? '✓ Unchanged since the last signature'\n : '✓ Unchanged since signing'\n : '✗ Changed after it was signed'}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\" data-testid=\"signature-detail-locked\">\n Locked: only further signatures can be added.\n </p>\n </PopoverContent>\n </Popover>\n )\n}\n","/**\n * The certificate of an ARBI signature: the page the link on a signed PDF's signature opens, for\n * anyone, signed in or not. Plain English and short: who signed and when, what ARBI checks, the\n * result, any counter-signatures, and \"Check your copy\", which hashes a PDF in the browser and\n * compares it with the signed document and each signed revision (the file never leaves the\n * device). No email addresses and no\n * document content. Presentational: `verification` comes from `useSignatureVerification` in\n * `@arbidocs/react/document-tools`.\n */\n\nimport { useRef, useState, type DragEvent, type ReactElement, type ReactNode } from 'react'\nimport {\n matchSignedCopy,\n type CopyMatch,\n type SignatureVerification,\n} from '@arbidocs/react/document-tools'\nimport { cn } from '@arbidocs/react/ui'\nimport { formatSignedAt } from './SignatureStatus'\n\nexport interface SignatureCertificateProps {\n /** The signature reference (`sig-…`), shown at the foot of the page. */\n reference?: string\n verification?: SignatureVerification\n isLoading?: boolean\n /** Why the signature could not be checked. */\n error?: string | null\n /** The error is a passing one (too many checks): say it calmly, not as a failure. */\n isErrorTransient?: boolean\n /** How signing times are shown. Default: {@link formatSignedAt}. */\n formatDate?: (iso: string) => string\n /** Offer \"Check your copy\". Default on. */\n allowCopyCheck?: boolean\n}\n\ntype CopyCheck =\n | { state: 'idle' }\n | { state: 'checking'; name: string }\n | { state: 'done'; name: string; match: CopyMatch }\n | { state: 'failed'; name: string }\n\nfunction Frame({ children }: { children: ReactNode }) {\n return (\n <main\n className=\"mx-auto w-full max-w-xl px-4 py-10 text-foreground\"\n data-testid=\"signature-certificate\"\n >\n <h1 className=\"mb-6 text-xl font-semibold\">Signature certificate</h1>\n {children}\n </main>\n )\n}\n\nfunction copyResult(name: string, match: CopyMatch): string {\n if (match.kind === 'current') return `✓ ${name} is the signed document, unchanged.`\n if (match.kind === 'earlier') {\n // A counter-signed PDF: the copy is an earlier signed revision, which is still genuine.\n return `✓ ${name}: this is the version signed by ${match.signature.signer_name || 'an ARBI user'}.`\n }\n return `✗ ${name} is not the signed document: it differs from what was signed.`\n}\n\nexport function SignatureCertificate({\n reference,\n verification,\n isLoading = false,\n error,\n isErrorTransient = false,\n formatDate = formatSignedAt,\n allowCopyCheck = true,\n}: SignatureCertificateProps): ReactElement {\n const [copy, setCopy] = useState<CopyCheck>({ state: 'idle' })\n const [dragging, setDragging] = useState(false)\n const input = useRef<HTMLInputElement>(null)\n\n if (isLoading) {\n return (\n <Frame>\n <p className=\"text-muted-foreground\" data-testid=\"signature-certificate-loading\">\n Checking the signature…\n </p>\n </Frame>\n )\n }\n if (error || !verification) {\n return (\n <Frame>\n <p\n className={isErrorTransient ? 'text-muted-foreground' : 'text-red-text'}\n role={isErrorTransient ? 'status' : 'alert'}\n data-testid=\"signature-certificate-error\"\n >\n {error || 'The signature could not be checked.'}\n </p>\n </Frame>\n )\n }\n\n const [first, ...counter] = verification.signatures\n const check = async (file: File | undefined) => {\n if (!file) return\n setCopy({ state: 'checking', name: file.name })\n try {\n setCopy({ state: 'done', name: file.name, match: await matchSignedCopy(file, verification) })\n } catch {\n setCopy({ state: 'failed', name: file.name })\n }\n }\n const onDrop = (e: DragEvent) => {\n e.preventDefault()\n setDragging(false)\n void check(e.dataTransfer.files[0])\n }\n\n return (\n <Frame>\n <section className=\"space-y-3\">\n {first && (\n <p className=\"text-base\" data-testid=\"signature-certificate-signer\">\n Signed by <strong>{first.signer_name || 'an ARBI user'}</strong> on{' '}\n {formatDate(first.signed_at)}\n </p>\n )}\n {counter.length > 0 && (\n <ul className=\"space-y-1 text-sm\" data-testid=\"signature-certificate-counter\">\n {counter.map((s, i) => (\n <li key={`${s.sha256}-${i}`}>\n Also signed by <strong>{s.signer_name || 'an ARBI user'}</strong> on{' '}\n {formatDate(s.signed_at)}\n </li>\n ))}\n </ul>\n )}\n <p className=\"text-sm text-muted-foreground\">\n ARBI checks that this document hasn’t changed since it was signed. If anything changed,\n this check fails.\n </p>\n <p\n className={cn(\n 'rounded-md border px-3 py-2 font-medium',\n verification.intact\n ? 'border-green-border bg-green-bg text-green-text'\n : 'border-red-text text-red-text'\n )}\n role=\"status\"\n data-testid=\"signature-certificate-result\"\n data-intact={verification.intact}\n >\n {verification.intact\n ? '✓ Unchanged since signing'\n : '✗ Changed since signing: this is not the document that was signed'}\n </p>\n </section>\n\n {allowCopyCheck && (\n <section className=\"mt-8 space-y-2\">\n <h2 className=\"text-sm font-medium\">Check your copy</h2>\n <div\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'flex min-h-24 cursor-pointer flex-col items-center justify-center rounded-md border border-dashed px-4 py-6 text-center text-sm text-muted-foreground pointer-coarse:min-h-32',\n dragging && 'border-primary bg-muted'\n )}\n data-testid=\"signature-certificate-dropzone\"\n onClick={() => input.current?.click()}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n input.current?.click()\n }\n }}\n onDragOver={(e) => {\n e.preventDefault()\n setDragging(true)\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={onDrop}\n >\n Drop the PDF you were sent here, or choose it\n <span className=\"mt-1 text-xs\">It is checked in this browser and never uploaded.</span>\n <input\n ref={input}\n type=\"file\"\n accept=\"application/pdf,.pdf\"\n className=\"sr-only\"\n data-testid=\"signature-certificate-file-input\"\n onChange={(e) => void check(e.target.files?.[0])}\n />\n </div>\n {copy.state !== 'idle' && (\n <p\n className={cn(\n 'text-sm',\n copy.state === 'done' && copy.match.kind !== 'none' && 'text-green-text',\n ((copy.state === 'done' && copy.match.kind === 'none') ||\n copy.state === 'failed') &&\n 'text-red-text'\n )}\n role=\"status\"\n data-testid=\"signature-certificate-copy-result\"\n >\n {copy.state === 'checking'\n ? `Checking ${copy.name}…`\n : copy.state === 'failed'\n ? `${copy.name} could not be read.`\n : copyResult(copy.name, copy.match)}\n </p>\n )}\n </section>\n )}\n\n {reference && (\n <p\n className=\"mt-8 text-xs text-muted-foreground\"\n data-testid=\"signature-certificate-reference\"\n >\n Reference {reference}\n </p>\n )}\n </Frame>\n )\n}\n","/**\n * The bar above an older version opened read-only: which version it is, \"Ask about this version\"\n * (when the host has an assistant) and the way back to the current version. Put it in the viewer's\n * sticky header, not the content area: a PDF view scrolls its first page into view, which would\n * scroll a bar above it out of sight.\n */\n\nimport type { ReactElement } from 'react'\n\nconst LINK = 'font-medium text-primary hover:underline pointer-coarse:min-h-11'\n\nexport interface VersionSnapshotBarLabels {\n /** `Version 2 · read only`; `number` is undefined when the version is not known. */\n title: (number: number | undefined) => string\n ask: string\n returnToCurrent: string\n /** For documents edited live (Word, artifacts), where \"current\" is the live document. */\n returnToLive: string\n}\n\nexport const DEFAULT_VERSION_SNAPSHOT_BAR_LABELS: VersionSnapshotBarLabels = {\n title: (number) => `${number ? `Version ${number}` : 'Saved version'} · read only`,\n ask: 'Ask about this version',\n returnToCurrent: 'Return to current version',\n returnToLive: 'Return to live document',\n}\n\nexport interface VersionSnapshotBarProps {\n /** The version's number, when known. */\n versionNumber?: number\n /** The document is edited live: the way back says \"live document\". */\n live?: boolean\n /** Ask the assistant about this version. Omitted: no ask action. */\n onAsk?: () => void\n onReturn: () => void\n labels?: Partial<VersionSnapshotBarLabels>\n}\n\nexport function VersionSnapshotBar({\n versionNumber,\n live = false,\n onAsk,\n onReturn,\n labels: overrides,\n}: VersionSnapshotBarProps): ReactElement {\n const labels = { ...DEFAULT_VERSION_SNAPSHOT_BAR_LABELS, ...overrides }\n return (\n <div\n className=\"flex items-center justify-between border-b px-3 py-2 text-xs\"\n data-testid=\"version-snapshot-bar\"\n >\n <span>{labels.title(versionNumber)}</span>\n <span className=\"flex items-center gap-3\">\n {onAsk && (\n <button type=\"button\" className={LINK} data-testid=\"version-snapshot-ask\" onClick={onAsk}>\n {labels.ask}\n </button>\n )}\n <button\n type=\"button\"\n className={LINK}\n data-testid=\"version-snapshot-return\"\n onClick={onReturn}\n >\n {live ? labels.returnToLive : labels.returnToCurrent}\n </button>\n </span>\n </div>\n )\n}\n","/**\n * PDF tab › My signature: place one's own saved signature or initials on the page as a picture stamp\n * in the markup layer (then drag and resize it like any stamp). Nothing saved yet: the adopt dialog\n * opens first and saves it. An informal signature; verified signing is Request signatures. Needs a\n * `<DocumentToolsProvider>` inside a React Query `QueryClientProvider`.\n */\n\nimport { useState, type ReactElement } from 'react'\nimport { Signature } from 'lucide-react'\nimport {\n INFORMAL_SIGNATURE_NOTE,\n fetchSavedSignature,\n storeSavedSignature,\n useDocumentTools,\n type SavedSignature,\n} from '@arbidocs/react/document-tools'\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@arbidocs/react/ui'\nimport { AdoptSignatureDialog } from './AdoptSignatureDialog'\n\nexport type PlacedMark = { image: string; label: string }\n\ntype Mark = 'signature' | 'initials'\n\nconst picked = (saved: SavedSignature, mark: Mark): PlacedMark =>\n mark === 'signature'\n ? { image: saved.signature_png, label: 'Signature' }\n : { image: saved.initials_png, label: 'Initials' }\n\nexport function PlaceMySignatureButton({\n onPlace,\n compact = false,\n}: {\n /** Arm the stamp tool with this picture: the next click on a page places it. */\n onPlace: (mark: PlacedMark) => void\n compact?: boolean\n}): ReactElement {\n const { client, user, notify } = useDocumentTools()\n const [adoptFor, setAdoptFor] = useState<Mark | null>(null)\n\n // Read when asked for (sealed with one's own key: opened here, in the browser).\n const place = async (mark: Mark) => {\n try {\n const saved = await fetchSavedSignature(client)\n if (saved) return onPlace(picked(saved, mark))\n setAdoptFor(mark)\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Your saved signature could not be read', 'error')\n }\n }\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n size={compact ? 'icon' : 'sm'}\n title=\"Place my signature\"\n aria-label=\"Place my signature\"\n className=\"pointer-coarse:min-h-11\"\n data-testid=\"place-my-signature-button\"\n >\n <Signature className=\"size-4\" />\n {!compact && <span className=\"ml-1\">My signature</span>}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"max-w-72\">\n <DropdownMenuItem\n onSelect={() => void place('signature')}\n data-testid=\"place-my-signature\"\n >\n Place my signature\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => void place('initials')} data-testid=\"place-my-initials\">\n Place my initials\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"text-xs font-normal text-muted-foreground\">\n {INFORMAL_SIGNATURE_NOTE}\n </DropdownMenuLabel>\n </DropdownMenuContent>\n </DropdownMenu>\n <AdoptSignatureDialog\n open={!!adoptFor}\n onOpenChange={(open) => !open && setAdoptFor(null)}\n mode=\"save\"\n defaultName={user?.name ?? ''}\n onSave={async (signature) => {\n await storeSavedSignature(client, signature)\n const mark = adoptFor\n setAdoptFor(null)\n if (mark) onPlace(picked(signature, mark))\n }}\n onAdopt={() => notify('Your signature is saved. Click where it goes.', 'success')}\n />\n </>\n )\n}\n","/**\n * Account settings › Your signature: the signature and initials saved to the account (sealed with\n * the user's own key), with Replace (the adopt dialog, saving over it) and Delete (removed from the\n * account completely; what was already placed in documents or sealed in signed PDFs stays as it\n * is). Needs a `<DocumentToolsProvider>` inside a React Query `QueryClientProvider`.\n */\n\nimport { useState, type ReactElement } from 'react'\nimport { PenLine, Trash2 } from 'lucide-react'\nimport {\n INFORMAL_SIGNATURE_NOTE,\n useDeleteSavedSignature,\n useDocumentTools,\n useSavedSignature,\n useStoreSavedSignature,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { ConfirmDialog } from '../settings/ConfirmDialog'\nimport { SettingsCard } from '../settings/SettingsPanel'\nimport { AdoptSignatureDialog } from './AdoptSignatureDialog'\n\nexport const DELETE_SAVED_SIGNATURE_TEXT =\n 'Your saved signature and initials are removed from your account completely. Signatures you ' +\n 'already inserted into documents, and those sealed in signed PDFs, are not affected.'\n\nexport function SavedSignatureSettings(): ReactElement {\n const { user, notify } = useDocumentTools()\n const saved = useSavedSignature()\n const store = useStoreSavedSignature()\n const remove = useDeleteSavedSignature()\n const [editing, setEditing] = useState(false)\n const [confirming, setConfirming] = useState(false)\n const signature = saved.data\n\n return (\n <SettingsCard data-testid=\"saved-signature-settings\">\n <div className=\"space-y-1\">\n <h3 className=\"text-sm font-medium\">Your signature</h3>\n <p className=\"text-sm text-muted-foreground\">\n Saved to your account, sealed with your own key, to insert into Word documents and place\n on PDFs. {INFORMAL_SIGNATURE_NOTE}\n </p>\n </div>\n {signature ? (\n <div className=\"flex flex-wrap items-center gap-4\" data-testid=\"saved-signature-preview\">\n <img\n src={`data:image/png;base64,${signature.signature_png}`}\n alt=\"Your saved signature\"\n className=\"h-16 max-w-xs rounded-md border bg-white object-contain p-1\"\n />\n <img\n src={`data:image/png;base64,${signature.initials_png}`}\n alt=\"Your saved initials\"\n className=\"h-16 max-w-[8rem] rounded-md border bg-white object-contain p-1\"\n />\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\" data-testid=\"saved-signature-none\">\n {saved.isLoading ? 'Loading…' : 'No signature saved.'}\n </p>\n )}\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setEditing(true)}\n data-testid=\"saved-signature-replace\"\n >\n <PenLine className=\"mr-1 size-4\" aria-hidden />\n {signature ? 'Replace' : 'Add a signature'}\n </Button>\n {signature && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setConfirming(true)}\n data-testid=\"saved-signature-delete\"\n >\n <Trash2 className=\"mr-1 size-4\" aria-hidden />\n Delete\n </Button>\n )}\n </div>\n <AdoptSignatureDialog\n open={editing}\n onOpenChange={setEditing}\n mode=\"save\"\n defaultName={user?.name ?? ''}\n saved={signature ?? null}\n onSave={async (next) => void (await store.mutateAsync(next))}\n onAdopt={() => {\n setEditing(false)\n notify('Your signature is saved.', 'success')\n }}\n />\n <ConfirmDialog\n isOpen={confirming}\n onClose={() => setConfirming(false)}\n onConfirm={async () => {\n try {\n await remove.mutateAsync()\n notify('Your saved signature is deleted.', 'success')\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not delete it', 'error')\n } finally {\n setConfirming(false)\n }\n }}\n title=\"Delete your saved signature?\"\n description={DELETE_SAVED_SIGNATURE_TEXT}\n confirmText=\"Delete\"\n variant=\"destructive\"\n isLoading={remove.isPending}\n testId=\"saved-signature-delete-confirm\"\n />\n </SettingsCard>\n )\n}\n\nexport default SavedSignatureSettings\n","/**\n * Where a document's signature requests stand, above the document: a request waiting for the\n * viewer's signature (with \"Review and sign\"), one the viewer sent and is waiting on others (who\n * has signed; void it), and the viewer's own draft (go on editing it). Nothing when there is none.\n * Needs a `<DocumentToolsProvider>` whose `user` has an `externalId`.\n */\n\nimport type { ReactElement } from 'react'\nimport { FilePenLine, PenLine, Send } from 'lucide-react'\nimport {\n SIGNER_PROGRESS_LABELS,\n useDocumentSignatureRequests,\n useDocumentTools,\n useInviteSigners,\n useSignerCandidates,\n useVoidSignatureRequest,\n type SignatureRequest,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\n\nexport interface SignatureRequestBannerProps {\n documentId: string\n /** Open the guided signing of a request waiting for the viewer. */\n onSign: (request: SignatureRequest) => void\n /** Go on editing the viewer's draft. */\n onEditDraft: (request: SignatureRequest) => void\n /** Hide it (e.g. while the editor or the guided signing is open). */\n hidden?: boolean\n}\n\n/** Who is still to sign, and how far each has got (\"Dana Day (invited)\"). */\nfunction waitingFor(request: SignatureRequest): string[] {\n return request.signers\n .filter((s) => s.status === 'pending')\n .map((s) => `${s.name || s.email || ''} (${SIGNER_PROGRESS_LABELS[s.progress].toLowerCase()})`)\n}\n\nexport function SignatureRequestBanner({\n documentId,\n onSign,\n onEditDraft,\n hidden = false,\n}: SignatureRequestBannerProps): ReactElement | null {\n const { user, notify } = useDocumentTools()\n const requests = useDocumentSignatureRequests(documentId, !hidden)\n const voidRequest = useVoidSignatureRequest()\n const invite = useInviteSigners()\n const me = user?.externalId ?? null\n const candidates = useSignerCandidates(!hidden && !!me)\n const isOwner = candidates.data?.some((c) => c.externalId === me && c.role === 'owner') ?? false\n if (hidden || !me || !requests.data) return null\n const open = requests.data.filter((r) => r.status === 'sent' || r.status === 'draft')\n const awaitingMe = open.filter(\n (r) =>\n r.status === 'sent' && r.signers.some((s) => s.user_ext_id === me && s.status === 'pending')\n )\n const sentByMe = open.filter(\n (r) => r.status === 'sent' && r.created_by === me && !awaitingMe.includes(r)\n )\n const drafts = open.filter((r) => r.status === 'draft' && r.created_by === me)\n if (awaitingMe.length + sentByMe.length + drafts.length === 0) return null\n\n const doVoid = async (request: SignatureRequest) => {\n try {\n await voidRequest.mutateAsync(request.external_id)\n notify(request.status === 'draft' ? 'Draft discarded.' : 'Signature request voided.', 'info')\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not void it', 'error')\n }\n }\n\n return (\n <div\n className=\"space-y-1.5 border-b border-border px-3 py-2 text-sm\"\n data-testid=\"signature-request-banner\"\n >\n {awaitingMe.map((r) => {\n const count = r.fields.filter((f) => f.signer === me).length\n const author = r.signers.find((s) => s.user_ext_id === r.created_by)?.name\n return (\n <div\n key={r.external_id}\n className=\"flex flex-wrap items-center gap-2 rounded-md bg-blue-50 px-2 py-1.5 text-blue-950 dark:bg-blue-950/40 dark:text-blue-100\"\n data-testid=\"signature-request-awaiting-me\"\n >\n <PenLine className=\"size-4 shrink-0\" aria-hidden />\n <span className=\"mr-auto\">\n {author && r.created_by !== me\n ? `${author} asked you to sign`\n : 'You are asked to sign'}{' '}\n {count} field{count === 1 ? '' : 's'} in this document.\n {r.stale && ' It has changed since it was sent: ask for it again.'}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => onSign(r)}\n disabled={r.stale}\n data-testid=\"signature-request-start\"\n >\n Review and sign\n </Button>\n </div>\n )\n })}\n {sentByMe.map((r) => {\n const pending = waitingFor(r)\n const signed = r.signers.length - pending.length\n const invited = r.signers.filter((s) => s.progress === 'invited' && s.email)\n return (\n <div\n key={r.external_id}\n className=\"flex flex-wrap items-center gap-2\"\n data-testid=\"signature-request-sent\"\n >\n <Send className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"mr-auto\">\n Out for signature: {signed} of {r.signers.length} signed\n {pending.length > 0 && (\n <span className=\"text-muted-foreground\"> · waiting for {pending.join(', ')}</span>\n )}\n {r.stale && (\n <span className=\"text-red-text\"> · the document has changed since it was sent</span>\n )}\n </span>\n {isOwner && invited.length > 0 && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={invite.isPending}\n onClick={async () => {\n try {\n await invite.mutateAsync({\n documentId,\n emails: invited.map((s) => s.email!),\n })\n notify(\n 'Invited again: anyone already registered is added now and asked to sign.',\n 'success'\n )\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not invite', 'error')\n }\n }}\n data-testid=\"signature-request-reinvite\"\n >\n Invite again\n </Button>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => doVoid(r)}\n disabled={voidRequest.isPending}\n >\n Void\n </Button>\n </div>\n )\n })}\n {drafts.map((r) => (\n <div\n key={r.external_id}\n className=\"flex flex-wrap items-center gap-2\"\n data-testid=\"signature-request-draft\"\n >\n <FilePenLine className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"mr-auto\">\n Draft signature request: {r.fields.length} field{r.fields.length === 1 ? '' : 's'}, not\n sent yet.\n </span>\n <Button type=\"button\" size=\"sm\" variant=\"outline\" onClick={() => onEditDraft(r)}>\n Continue\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => doVoid(r)}\n disabled={voidRequest.isPending}\n >\n Discard\n </Button>\n </div>\n ))}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/document-tools/DocumentToolButtons.tsx","../src/document-tools/MarkupNotices.tsx","../src/document-tools/MarkupViewNote.tsx","../src/document-tools/SignatureStatus.tsx","../src/document-tools/SignatureCertificate.tsx","../src/document-tools/VersionSnapshotBar.tsx","../src/document-tools/PlaceMySignatureButton.tsx","../src/document-tools/SavedSignatureSettings.tsx","../src/document-tools/SignatureRequestBanner.tsx"],"names":["jsxs","Button","jsx","PencilLine","FileText","Download","PenLine","Users","Fragment","ViewerStatusNote","useOptionalDocumentTools","Popover","PopoverTrigger","PopoverContent","certificateLink","useState","useRef","matchSignedCopy","cn","LINK","useDocumentTools","fetchSavedSignature","DropdownMenu","DropdownMenuTrigger","Signature","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuLabel","INFORMAL_SIGNATURE_NOTE","AdoptSignatureDialog","storeSavedSignature","useSavedSignature","useStoreSavedSignature","useDeleteSavedSignature","SettingsCard","Trash2","ConfirmDialog","SIGNER_PROGRESS_LABELS","useDocumentSignatureRequests","useVoidSignatureRequest","useInviteSigners","useSignerCandidates","Send","FilePenLine"],"mappings":"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","file":"chunk-R2N5VIVI.cjs","sourcesContent":["/**\n * The viewer-header buttons of the PDF document tools: Annotate, Show original, Download with\n * markup and Sign. Separate parts so a host can place them among its own header actions. On a\n * narrow (`compact`) header each is icon-only; its accessible name stays.\n */\n\nimport type { ReactElement } from 'react'\nimport { Download, FileText, PenLine, PencilLine, Users } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\n\nconst TOUCH = 'pointer-coarse:min-h-11'\n\ninterface ToggleProps {\n /** On (pressed). */\n active: boolean\n onClick: () => void\n compact?: boolean\n}\n\n/** Annotate mode: highlight, comment, stamp, redact. */\nexport function AnnotateButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Annotate: highlight, comment, stamp, redact\"\n aria-label=\"Annotate\"\n data-testid=\"annotate-toggle\"\n className={TOUCH}\n onClick={onClick}\n >\n <PencilLine className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Annotate</span>}\n </Button>\n )\n}\n\n/** The markup is the default view of a marked-up PDF; this shows the untouched file. */\nexport function ShowOriginalButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title={active ? 'Show the markup again' : 'Show the original, without markup'}\n aria-label=\"Show original\"\n data-testid=\"markup-show-original\"\n className={TOUCH}\n onClick={onClick}\n >\n <FileText className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Show original</span>}\n </Button>\n )\n}\n\n/**\n * \"Download with markup\": the PDF with its annotations, which Acrobat and Preview show. With a\n * `disabledReason` (a signed, locked version) it is off and says why.\n */\nexport function DownloadMarkupButton({\n onClick,\n disabledReason,\n}: {\n onClick: () => void\n disabledReason?: string\n}): ReactElement {\n const button = (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"icon\"\n title={\n disabledReason ??\n 'Download with markup: the PDF with its annotations (opens in Acrobat or Preview)'\n }\n aria-label=\"Download with markup\"\n aria-description={disabledReason}\n disabled={!!disabledReason}\n data-testid=\"markup-download\"\n className={TOUCH}\n onClick={onClick}\n >\n <Download className=\"size-4\" />\n </Button>\n )\n // A disabled button gets no pointer events, so the reason sits on a wrapper too.\n return disabledReason ? (\n <span title={disabledReason} className=\"inline-flex\" data-testid=\"markup-download-locked\">\n {button}\n </span>\n ) : (\n button\n )\n}\n\n/** One line where a signed version's content can be edited: an edit is a new, unsigned version. */\nexport function SignedEditNote(): ReactElement {\n return (\n <p\n className=\"border-b px-3 py-1.5 text-xs text-muted-foreground\"\n data-testid=\"signed-edit-note\"\n >\n Editing creates a new unsigned version\n </p>\n )\n}\n\n/** Sign: choose where the signature goes, then sign. */\nexport function SignButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Sign document\"\n aria-label=\"Sign\"\n data-testid=\"sign-document-button\"\n className={TOUCH}\n onClick={onClick}\n >\n <PenLine className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Sign</span>}\n </Button>\n )\n}\n\n/** Prepare the document for others to sign: place their fields and send it. */\nexport function RequestSignaturesButton({ active, onClick, compact }: ToggleProps): ReactElement {\n return (\n <Button\n type=\"button\"\n variant={active ? 'default' : 'outline'}\n size={compact ? 'icon' : 'sm'}\n aria-pressed={active}\n title=\"Request signatures\"\n aria-label=\"Request signatures\"\n data-testid=\"request-signatures-button\"\n className={TOUCH}\n onClick={onClick}\n >\n <Users className=\"size-4\" />\n {!compact && <span className=\"ml-1\">Request signatures</span>}\n </Button>\n )\n}\n","/**\n * The one-line notices above the PDF about its markup: annotations found in this browser from\n * before markup was saved on the server (for a shared document: add them to the shared markup, or\n * discard), and markup that sits on an older version (open it, or copy its open comments here).\n */\n\nimport type { LegacyPrompt, OlderMarkupNote } from '@arbidocs/react/document-tools'\n\nconst BAR = 'flex flex-wrap items-center justify-between gap-2 border-b px-3 py-2 text-xs'\nconst LINK =\n 'font-medium text-primary hover:underline disabled:opacity-50 disabled:no-underline pointer-coarse:min-h-11'\n\nexport interface MarkupNoticesProps {\n legacyPrompt: LegacyPrompt | null\n olderNote: OlderMarkupNote | null\n onOpenVersion: (version: number) => void\n}\n\nexport function MarkupNotices({ legacyPrompt, olderNote, onOpenVersion }: MarkupNoticesProps) {\n return (\n <>\n {legacyPrompt && (\n <div className={BAR} role=\"status\" data-testid=\"markup-migration-prompt\">\n <span>\n {legacyPrompt.count} annotation{legacyPrompt.count === 1 ? '' : 's'} on this document\n {legacyPrompt.count === 1 ? ' is' : ' are'} saved only in this browser. Add{' '}\n {legacyPrompt.count === 1 ? 'it' : 'them'} to the shared markup, where everyone with\n access sees {legacyPrompt.count === 1 ? 'it' : 'them'}?\n </span>\n <span className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n className={LINK}\n disabled={legacyPrompt.busy}\n data-testid=\"markup-migration-add\"\n onClick={legacyPrompt.add}\n >\n {legacyPrompt.busy ? 'Adding…' : 'Add to shared markup'}\n </button>\n <button\n type=\"button\"\n className={LINK}\n disabled={legacyPrompt.busy}\n data-testid=\"markup-migration-discard\"\n onClick={legacyPrompt.discard}\n >\n Discard\n </button>\n </span>\n </div>\n )}\n {olderNote && (\n <div className={BAR} data-testid=\"markup-older-version-note\">\n <span>\n The markup is on version {olderNote.version}. This version started without it.\n {olderNote.signed && (\n <span data-testid=\"markup-older-version-signed\">\n {' '}\n It is signed: comments copied here are kept beside it, and the signed PDF does not\n change.\n </span>\n )}\n </span>\n <span className=\"flex items-center gap-3\">\n <button\n type=\"button\"\n className={LINK}\n data-testid=\"markup-open-older-version\"\n onClick={() => onOpenVersion(olderNote.version)}\n >\n Open version {olderNote.version}\n </button>\n <button\n type=\"button\"\n className={LINK}\n disabled={olderNote.busy}\n data-testid=\"markup-copy-open-threads\"\n title=\"Copy the unresolved comment threads onto this version (redactions never carry over)\"\n onClick={olderNote.copy}\n >\n {olderNote.busy ? 'Copying…' : 'Copy open comments here'}\n </button>\n </span>\n </div>\n )}\n </>\n )\n}\n","/**\n * Which view of a marked-up PDF is on screen, spelled out beside the title, with the switch to the\n * other one. The narrow header's \"Show original\" is an unlabelled page icon, so on its own it read\n * as no control at all, and nothing said whether the page showed the markup or the original.\n */\n\nimport type { ReactElement } from 'react'\nimport { ViewerStatusNote } from '../files/ViewerLayout'\n\nexport interface MarkupViewNoteProps {\n showOriginal: boolean\n onToggle: () => void\n}\n\nexport function MarkupViewNote({ showOriginal, onToggle }: MarkupViewNoteProps): ReactElement {\n return (\n <ViewerStatusNote testId=\"markup-view-note\">\n {showOriginal ? 'Original, without markup' : 'With markup'}\n {' · '}\n <button\n type=\"button\"\n className=\"font-medium text-primary hover:underline pointer-coarse:min-h-11\"\n data-testid=\"markup-view-note-toggle\"\n onClick={onToggle}\n >\n {showOriginal ? 'Show markup' : 'Show original'}\n </button>\n </ViewerStatusNote>\n )\n}\n","/**\n * The \"Signed — locked\" note in the viewer header (a signed version changes only by a further\n * signature), which opens the signature details: who signed and when,\n * whether the document is unchanged since, and \"View certificate\", the public page anyone can\n * check the signature on (the same page the signature on the PDF links to). Read from the PDF\n * itself (GET .../signatures). A counter-signed copy lists every signature, oldest first.\n */\n\nimport type { ReactElement, ReactNode } from 'react'\nimport {\n certificateLink,\n useOptionalDocumentTools,\n type SignatureStatusResponse,\n} from '@arbidocs/react/document-tools'\nimport { Popover, PopoverContent, PopoverTrigger } from '@arbidocs/react/ui'\n\n/** \"14 Oct 2026, 12:00\" in the reader's locale and time zone. */\nexport function formatSignedAt(iso: string): string {\n const date = new Date(iso)\n if (Number.isNaN(date.getTime())) return iso\n return date.toLocaleString([], { dateStyle: 'medium', timeStyle: 'short' })\n}\n\nexport interface SignatureStatusProps {\n status: SignatureStatusResponse\n /** How the signing time is shown. Default: {@link formatSignedAt}. */\n formatDate?: (iso: string) => string\n /**\n * The certificate page of a signature in this app. Preferred over the `certificate_url` the API\n * returns (which is on the deployment domain). Default: the enclosing `<DocumentToolsProvider>`'s\n * `certificateUrl`, if any; without either, the API's `certificate_url`, else\n * `/verify/{reference}` on this origin.\n */\n certificateUrl?: (reference: string) => string\n}\n\nfunction Row({ label, field, children }: { label: string; field: string; children: ReactNode }) {\n return (\n <div className=\"grid grid-cols-[5.5rem_1fr] gap-2\">\n <dt className=\"text-muted-foreground\">{label}</dt>\n <dd className=\"min-w-0 break-words\" data-testid={`signature-detail-${field}`}>\n {children}\n </dd>\n </div>\n )\n}\n\nexport function SignatureStatus({\n status,\n formatDate = formatSignedAt,\n certificateUrl,\n}: SignatureStatusProps): ReactElement {\n const tools = useOptionalDocumentTools()\n const hostCertificateUrl = certificateUrl ?? tools?.certificateUrl\n const signatures = status.signatures ?? []\n // A signed copy can be counter-signed: each signature is listed, oldest first.\n const isCounterSigned = signatures.length > 1\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"flex-shrink-0 text-sm text-muted-foreground underline decoration-dotted underline-offset-4 hover:text-foreground pointer-coarse:min-h-11\"\n data-testid=\"document-signature-status\"\n aria-label={`${status.intact ? 'Signed, locked' : 'Modified after signing'}: show signature details`}\n >\n {status.intact ? 'Signed — locked' : 'Modified after signing'}\n </button>\n </PopoverTrigger>\n <PopoverContent\n className=\"max-h-[70vh] w-80 overflow-y-auto p-3 text-sm\"\n align=\"start\"\n data-testid=\"signature-details\"\n >\n <p className=\"mb-2 font-medium\" data-testid=\"signature-details-title\">\n {isCounterSigned\n ? `Electronic signatures (${signatures.length})`\n : 'Electronic signature'}\n </p>\n {signatures.map((signature, index) => (\n <dl\n key={signature.reference}\n className={`mb-3 space-y-1 ${index > 0 ? 'border-t border-border pt-2' : ''}`}\n data-testid={`signature-item-${index}`}\n >\n <Row label=\"Signed by\" field=\"signer\">\n {signature.signer_name || signature.signer_email}\n </Row>\n <Row label=\"On\" field=\"time\">\n {formatDate(signature.signed_at)}\n </Row>\n <dd>\n <a\n href={certificateLink(signature, hostCertificateUrl)}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center font-medium text-primary hover:underline pointer-coarse:min-h-11\"\n data-testid={`signature-certificate-link-${index}`}\n >\n View certificate\n </a>\n </dd>\n </dl>\n ))}\n <p\n className={`border-t border-border pt-2 ${status.intact ? '' : 'text-red-text'}`}\n data-testid=\"signature-detail-intact\"\n >\n {status.intact\n ? isCounterSigned\n ? '✓ Unchanged since the last signature'\n : '✓ Unchanged since signing'\n : '✗ Changed after it was signed'}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\" data-testid=\"signature-detail-locked\">\n Locked: only further signatures can be added.\n </p>\n </PopoverContent>\n </Popover>\n )\n}\n","/**\n * The certificate of an ARBI signature: the page the link on a signed PDF's signature opens, for\n * anyone, signed in or not. Plain English and short: who signed and when, what ARBI checks, the\n * result, any counter-signatures, and \"Check your copy\", which hashes a PDF in the browser and\n * compares it with the signed document and each signed revision (the file never leaves the\n * device). No email addresses and no\n * document content. Presentational: `verification` comes from `useSignatureVerification` in\n * `@arbidocs/react/document-tools`.\n */\n\nimport { useRef, useState, type DragEvent, type ReactElement, type ReactNode } from 'react'\nimport {\n matchSignedCopy,\n type CopyMatch,\n type SignatureVerification,\n} from '@arbidocs/react/document-tools'\nimport { cn } from '@arbidocs/react/ui'\nimport { formatSignedAt } from './SignatureStatus'\n\nexport interface SignatureCertificateProps {\n /** The signature reference (`sig-…`), shown at the foot of the page. */\n reference?: string\n verification?: SignatureVerification\n isLoading?: boolean\n /** Why the signature could not be checked. */\n error?: string | null\n /** The error is a passing one (too many checks): say it calmly, not as a failure. */\n isErrorTransient?: boolean\n /** How signing times are shown. Default: {@link formatSignedAt}. */\n formatDate?: (iso: string) => string\n /** Offer \"Check your copy\". Default on. */\n allowCopyCheck?: boolean\n}\n\ntype CopyCheck =\n | { state: 'idle' }\n | { state: 'checking'; name: string }\n | { state: 'done'; name: string; match: CopyMatch }\n | { state: 'failed'; name: string }\n\nfunction Frame({ children }: { children: ReactNode }) {\n return (\n <main\n className=\"mx-auto w-full max-w-xl px-4 py-10 text-foreground\"\n data-testid=\"signature-certificate\"\n >\n <h1 className=\"mb-6 text-xl font-semibold\">Signature certificate</h1>\n {children}\n </main>\n )\n}\n\nfunction copyResult(name: string, match: CopyMatch): string {\n if (match.kind === 'current') return `✓ ${name} is the signed document, unchanged.`\n if (match.kind === 'earlier') {\n // A counter-signed PDF: the copy is an earlier signed revision, which is still genuine.\n return `✓ ${name}: this is the version signed by ${match.signature.signer_name || 'an ARBI user'}.`\n }\n return `✗ ${name} is not the signed document: it differs from what was signed.`\n}\n\nexport function SignatureCertificate({\n reference,\n verification,\n isLoading = false,\n error,\n isErrorTransient = false,\n formatDate = formatSignedAt,\n allowCopyCheck = true,\n}: SignatureCertificateProps): ReactElement {\n const [copy, setCopy] = useState<CopyCheck>({ state: 'idle' })\n const [dragging, setDragging] = useState(false)\n const input = useRef<HTMLInputElement>(null)\n\n if (isLoading) {\n return (\n <Frame>\n <p className=\"text-muted-foreground\" data-testid=\"signature-certificate-loading\">\n Checking the signature…\n </p>\n </Frame>\n )\n }\n if (error || !verification) {\n return (\n <Frame>\n <p\n className={isErrorTransient ? 'text-muted-foreground' : 'text-red-text'}\n role={isErrorTransient ? 'status' : 'alert'}\n data-testid=\"signature-certificate-error\"\n >\n {error || 'The signature could not be checked.'}\n </p>\n </Frame>\n )\n }\n\n const [first, ...counter] = verification.signatures\n const check = async (file: File | undefined) => {\n if (!file) return\n setCopy({ state: 'checking', name: file.name })\n try {\n setCopy({ state: 'done', name: file.name, match: await matchSignedCopy(file, verification) })\n } catch {\n setCopy({ state: 'failed', name: file.name })\n }\n }\n const onDrop = (e: DragEvent) => {\n e.preventDefault()\n setDragging(false)\n void check(e.dataTransfer.files[0])\n }\n\n return (\n <Frame>\n <section className=\"space-y-3\">\n {first && (\n <p className=\"text-base\" data-testid=\"signature-certificate-signer\">\n Signed by <strong>{first.signer_name || 'an ARBI user'}</strong> on{' '}\n {formatDate(first.signed_at)}\n </p>\n )}\n {counter.length > 0 && (\n <ul className=\"space-y-1 text-sm\" data-testid=\"signature-certificate-counter\">\n {counter.map((s, i) => (\n <li key={`${s.sha256}-${i}`}>\n Also signed by <strong>{s.signer_name || 'an ARBI user'}</strong> on{' '}\n {formatDate(s.signed_at)}\n </li>\n ))}\n </ul>\n )}\n <p className=\"text-sm text-muted-foreground\">\n ARBI checks that this document hasn’t changed since it was signed. If anything changed,\n this check fails.\n </p>\n <p\n className={cn(\n 'rounded-md border px-3 py-2 font-medium',\n verification.intact\n ? 'border-green-border bg-green-bg text-green-text'\n : 'border-red-text text-red-text'\n )}\n role=\"status\"\n data-testid=\"signature-certificate-result\"\n data-intact={verification.intact}\n >\n {verification.intact\n ? '✓ Unchanged since signing'\n : '✗ Changed since signing: this is not the document that was signed'}\n </p>\n </section>\n\n {allowCopyCheck && (\n <section className=\"mt-8 space-y-2\">\n <h2 className=\"text-sm font-medium\">Check your copy</h2>\n <div\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'flex min-h-24 cursor-pointer flex-col items-center justify-center rounded-md border border-dashed px-4 py-6 text-center text-sm text-muted-foreground pointer-coarse:min-h-32',\n dragging && 'border-primary bg-muted'\n )}\n data-testid=\"signature-certificate-dropzone\"\n onClick={() => input.current?.click()}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n input.current?.click()\n }\n }}\n onDragOver={(e) => {\n e.preventDefault()\n setDragging(true)\n }}\n onDragLeave={() => setDragging(false)}\n onDrop={onDrop}\n >\n Drop the PDF you were sent here, or choose it\n <span className=\"mt-1 text-xs\">It is checked in this browser and never uploaded.</span>\n <input\n ref={input}\n type=\"file\"\n accept=\"application/pdf,.pdf\"\n className=\"sr-only\"\n data-testid=\"signature-certificate-file-input\"\n onChange={(e) => void check(e.target.files?.[0])}\n />\n </div>\n {copy.state !== 'idle' && (\n <p\n className={cn(\n 'text-sm',\n copy.state === 'done' && copy.match.kind !== 'none' && 'text-green-text',\n ((copy.state === 'done' && copy.match.kind === 'none') ||\n copy.state === 'failed') &&\n 'text-red-text'\n )}\n role=\"status\"\n data-testid=\"signature-certificate-copy-result\"\n >\n {copy.state === 'checking'\n ? `Checking ${copy.name}…`\n : copy.state === 'failed'\n ? `${copy.name} could not be read.`\n : copyResult(copy.name, copy.match)}\n </p>\n )}\n </section>\n )}\n\n {reference && (\n <p\n className=\"mt-8 text-xs text-muted-foreground\"\n data-testid=\"signature-certificate-reference\"\n >\n Reference {reference}\n </p>\n )}\n </Frame>\n )\n}\n","/**\n * The bar above an older version opened read-only: which version it is, \"Ask about this version\"\n * (when the host has an assistant) and the way back to the current version. Put it in the viewer's\n * sticky header, not the content area: a PDF view scrolls its first page into view, which would\n * scroll a bar above it out of sight.\n */\n\nimport type { ReactElement } from 'react'\n\nconst LINK = 'font-medium text-primary hover:underline pointer-coarse:min-h-11'\n\nexport interface VersionSnapshotBarLabels {\n /** `Version 2 · read only`; `number` is undefined when the version is not known. */\n title: (number: number | undefined) => string\n ask: string\n returnToCurrent: string\n /** For documents edited live (Word, artifacts), where \"current\" is the live document. */\n returnToLive: string\n}\n\nexport const DEFAULT_VERSION_SNAPSHOT_BAR_LABELS: VersionSnapshotBarLabels = {\n title: (number) => `${number ? `Version ${number}` : 'Saved version'} · read only`,\n ask: 'Ask about this version',\n returnToCurrent: 'Return to current version',\n returnToLive: 'Return to live document',\n}\n\nexport interface VersionSnapshotBarProps {\n /** The version's number, when known. */\n versionNumber?: number\n /** The document is edited live: the way back says \"live document\". */\n live?: boolean\n /** Ask the assistant about this version. Omitted: no ask action. */\n onAsk?: () => void\n onReturn: () => void\n labels?: Partial<VersionSnapshotBarLabels>\n}\n\nexport function VersionSnapshotBar({\n versionNumber,\n live = false,\n onAsk,\n onReturn,\n labels: overrides,\n}: VersionSnapshotBarProps): ReactElement {\n const labels = { ...DEFAULT_VERSION_SNAPSHOT_BAR_LABELS, ...overrides }\n return (\n <div\n className=\"flex items-center justify-between border-b px-3 py-2 text-xs\"\n data-testid=\"version-snapshot-bar\"\n >\n <span>{labels.title(versionNumber)}</span>\n <span className=\"flex items-center gap-3\">\n {onAsk && (\n <button type=\"button\" className={LINK} data-testid=\"version-snapshot-ask\" onClick={onAsk}>\n {labels.ask}\n </button>\n )}\n <button\n type=\"button\"\n className={LINK}\n data-testid=\"version-snapshot-return\"\n onClick={onReturn}\n >\n {live ? labels.returnToLive : labels.returnToCurrent}\n </button>\n </span>\n </div>\n )\n}\n","/**\n * PDF tab › My signature: place one's own saved signature or initials on the page as a picture stamp\n * in the markup layer (then drag and resize it like any stamp). Nothing saved yet: the adopt dialog\n * opens first and saves it. An informal signature; verified signing is Request signatures. Needs a\n * `<DocumentToolsProvider>` inside a React Query `QueryClientProvider`.\n */\n\nimport { useState, type ReactElement } from 'react'\nimport { Signature } from 'lucide-react'\nimport {\n INFORMAL_SIGNATURE_NOTE,\n fetchSavedSignature,\n storeSavedSignature,\n useDocumentTools,\n type SavedSignature,\n} from '@arbidocs/react/document-tools'\nimport {\n Button,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@arbidocs/react/ui'\nimport { AdoptSignatureDialog } from './AdoptSignatureDialog'\n\nexport type PlacedMark = { image: string; label: string }\n\ntype Mark = 'signature' | 'initials'\n\nconst picked = (saved: SavedSignature, mark: Mark): PlacedMark =>\n mark === 'signature'\n ? { image: saved.signature_png, label: 'Signature' }\n : { image: saved.initials_png, label: 'Initials' }\n\nexport function PlaceMySignatureButton({\n onPlace,\n compact = false,\n}: {\n /** Arm the stamp tool with this picture: the next click on a page places it. */\n onPlace: (mark: PlacedMark) => void\n compact?: boolean\n}): ReactElement {\n const { client, user, notify } = useDocumentTools()\n const [adoptFor, setAdoptFor] = useState<Mark | null>(null)\n\n // Read when asked for (sealed with one's own key: opened here, in the browser).\n const place = async (mark: Mark) => {\n try {\n const saved = await fetchSavedSignature(client)\n if (saved) return onPlace(picked(saved, mark))\n setAdoptFor(mark)\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Your saved signature could not be read', 'error')\n }\n }\n\n return (\n <>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n size={compact ? 'icon' : 'sm'}\n title=\"Place my signature\"\n aria-label=\"Place my signature\"\n className=\"pointer-coarse:min-h-11\"\n data-testid=\"place-my-signature-button\"\n >\n <Signature className=\"size-4\" />\n {!compact && <span className=\"ml-1\">My signature</span>}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"max-w-72\">\n <DropdownMenuItem\n onSelect={() => void place('signature')}\n data-testid=\"place-my-signature\"\n >\n Place my signature\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => void place('initials')} data-testid=\"place-my-initials\">\n Place my initials\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuLabel className=\"text-xs font-normal text-muted-foreground\">\n {INFORMAL_SIGNATURE_NOTE}\n </DropdownMenuLabel>\n </DropdownMenuContent>\n </DropdownMenu>\n <AdoptSignatureDialog\n open={!!adoptFor}\n onOpenChange={(open) => !open && setAdoptFor(null)}\n mode=\"save\"\n defaultName={user?.name ?? ''}\n onSave={async (signature) => {\n await storeSavedSignature(client, signature)\n const mark = adoptFor\n setAdoptFor(null)\n if (mark) onPlace(picked(signature, mark))\n }}\n onAdopt={() => notify('Your signature is saved. Click where it goes.', 'success')}\n />\n </>\n )\n}\n","/**\n * Account settings › Your signature: the signature and initials saved to the account (sealed with\n * the user's own key), with Replace (the adopt dialog, saving over it) and Delete (removed from the\n * account completely; what was already placed in documents or sealed in signed PDFs stays as it\n * is). Needs a `<DocumentToolsProvider>` inside a React Query `QueryClientProvider`.\n */\n\nimport { useState, type ReactElement } from 'react'\nimport { PenLine, Trash2 } from 'lucide-react'\nimport {\n INFORMAL_SIGNATURE_NOTE,\n useDeleteSavedSignature,\n useDocumentTools,\n useSavedSignature,\n useStoreSavedSignature,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { ConfirmDialog } from '../settings/ConfirmDialog'\nimport { SettingsCard } from '../settings/SettingsPanel'\nimport { AdoptSignatureDialog } from './AdoptSignatureDialog'\n\nexport const DELETE_SAVED_SIGNATURE_TEXT =\n 'Your saved signature and initials are removed from your account completely. Signatures you ' +\n 'already inserted into documents, and those sealed in signed PDFs, are not affected.'\n\nexport function SavedSignatureSettings(): ReactElement {\n const { user, notify } = useDocumentTools()\n const saved = useSavedSignature()\n const store = useStoreSavedSignature()\n const remove = useDeleteSavedSignature()\n const [editing, setEditing] = useState(false)\n const [confirming, setConfirming] = useState(false)\n const signature = saved.data\n\n return (\n <SettingsCard data-testid=\"saved-signature-settings\">\n <div className=\"space-y-1\">\n <h3 className=\"text-sm font-medium\">Your signature</h3>\n <p className=\"text-sm text-muted-foreground\">\n Saved to your account, sealed with your own key, to insert into Word documents and place\n on PDFs. {INFORMAL_SIGNATURE_NOTE}\n </p>\n </div>\n {signature ? (\n <div className=\"flex flex-wrap items-center gap-4\" data-testid=\"saved-signature-preview\">\n <img\n src={`data:image/png;base64,${signature.signature_png}`}\n alt=\"Your saved signature\"\n className=\"h-16 max-w-xs rounded-md border bg-white object-contain p-1\"\n />\n <img\n src={`data:image/png;base64,${signature.initials_png}`}\n alt=\"Your saved initials\"\n className=\"h-16 max-w-[8rem] rounded-md border bg-white object-contain p-1\"\n />\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\" data-testid=\"saved-signature-none\">\n {saved.isLoading ? 'Loading…' : 'No signature saved.'}\n </p>\n )}\n <div className=\"flex gap-2\">\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n onClick={() => setEditing(true)}\n data-testid=\"saved-signature-replace\"\n >\n <PenLine className=\"mr-1 size-4\" aria-hidden />\n {signature ? 'Replace' : 'Add a signature'}\n </Button>\n {signature && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => setConfirming(true)}\n data-testid=\"saved-signature-delete\"\n >\n <Trash2 className=\"mr-1 size-4\" aria-hidden />\n Delete\n </Button>\n )}\n </div>\n <AdoptSignatureDialog\n open={editing}\n onOpenChange={setEditing}\n mode=\"save\"\n defaultName={user?.name ?? ''}\n saved={signature ?? null}\n onSave={async (next) => void (await store.mutateAsync(next))}\n onAdopt={() => {\n setEditing(false)\n notify('Your signature is saved.', 'success')\n }}\n />\n <ConfirmDialog\n isOpen={confirming}\n onClose={() => setConfirming(false)}\n onConfirm={async () => {\n try {\n await remove.mutateAsync()\n notify('Your saved signature is deleted.', 'success')\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not delete it', 'error')\n } finally {\n setConfirming(false)\n }\n }}\n title=\"Delete your saved signature?\"\n description={DELETE_SAVED_SIGNATURE_TEXT}\n confirmText=\"Delete\"\n variant=\"destructive\"\n isLoading={remove.isPending}\n testId=\"saved-signature-delete-confirm\"\n />\n </SettingsCard>\n )\n}\n\nexport default SavedSignatureSettings\n","/**\n * Where a document's signature requests stand, above the document: a request waiting for the\n * viewer's signature (with \"Review and sign\"), one the viewer sent and is waiting on others (who\n * has signed; void it), and the viewer's own draft (go on editing it). Nothing when there is none.\n * Needs a `<DocumentToolsProvider>` whose `user` has an `externalId`.\n */\n\nimport type { ReactElement } from 'react'\nimport { FilePenLine, PenLine, Send } from 'lucide-react'\nimport {\n SIGNER_PROGRESS_LABELS,\n useDocumentSignatureRequests,\n useDocumentTools,\n useInviteSigners,\n useSignerCandidates,\n useVoidSignatureRequest,\n type SignatureRequest,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\n\nexport interface SignatureRequestBannerProps {\n documentId: string\n /** Open the guided signing of a request waiting for the viewer. */\n onSign: (request: SignatureRequest) => void\n /** Go on editing the viewer's draft. */\n onEditDraft: (request: SignatureRequest) => void\n /** Hide it (e.g. while the editor or the guided signing is open). */\n hidden?: boolean\n}\n\n/** Who is still to sign, and how far each has got (\"Dana Day (invited)\"). */\nfunction waitingFor(request: SignatureRequest): string[] {\n return request.signers\n .filter((s) => s.status === 'pending')\n .map((s) => `${s.name || s.email || ''} (${SIGNER_PROGRESS_LABELS[s.progress].toLowerCase()})`)\n}\n\nexport function SignatureRequestBanner({\n documentId,\n onSign,\n onEditDraft,\n hidden = false,\n}: SignatureRequestBannerProps): ReactElement | null {\n const { user, notify } = useDocumentTools()\n const requests = useDocumentSignatureRequests(documentId, !hidden)\n const voidRequest = useVoidSignatureRequest()\n const invite = useInviteSigners()\n const me = user?.externalId ?? null\n const candidates = useSignerCandidates(!hidden && !!me)\n const isOwner = candidates.data?.some((c) => c.externalId === me && c.role === 'owner') ?? false\n if (hidden || !me || !requests.data) return null\n const open = requests.data.filter((r) => r.status === 'sent' || r.status === 'draft')\n const awaitingMe = open.filter(\n (r) =>\n r.status === 'sent' && r.signers.some((s) => s.user_ext_id === me && s.status === 'pending')\n )\n const sentByMe = open.filter(\n (r) => r.status === 'sent' && r.created_by === me && !awaitingMe.includes(r)\n )\n const drafts = open.filter((r) => r.status === 'draft' && r.created_by === me)\n if (awaitingMe.length + sentByMe.length + drafts.length === 0) return null\n\n const doVoid = async (request: SignatureRequest) => {\n try {\n await voidRequest.mutateAsync(request.external_id)\n notify(request.status === 'draft' ? 'Draft discarded.' : 'Signature request voided.', 'info')\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not void it', 'error')\n }\n }\n\n return (\n <div\n className=\"space-y-1.5 border-b border-border px-3 py-2 text-sm\"\n data-testid=\"signature-request-banner\"\n >\n {awaitingMe.map((r) => {\n const count = r.fields.filter((f) => f.signer === me).length\n const author = r.signers.find((s) => s.user_ext_id === r.created_by)?.name\n return (\n <div\n key={r.external_id}\n className=\"flex flex-wrap items-center gap-2 rounded-md bg-blue-50 px-2 py-1.5 text-blue-950 dark:bg-blue-950/40 dark:text-blue-100\"\n data-testid=\"signature-request-awaiting-me\"\n >\n <PenLine className=\"size-4 shrink-0\" aria-hidden />\n <span className=\"mr-auto\">\n {author && r.created_by !== me\n ? `${author} asked you to sign`\n : 'You are asked to sign'}{' '}\n {count} field{count === 1 ? '' : 's'} in this document.\n {r.stale && ' It has changed since it was sent: ask for it again.'}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => onSign(r)}\n disabled={r.stale}\n data-testid=\"signature-request-start\"\n >\n Review and sign\n </Button>\n </div>\n )\n })}\n {sentByMe.map((r) => {\n const pending = waitingFor(r)\n const signed = r.signers.length - pending.length\n const invited = r.signers.filter((s) => s.progress === 'invited' && s.email)\n return (\n <div\n key={r.external_id}\n className=\"flex flex-wrap items-center gap-2\"\n data-testid=\"signature-request-sent\"\n >\n <Send className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"mr-auto\">\n Out for signature: {signed} of {r.signers.length} signed\n {pending.length > 0 && (\n <span className=\"text-muted-foreground\"> · waiting for {pending.join(', ')}</span>\n )}\n {r.stale && (\n <span className=\"text-red-text\"> · the document has changed since it was sent</span>\n )}\n </span>\n {isOwner && invited.length > 0 && (\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={invite.isPending}\n onClick={async () => {\n try {\n await invite.mutateAsync({\n documentId,\n emails: invited.map((s) => s.email!),\n })\n notify(\n 'Invited again: anyone already registered is added now and asked to sign.',\n 'success'\n )\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not invite', 'error')\n }\n }}\n data-testid=\"signature-request-reinvite\"\n >\n Invite again\n </Button>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => doVoid(r)}\n disabled={voidRequest.isPending}\n >\n Void\n </Button>\n </div>\n )\n })}\n {drafts.map((r) => (\n <div\n key={r.external_id}\n className=\"flex flex-wrap items-center gap-2\"\n data-testid=\"signature-request-draft\"\n >\n <FilePenLine className=\"size-4 shrink-0 text-muted-foreground\" aria-hidden />\n <span className=\"mr-auto\">\n Draft signature request: {r.fields.length} field{r.fields.length === 1 ? '' : 's'}, not\n sent yet.\n </span>\n <Button type=\"button\" size=\"sm\" variant=\"outline\" onClick={() => onEditDraft(r)}>\n Continue\n </Button>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"ghost\"\n onClick={() => doVoid(r)}\n disabled={voidRequest.isPending}\n >\n Discard\n </Button>\n </div>\n ))}\n </div>\n )\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { ViewerStatusNote } from './chunk-6HKLTYNN.js';
|
|
3
2
|
import { SettingsCard } from './chunk-2R3GGNPA.js';
|
|
3
|
+
import { ConfirmDialog } from './chunk-VHJHY7TT.js';
|
|
4
4
|
import { AdoptSignatureDialog } from './chunk-DAN7EJ4O.js';
|
|
5
|
-
import {
|
|
5
|
+
import { ViewerStatusNote } from './chunk-6HKLTYNN.js';
|
|
6
6
|
import { PencilLine, FileText, PenLine, Users, Signature, Trash2, Send, FilePenLine, Download } from 'lucide-react';
|
|
7
7
|
import { Button, Popover, PopoverTrigger, PopoverContent, cn, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuLabel } from '@arbidocs/react/ui';
|
|
8
8
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
@@ -843,5 +843,5 @@ function SignatureRequestBanner({
|
|
|
843
843
|
}
|
|
844
844
|
|
|
845
845
|
export { AnnotateButton, DEFAULT_VERSION_SNAPSHOT_BAR_LABELS, DELETE_SAVED_SIGNATURE_TEXT, DownloadMarkupButton, MarkupNotices, MarkupViewNote, PlaceMySignatureButton, RequestSignaturesButton, SavedSignatureSettings, ShowOriginalButton, SignButton, SignatureCertificate, SignatureRequestBanner, SignatureStatus, SignedEditNote, VersionSnapshotBar, formatSignedAt };
|
|
846
|
-
//# sourceMappingURL=chunk-
|
|
847
|
-
//# sourceMappingURL=chunk-
|
|
846
|
+
//# sourceMappingURL=chunk-SLLNLFFP.js.map
|
|
847
|
+
//# sourceMappingURL=chunk-SLLNLFFP.js.map
|