@arbidocs/blocks 0.5.20 → 0.5.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedNativeDocxComparison-KUDFJ3GG.js → ConnectedNativeDocxComparison-4X7H57LE.js} +9 -9
- package/dist/{ConnectedStreamedWordArtifact-JD2XZCYP.js.map → ConnectedNativeDocxComparison-4X7H57LE.js.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-FUNR66KP.cjs → ConnectedNativeDocxComparison-7WTVHEKI.cjs} +10 -10
- package/dist/{ConnectedNativeDocxComparison-FUNR66KP.cjs.map → ConnectedNativeDocxComparison-7WTVHEKI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-G6R3SFZ3.js → ConnectedNativeDocxEditor-I6RQUSR3.js} +7 -7
- package/dist/{ConnectedNativeDocxEditor-G6R3SFZ3.js.map → ConnectedNativeDocxEditor-I6RQUSR3.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-XVCAXAAU.cjs → ConnectedNativeDocxEditor-PZ2ASQO3.cjs} +9 -9
- package/dist/{ConnectedNativeDocxEditor-XVCAXAAU.cjs.map → ConnectedNativeDocxEditor-PZ2ASQO3.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-JD2XZCYP.js → ConnectedStreamedWordArtifact-KCYSJ3B2.js} +9 -9
- package/dist/{ConnectedNativeDocxComparison-KUDFJ3GG.js.map → ConnectedStreamedWordArtifact-KCYSJ3B2.js.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-P55WP3MC.cjs → ConnectedStreamedWordArtifact-Q5KC4W7O.cjs} +10 -10
- package/dist/ConnectedStreamedWordArtifact-Q5KC4W7O.cjs.map +1 -0
- package/dist/{NativeDocxEditor-6O7UMP7Y.cjs → NativeDocxEditor-JUTTA46L.cjs} +8 -8
- package/dist/{NativeDocxEditor-6O7UMP7Y.cjs.map → NativeDocxEditor-JUTTA46L.cjs.map} +1 -1
- package/dist/{NativeDocxEditor-MHO7LF4E.js → NativeDocxEditor-PSC3JWWA.js} +4 -4
- package/dist/{NativeDocxEditor-MHO7LF4E.js.map → NativeDocxEditor-PSC3JWWA.js.map} +1 -1
- package/dist/{WorkspaceTableView-UR3WLSJG.cjs → WorkspaceTableView-6JVHGDUB.cjs} +8 -8
- package/dist/{WorkspaceTableView-UR3WLSJG.cjs.map → WorkspaceTableView-6JVHGDUB.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-TNUEU6OO.js → WorkspaceTableView-ECPHGWHF.js} +6 -6
- package/dist/{WorkspaceTableView-TNUEU6OO.js.map → WorkspaceTableView-ECPHGWHF.js.map} +1 -1
- package/dist/agents/index.cjs +326 -326
- package/dist/agents/index.js +4 -4
- package/dist/auth/index.cjs +44 -44
- package/dist/auth/index.js +2 -2
- package/dist/auth0/index.cjs +4 -3
- package/dist/auth0/index.cjs.map +1 -1
- package/dist/auth0/index.js +4 -3
- package/dist/auth0/index.js.map +1 -1
- package/dist/{chunk-BQNDBWLB.js → chunk-4ML5AMMO.js} +3 -3
- package/dist/{chunk-BQNDBWLB.js.map → chunk-4ML5AMMO.js.map} +1 -1
- package/dist/{chunk-ODFDMORE.cjs → chunk-4S34OHJX.cjs} +4 -4
- package/dist/{chunk-ODFDMORE.cjs.map → chunk-4S34OHJX.cjs.map} +1 -1
- package/dist/{chunk-QS3AJ3FT.cjs → chunk-5H37UWWS.cjs} +5 -5
- package/dist/{chunk-QS3AJ3FT.cjs.map → chunk-5H37UWWS.cjs.map} +1 -1
- package/dist/{chunk-2FQ4CMRY.cjs → chunk-5ZU2XYXO.cjs} +278 -4
- package/dist/chunk-5ZU2XYXO.cjs.map +1 -0
- package/dist/{chunk-JS7KJRKG.js → chunk-75Z5AUMM.js} +3 -3
- package/dist/{chunk-JS7KJRKG.js.map → chunk-75Z5AUMM.js.map} +1 -1
- package/dist/chunk-BITGO5LI.cjs +18 -0
- package/dist/{chunk-WDCD3OZH.cjs.map → chunk-BITGO5LI.cjs.map} +1 -1
- package/dist/{chunk-E2SKI6VO.js → chunk-D3BHUDOU.js} +3 -3
- package/dist/{chunk-E2SKI6VO.js.map → chunk-D3BHUDOU.js.map} +1 -1
- package/dist/{chunk-WJZK5GAV.js → chunk-DTENNALR.js} +3 -3
- package/dist/{chunk-WJZK5GAV.js.map → chunk-DTENNALR.js.map} +1 -1
- package/dist/{chunk-P5RZPEHW.cjs → chunk-F2BYURQZ.cjs} +5 -5
- package/dist/{chunk-P5RZPEHW.cjs.map → chunk-F2BYURQZ.cjs.map} +1 -1
- package/dist/{chunk-HNGGKANF.js → chunk-F6LC2CRB.js} +5 -5
- package/dist/{chunk-HNGGKANF.js.map → chunk-F6LC2CRB.js.map} +1 -1
- package/dist/{chunk-MBRUUST5.js → chunk-F7IQGPZH.js} +4 -4
- package/dist/{chunk-MBRUUST5.js.map → chunk-F7IQGPZH.js.map} +1 -1
- package/dist/{chunk-X2SQZY7U.js → chunk-FERNQVSH.js} +274 -8
- package/dist/chunk-FERNQVSH.js.map +1 -0
- package/dist/{chunk-KBSKN3NF.cjs → chunk-FQIJICZE.cjs} +9 -9
- package/dist/{chunk-KBSKN3NF.cjs.map → chunk-FQIJICZE.cjs.map} +1 -1
- package/dist/{chunk-SSJLYCX7.cjs → chunk-FV32BTXV.cjs} +84 -56
- package/dist/chunk-FV32BTXV.cjs.map +1 -0
- package/dist/{chunk-2YZ35KKK.cjs → chunk-FZVAJFRH.cjs} +80 -84
- package/dist/chunk-FZVAJFRH.cjs.map +1 -0
- package/dist/{chunk-HHJALHRS.js → chunk-H5XHCIWY.js} +83 -55
- package/dist/chunk-H5XHCIWY.js.map +1 -0
- package/dist/{chunk-TBNXJHTP.js → chunk-IA5BYEO7.js} +7 -5
- package/dist/chunk-IA5BYEO7.js.map +1 -0
- package/dist/{chunk-NFTANEP6.cjs → chunk-IJQ5DIZT.cjs} +5 -5
- package/dist/{chunk-NFTANEP6.cjs.map → chunk-IJQ5DIZT.cjs.map} +1 -1
- package/dist/{chunk-NMZI3K6R.cjs → chunk-IRY63R4L.cjs} +16 -2
- package/dist/chunk-IRY63R4L.cjs.map +1 -0
- package/dist/{chunk-MVP7METT.js → chunk-IXBJEQH5.js} +4 -80
- package/dist/chunk-IXBJEQH5.js.map +1 -0
- package/dist/{chunk-PAKPD3LB.js → chunk-JKJI5SRF.js} +3 -3
- package/dist/{chunk-PAKPD3LB.js.map → chunk-JKJI5SRF.js.map} +1 -1
- package/dist/{chunk-EWRRV37Z.cjs → chunk-K237IYOD.cjs} +2 -80
- package/dist/chunk-K237IYOD.cjs.map +1 -0
- package/dist/chunk-KL6XOSEN.js +156 -0
- package/dist/chunk-KL6XOSEN.js.map +1 -0
- package/dist/{chunk-TRDY3ZT7.js → chunk-LU23I2HS.js} +3 -3
- package/dist/{chunk-TRDY3ZT7.js.map → chunk-LU23I2HS.js.map} +1 -1
- package/dist/{chunk-SAYEQE5R.cjs → chunk-MJT7KHHT.cjs} +48 -48
- package/dist/{chunk-SAYEQE5R.cjs.map → chunk-MJT7KHHT.cjs.map} +1 -1
- package/dist/chunk-MSCDYRSA.cjs +18 -0
- package/dist/{chunk-JPNFVDH4.cjs.map → chunk-MSCDYRSA.cjs.map} +1 -1
- package/dist/chunk-MSPNYW6Z.cjs +165 -0
- package/dist/chunk-MSPNYW6Z.cjs.map +1 -0
- package/dist/{chunk-2R3GGNPA.js → chunk-MZA7GMOH.js} +16 -3
- package/dist/chunk-MZA7GMOH.js.map +1 -0
- package/dist/{chunk-4UGVMOTK.cjs → chunk-NML42O7Q.cjs} +4 -4
- package/dist/{chunk-4UGVMOTK.cjs.map → chunk-NML42O7Q.cjs.map} +1 -1
- package/dist/{chunk-YKGZG353.js → chunk-NVRJ6WTR.js} +3 -3
- package/dist/{chunk-YKGZG353.js.map → chunk-NVRJ6WTR.js.map} +1 -1
- package/dist/{chunk-ZW4QFL3Y.cjs → chunk-PFVCOUU6.cjs} +13 -13
- package/dist/{chunk-ZW4QFL3Y.cjs.map → chunk-PFVCOUU6.cjs.map} +1 -1
- package/dist/{chunk-QLLV5UUI.cjs → chunk-PSIKUQYM.cjs} +5 -5
- package/dist/{chunk-QLLV5UUI.cjs.map → chunk-PSIKUQYM.cjs.map} +1 -1
- package/dist/{chunk-R53JJZNW.js → chunk-RVKVGS72.js} +76 -79
- package/dist/chunk-RVKVGS72.js.map +1 -0
- package/dist/{chunk-H32DV7XS.cjs → chunk-UAEYU2NN.cjs} +136 -2
- package/dist/chunk-UAEYU2NN.cjs.map +1 -0
- package/dist/{chunk-USZ32EKR.js → chunk-VFZLZSJ3.js} +4 -4
- package/dist/{chunk-USZ32EKR.js.map → chunk-VFZLZSJ3.js.map} +1 -1
- package/dist/{chunk-XRL4R2TT.js → chunk-WZ63HE2C.js} +136 -4
- package/dist/chunk-WZ63HE2C.js.map +1 -0
- package/dist/{chunk-F72ZD5Q2.cjs → chunk-YD3RN2FY.cjs} +3 -3
- package/dist/{chunk-F72ZD5Q2.cjs.map → chunk-YD3RN2FY.cjs.map} +1 -1
- package/dist/{chunk-VYFRW6NN.cjs → chunk-YRHQ7OLG.cjs} +3 -3
- package/dist/{chunk-VYFRW6NN.cjs.map → chunk-YRHQ7OLG.cjs.map} +1 -1
- package/dist/{chunk-PYJUIEYV.js → chunk-YT5OOFK3.js} +3 -3
- package/dist/{chunk-PYJUIEYV.js.map → chunk-YT5OOFK3.js.map} +1 -1
- package/dist/{chunk-XCL6ZCI5.js → chunk-Z6CAKLA5.js} +3 -3
- package/dist/{chunk-XCL6ZCI5.js.map → chunk-Z6CAKLA5.js.map} +1 -1
- package/dist/{chunk-RAYCOBF7.cjs → chunk-ZESMRGDV.cjs} +7 -5
- package/dist/chunk-ZESMRGDV.cjs.map +1 -0
- package/dist/{chunk-6FWUZGPF.js → chunk-ZMYK7XTS.js} +4 -4
- package/dist/{chunk-6FWUZGPF.js.map → chunk-ZMYK7XTS.js.map} +1 -1
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +1138 -906
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +1 -0
- package/dist/connect/index.js +480 -249
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +17 -17
- package/dist/connect/viewer.js +6 -6
- package/dist/connection/ConnectedAccountAccessBadge.d.ts +1 -0
- package/dist/connection/ConnectedSettings.d.ts +6 -2
- package/dist/connection/ConnectedSsoDisconnect.d.ts +2 -0
- package/dist/connection/auth/support.d.ts +1 -0
- package/dist/connection/auth/useLoginActions.d.ts +1 -1
- package/dist/connection/settings-page/ConnectedAccountSettings.d.ts +5 -1
- package/dist/document-tools/AdoptSignatureDialog.d.ts +3 -1
- package/dist/document-tools/index.cjs +20 -20
- package/dist/document-tools/index.js +3 -3
- package/dist/document-tools/viewer/index.cjs +10 -10
- package/dist/document-tools/viewer/index.js +3 -3
- package/dist/docx/index.cjs +51 -51
- package/dist/docx/index.js +4 -4
- package/dist/facts/index.cjs +55 -55
- package/dist/facts/index.js +3 -3
- package/dist/home/index.cjs +15 -16
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +1 -2
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +425 -425
- package/dist/index.js +7 -7
- package/dist/settings/IdentityVerification.d.ts +3 -1
- package/dist/settings/ProfileCard.d.ts +3 -1
- package/dist/settings/SettingsPanel.d.ts +6 -0
- package/dist/settings/SubscriptionParts.d.ts +0 -11
- package/dist/settings/index.cjs +162 -166
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.js +3 -3
- package/dist/workflow-canvas/index.cjs +17 -17
- package/dist/workflow-canvas/index.js +4 -4
- package/dist/workspaces/WorkspaceFormParts.d.ts +10 -2
- package/dist/workspaces/index.cjs +52 -287
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +9 -268
- package/dist/workspaces/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-P55WP3MC.cjs.map +0 -1
- package/dist/chunk-2FQ4CMRY.cjs.map +0 -1
- package/dist/chunk-2R3GGNPA.js.map +0 -1
- package/dist/chunk-2YZ35KKK.cjs.map +0 -1
- package/dist/chunk-5TDGVOR5.js +0 -142
- package/dist/chunk-5TDGVOR5.js.map +0 -1
- package/dist/chunk-6AXJBTHM.js +0 -77
- package/dist/chunk-6AXJBTHM.js.map +0 -1
- package/dist/chunk-EWRRV37Z.cjs.map +0 -1
- package/dist/chunk-H32DV7XS.cjs.map +0 -1
- package/dist/chunk-HHJALHRS.js.map +0 -1
- package/dist/chunk-JPNFVDH4.cjs +0 -18
- package/dist/chunk-MKNSIZWR.cjs +0 -84
- package/dist/chunk-MKNSIZWR.cjs.map +0 -1
- package/dist/chunk-MVP7METT.js.map +0 -1
- package/dist/chunk-NMZI3K6R.cjs.map +0 -1
- package/dist/chunk-R53JJZNW.js.map +0 -1
- package/dist/chunk-RAYCOBF7.cjs.map +0 -1
- package/dist/chunk-REH7PX3N.cjs +0 -145
- package/dist/chunk-REH7PX3N.cjs.map +0 -1
- package/dist/chunk-SSJLYCX7.cjs.map +0 -1
- package/dist/chunk-TBNXJHTP.js.map +0 -1
- package/dist/chunk-WDCD3OZH.cjs +0 -18
- package/dist/chunk-X2SQZY7U.js.map +0 -1
- package/dist/chunk-XRL4R2TT.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/document-tools/viewer/SignatureFieldsOverlay.tsx","../src/document-tools/viewer/GuidedSigningViewer.tsx","../src/document-tools/viewer/SharedFileView.tsx"],"names":["PdfViewer","KitPdfViewer","useState","useRef","jsx","FIELD_TYPE_LABELS","jsxs","Fragment","useDocumentTools","useCallback","useEffect","Button"],"mappings":"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","file":"chunk-BQNDBWLB.js","sourcesContent":["/**\n * The signature fields of one PDF page, drawn over it. Coordinates are fractions of the page as\n * shown (origin top-left), pages 0-based like the API; the kit viewer's overlay fills the page box.\n *\n * - `editable`: the author's view. With a field type chosen, a click drops a field of the default\n * size and a drag draws one; a field is selected by a click, moved by dragging it and resized by\n * its corner handle; the selected one has a remove button.\n * - otherwise the signer's view: fields are buttons; `renderContent` shows what was applied.\n */\n\nimport { useRef, useState, type PointerEvent, type ReactElement, type ReactNode } from 'react'\nimport { X } from 'lucide-react'\nimport {\n DEFAULT_FIELD_SIZE,\n FIELD_TYPE_LABELS,\n type SignatureField,\n type SignatureFieldType,\n} from '@arbidocs/react/document-tools'\nimport { cn } from '@arbidocs/react/ui'\n\n/** One colour per signer, in the order they were added. */\nexport const SIGNER_COLORS = ['#1c7ed6', '#e8590c', '#2f9e44', '#9c36b5', '#c2255c', '#0c8599']\n\nconst MIN_DRAG = 0.01\n\ntype Box = { x: number; y: number; width: number; height: number }\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v))\nconst round = (v: number) => Math.round(v * 10000) / 10000\n\nfunction fit(box: Box): Box {\n const width = clamp(box.width, 0.02, 1)\n const height = clamp(box.height, 0.015, 1)\n return {\n x: round(clamp(box.x, 0, 1 - width)),\n y: round(clamp(box.y, 0, 1 - height)),\n width: round(width),\n height: round(height),\n }\n}\n\ntype Drag =\n | { kind: 'create'; startX: number; startY: number; box: Box }\n | { kind: 'move' | 'resize'; id: string; startX: number; startY: number; origin: Box }\n\nexport interface SignatureFieldsOverlayProps {\n /** 0-based page index this overlay covers. */\n page: number\n fields: SignatureField[]\n colorOf: (signer: string) => string\n labelOf?: (field: SignatureField) => string\n editable?: boolean\n /** Editing: the type a click or drag on the page creates (null: none, selection only). */\n placing?: SignatureFieldType | null\n selectedId?: string | null\n onSelect?: (id: string | null) => void\n onCreate?: (box: Box) => void\n onChange?: (id: string, box: Box) => void\n onRemove?: (id: string) => void\n /** Signing: the field the signer is on. */\n activeId?: string | null\n onActivate?: (id: string) => void\n /** Signing: what a completed field shows (the adopted signature, the date…). */\n renderContent?: (field: SignatureField) => ReactNode\n}\n\nexport function SignatureFieldsOverlay({\n page,\n fields,\n colorOf,\n labelOf = (f) => FIELD_TYPE_LABELS[f.type],\n editable = false,\n placing = null,\n selectedId = null,\n onSelect,\n onCreate,\n onChange,\n onRemove,\n activeId = null,\n onActivate,\n renderContent,\n}: SignatureFieldsOverlayProps): ReactElement {\n const ref = useRef<HTMLDivElement>(null)\n const [drag, setDrag] = useState<Drag | null>(null)\n const [preview, setPreview] = useState<Box | null>(null)\n const onPage = fields.filter((f) => f.page === page)\n\n const point = (e: PointerEvent) => {\n const r = ref.current!.getBoundingClientRect()\n return { x: (e.clientX - r.left) / r.width, y: (e.clientY - r.top) / r.height }\n }\n\n const startCreate = (e: PointerEvent<HTMLDivElement>) => {\n if (!editable || e.target !== e.currentTarget || e.button !== 0) return\n if (!placing) {\n onSelect?.(null)\n return\n }\n const p = point(e)\n e.currentTarget.setPointerCapture?.(e.pointerId)\n setDrag({ kind: 'create', startX: p.x, startY: p.y, box: { ...p, width: 0, height: 0 } })\n }\n\n const startField = (e: PointerEvent, field: SignatureField, kind: 'move' | 'resize') => {\n if (!editable || e.button !== 0) return\n e.stopPropagation()\n onSelect?.(field.id)\n const p = point(e)\n ref.current?.setPointerCapture?.(e.pointerId)\n setDrag({\n kind,\n id: field.id,\n startX: p.x,\n startY: p.y,\n origin: { x: field.x, y: field.y, width: field.width, height: field.height },\n })\n }\n\n const onMove = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n const dx = p.x - drag.startX\n const dy = p.y - drag.startY\n if (drag.kind === 'create') {\n setPreview({\n x: Math.min(p.x, drag.startX),\n y: Math.min(p.y, drag.startY),\n width: Math.abs(dx),\n height: Math.abs(dy),\n })\n } else if (drag.kind === 'move') {\n setPreview(fit({ ...drag.origin, x: drag.origin.x + dx, y: drag.origin.y + dy }))\n } else {\n setPreview(\n fit({ ...drag.origin, width: drag.origin.width + dx, height: drag.origin.height + dy })\n )\n }\n }\n\n const onUp = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n if (drag.kind === 'create' && placing) {\n const drawn = Math.abs(p.x - drag.startX) > MIN_DRAG && Math.abs(p.y - drag.startY) > MIN_DRAG\n const size = DEFAULT_FIELD_SIZE[placing]\n onCreate?.(\n fit(\n drawn && preview\n ? preview\n : { x: drag.startX - size.width / 2, y: drag.startY - size.height / 2, ...size }\n )\n )\n } else if (drag.kind !== 'create' && preview) {\n onChange?.(drag.id, preview)\n }\n setDrag(null)\n setPreview(null)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'absolute inset-0 z-10',\n editable && placing && 'cursor-crosshair',\n !editable && 'pointer-events-none'\n )}\n onPointerDown={startCreate}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerCancel={() => {\n setDrag(null)\n setPreview(null)\n }}\n data-testid={`signature-fields-page-${page}`}\n >\n {onPage.map((field) => {\n const dragging = drag && drag.kind !== 'create' && drag.id === field.id && preview\n const box = dragging ? preview! : field\n const color = colorOf(field.signer)\n const selected = editable && selectedId === field.id\n const active = !editable && activeId === field.id\n const content = renderContent?.(field)\n return (\n <div\n key={field.id}\n role={editable ? undefined : 'button'}\n tabIndex={editable ? undefined : 0}\n aria-label={editable ? undefined : `${labelOf(field)}${content ? ' (done)' : ''}`}\n className={cn(\n 'pointer-events-auto absolute flex items-center justify-center overflow-visible rounded-sm border-2 text-[11px] font-medium select-none',\n editable ? 'cursor-move' : 'cursor-pointer',\n active && 'ring-4 ring-offset-1 motion-safe:animate-pulse',\n selected && 'ring-2 ring-offset-1'\n )}\n style={{\n left: `${box.x * 100}%`,\n top: `${box.y * 100}%`,\n width: `${box.width * 100}%`,\n height: `${box.height * 100}%`,\n borderColor: color,\n borderStyle: content ? 'solid' : 'dashed',\n backgroundColor: content ? 'transparent' : `${color}22`,\n color,\n ['--tw-ring-color' as string]: color,\n }}\n onPointerDown={(e) => startField(e, field, 'move')}\n onClick={() => !editable && onActivate?.(field.id)}\n onKeyDown={(e) => {\n if (!editable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n onActivate?.(field.id)\n }\n if (editable && selected && (e.key === 'Delete' || e.key === 'Backspace')) {\n onRemove?.(field.id)\n }\n }}\n data-testid={`signature-field-${field.id}`}\n data-field-type={field.type}\n data-field-done={content ? 'true' : undefined}\n >\n {content ?? (\n <span className=\"truncate px-1\">\n {labelOf(field)}\n {field.required ? '' : ' (optional)'}\n </span>\n )}\n {selected && (\n <>\n <button\n type=\"button\"\n aria-label=\"Remove field\"\n className=\"absolute -top-2.5 -right-2.5 flex size-5 items-center justify-center rounded-full border bg-background text-foreground shadow\"\n onPointerDown={(e) => e.stopPropagation()}\n onClick={() => onRemove?.(field.id)}\n data-testid=\"signature-field-remove\"\n >\n <X className=\"size-3\" />\n </button>\n <span\n aria-hidden\n className=\"absolute -right-1.5 -bottom-1.5 size-3 cursor-nwse-resize rounded-sm border bg-background\"\n style={{ borderColor: color }}\n onPointerDown={(e) => startField(e, field, 'resize')}\n data-testid=\"signature-field-resize\"\n />\n </>\n )}\n </div>\n )\n })}\n {drag?.kind === 'create' && preview && (\n <div\n className=\"pointer-events-none absolute rounded-sm border-2 border-dashed\"\n style={{\n left: `${preview.x * 100}%`,\n top: `${preview.y * 100}%`,\n width: `${preview.width * 100}%`,\n height: `${preview.height * 100}%`,\n borderColor: '#868e96',\n }}\n />\n )}\n </div>\n )\n}\n","/**\n * Sign a document you were asked to sign, field by field. The viewer takes the signer to each of\n * their fields in turn (page by page, scrolled into view, \"Field 3 of 7\"); they adopt a signature\n * once and click each field to apply it (the date signed and their printed name fill in on\n * adoption). Finishing re-enters the password and signs every field at once; the last signer's\n * signature completes the request and the signed copy becomes the document's next version.\n * Needs a `<DocumentToolsProvider>` with a `user` inside a React Query `QueryClientProvider`.\n */\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n type ReactElement,\n} from 'react'\nimport { ArrowLeft, ArrowRight, Check } from 'lucide-react'\nimport {\n FIELD_TYPE_LABELS,\n MARK_FIELD_TYPES,\n SigningError,\n fieldsInSigningOrder,\n intentText,\n useDeclineSignatureRequest,\n useDocumentTools,\n useSavedSignature,\n useSignSignatureRequest,\n useStoreSavedSignature,\n type SignRequestSignResponse,\n type SignatureField,\n type SignatureRequest,\n} from '@arbidocs/react/document-tools'\nimport { Button, Input, Label, Progress } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport { ModalScaffold } from '../../settings/ModalScaffold'\nimport {\n AdoptSignatureDialog,\n TYPED_SIGNATURE_STYLE,\n type AdoptedMark,\n} from '../AdoptSignatureDialog'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\nimport { SignatureFieldsOverlay } from './SignatureFieldsOverlay'\n\nexport interface GuidedSigningViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay' | 'currentPage' | 'scrollTrigger'\n> {\n /** The PDF of the request's version (`GET /view?version=`): what is signed. */\n file: Blob\n request: SignatureRequest\n signRequest?: (\n vars: import('@arbidocs/react/document-tools').SignRequestVars\n ) => Promise<SignRequestSignResponse>\n declineRequest?: () => Promise<void>\n sharedFile?: boolean\n /** The signer (usr-*): their fields are the ones walked through. */\n signer: string\n onClose: () => void\n onSigned?: (result: SignRequestSignResponse) => void\n viewer?: DocumentPdfViewer\n}\n\nconst INK = '#1c7ed6'\n\n/** \"19 October 2026\", as the signed PDF writes the date. */\nexport function signingDate(date = new Date()): string {\n return `${date.getDate()} ${date.toLocaleString('en-GB', { month: 'long' })} ${date.getFullYear()}`\n}\n\nexport function GuidedSigningViewer({\n file,\n request,\n signer,\n onClose,\n onSigned,\n signRequest,\n declineRequest,\n sharedFile = false,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: GuidedSigningViewerProps): ReactElement {\n const { user, notify } = useDocumentTools()\n const sign = useSignSignatureRequest()\n const [submitting, setSubmitting] = useState(false)\n const signingPending = submitting || sign.isPending\n const savedSignature = useSavedSignature()\n const storeSignature = useStoreSavedSignature()\n const decline = useDeclineSignatureRequest()\n const mine = useMemo(() => fieldsInSigningOrder(request.fields, signer), [request.fields, signer])\n const [mark, setMark] = useState<AdoptedMark | null>(null)\n const [applied, setApplied] = useState<Set<string>>(new Set())\n const [index, setIndex] = useState(-1)\n const [page, setPage] = useState(1)\n const [trigger, setTrigger] = useState(0)\n const [adoptFor, setAdoptFor] = useState<SignatureField | null>(null)\n const [finishing, setFinishing] = useState(false)\n const [password, setPassword] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [declining, setDeclining] = useState(false)\n const [declineReason, setDeclineReason] = useState('')\n const scrollTimer = useRef<number | undefined>(undefined)\n\n const required = mine.filter((f) => f.required)\n const done = mine.filter((f) => applied.has(f.id)).length\n const ready = required.every((f) => applied.has(f.id))\n const current = index >= 0 ? mine[index] : undefined\n\n useEffect(() => () => window.clearTimeout(scrollTimer.current), [])\n\n const goTo = useCallback(\n (i: number) => {\n const field = mine[i]\n if (!field) return\n setIndex(i)\n setPage(field.page + 1)\n setTrigger((t) => t + 1)\n // Once the page is in view, bring the field itself to the middle of the screen.\n window.clearTimeout(scrollTimer.current)\n scrollTimer.current = window.setTimeout(() => {\n document\n .querySelector(`[data-testid=\"signature-field-${field.id}\"]`)\n ?.scrollIntoView({ block: 'center', behavior: 'smooth' })\n }, 300)\n },\n [mine]\n )\n\n /** The next field still to do after `from` (wrapping), or -1 when every field is done. */\n const nextOpen = (from: number, filled: Set<string>) => {\n for (let k = 1; k <= mine.length; k++) {\n const i = (from + k) % mine.length\n if (!filled.has(mine[i]!.id)) return i\n }\n return -1\n }\n\n const apply = (field: SignatureField, base: Set<string> = applied) => {\n const next = new Set(base)\n next.add(field.id)\n setApplied(next)\n const i = nextOpen(mine.indexOf(field), next)\n if (i >= 0) goTo(i)\n else setIndex(mine.indexOf(field))\n }\n\n const activate = (id: string) => {\n const field = mine.find((f) => f.id === id)\n if (!field) return\n setIndex(mine.indexOf(field))\n if (applied.has(id)) {\n // A second click takes it back off.\n setApplied((a) => {\n const next = new Set(a)\n next.delete(id)\n return next\n })\n return\n }\n if (!mark) {\n setAdoptFor(field)\n return\n }\n apply(field)\n }\n\n const onAdopt = (adopted: AdoptedMark) => {\n setMark(adopted)\n const field = adoptFor\n setAdoptFor(null)\n // The date signed and the printed name need no click: they fill in from what was adopted.\n const filled = new Set(applied)\n for (const f of mine)\n if (f.required && (f.type === 'date' || f.type === 'name')) filled.add(f.id)\n if (field) apply(field, filled)\n else setApplied(filled)\n }\n\n const renderContent = useCallback(\n (field: SignatureField) => {\n if (!applied.has(field.id) || !mark) return null\n const { adopted, signatureUrl, initialsUrl } = mark\n const image =\n field.type === 'signature' ? signatureUrl : field.type === 'initials' ? initialsUrl : null\n if (image) {\n return (\n <img\n src={image}\n alt={field.type === 'signature' ? 'Your signature' : 'Your initials'}\n className=\"h-full w-full object-contain\"\n />\n )\n }\n const text =\n field.type === 'signature'\n ? adopted.name\n : field.type === 'initials'\n ? adopted.initials\n : field.type === 'date'\n ? signingDate()\n : adopted.name\n const typed = MARK_FIELD_TYPES.includes(field.type)\n return (\n <span\n className=\"flex h-full w-full items-center px-1 whitespace-nowrap [container-type:size]\"\n style={typed ? TYPED_SIGNATURE_STYLE : { color: '#1a1a26' }}\n >\n <span style={{ fontSize: typed ? '70cqh' : '62cqh', lineHeight: 1 }}>{text}</span>\n </span>\n )\n },\n [applied, mark]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) => (\n <SignatureFieldsOverlay\n page={pageNumber - 1}\n fields={mine}\n colorOf={() => INK}\n labelOf={(f) =>\n MARK_FIELD_TYPES.includes(f.type)\n ? `Sign: ${FIELD_TYPE_LABELS[f.type]}`\n : FIELD_TYPE_LABELS[f.type]\n }\n activeId={current?.id ?? null}\n onActivate={activate}\n renderContent={renderContent}\n />\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- activate reads the latest state\n [mine, current?.id, renderContent, mark, applied]\n )\n\n const submit = async (e: FormEvent) => {\n e.preventDefault()\n if (!mark || !user?.email) return\n setError(null)\n setSubmitting(true)\n try {\n const result = await (signRequest ?? sign.mutateAsync)({\n request,\n pdfBlob: file,\n email: user.email,\n password,\n adopted: mark.adopted,\n fields: mine.filter((f) => applied.has(f.id)).map((f) => f.id),\n })\n setPassword('')\n setFinishing(false)\n notify(\n result.completed\n ? sharedFile\n ? 'Everyone has signed. The completed PDF is ready to download.'\n : `Signed. Everyone has signed: the signed copy is version ${result.signed_version}.`\n : 'Signed. The others are still to sign; you will see the signed copy when they have.',\n 'success'\n )\n onSigned?.(result)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signing failed')\n if (err instanceof SigningError && err.reason === 'stale') setFinishing(false)\n } finally {\n setSubmitting(false)\n }\n }\n\n const onDecline = async (e: FormEvent) => {\n e.preventDefault()\n try {\n if (declineRequest) await declineRequest()\n else\n await decline.mutateAsync({ requestId: request.external_id, reason: declineReason.trim() })\n setDeclining(false)\n notify('You declined to sign. The sender has been told.', 'info')\n onClose()\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not decline', 'error')\n }\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"guided-signing-viewer\">\n <div className=\"space-y-2 border-b border-border px-3 py-2 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {index < 0 ? (\n <span className=\"mr-auto\" data-testid=\"guided-signing-intro\">\n You are asked to complete {mine.length} field{mine.length === 1 ? '' : 's'}.\n {request.message ? (\n <span className=\"text-muted-foreground\"> “{request.message}”</span>\n ) : null}\n </span>\n ) : (\n <span className=\"mr-auto font-medium\" data-testid=\"guided-signing-position\">\n Field {index + 1} of {mine.length}: {current ? FIELD_TYPE_LABELS[current.type] : ''}\n {current && !current.required ? ' (optional)' : ''}\n <span className=\"ml-2 font-normal text-muted-foreground\">\n Page {current ? current.page + 1 : ''}\n </span>\n </span>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setDeclining(true)}\n data-testid=\"guided-signing-decline\"\n >\n Decline\n </Button>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onClose}>\n Close\n </Button>\n {index < 0 ? (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => goTo(0)}\n data-testid=\"guided-signing-start\"\n >\n Start\n <ArrowRight className=\"ml-1 size-4\" aria-hidden />\n </Button>\n ) : (\n <>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.max(0, index - 1))}\n disabled={index === 0}\n aria-label=\"Previous field\"\n >\n <ArrowLeft className=\"size-4\" aria-hidden />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.min(mine.length - 1, index + 1))}\n disabled={index >= mine.length - 1}\n aria-label=\"Next field\"\n data-testid=\"guided-signing-next\"\n >\n <ArrowRight className=\"size-4\" aria-hidden />\n </Button>\n {current && !applied.has(current.id) && (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => activate(current.id)}\n data-testid=\"guided-signing-apply\"\n >\n {MARK_FIELD_TYPES.includes(current.type) ? 'Sign here' : 'Fill in'}\n </Button>\n )}\n </>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant={ready ? 'default' : 'outline'}\n disabled={!ready || !mark}\n onClick={() => setFinishing(true)}\n data-testid=\"guided-signing-finish\"\n >\n <Check className=\"mr-1 size-4\" aria-hidden />\n Finish\n </Button>\n </div>\n <div className=\"flex items-center gap-3\">\n <Progress\n value={mine.length ? (done / mine.length) * 100 : 0}\n className=\"h-1.5 max-w-xs\"\n />\n <span className=\"text-muted-foreground\" data-testid=\"guided-signing-progress\">\n {done} of {mine.length} done\n </span>\n </div>\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer\n {...viewerProps}\n file={file}\n currentPage={page}\n scrollTrigger={trigger}\n renderPageOverlay={renderPageOverlay}\n />\n </div>\n <AdoptSignatureDialog\n open={!!adoptFor}\n onOpenChange={(open) => !open && setAdoptFor(null)}\n defaultName={user?.name ?? ''}\n onAdopt={onAdopt}\n saved={savedSignature.data ?? null}\n onSave={async (signature) => void (await storeSignature.mutateAsync(signature))}\n />\n <ModalScaffold\n open={declining}\n onOpenChange={(open) => !decline.isPending && setDeclining(open)}\n title=\"Decline to sign\"\n description=\"The request ends for everyone and the sender is told. The document is unchanged.\"\n showDescription\n testId=\"guided-signing-decline-dialog\"\n >\n <form onSubmit={onDecline}>\n <ModalScaffold.Body>\n {!sharedFile && (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-decline-reason\">Reason (optional)</Label>\n <Input\n id=\"guided-decline-reason\"\n value={declineReason}\n maxLength={1000}\n onChange={(e) => setDeclineReason(e.target.value)}\n />\n </div>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button type=\"button\" variant=\"outline\" onClick={() => setDeclining(false)}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"destructive\" disabled={decline.isPending}>\n Decline\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n <ModalScaffold\n open={finishing}\n onOpenChange={(open) => !signingPending && setFinishing(open)}\n title=\"Sign the document\"\n description=\"Confirm with your password. Your signature is applied to every field you completed.\"\n showDescription\n testId=\"guided-signing-confirm\"\n >\n <form onSubmit={submit}>\n <ModalScaffold.Body>\n {mark && (\n <blockquote className=\"border-l-2 border-border pl-3 text-sm text-muted-foreground\">\n {intentText({ name: mark.adopted.name })}\n </blockquote>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-sign-password\">Password</Label>\n <Input\n id=\"guided-sign-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n data-testid=\"guided-signing-password\"\n required\n />\n </div>\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"guided-signing-error\">\n {error}\n </p>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setFinishing(false)}\n disabled={signingPending}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={signingPending || !password}\n data-testid=\"guided-signing-submit\"\n >\n {signingPending ? 'Signing…' : 'Sign'}\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n </div>\n )\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n fileShareBytes,\n fileShareSigningRequest,\n useFileShare,\n useFileSharePdf,\n useFileShares,\n signFileShare,\n useDocumentTools,\n type FileShare,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { PdfViewer } from '@arbidocs/react/viewers'\nimport { GuidedSigningViewer } from './GuidedSigningViewer'\n\nexport function SharedFileView({\n shareId,\n onPublish,\n}: {\n shareId: string\n onPublish?: (share: FileShare) => Promise<void>\n}) {\n const { client, user, deploymentDomain, saveFile } = useDocumentTools()\n const [signing, setSigning] = useState(false)\n const [busy, setBusy] = useState(false)\n const [actionError, setActionError] = useState('')\n const detail = useFileShare(client, shareId, signing)\n const share = detail.data\n const pdf = useFileSharePdf(client, shareId, share)\n const action = useCallback(\n async (run: () => Promise<unknown>) => {\n setBusy(true)\n setActionError('')\n try {\n await run()\n await detail.refetch()\n } catch (e) {\n setActionError(e instanceof Error ? e.message : 'The action failed')\n } finally {\n setBusy(false)\n }\n },\n [detail]\n )\n useEffect(() => {\n if (share && !share.can_sign) setSigning(false)\n }, [share])\n if (detail.isPending)\n return (\n <p role=\"status\" className=\"p-6\">\n Opening shared file…\n </p>\n )\n if (detail.error)\n return (\n <p role=\"alert\" className=\"p-6\">\n {detail.error.message}\n </p>\n )\n if (!share) return null\n if (signing && pdf.data && user?.email)\n return (\n <GuidedSigningViewer\n file={pdf.data}\n request={fileShareSigningRequest(share)}\n signer={user.email.toLowerCase()}\n sharedFile\n onClose={() => setSigning(false)}\n onSigned={() => {\n setSigning(false)\n void detail.refetch()\n }}\n signRequest={(vars) => signFileShare(client, deploymentDomain ?? '', vars)}\n declineRequest={async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/decline', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not decline the request')\n setSigning(false)\n await detail.refetch()\n }}\n />\n )\n const download = (kind: 'original' | 'signed') =>\n action(async () => {\n const blob = await fileShareBytes(client, shareId, kind)\n saveFile(\n blob,\n kind === 'signed'\n ? share.file_name.replace(/\\.[^.]+$/, '') + ' (signed).pdf'\n : share.file_name\n )\n })\n return (\n <main className=\"flex h-full min-h-0 flex-col\" data-testid=\"shared-file-view\">\n <header className=\"space-y-3 border-b p-4\">\n <a href=\"/shared-files\" className=\"text-sm text-primary underline\">\n Shared files\n </a>\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"mr-auto text-lg font-semibold\">\n {share.file_name} · version {share.version}\n </h1>\n <span data-testid=\"file-share-status\">\n {share.status === 'completed'\n ? 'Everyone has signed'\n : share.status === 'signing'\n ? 'Waiting for signatures'\n : share.status}\n </span>\n {share.can_sign && (\n <Button\n disabled={!pdf.data}\n onClick={() => setSigning(true)}\n data-testid=\"file-share-review-sign\"\n >\n Review and sign\n </Button>\n )}\n <Button variant=\"outline\" disabled={busy} onClick={() => void download('original')}>\n Download original\n </Button>\n {share.status === 'completed' && (\n <Button\n disabled={busy}\n onClick={() => void download('signed')}\n data-testid=\"file-share-download-signed\"\n >\n Download signed PDF\n </Button>\n )}\n {share.owner && share.status === 'completed' && !share.published_version && onPublish && (\n <Button\n disabled={busy}\n onClick={() => void action(() => onPublish(share))}\n data-testid=\"file-share-publish\"\n >\n Save signed PDF as a new document version\n </Button>\n )}\n {share.published_version && (\n <span data-testid=\"file-share-published\">\n Saved as version {share.published_version}\n </span>\n )}\n {share.owner && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/resend', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not resend the invitation')\n })\n }\n >\n Renew expired access and resend email\n </Button>\n )}\n {share.owner && share.status !== 'revoked' && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.DELETE('/v1/file-shares/{share_id}', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not revoke access')\n window.location.assign('/shared-files')\n })\n }\n >\n Revoke access\n </Button>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Access covers this file version only. It does not include its workspace or version\n history.\n </p>\n {share.message && <p>{share.message}</p>}\n <ul className=\"flex flex-wrap gap-x-5 gap-y-1 text-sm\" data-testid=\"file-share-recipients\">\n {share.recipients.map((r) => (\n <li key={r.email}>\n {r.email} ·{' '}\n {r.permission === 'sign'\n ? r.status === 'signed'\n ? 'Signed'\n : r.status === 'declined'\n ? 'Declined'\n : 'Signature pending'\n : 'Can view'}\n {share.owner &&\n ` · ${r.delivery_status === 'accepted' ? 'Email accepted for delivery' : r.delivery_status === 'failed' ? 'Email delivery failed' : 'Email queued'}`}\n {r.expires_at && ` · expires ${new Date(r.expires_at).toLocaleString()}`}\n </li>\n ))}\n </ul>\n {actionError && (\n <p role=\"alert\" className=\"text-destructive\">\n {actionError}\n </p>\n )}\n </header>\n <div className=\"min-h-0 flex-1\">\n {pdf.data ? (\n <PdfViewer file={pdf.data} />\n ) : pdf.error ? (\n <p role=\"alert\" className=\"p-4\">\n {pdf.error.message}\n </p>\n ) : (\n <p className=\"p-4\">\n {share.can_preview ? 'Loading PDF…' : 'Download the original file to open it.'}\n </p>\n )}\n </div>\n </main>\n )\n}\n\nexport function SharedFilesInbox() {\n const { client } = useDocumentTools()\n const listed = useFileShares(client)\n return (\n <main className=\"mx-auto max-w-3xl p-6\">\n <a href=\"/\" className=\"text-primary underline\">\n Back to ARBI\n </a>\n <h1 className=\"my-5 text-2xl font-semibold\">Shared files</h1>\n {listed.error && <p role=\"alert\">{listed.error.message}</p>}\n {listed.isPending && <p role=\"status\">Loading…</p>}\n {listed.data?.length === 0 && <p>No files have been shared with this account.</p>}\n <ul className=\"space-y-3\">\n {listed.data?.map((s: FileShare) => (\n <li key={s.external_id} className=\"rounded border p-4\">\n <a className=\"text-primary underline\" href={`/shared-files/${s.external_id}`}>\n {s.file_name} · version {s.version}\n </a>\n <p className=\"text-sm text-muted-foreground\">\n {s.owner ? 'Shared by you' : 'Shared with you'} · {s.status}\n </p>\n </li>\n ))}\n </ul>\n </main>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/document-tools/viewer/SignatureFieldsOverlay.tsx","../src/document-tools/viewer/GuidedSigningViewer.tsx","../src/document-tools/viewer/SharedFileView.tsx"],"names":["PdfViewer","KitPdfViewer","useState","useRef","jsx","FIELD_TYPE_LABELS","jsxs","Fragment","useDocumentTools","useCallback","useEffect","Button"],"mappings":"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","file":"chunk-4ML5AMMO.js","sourcesContent":["/**\n * The signature fields of one PDF page, drawn over it. Coordinates are fractions of the page as\n * shown (origin top-left), pages 0-based like the API; the kit viewer's overlay fills the page box.\n *\n * - `editable`: the author's view. With a field type chosen, a click drops a field of the default\n * size and a drag draws one; a field is selected by a click, moved by dragging it and resized by\n * its corner handle; the selected one has a remove button.\n * - otherwise the signer's view: fields are buttons; `renderContent` shows what was applied.\n */\n\nimport { useRef, useState, type PointerEvent, type ReactElement, type ReactNode } from 'react'\nimport { X } from 'lucide-react'\nimport {\n DEFAULT_FIELD_SIZE,\n FIELD_TYPE_LABELS,\n type SignatureField,\n type SignatureFieldType,\n} from '@arbidocs/react/document-tools'\nimport { cn } from '@arbidocs/react/ui'\n\n/** One colour per signer, in the order they were added. */\nexport const SIGNER_COLORS = ['#1c7ed6', '#e8590c', '#2f9e44', '#9c36b5', '#c2255c', '#0c8599']\n\nconst MIN_DRAG = 0.01\n\ntype Box = { x: number; y: number; width: number; height: number }\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v))\nconst round = (v: number) => Math.round(v * 10000) / 10000\n\nfunction fit(box: Box): Box {\n const width = clamp(box.width, 0.02, 1)\n const height = clamp(box.height, 0.015, 1)\n return {\n x: round(clamp(box.x, 0, 1 - width)),\n y: round(clamp(box.y, 0, 1 - height)),\n width: round(width),\n height: round(height),\n }\n}\n\ntype Drag =\n | { kind: 'create'; startX: number; startY: number; box: Box }\n | { kind: 'move' | 'resize'; id: string; startX: number; startY: number; origin: Box }\n\nexport interface SignatureFieldsOverlayProps {\n /** 0-based page index this overlay covers. */\n page: number\n fields: SignatureField[]\n colorOf: (signer: string) => string\n labelOf?: (field: SignatureField) => string\n editable?: boolean\n /** Editing: the type a click or drag on the page creates (null: none, selection only). */\n placing?: SignatureFieldType | null\n selectedId?: string | null\n onSelect?: (id: string | null) => void\n onCreate?: (box: Box) => void\n onChange?: (id: string, box: Box) => void\n onRemove?: (id: string) => void\n /** Signing: the field the signer is on. */\n activeId?: string | null\n onActivate?: (id: string) => void\n /** Signing: what a completed field shows (the adopted signature, the date…). */\n renderContent?: (field: SignatureField) => ReactNode\n}\n\nexport function SignatureFieldsOverlay({\n page,\n fields,\n colorOf,\n labelOf = (f) => FIELD_TYPE_LABELS[f.type],\n editable = false,\n placing = null,\n selectedId = null,\n onSelect,\n onCreate,\n onChange,\n onRemove,\n activeId = null,\n onActivate,\n renderContent,\n}: SignatureFieldsOverlayProps): ReactElement {\n const ref = useRef<HTMLDivElement>(null)\n const [drag, setDrag] = useState<Drag | null>(null)\n const [preview, setPreview] = useState<Box | null>(null)\n const onPage = fields.filter((f) => f.page === page)\n\n const point = (e: PointerEvent) => {\n const r = ref.current!.getBoundingClientRect()\n return { x: (e.clientX - r.left) / r.width, y: (e.clientY - r.top) / r.height }\n }\n\n const startCreate = (e: PointerEvent<HTMLDivElement>) => {\n if (!editable || e.target !== e.currentTarget || e.button !== 0) return\n if (!placing) {\n onSelect?.(null)\n return\n }\n const p = point(e)\n e.currentTarget.setPointerCapture?.(e.pointerId)\n setDrag({ kind: 'create', startX: p.x, startY: p.y, box: { ...p, width: 0, height: 0 } })\n }\n\n const startField = (e: PointerEvent, field: SignatureField, kind: 'move' | 'resize') => {\n if (!editable || e.button !== 0) return\n e.stopPropagation()\n onSelect?.(field.id)\n const p = point(e)\n ref.current?.setPointerCapture?.(e.pointerId)\n setDrag({\n kind,\n id: field.id,\n startX: p.x,\n startY: p.y,\n origin: { x: field.x, y: field.y, width: field.width, height: field.height },\n })\n }\n\n const onMove = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n const dx = p.x - drag.startX\n const dy = p.y - drag.startY\n if (drag.kind === 'create') {\n setPreview({\n x: Math.min(p.x, drag.startX),\n y: Math.min(p.y, drag.startY),\n width: Math.abs(dx),\n height: Math.abs(dy),\n })\n } else if (drag.kind === 'move') {\n setPreview(fit({ ...drag.origin, x: drag.origin.x + dx, y: drag.origin.y + dy }))\n } else {\n setPreview(\n fit({ ...drag.origin, width: drag.origin.width + dx, height: drag.origin.height + dy })\n )\n }\n }\n\n const onUp = (e: PointerEvent) => {\n if (!drag) return\n const p = point(e)\n if (drag.kind === 'create' && placing) {\n const drawn = Math.abs(p.x - drag.startX) > MIN_DRAG && Math.abs(p.y - drag.startY) > MIN_DRAG\n const size = DEFAULT_FIELD_SIZE[placing]\n onCreate?.(\n fit(\n drawn && preview\n ? preview\n : { x: drag.startX - size.width / 2, y: drag.startY - size.height / 2, ...size }\n )\n )\n } else if (drag.kind !== 'create' && preview) {\n onChange?.(drag.id, preview)\n }\n setDrag(null)\n setPreview(null)\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'absolute inset-0 z-10',\n editable && placing && 'cursor-crosshair',\n !editable && 'pointer-events-none'\n )}\n onPointerDown={startCreate}\n onPointerMove={onMove}\n onPointerUp={onUp}\n onPointerCancel={() => {\n setDrag(null)\n setPreview(null)\n }}\n data-testid={`signature-fields-page-${page}`}\n >\n {onPage.map((field) => {\n const dragging = drag && drag.kind !== 'create' && drag.id === field.id && preview\n const box = dragging ? preview! : field\n const color = colorOf(field.signer)\n const selected = editable && selectedId === field.id\n const active = !editable && activeId === field.id\n const content = renderContent?.(field)\n return (\n <div\n key={field.id}\n role={editable ? undefined : 'button'}\n tabIndex={editable ? undefined : 0}\n aria-label={editable ? undefined : `${labelOf(field)}${content ? ' (done)' : ''}`}\n className={cn(\n 'pointer-events-auto absolute flex items-center justify-center overflow-visible rounded-sm border-2 text-[11px] font-medium select-none',\n editable ? 'cursor-move' : 'cursor-pointer',\n active && 'ring-4 ring-offset-1 motion-safe:animate-pulse',\n selected && 'ring-2 ring-offset-1'\n )}\n style={{\n left: `${box.x * 100}%`,\n top: `${box.y * 100}%`,\n width: `${box.width * 100}%`,\n height: `${box.height * 100}%`,\n borderColor: color,\n borderStyle: content ? 'solid' : 'dashed',\n backgroundColor: content ? 'transparent' : `${color}22`,\n color,\n ['--tw-ring-color' as string]: color,\n }}\n onPointerDown={(e) => startField(e, field, 'move')}\n onClick={() => !editable && onActivate?.(field.id)}\n onKeyDown={(e) => {\n if (!editable && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault()\n onActivate?.(field.id)\n }\n if (editable && selected && (e.key === 'Delete' || e.key === 'Backspace')) {\n onRemove?.(field.id)\n }\n }}\n data-testid={`signature-field-${field.id}`}\n data-field-type={field.type}\n data-field-done={content ? 'true' : undefined}\n >\n {content ?? (\n <span className=\"truncate px-1\">\n {labelOf(field)}\n {field.required ? '' : ' (optional)'}\n </span>\n )}\n {selected && (\n <>\n <button\n type=\"button\"\n aria-label=\"Remove field\"\n className=\"absolute -top-2.5 -right-2.5 flex size-5 items-center justify-center rounded-full border bg-background text-foreground shadow\"\n onPointerDown={(e) => e.stopPropagation()}\n onClick={() => onRemove?.(field.id)}\n data-testid=\"signature-field-remove\"\n >\n <X className=\"size-3\" />\n </button>\n <span\n aria-hidden\n className=\"absolute -right-1.5 -bottom-1.5 size-3 cursor-nwse-resize rounded-sm border bg-background\"\n style={{ borderColor: color }}\n onPointerDown={(e) => startField(e, field, 'resize')}\n data-testid=\"signature-field-resize\"\n />\n </>\n )}\n </div>\n )\n })}\n {drag?.kind === 'create' && preview && (\n <div\n className=\"pointer-events-none absolute rounded-sm border-2 border-dashed\"\n style={{\n left: `${preview.x * 100}%`,\n top: `${preview.y * 100}%`,\n width: `${preview.width * 100}%`,\n height: `${preview.height * 100}%`,\n borderColor: '#868e96',\n }}\n />\n )}\n </div>\n )\n}\n","/**\n * Sign a document you were asked to sign, field by field. The viewer takes the signer to each of\n * their fields in turn (page by page, scrolled into view, \"Field 3 of 7\"); they adopt a signature\n * once and click each field to apply it (the date signed and their printed name fill in on\n * adoption). Finishing re-enters the password and signs every field at once; the last signer's\n * signature completes the request and the signed copy becomes the document's next version.\n * Needs a `<DocumentToolsProvider>` with a `user` inside a React Query `QueryClientProvider`.\n */\n\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type FormEvent,\n type ReactElement,\n} from 'react'\nimport { ArrowLeft, ArrowRight, Check } from 'lucide-react'\nimport {\n FIELD_TYPE_LABELS,\n MARK_FIELD_TYPES,\n SigningError,\n fieldsInSigningOrder,\n intentText,\n useDeclineSignatureRequest,\n useDocumentTools,\n useSavedSignature,\n useSignSignatureRequest,\n useStoreSavedSignature,\n type SignRequestSignResponse,\n type SignatureField,\n type SignatureRequest,\n} from '@arbidocs/react/document-tools'\nimport { Button, Input, Label, Progress } from '@arbidocs/react/ui'\nimport { PdfViewer as KitPdfViewer, type PdfViewerProps } from '@arbidocs/react/viewers'\nimport { ModalScaffold } from '../../settings/ModalScaffold'\nimport {\n AdoptSignatureDialog,\n TYPED_SIGNATURE_STYLE,\n type AdoptedMark,\n} from '../AdoptSignatureDialog'\nimport type { DocumentPdfViewer } from './AnnotatedPdfViewer'\nimport { SignatureFieldsOverlay } from './SignatureFieldsOverlay'\n\nexport interface GuidedSigningViewerProps extends Omit<\n PdfViewerProps,\n 'file' | 'renderPageOverlay' | 'currentPage' | 'scrollTrigger'\n> {\n /** The PDF of the request's version (`GET /view?version=`): what is signed. */\n file: Blob\n request: SignatureRequest\n signRequest?: (\n vars: import('@arbidocs/react/document-tools').SignRequestVars\n ) => Promise<SignRequestSignResponse>\n declineRequest?: () => Promise<void>\n sharedFile?: boolean\n /** The signer (usr-*): their fields are the ones walked through. */\n signer: string\n onClose: () => void\n onSigned?: (result: SignRequestSignResponse) => void\n viewer?: DocumentPdfViewer\n}\n\nconst INK = '#1c7ed6'\n\n/** \"19 October 2026\", as the signed PDF writes the date. */\nexport function signingDate(date = new Date()): string {\n return `${date.getDate()} ${date.toLocaleString('en-GB', { month: 'long' })} ${date.getFullYear()}`\n}\n\nexport function GuidedSigningViewer({\n file,\n request,\n signer,\n onClose,\n onSigned,\n signRequest,\n declineRequest,\n sharedFile = false,\n viewer: PdfViewer = KitPdfViewer,\n ...viewerProps\n}: GuidedSigningViewerProps): ReactElement {\n const { user, notify } = useDocumentTools()\n const sign = useSignSignatureRequest()\n const [submitting, setSubmitting] = useState(false)\n const signingPending = submitting || sign.isPending\n const savedSignature = useSavedSignature()\n const storeSignature = useStoreSavedSignature()\n const decline = useDeclineSignatureRequest()\n const mine = useMemo(() => fieldsInSigningOrder(request.fields, signer), [request.fields, signer])\n const [mark, setMark] = useState<AdoptedMark | null>(null)\n const [applied, setApplied] = useState<Set<string>>(new Set())\n const [index, setIndex] = useState(-1)\n const [page, setPage] = useState(1)\n const [trigger, setTrigger] = useState(0)\n const [adoptFor, setAdoptFor] = useState<SignatureField | null>(null)\n const [finishing, setFinishing] = useState(false)\n const [password, setPassword] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [declining, setDeclining] = useState(false)\n const [declineReason, setDeclineReason] = useState('')\n const scrollTimer = useRef<number | undefined>(undefined)\n\n const required = mine.filter((f) => f.required)\n const done = mine.filter((f) => applied.has(f.id)).length\n const ready = required.every((f) => applied.has(f.id))\n const current = index >= 0 ? mine[index] : undefined\n\n useEffect(() => () => window.clearTimeout(scrollTimer.current), [])\n\n const goTo = useCallback(\n (i: number) => {\n const field = mine[i]\n if (!field) return\n setIndex(i)\n setPage(field.page + 1)\n setTrigger((t) => t + 1)\n // Once the page is in view, bring the field itself to the middle of the screen.\n window.clearTimeout(scrollTimer.current)\n scrollTimer.current = window.setTimeout(() => {\n document\n .querySelector(`[data-testid=\"signature-field-${field.id}\"]`)\n ?.scrollIntoView({ block: 'center', behavior: 'smooth' })\n }, 300)\n },\n [mine]\n )\n\n /** The next field still to do after `from` (wrapping), or -1 when every field is done. */\n const nextOpen = (from: number, filled: Set<string>) => {\n for (let k = 1; k <= mine.length; k++) {\n const i = (from + k) % mine.length\n if (!filled.has(mine[i]!.id)) return i\n }\n return -1\n }\n\n const apply = (field: SignatureField, base: Set<string> = applied) => {\n const next = new Set(base)\n next.add(field.id)\n setApplied(next)\n const i = nextOpen(mine.indexOf(field), next)\n if (i >= 0) goTo(i)\n else setIndex(mine.indexOf(field))\n }\n\n const activate = (id: string) => {\n const field = mine.find((f) => f.id === id)\n if (!field) return\n setIndex(mine.indexOf(field))\n if (applied.has(id)) {\n // A second click takes it back off.\n setApplied((a) => {\n const next = new Set(a)\n next.delete(id)\n return next\n })\n return\n }\n if (!mark) {\n setAdoptFor(field)\n return\n }\n apply(field)\n }\n\n const onAdopt = (adopted: AdoptedMark) => {\n setMark(adopted)\n const field = adoptFor\n setAdoptFor(null)\n // The date signed and the printed name need no click: they fill in from what was adopted.\n const filled = new Set(applied)\n for (const f of mine)\n if (f.required && (f.type === 'date' || f.type === 'name')) filled.add(f.id)\n if (field) apply(field, filled)\n else setApplied(filled)\n }\n\n const renderContent = useCallback(\n (field: SignatureField) => {\n if (!applied.has(field.id) || !mark) return null\n const { adopted, signatureUrl, initialsUrl } = mark\n const image =\n field.type === 'signature' ? signatureUrl : field.type === 'initials' ? initialsUrl : null\n if (image) {\n return (\n <img\n src={image}\n alt={field.type === 'signature' ? 'Your signature' : 'Your initials'}\n className=\"h-full w-full object-contain\"\n />\n )\n }\n const text =\n field.type === 'signature'\n ? adopted.name\n : field.type === 'initials'\n ? adopted.initials\n : field.type === 'date'\n ? signingDate()\n : adopted.name\n const typed = MARK_FIELD_TYPES.includes(field.type)\n return (\n <span\n className=\"flex h-full w-full items-center px-1 whitespace-nowrap [container-type:size]\"\n style={typed ? TYPED_SIGNATURE_STYLE : { color: '#1a1a26' }}\n >\n <span style={{ fontSize: typed ? '70cqh' : '62cqh', lineHeight: 1 }}>{text}</span>\n </span>\n )\n },\n [applied, mark]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) => (\n <SignatureFieldsOverlay\n page={pageNumber - 1}\n fields={mine}\n colorOf={() => INK}\n labelOf={(f) =>\n MARK_FIELD_TYPES.includes(f.type)\n ? `Sign: ${FIELD_TYPE_LABELS[f.type]}`\n : FIELD_TYPE_LABELS[f.type]\n }\n activeId={current?.id ?? null}\n onActivate={activate}\n renderContent={renderContent}\n />\n ),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- activate reads the latest state\n [mine, current?.id, renderContent, mark, applied]\n )\n\n const submit = async (e: FormEvent) => {\n e.preventDefault()\n if (!mark || !user?.email) return\n setError(null)\n setSubmitting(true)\n try {\n const result = await (signRequest ?? sign.mutateAsync)({\n request,\n pdfBlob: file,\n email: user.email,\n password,\n adopted: mark.adopted,\n fields: mine.filter((f) => applied.has(f.id)).map((f) => f.id),\n })\n setPassword('')\n setFinishing(false)\n notify(\n result.completed\n ? sharedFile\n ? 'Everyone has signed. The completed PDF is ready to download.'\n : `Signed. Everyone has signed: the signed copy is version ${result.signed_version}.`\n : 'Signed. The others are still to sign; you will see the signed copy when they have.',\n 'success'\n )\n onSigned?.(result)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signing failed')\n if (err instanceof SigningError && err.reason === 'stale') setFinishing(false)\n } finally {\n setSubmitting(false)\n }\n }\n\n const onDecline = async (e: FormEvent) => {\n e.preventDefault()\n try {\n if (declineRequest) await declineRequest()\n else\n await decline.mutateAsync({ requestId: request.external_id, reason: declineReason.trim() })\n setDeclining(false)\n notify('You declined to sign. The sender has been told.', 'info')\n onClose()\n } catch (err) {\n notify(err instanceof Error ? err.message : 'Could not decline', 'error')\n }\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"guided-signing-viewer\">\n <div className=\"space-y-2 border-b border-border px-3 py-2 text-sm\">\n <div className=\"flex flex-wrap items-center gap-2\">\n {index < 0 ? (\n <span className=\"mr-auto\" data-testid=\"guided-signing-intro\">\n You are asked to complete {mine.length} field{mine.length === 1 ? '' : 's'}.\n {request.message ? (\n <span className=\"text-muted-foreground\"> “{request.message}”</span>\n ) : null}\n </span>\n ) : (\n <span className=\"mr-auto font-medium\" data-testid=\"guided-signing-position\">\n Field {index + 1} of {mine.length}: {current ? FIELD_TYPE_LABELS[current.type] : ''}\n {current && !current.required ? ' (optional)' : ''}\n <span className=\"ml-2 font-normal text-muted-foreground\">\n Page {current ? current.page + 1 : ''}\n </span>\n </span>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setDeclining(true)}\n data-testid=\"guided-signing-decline\"\n >\n Decline\n </Button>\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onClose}>\n Close\n </Button>\n {index < 0 ? (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => goTo(0)}\n data-testid=\"guided-signing-start\"\n >\n Start\n <ArrowRight className=\"ml-1 size-4\" aria-hidden />\n </Button>\n ) : (\n <>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.max(0, index - 1))}\n disabled={index === 0}\n aria-label=\"Previous field\"\n >\n <ArrowLeft className=\"size-4\" aria-hidden />\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => goTo(Math.min(mine.length - 1, index + 1))}\n disabled={index >= mine.length - 1}\n aria-label=\"Next field\"\n data-testid=\"guided-signing-next\"\n >\n <ArrowRight className=\"size-4\" aria-hidden />\n </Button>\n {current && !applied.has(current.id) && (\n <Button\n type=\"button\"\n size=\"sm\"\n onClick={() => activate(current.id)}\n data-testid=\"guided-signing-apply\"\n >\n {MARK_FIELD_TYPES.includes(current.type) ? 'Sign here' : 'Fill in'}\n </Button>\n )}\n </>\n )}\n <Button\n type=\"button\"\n size=\"sm\"\n variant={ready ? 'default' : 'outline'}\n disabled={!ready || !mark}\n onClick={() => setFinishing(true)}\n data-testid=\"guided-signing-finish\"\n >\n <Check className=\"mr-1 size-4\" aria-hidden />\n Finish\n </Button>\n </div>\n <div className=\"flex items-center gap-3\">\n <Progress\n value={mine.length ? (done / mine.length) * 100 : 0}\n className=\"h-1.5 max-w-xs\"\n />\n <span className=\"text-muted-foreground\" data-testid=\"guided-signing-progress\">\n {done} of {mine.length} done\n </span>\n </div>\n </div>\n <div className=\"min-h-0 flex-1\">\n <PdfViewer\n {...viewerProps}\n file={file}\n currentPage={page}\n scrollTrigger={trigger}\n renderPageOverlay={renderPageOverlay}\n />\n </div>\n <AdoptSignatureDialog\n open={!!adoptFor}\n onOpenChange={(open) => !open && setAdoptFor(null)}\n defaultName={user?.name ?? ''}\n onAdopt={onAdopt}\n saved={savedSignature.data ?? null}\n onSave={async (signature) => void (await storeSignature.mutateAsync(signature))}\n />\n <ModalScaffold\n open={declining}\n onOpenChange={(open) => !decline.isPending && setDeclining(open)}\n title=\"Decline to sign\"\n description=\"The request ends for everyone and the sender is told. The document is unchanged.\"\n showDescription\n testId=\"guided-signing-decline-dialog\"\n >\n <form onSubmit={onDecline}>\n <ModalScaffold.Body>\n {!sharedFile && (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-decline-reason\">Reason (optional)</Label>\n <Input\n id=\"guided-decline-reason\"\n value={declineReason}\n maxLength={1000}\n onChange={(e) => setDeclineReason(e.target.value)}\n />\n </div>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button type=\"button\" variant=\"outline\" onClick={() => setDeclining(false)}>\n Cancel\n </Button>\n <Button type=\"submit\" variant=\"destructive\" disabled={decline.isPending}>\n Decline\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n <ModalScaffold\n open={finishing}\n onOpenChange={(open) => !signingPending && setFinishing(open)}\n title=\"Sign the document\"\n description=\"Confirm with your password. Your signature is applied to every field you completed.\"\n showDescription\n testId=\"guided-signing-confirm\"\n >\n <form onSubmit={submit}>\n <ModalScaffold.Body>\n {mark && (\n <blockquote className=\"border-l-2 border-border pl-3 text-sm text-muted-foreground\">\n {intentText({ name: mark.adopted.name })}\n </blockquote>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"guided-sign-password\">Password</Label>\n <Input\n id=\"guided-sign-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n data-testid=\"guided-signing-password\"\n required\n />\n </div>\n {error && (\n <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"guided-signing-error\">\n {error}\n </p>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => setFinishing(false)}\n disabled={signingPending}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={signingPending || !password}\n data-testid=\"guided-signing-submit\"\n >\n {signingPending ? 'Signing…' : 'Sign'}\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n </div>\n )\n}\n","import { useCallback, useEffect, useState } from 'react'\nimport {\n fileShareBytes,\n fileShareSigningRequest,\n useFileShare,\n useFileSharePdf,\n useFileShares,\n signFileShare,\n useDocumentTools,\n type FileShare,\n} from '@arbidocs/react/document-tools'\nimport { Button } from '@arbidocs/react/ui'\nimport { PdfViewer } from '@arbidocs/react/viewers'\nimport { GuidedSigningViewer } from './GuidedSigningViewer'\n\nexport function SharedFileView({\n shareId,\n onPublish,\n}: {\n shareId: string\n onPublish?: (share: FileShare) => Promise<void>\n}) {\n const { client, user, deploymentDomain, saveFile } = useDocumentTools()\n const [signing, setSigning] = useState(false)\n const [busy, setBusy] = useState(false)\n const [actionError, setActionError] = useState('')\n const detail = useFileShare(client, shareId, signing)\n const share = detail.data\n const pdf = useFileSharePdf(client, shareId, share)\n const action = useCallback(\n async (run: () => Promise<unknown>) => {\n setBusy(true)\n setActionError('')\n try {\n await run()\n await detail.refetch()\n } catch (e) {\n setActionError(e instanceof Error ? e.message : 'The action failed')\n } finally {\n setBusy(false)\n }\n },\n [detail]\n )\n useEffect(() => {\n if (share && !share.can_sign) setSigning(false)\n }, [share])\n if (detail.isPending)\n return (\n <p role=\"status\" className=\"p-6\">\n Opening shared file…\n </p>\n )\n if (detail.error)\n return (\n <p role=\"alert\" className=\"p-6\">\n {detail.error.message}\n </p>\n )\n if (!share) return null\n if (signing && pdf.data && user?.email)\n return (\n <GuidedSigningViewer\n file={pdf.data}\n request={fileShareSigningRequest(share)}\n signer={user.email.toLowerCase()}\n sharedFile\n onClose={() => setSigning(false)}\n onSigned={() => {\n setSigning(false)\n void detail.refetch()\n }}\n signRequest={(vars) => signFileShare(client, deploymentDomain ?? '', vars)}\n declineRequest={async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/decline', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not decline the request')\n setSigning(false)\n await detail.refetch()\n }}\n />\n )\n const download = (kind: 'original' | 'signed') =>\n action(async () => {\n const blob = await fileShareBytes(client, shareId, kind)\n saveFile(\n blob,\n kind === 'signed'\n ? share.file_name.replace(/\\.[^.]+$/, '') + ' (signed).pdf'\n : share.file_name\n )\n })\n return (\n <main className=\"flex h-full min-h-0 flex-col\" data-testid=\"shared-file-view\">\n <header className=\"space-y-3 border-b p-4\">\n <a href=\"/shared-files\" className=\"text-sm text-primary underline\">\n Shared files\n </a>\n <div className=\"flex flex-wrap items-center gap-3\">\n <h1 className=\"mr-auto text-lg font-semibold\">\n {share.file_name} · version {share.version}\n </h1>\n <span data-testid=\"file-share-status\">\n {share.status === 'completed'\n ? 'Everyone has signed'\n : share.status === 'signing'\n ? 'Waiting for signatures'\n : share.status}\n </span>\n {share.can_sign && (\n <Button\n disabled={!pdf.data}\n onClick={() => setSigning(true)}\n data-testid=\"file-share-review-sign\"\n >\n Review and sign\n </Button>\n )}\n <Button variant=\"outline\" disabled={busy} onClick={() => void download('original')}>\n Download original\n </Button>\n {share.status === 'completed' && (\n <Button\n disabled={busy}\n onClick={() => void download('signed')}\n data-testid=\"file-share-download-signed\"\n >\n Download signed PDF\n </Button>\n )}\n {share.owner && share.status === 'completed' && !share.published_version && onPublish && (\n <Button\n disabled={busy}\n onClick={() => void action(() => onPublish(share))}\n data-testid=\"file-share-publish\"\n >\n Save signed PDF as a new document version\n </Button>\n )}\n {share.published_version && (\n <span data-testid=\"file-share-published\">\n Saved as version {share.published_version}\n </span>\n )}\n {share.owner && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.POST('/v1/file-shares/{share_id}/resend', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not resend the invitation')\n })\n }\n >\n Renew expired access and resend email\n </Button>\n )}\n {share.owner && share.status !== 'revoked' && (\n <Button\n variant=\"outline\"\n disabled={busy}\n onClick={() =>\n void action(async () => {\n const result = await client.DELETE('/v1/file-shares/{share_id}', {\n params: { path: { share_id: shareId } },\n })\n if (result.error) throw new Error('Could not revoke access')\n window.location.assign('/shared-files')\n })\n }\n >\n Revoke access\n </Button>\n )}\n </div>\n <p className=\"text-sm text-muted-foreground\">\n Access covers this file version only. It does not include its workspace or version\n history.\n </p>\n {share.message && <p>{share.message}</p>}\n <ul className=\"flex flex-wrap gap-x-5 gap-y-1 text-sm\" data-testid=\"file-share-recipients\">\n {share.recipients.map((r) => (\n <li key={r.email}>\n {r.email} ·{' '}\n {r.permission === 'sign'\n ? r.status === 'signed'\n ? 'Signed'\n : r.status === 'declined'\n ? 'Declined'\n : 'Signature pending'\n : 'Can view'}\n {share.owner &&\n ` · ${r.delivery_status === 'accepted' ? 'Email accepted for delivery' : r.delivery_status === 'failed' ? 'Email delivery failed' : 'Email queued'}`}\n {r.expires_at && ` · expires ${new Date(r.expires_at).toLocaleString()}`}\n </li>\n ))}\n </ul>\n {actionError && (\n <p role=\"alert\" className=\"text-destructive\">\n {actionError}\n </p>\n )}\n </header>\n <div className=\"min-h-0 flex-1\">\n {pdf.data ? (\n <PdfViewer file={pdf.data} />\n ) : pdf.error ? (\n <p role=\"alert\" className=\"p-4\">\n {pdf.error.message}\n </p>\n ) : (\n <p className=\"p-4\">\n {share.can_preview ? 'Loading PDF…' : 'Download the original file to open it.'}\n </p>\n )}\n </div>\n </main>\n )\n}\n\nexport function SharedFilesInbox() {\n const { client } = useDocumentTools()\n const listed = useFileShares(client)\n return (\n <main className=\"mx-auto max-w-3xl p-6\">\n <a href=\"/\" className=\"text-primary underline\">\n Back to ARBI\n </a>\n <h1 className=\"my-5 text-2xl font-semibold\">Shared files</h1>\n {listed.error && <p role=\"alert\">{listed.error.message}</p>}\n {listed.isPending && <p role=\"status\">Loading…</p>}\n {listed.data?.length === 0 && <p>No files have been shared with this account.</p>}\n <ul className=\"space-y-3\">\n {listed.data?.map((s: FileShare) => (\n <li key={s.external_id} className=\"rounded border p-4\">\n <a className=\"text-primary underline\" href={`/shared-files/${s.external_id}`}>\n {s.file_name} · version {s.version}\n </a>\n <p className=\"text-sm text-muted-foreground\">\n {s.owner ? 'Shared by you' : 'Shared with you'} · {s.status}\n </p>\n </li>\n ))}\n </ul>\n </main>\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkNML42O7Q_cjs = require('./chunk-NML42O7Q.cjs');
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var artifacts = require('@arbidocs/react/artifacts');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -52,7 +52,7 @@ function NativeDocxComparison({
|
|
|
52
52
|
if (!documentId)
|
|
53
53
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "native-docx-error", role: "status", children: "Comparing Word documents\u2026" });
|
|
54
54
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
55
|
-
|
|
55
|
+
chunkNML42O7Q_cjs.NativeDocxEditor,
|
|
56
56
|
{
|
|
57
57
|
adapter,
|
|
58
58
|
documentId,
|
|
@@ -63,5 +63,5 @@ function NativeDocxComparison({
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
exports.NativeDocxComparison = NativeDocxComparison;
|
|
66
|
-
//# sourceMappingURL=chunk-
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
66
|
+
//# sourceMappingURL=chunk-4S34OHJX.cjs.map
|
|
67
|
+
//# sourceMappingURL=chunk-4S34OHJX.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/docx/NativeDocxComparison.tsx"],"names":["parseVersionRef","useRef","useState","useEffect","error","jsxs","jsx","NativeDocxEditor"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/docx/NativeDocxComparison.tsx"],"names":["parseVersionRef","useRef","useState","useEffect","error","jsxs","jsx","NativeDocxEditor"],"mappings":";;;;;;;AAaA,SAAS,YAAA,CAAa,QAAgB,SAAA,EAAoC;AACxE,EAAA,MAAM,IAAA,GAAOA,0BAAgB,MAAM,CAAA;AACnC,EAAA,MAAM,OAAA,GAAUA,0BAAgB,SAAS,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,IAAI,eAAA,CAAgB,EAAE,WAAA,EAAa,KAAK,KAAA,EAAO,cAAA,EAAgB,OAAA,CAAQ,KAAA,EAAO,CAAA;AAC5F,EAAA,IAAI,IAAA,CAAK,SAAS,KAAA,CAAM,GAAA,CAAI,gBAAgB,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAChE,EAAA,IAAI,OAAA,CAAQ,SAAS,KAAA,CAAM,GAAA,CAAI,mBAAmB,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAC,CAAA;AACzE,EAAA,OAAO,KAAA;AACT;AAGO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,MAAM,IAAA,GAAOC,YAAA,CAAO,EAAE,OAAA,EAAS,YAAY,CAAA;AAC3C,EAAA,IAAA,CAAK,OAAA,GAAU,EAAE,OAAA,EAAS,UAAA,EAAW;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIC,eAAS,EAAE,CAAA;AAC/C,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,CAAC,CAAA;AACxC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,aAAA,CAAc,EAAE,CAAA;AAChB,IAAA,QAAA,CAAS,EAAE,CAAA;AACX,IAAA,KAAK,IAAA,CAAK,OAAA,CAAQ,OAAA,CACf,OAAA,CAAQ,CAAA,SAAA,EAAY,aAAa,MAAA,EAAQ,SAAS,CAAC,CAAA,CAAA,EAAI,EAAE,MAAA,EAAQ,QAAQ,CAAA,CACzE,IAAA,CAAK,CAAC,QAAA,KAAa,QAAA,CAAS,MAAM,CAAA,CAClC,IAAA,CAAK,CAAC,MAAA,KAAwC;AAC7C,MAAA,IAAI,CAAC,MAAA,CAAO,eAAA,EAAiB,MAAM,IAAI,MAAM,4CAA4C,CAAA;AACzF,MAAA,IAAI,CAAC,SAAA,EAAW;AACd,QAAA,aAAA,CAAc,OAAO,eAAe,CAAA;AACpC,QAAA,KAAK,OAAA,CAAQ,OAAA,CAAQ,IAAA,CAAK,OAAA,CAAQ,UAAA,GAAa,OAAO,eAAe,CAAC,CAAA,CAAE,KAAA,CAAM,MAAM;AAAA,QAAC,CAAC,CAAA;AAAA,MACxF;AAAA,IACF,CAAC,CAAA,CACA,KAAA,CAAM,CAACC,MAAAA,KAAU;AAChB,MAAA,IAAI,CAAC,WAAW,QAAA,CAASA,MAAAA,YAAiB,QAAQA,MAAAA,CAAM,OAAA,GAAU,MAAA,CAAOA,MAAK,CAAC,CAAA;AAAA,IACjF,CAAC,CAAA;AACH,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,GAAY,IAAA;AAAA,IACd,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,SAAA,EAAW,OAAO,CAAC,CAAA;AAC/B,EAAA,IAAI,KAAA;AACF,IAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,MAAK,OAAA,EACtC,QAAA,EAAA;AAAA,sBAAAC,cAAA,CAAC,OAAG,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,sBACVA,cAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,MAAM,UAAA,CAAW,CAAC,KAAA,KAAU,KAAA,GAAQ,CAAC,CAAA,EAAG,QAAA,EAAA,kBAAA,EAAgB;AAAA,KAAA,EAC3E,CAAA;AAEJ,EAAA,IAAI,CAAC,UAAA;AACH,IAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EAAoB,IAAA,EAAK,UAAS,QAAA,EAAA,gCAAA,EAEjD,CAAA;AAEJ,EAAA,uBACEA,cAAA;AAAA,IAACC,kCAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA;AAAA,MACA,OAAO,CAAA,EAAG,KAAA,CAAM,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAA,eAAA;AAAA,KAAA;AAAA,IAHlC;AAAA,GAIP;AAEJ","file":"chunk-4S34OHJX.cjs","sourcesContent":["import { useEffect, useRef, useState } from 'react'\nimport { parseVersionRef } from '@arbidocs/react/artifacts'\nimport { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface NativeDocxComparisonProps {\n adapter: NativeDocxAdapter\n baseId: string\n revisedId: string\n title: string\n onCompared?: (documentId: string) => void | Promise<void>\n}\n\n/** A `doc-…@v{n}` side names an older version: the endpoint takes its document and version apart. */\nfunction redlineQuery(baseId: string, revisedId: string): URLSearchParams {\n const base = parseVersionRef(baseId)\n const revised = parseVersionRef(revisedId)\n const query = new URLSearchParams({ base_ext_id: base.docId, revised_ext_id: revised.docId })\n if (base.version) query.set('base_version', String(base.version))\n if (revised.version) query.set('revised_version', String(revised.version))\n return query\n}\n\n/** Word comparison through the host's authenticated transport and LibreOffice service. */\nexport function NativeDocxComparison({\n adapter,\n baseId,\n revisedId,\n title,\n onCompared,\n}: NativeDocxComparisonProps) {\n const host = useRef({ adapter, onCompared })\n host.current = { adapter, onCompared }\n const [documentId, setDocumentId] = useState('')\n const [error, setError] = useState('')\n const [attempt, setAttempt] = useState(0)\n useEffect(() => {\n let cancelled = false\n setDocumentId('')\n setError('')\n void host.current.adapter\n .request(`/redline?${redlineQuery(baseId, revisedId)}`, { method: 'POST' })\n .then((response) => response.json())\n .then((result: { document_ext_id: string }) => {\n if (!result.document_ext_id) throw new Error('Comparison did not return a Word document.')\n if (!cancelled) {\n setDocumentId(result.document_ext_id)\n void Promise.resolve(host.current.onCompared?.(result.document_ext_id)).catch(() => {})\n }\n })\n .catch((error) => {\n if (!cancelled) setError(error instanceof Error ? error.message : String(error))\n })\n return () => {\n cancelled = true\n }\n }, [baseId, revisedId, attempt])\n if (error)\n return (\n <div className=\"native-docx-error\" role=\"alert\">\n <p>{error}</p>\n <button onClick={() => setAttempt((value) => value + 1)}>Retry comparison</button>\n </div>\n )\n if (!documentId)\n return (\n <div className=\"native-docx-error\" role=\"status\">\n Comparing Word documents…\n </div>\n )\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={`${title.replace(/\\.[^.]+$/, '')} (redline).docx`}\n />\n )\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkNML42O7Q_cjs = require('./chunk-NML42O7Q.cjs');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
|
|
7
7
|
function StreamedWordArtifact({
|
|
@@ -15,7 +15,7 @@ function StreamedWordArtifact({
|
|
|
15
15
|
}) {
|
|
16
16
|
if (!busy && documentId) {
|
|
17
17
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18
|
-
|
|
18
|
+
chunkNML42O7Q_cjs.NativeDocxEditor,
|
|
19
19
|
{
|
|
20
20
|
adapter,
|
|
21
21
|
documentId,
|
|
@@ -26,7 +26,7 @@ function StreamedWordArtifact({
|
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
28
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29
|
-
|
|
29
|
+
chunkNML42O7Q_cjs.NativeDocxEditor,
|
|
30
30
|
{
|
|
31
31
|
adapter,
|
|
32
32
|
documentId: "stream-preview",
|
|
@@ -39,5 +39,5 @@ function StreamedWordArtifact({
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
exports.StreamedWordArtifact = StreamedWordArtifact;
|
|
42
|
-
//# sourceMappingURL=chunk-
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
42
|
+
//# sourceMappingURL=chunk-5H37UWWS.cjs.map
|
|
43
|
+
//# sourceMappingURL=chunk-5H37UWWS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":["jsx","NativeDocxEditor"],"mappings":";;;;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACEA,cAAA;AAAA,MAACC,kCAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACED,cAAA;AAAA,IAACC,kCAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/docx/StreamedWordArtifact.tsx"],"names":["jsx","NativeDocxEditor"],"mappings":";;;;;AAmBO,SAAS,oBAAA,CAAqB;AAAA,EACnC,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA8B;AAC5B,EAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,IAAA,uBACEA,cAAA;AAAA,MAACC,kCAAA;AAAA,MAAA;AAAA,QAEC,OAAA;AAAA,QACA,UAAA;AAAA,QACA,KAAA;AAAA,QACA;AAAA,OAAA;AAAA,MAJK;AAAA,KAKP;AAAA,EAEJ;AACA,EAAA,uBACED,cAAA;AAAA,IAACC,kCAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,UAAA,EAAW,gBAAA;AAAA,MACX,KAAA;AAAA,MACA,YAAA,EAAa,EAAA;AAAA,MACb,MAAA,EAAQ,EAAE,OAAA,EAAS,IAAA,EAAM,KAAA;AAAM,KAAA;AAAA,IAL3B;AAAA,GAMN;AAEJ","file":"chunk-5H37UWWS.cjs","sourcesContent":["import { NativeDocxEditor, type NativeDocxAdapter } from './NativeDocxEditor'\n\nexport interface StreamedWordArtifactProps {\n adapter: NativeDocxAdapter\n /** Streamed Markdown, shown as a read-only preview while the draft is generated. */\n content: string\n title: string\n busy: boolean\n error?: string | null\n /** The DOCX draft the server stored for this generation (`doc-…`), once known. */\n documentId?: string\n onSaved?: (documentId: string) => void\n}\n\n/**\n * One drafting surface for an AI document draft. The server stores every draft as DOCX, so\n * this component never creates a document: it previews the streamed Markdown until generation\n * ends and the stored DOCX is known, then opens that DOCX in the live collaborative editor.\n */\nexport function StreamedWordArtifact({\n adapter,\n content,\n title,\n busy,\n error,\n documentId,\n onSaved,\n}: StreamedWordArtifactProps) {\n if (!busy && documentId) {\n return (\n <NativeDocxEditor\n key={documentId}\n adapter={adapter}\n documentId={documentId}\n title={title}\n onSaved={onSaved}\n />\n )\n }\n return (\n <NativeDocxEditor\n key=\"stream-preview\"\n adapter={adapter}\n documentId=\"stream-preview\"\n title={title}\n draftContent=\"\"\n stream={{ content, busy, error }}\n />\n )\n}\n"]}
|