@arbidocs/blocks 0.5.9 → 0.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedCallDock-IG3C4OMG.cjs → ConnectedCallDock-R3SJLBDY.cjs} +19 -19
- package/dist/{ConnectedCallDock-IG3C4OMG.cjs.map → ConnectedCallDock-R3SJLBDY.cjs.map} +1 -1
- package/dist/{ConnectedCallDock-WDY2XCMM.js → ConnectedCallDock-W6MVKME2.js} +10 -10
- package/dist/{ConnectedCallDock-WDY2XCMM.js.map → ConnectedCallDock-W6MVKME2.js.map} +1 -1
- package/dist/{ConnectedCallRoom-C7MVV2RP.js → ConnectedCallRoom-C6PP45LE.js} +10 -10
- package/dist/{ConnectedCallRoom-C7MVV2RP.js.map → ConnectedCallRoom-C6PP45LE.js.map} +1 -1
- package/dist/{ConnectedCallRoom-G2LDEGTQ.cjs → ConnectedCallRoom-EKC7RFYF.cjs} +11 -11
- package/dist/{ConnectedCallRoom-G2LDEGTQ.cjs.map → ConnectedCallRoom-EKC7RFYF.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-SPNYR7H3.cjs → ConnectedNativeDocxComparison-E2QVYVVI.cjs} +11 -11
- package/dist/{ConnectedNativeDocxComparison-SPNYR7H3.cjs.map → ConnectedNativeDocxComparison-E2QVYVVI.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-OGA52USP.js → ConnectedNativeDocxComparison-KPAQMOIF.js} +10 -10
- package/dist/{ConnectedNativeDocxComparison-OGA52USP.js.map → ConnectedNativeDocxComparison-KPAQMOIF.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-G3PUIFFB.js → ConnectedNativeDocxEditor-5PF7J3CP.js} +9 -9
- package/dist/{ConnectedNativeDocxEditor-G3PUIFFB.js.map → ConnectedNativeDocxEditor-5PF7J3CP.js.map} +1 -1
- package/dist/{ConnectedNativeDocxEditor-NSVZKH4R.cjs → ConnectedNativeDocxEditor-XV3K77ZB.cjs} +11 -11
- package/dist/{ConnectedNativeDocxEditor-NSVZKH4R.cjs.map → ConnectedNativeDocxEditor-XV3K77ZB.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-RZDZ2GPW.cjs → ConnectedStreamedWordArtifact-3N5CIXZU.cjs} +11 -11
- package/dist/ConnectedStreamedWordArtifact-3N5CIXZU.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-S5PDRDTU.js → ConnectedStreamedWordArtifact-L45BLBRH.js} +10 -10
- package/dist/ConnectedStreamedWordArtifact-L45BLBRH.js.map +1 -0
- package/dist/NativeDocxEditor-ATPL3Q3O.js +1 -1
- package/dist/NativeDocxEditor-R4EIHWNL.cjs +1 -1
- package/dist/{WorkspaceTableView-GGY7YGSB.js → WorkspaceTableView-EZAFYKAJ.js} +8 -8
- package/dist/{WorkspaceTableView-GGY7YGSB.js.map → WorkspaceTableView-EZAFYKAJ.js.map} +1 -1
- package/dist/{WorkspaceTableView-OSXU4UTC.cjs → WorkspaceTableView-MQXVE3JB.cjs} +10 -10
- package/dist/{WorkspaceTableView-OSXU4UTC.cjs.map → WorkspaceTableView-MQXVE3JB.cjs.map} +1 -1
- package/dist/agents/index.cjs +330 -330
- package/dist/agents/index.js +8 -8
- package/dist/calls/index.cjs +135 -135
- package/dist/calls/index.js +11 -11
- package/dist/chat/index.cjs +80 -80
- package/dist/chat/index.js +3 -3
- package/dist/{chunk-YAJSGPGV.js → chunk-2WKAUDZZ.js} +3 -3
- package/dist/{chunk-YAJSGPGV.js.map → chunk-2WKAUDZZ.js.map} +1 -1
- package/dist/chunk-2YOVK524.js +174 -0
- package/dist/chunk-2YOVK524.js.map +1 -0
- package/dist/{chunk-MKDUGIEH.cjs → chunk-32W6STZ2.cjs} +5 -5
- package/dist/{chunk-MKDUGIEH.cjs.map → chunk-32W6STZ2.cjs.map} +1 -1
- package/dist/{chunk-W4WP3EA6.js → chunk-3SKLWW5D.js} +5 -5
- package/dist/{chunk-W4WP3EA6.js.map → chunk-3SKLWW5D.js.map} +1 -1
- package/dist/{chunk-3Y5SJU72.cjs → chunk-4KMYUM7Q.cjs} +5 -5
- package/dist/{chunk-3Y5SJU72.cjs.map → chunk-4KMYUM7Q.cjs.map} +1 -1
- package/dist/{chunk-NACDM6WA.js → chunk-4MQKXHMC.js} +3 -3
- package/dist/{chunk-NACDM6WA.js.map → chunk-4MQKXHMC.js.map} +1 -1
- package/dist/{chunk-FDT3MITL.cjs → chunk-54RSCDE6.cjs} +4 -4
- package/dist/{chunk-FDT3MITL.cjs.map → chunk-54RSCDE6.cjs.map} +1 -1
- package/dist/{chunk-CWAETM33.js → chunk-6NSGSEYS.js} +6 -6
- package/dist/{chunk-CWAETM33.js.map → chunk-6NSGSEYS.js.map} +1 -1
- package/dist/{chunk-7LUQLBF4.js → chunk-6SPVTPUQ.js} +6 -6
- package/dist/{chunk-7LUQLBF4.js.map → chunk-6SPVTPUQ.js.map} +1 -1
- package/dist/{chunk-3DSL7NKO.cjs → chunk-6TE3QA3Y.cjs} +10 -10
- package/dist/{chunk-3DSL7NKO.cjs.map → chunk-6TE3QA3Y.cjs.map} +1 -1
- package/dist/{chunk-CKPF2Z5Q.js → chunk-BKNHCORH.js} +3 -3
- package/dist/{chunk-CKPF2Z5Q.js.map → chunk-BKNHCORH.js.map} +1 -1
- package/dist/{chunk-75JMOB5W.cjs → chunk-BYCGAAV5.cjs} +3 -3
- package/dist/{chunk-75JMOB5W.cjs.map → chunk-BYCGAAV5.cjs.map} +1 -1
- package/dist/{chunk-Z6MKHM6V.cjs → chunk-DAEDRTIN.cjs} +4 -4
- package/dist/{chunk-Z6MKHM6V.cjs.map → chunk-DAEDRTIN.cjs.map} +1 -1
- package/dist/{chunk-SRXBYESO.cjs → chunk-DP4GMPI3.cjs} +4 -4
- package/dist/{chunk-SRXBYESO.cjs.map → chunk-DP4GMPI3.cjs.map} +1 -1
- package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
- package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
- package/dist/{chunk-5E2DYLHS.js → chunk-ELH375VC.js} +3 -3
- package/dist/{chunk-5E2DYLHS.js.map → chunk-ELH375VC.js.map} +1 -1
- package/dist/{chunk-LZSEMUFE.js → chunk-FJCSJLTM.js} +4 -4
- package/dist/{chunk-LZSEMUFE.js.map → chunk-FJCSJLTM.js.map} +1 -1
- package/dist/{chunk-I6PA4IJL.js → chunk-FT22URKT.js} +3 -3
- package/dist/{chunk-I6PA4IJL.js.map → chunk-FT22URKT.js.map} +1 -1
- package/dist/{chunk-6BBZP4ES.cjs → chunk-HJQLVCIK.cjs} +3 -3
- package/dist/{chunk-6BBZP4ES.cjs.map → chunk-HJQLVCIK.cjs.map} +1 -1
- package/dist/{chunk-OW6TTTG2.cjs → chunk-I7GQO43N.cjs} +5 -5
- package/dist/{chunk-OW6TTTG2.cjs.map → chunk-I7GQO43N.cjs.map} +1 -1
- package/dist/{chunk-3H4UW7A2.js → chunk-IFE4MZXD.js} +3 -3
- package/dist/{chunk-3H4UW7A2.js.map → chunk-IFE4MZXD.js.map} +1 -1
- package/dist/chunk-JH6JTI76.cjs +176 -0
- package/dist/chunk-JH6JTI76.cjs.map +1 -0
- package/dist/{chunk-WCHMVSAJ.cjs → chunk-L22BJYHL.cjs} +75 -75
- package/dist/{chunk-WCHMVSAJ.cjs.map → chunk-L22BJYHL.cjs.map} +1 -1
- package/dist/{chunk-JNOMGRKB.cjs → chunk-LHWKA2XI.cjs} +3 -3
- package/dist/{chunk-JNOMGRKB.cjs.map → chunk-LHWKA2XI.cjs.map} +1 -1
- package/dist/{chunk-SNS4UCT4.cjs → chunk-LPUQHIVP.cjs} +245 -5
- package/dist/chunk-LPUQHIVP.cjs.map +1 -0
- package/dist/{chunk-UQNMMLSF.js → chunk-LSKTOCKN.js} +4 -4
- package/dist/{chunk-UQNMMLSF.js.map → chunk-LSKTOCKN.js.map} +1 -1
- package/dist/{chunk-U4RYF7EJ.cjs → chunk-NG6AGVZ4.cjs} +9 -9
- package/dist/{chunk-U4RYF7EJ.cjs.map → chunk-NG6AGVZ4.cjs.map} +1 -1
- package/dist/{chunk-EFFHKEC4.js → chunk-NHY4AKA4.js} +4 -4
- package/dist/{chunk-EFFHKEC4.js.map → chunk-NHY4AKA4.js.map} +1 -1
- package/dist/{chunk-IV3NSLGS.cjs → chunk-NJ72FUE2.cjs} +7 -7
- package/dist/{chunk-IV3NSLGS.cjs.map → chunk-NJ72FUE2.cjs.map} +1 -1
- package/dist/{chunk-FGGACOGH.js → chunk-NNPFFPBF.js} +3 -3
- package/dist/{chunk-FGGACOGH.js.map → chunk-NNPFFPBF.js.map} +1 -1
- package/dist/{chunk-HKWXKSIE.cjs → chunk-PFJIGGNN.cjs} +50 -50
- package/dist/{chunk-HKWXKSIE.cjs.map → chunk-PFJIGGNN.cjs.map} +1 -1
- package/dist/{chunk-3ITJZ5WG.js → chunk-PISYMKGS.js} +4 -4
- package/dist/{chunk-3ITJZ5WG.js.map → chunk-PISYMKGS.js.map} +1 -1
- package/dist/{chunk-4EJLS6ZW.js → chunk-QH4OY5GP.js} +4 -4
- package/dist/{chunk-4EJLS6ZW.js.map → chunk-QH4OY5GP.js.map} +1 -1
- package/dist/{chunk-GDMSL7SN.cjs → chunk-QIY3ZHD2.cjs} +4 -4
- package/dist/{chunk-GDMSL7SN.cjs.map → chunk-QIY3ZHD2.cjs.map} +1 -1
- package/dist/{chunk-GGVTPFUB.cjs → chunk-R5YS2UZ3.cjs} +3 -3
- package/dist/{chunk-GGVTPFUB.cjs.map → chunk-R5YS2UZ3.cjs.map} +1 -1
- package/dist/{chunk-MDJRXT5Y.js → chunk-RC2REIM4.js} +3 -3
- package/dist/{chunk-MDJRXT5Y.js.map → chunk-RC2REIM4.js.map} +1 -1
- package/dist/{chunk-IVLWXDEJ.cjs → chunk-RPWWMOYP.cjs} +15 -15
- package/dist/{chunk-IVLWXDEJ.cjs.map → chunk-RPWWMOYP.cjs.map} +1 -1
- package/dist/{chunk-PUHOMKCN.js → chunk-S4KPVLHO.js} +5 -5
- package/dist/{chunk-PUHOMKCN.js.map → chunk-S4KPVLHO.js.map} +1 -1
- package/dist/{chunk-GZWSXTUU.js → chunk-TYOZWK4G.js} +3 -3
- package/dist/{chunk-GZWSXTUU.js.map → chunk-TYOZWK4G.js.map} +1 -1
- package/dist/{chunk-W3X2EA66.js → chunk-VMMRK4SR.js} +3 -3
- package/dist/{chunk-W3X2EA66.js.map → chunk-VMMRK4SR.js.map} +1 -1
- package/dist/{chunk-PY2GJIOY.js → chunk-VX5I35HZ.js} +3 -3
- package/dist/{chunk-PY2GJIOY.js.map → chunk-VX5I35HZ.js.map} +1 -1
- package/dist/{chunk-ORCIUPXA.cjs → chunk-WB4B6TSW.cjs} +4 -4
- package/dist/{chunk-ORCIUPXA.cjs.map → chunk-WB4B6TSW.cjs.map} +1 -1
- package/dist/{chunk-Y3ZEQVBP.cjs → chunk-WT2AGQYY.cjs} +4 -4
- package/dist/{chunk-Y3ZEQVBP.cjs.map → chunk-WT2AGQYY.cjs.map} +1 -1
- package/dist/{chunk-JOB2LSZO.js → chunk-XHJAYCPQ.js} +244 -7
- package/dist/chunk-XHJAYCPQ.js.map +1 -0
- package/dist/{chunk-DBY5MDKA.js → chunk-XSA46YJV.js} +3 -3
- package/dist/{chunk-DBY5MDKA.js.map → chunk-XSA46YJV.js.map} +1 -1
- package/dist/{chunk-UOOHVAXU.cjs → chunk-XUKQQCOK.cjs} +4 -4
- package/dist/{chunk-UOOHVAXU.cjs.map → chunk-XUKQQCOK.cjs.map} +1 -1
- package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
- package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
- package/dist/{chunk-POBX5U3F.cjs → chunk-ZOUVLJLV.cjs} +20 -20
- package/dist/{chunk-POBX5U3F.cjs.map → chunk-ZOUVLJLV.cjs.map} +1 -1
- package/dist/collaboration/index.cjs +68 -68
- package/dist/collaboration/index.js +2 -2
- package/dist/connect/docx.cjs +13 -13
- package/dist/connect/docx.js +9 -9
- package/dist/connect/index.cjs +957 -1000
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.d.ts +0 -1
- package/dist/connect/index.js +34 -76
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +76 -76
- package/dist/connect/viewer.js +14 -14
- package/dist/document-tools/index.cjs +29 -29
- package/dist/document-tools/index.js +4 -4
- package/dist/docx/index.cjs +1 -1
- package/dist/docx/index.js +1 -1
- package/dist/facts/index.cjs +58 -58
- package/dist/facts/index.js +6 -6
- package/dist/files/index.cjs +224 -224
- package/dist/files/index.js +4 -4
- package/dist/home/index.cjs +30 -30
- package/dist/home/index.js +5 -5
- package/dist/index.cjs +591 -591
- package/dist/index.js +16 -16
- package/dist/retrieval/index.cjs +1 -1
- package/dist/retrieval/index.js +1 -1
- package/dist/settings/index.cjs +160 -160
- package/dist/settings/index.js +5 -5
- package/dist/shell/index.cjs +2 -2
- package/dist/shell/index.js +2 -2
- package/dist/site/index.cjs +5 -5
- package/dist/site/index.js +1 -1
- package/dist/studio/index.cjs +7 -7
- package/dist/studio/index.js +6 -6
- package/dist/workflow-canvas/index.cjs +21 -21
- package/dist/workflow-canvas/index.js +8 -8
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedStreamedWordArtifact-RZDZ2GPW.cjs.map +0 -1
- package/dist/ConnectedStreamedWordArtifact-S5PDRDTU.js.map +0 -1
- package/dist/chunk-2XLVE2XD.cjs +0 -416
- package/dist/chunk-2XLVE2XD.cjs.map +0 -1
- package/dist/chunk-JOB2LSZO.js.map +0 -1
- package/dist/chunk-PQU6LE7U.js +0 -411
- package/dist/chunk-PQU6LE7U.js.map +0 -1
- package/dist/chunk-SNS4UCT4.cjs.map +0 -1
- package/dist/connection/viewer/ConnectedSignatureVerifyPage.d.ts +0 -24
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var chunkULWRNGGE_cjs = require('./chunk-ULWRNGGE.cjs');
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var documentTools = require('@arbidocs/react/document-tools');
|
|
7
|
+
var ui = require('@arbidocs/react/ui');
|
|
8
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
+
|
|
10
|
+
function SignDocumentDialog({
|
|
11
|
+
open,
|
|
12
|
+
onOpenChange,
|
|
13
|
+
documentId,
|
|
14
|
+
pdfBlob,
|
|
15
|
+
version,
|
|
16
|
+
appearance,
|
|
17
|
+
onOpenCurrent
|
|
18
|
+
}) {
|
|
19
|
+
const { user, notify, openDocument, emailDocument, certificateUrl } = documentTools.useDocumentTools();
|
|
20
|
+
const [name, setName] = react.useState(() => user?.name ?? "");
|
|
21
|
+
const [includeDate, setIncludeDate] = react.useState(false);
|
|
22
|
+
const [password, setPassword] = react.useState("");
|
|
23
|
+
const [error, setError] = react.useState(null);
|
|
24
|
+
const [isStale, setIsStale] = react.useState(false);
|
|
25
|
+
const sign = documentTools.useSignDocument();
|
|
26
|
+
const openCurrent = onOpenCurrent ?? (openDocument ? () => {
|
|
27
|
+
onOpenChange(false);
|
|
28
|
+
openDocument(documentId);
|
|
29
|
+
} : void 0);
|
|
30
|
+
const signer = { name };
|
|
31
|
+
const handleSubmit = async (e) => {
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
if (!user?.email) return;
|
|
34
|
+
setError(null);
|
|
35
|
+
setIsStale(false);
|
|
36
|
+
try {
|
|
37
|
+
const result = await sign.mutateAsync({
|
|
38
|
+
documentId,
|
|
39
|
+
pdfBlob,
|
|
40
|
+
version,
|
|
41
|
+
email: user.email,
|
|
42
|
+
password,
|
|
43
|
+
signer,
|
|
44
|
+
appearance,
|
|
45
|
+
includeDate
|
|
46
|
+
});
|
|
47
|
+
const signedId = result.doc_ext_id;
|
|
48
|
+
const certificate = documentTools.certificateLink(result.signature, certificateUrl);
|
|
49
|
+
notify(
|
|
50
|
+
`Signed. The signed copy is saved as version ${result.version}.`,
|
|
51
|
+
"success",
|
|
52
|
+
emailDocument ? { action: { label: "Email it", onClick: () => emailDocument(signedId) } } : {
|
|
53
|
+
action: {
|
|
54
|
+
label: "View certificate",
|
|
55
|
+
onClick: () => {
|
|
56
|
+
window.open(certificate, "_blank", "noopener,noreferrer");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
setPassword("");
|
|
62
|
+
onOpenChange(false);
|
|
63
|
+
openDocument?.(signedId);
|
|
64
|
+
} catch (err) {
|
|
65
|
+
setError(err instanceof Error ? err.message : "Signing failed");
|
|
66
|
+
setIsStale(err instanceof documentTools.SigningError && err.reason === "stale");
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
+
chunkULWRNGGE_cjs.ModalScaffold,
|
|
71
|
+
{
|
|
72
|
+
open,
|
|
73
|
+
onOpenChange: (next) => !sign.isPending && onOpenChange(next),
|
|
74
|
+
title: "Sign document",
|
|
75
|
+
description: "Sign this document electronically. The signed copy is saved as a new version.",
|
|
76
|
+
showDescription: true,
|
|
77
|
+
testId: "sign-document-dialog",
|
|
78
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, children: [
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalScaffold.Body, { children: [
|
|
80
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
81
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "sign-name", children: "Name" }),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
83
|
+
ui.Input,
|
|
84
|
+
{
|
|
85
|
+
id: "sign-name",
|
|
86
|
+
value: name,
|
|
87
|
+
onChange: (e) => setName(e.target.value),
|
|
88
|
+
"data-testid": "sign-document-name-input",
|
|
89
|
+
required: true
|
|
90
|
+
}
|
|
91
|
+
)
|
|
92
|
+
] }),
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 pointer-coarse:min-h-11", children: [
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
+
ui.Checkbox,
|
|
96
|
+
{
|
|
97
|
+
id: "sign-include-date",
|
|
98
|
+
checked: includeDate,
|
|
99
|
+
onCheckedChange: (checked) => setIncludeDate(checked === true),
|
|
100
|
+
"data-testid": "sign-document-include-date"
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "sign-include-date", className: "font-normal", children: "Include date" })
|
|
104
|
+
] }),
|
|
105
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", "data-testid": "sign-document-appearance-note", children: [
|
|
106
|
+
"Only your signature",
|
|
107
|
+
includeDate ? " and the date appear" : " appears",
|
|
108
|
+
" on the page. Anyone can click it to check it."
|
|
109
|
+
] }),
|
|
110
|
+
name.trim() && /* @__PURE__ */ jsxRuntime.jsx(
|
|
111
|
+
"blockquote",
|
|
112
|
+
{
|
|
113
|
+
className: "border-l-2 border-border pl-3 text-sm text-muted-foreground",
|
|
114
|
+
"data-testid": "sign-document-intent",
|
|
115
|
+
children: documentTools.intentText(signer)
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
119
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "sign-password", children: "Password" }),
|
|
120
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
121
|
+
ui.Input,
|
|
122
|
+
{
|
|
123
|
+
id: "sign-password",
|
|
124
|
+
type: "password",
|
|
125
|
+
autoComplete: "current-password",
|
|
126
|
+
value: password,
|
|
127
|
+
onChange: (e) => setPassword(e.target.value),
|
|
128
|
+
"data-testid": "sign-document-password-input",
|
|
129
|
+
required: true
|
|
130
|
+
}
|
|
131
|
+
)
|
|
132
|
+
] }),
|
|
133
|
+
error && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", role: "alert", children: [
|
|
134
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-text", "data-testid": "sign-document-error", children: error }),
|
|
135
|
+
isStale && openCurrent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
136
|
+
ui.Button,
|
|
137
|
+
{
|
|
138
|
+
type: "button",
|
|
139
|
+
variant: "outline",
|
|
140
|
+
size: "sm",
|
|
141
|
+
onClick: openCurrent,
|
|
142
|
+
"data-testid": "sign-document-open-current-button",
|
|
143
|
+
children: "Open the current version"
|
|
144
|
+
}
|
|
145
|
+
)
|
|
146
|
+
] })
|
|
147
|
+
] }),
|
|
148
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalScaffold.Footer, { children: [
|
|
149
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
150
|
+
ui.Button,
|
|
151
|
+
{
|
|
152
|
+
type: "button",
|
|
153
|
+
variant: "outline",
|
|
154
|
+
onClick: () => onOpenChange(false),
|
|
155
|
+
disabled: sign.isPending,
|
|
156
|
+
children: "Cancel"
|
|
157
|
+
}
|
|
158
|
+
),
|
|
159
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
160
|
+
ui.Button,
|
|
161
|
+
{
|
|
162
|
+
type: "submit",
|
|
163
|
+
disabled: sign.isPending || !name.trim() || !password,
|
|
164
|
+
"data-testid": "sign-document-submit-button",
|
|
165
|
+
children: sign.isPending ? "Signing..." : "Sign"
|
|
166
|
+
}
|
|
167
|
+
)
|
|
168
|
+
] })
|
|
169
|
+
] })
|
|
170
|
+
}
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
exports.SignDocumentDialog = SignDocumentDialog;
|
|
175
|
+
//# sourceMappingURL=chunk-JH6JTI76.cjs.map
|
|
176
|
+
//# sourceMappingURL=chunk-JH6JTI76.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/document-tools/SignDocumentDialog.tsx"],"names":["useDocumentTools","useState","useSignDocument","certificateLink","SigningError","jsx","ModalScaffold","jsxs","Label","Input","Checkbox","Button"],"mappings":"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","file":"chunk-JH6JTI76.cjs","sourcesContent":["/**\n * Sign a document electronically: confirm the name, choose whether the date is shown, read the\n * statement of intent, re-enter the password. Only the signature (and the date, if ticked) is drawn\n * on the page; a role, a firm or a place go on as ordinary annotation text. Anyone can click the\n * signature to check it. The signed copy is saved as a new version and opened, with an offer to\n * email it when the host gives the tools an `emailDocument`. Needs a `<DocumentToolsProvider>` with\n * a `user` (its email) and a `deploymentDomain`, inside a React Query `QueryClientProvider`.\n */\n\nimport { useState, type FormEvent, type ReactElement } from 'react'\nimport {\n certificateLink,\n intentText,\n SigningError,\n useDocumentTools,\n useSignDocument,\n type SignatureAppearance,\n} from '@arbidocs/react/document-tools'\nimport { Button, Checkbox, Input, Label } from '@arbidocs/react/ui'\nimport { ModalScaffold } from '../settings/ModalScaffold'\n\nexport interface SignDocumentDialogProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n documentId: string\n /** The PDF the viewer is showing: `GET /view?version=`, never the original's download. */\n pdfBlob: Blob\n /** The version `pdfBlob` is of; omitted = the current version. */\n version?: number\n /** Where the signature goes; omitted = bottom of the last page. */\n appearance?: SignatureAppearance\n /**\n * Open the current version when the one shown has been superseded (only the current version can\n * be signed). Default: the host's `openDocument` on the document, after the dialog closes.\n */\n onOpenCurrent?: () => void\n}\n\nexport function SignDocumentDialog({\n open,\n onOpenChange,\n documentId,\n pdfBlob,\n version,\n appearance,\n onOpenCurrent,\n}: SignDocumentDialogProps): ReactElement {\n const { user, notify, openDocument, emailDocument, certificateUrl } = useDocumentTools()\n const [name, setName] = useState(() => user?.name ?? '')\n const [includeDate, setIncludeDate] = useState(false)\n const [password, setPassword] = useState('')\n const [error, setError] = useState<string | null>(null)\n const [isStale, setIsStale] = useState(false)\n const sign = useSignDocument()\n const openCurrent =\n onOpenCurrent ??\n (openDocument\n ? () => {\n onOpenChange(false)\n openDocument(documentId)\n }\n : undefined)\n\n const signer = { name }\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n if (!user?.email) return\n setError(null)\n setIsStale(false)\n try {\n const result = await sign.mutateAsync({\n documentId,\n pdfBlob,\n version,\n email: user.email,\n password,\n signer,\n appearance,\n includeDate,\n })\n const signedId = result.doc_ext_id\n const certificate = certificateLink(result.signature, certificateUrl)\n notify(\n `Signed. The signed copy is saved as version ${result.version}.`,\n 'success',\n emailDocument\n ? { action: { label: 'Email it', onClick: () => emailDocument(signedId) } }\n : {\n action: {\n label: 'View certificate',\n onClick: () => {\n window.open(certificate, '_blank', 'noopener,noreferrer')\n },\n },\n }\n )\n setPassword('')\n onOpenChange(false)\n openDocument?.(signedId)\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Signing failed')\n setIsStale(err instanceof SigningError && err.reason === 'stale')\n }\n }\n\n return (\n <ModalScaffold\n open={open}\n onOpenChange={(next) => !sign.isPending && onOpenChange(next)}\n title=\"Sign document\"\n description=\"Sign this document electronically. The signed copy is saved as a new version.\"\n showDescription\n testId=\"sign-document-dialog\"\n >\n <form onSubmit={handleSubmit}>\n <ModalScaffold.Body>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"sign-name\">Name</Label>\n <Input\n id=\"sign-name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n data-testid=\"sign-document-name-input\"\n required\n />\n </div>\n <div className=\"flex items-center gap-2 pointer-coarse:min-h-11\">\n <Checkbox\n id=\"sign-include-date\"\n checked={includeDate}\n onCheckedChange={(checked) => setIncludeDate(checked === true)}\n data-testid=\"sign-document-include-date\"\n />\n <Label htmlFor=\"sign-include-date\" className=\"font-normal\">\n Include date\n </Label>\n </div>\n <p className=\"text-sm text-muted-foreground\" data-testid=\"sign-document-appearance-note\">\n Only your signature{includeDate ? ' and the date appear' : ' appears'} on the page.\n Anyone can click it to check it.\n </p>\n {name.trim() && (\n <blockquote\n className=\"border-l-2 border-border pl-3 text-sm text-muted-foreground\"\n data-testid=\"sign-document-intent\"\n >\n {intentText(signer)}\n </blockquote>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"sign-password\">Password</Label>\n <Input\n id=\"sign-password\"\n type=\"password\"\n autoComplete=\"current-password\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n data-testid=\"sign-document-password-input\"\n required\n />\n </div>\n {error && (\n <div className=\"space-y-2\" role=\"alert\">\n <p className=\"text-sm text-red-text\" data-testid=\"sign-document-error\">\n {error}\n </p>\n {isStale && openCurrent && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={openCurrent}\n data-testid=\"sign-document-open-current-button\"\n >\n Open the current version\n </Button>\n )}\n </div>\n )}\n </ModalScaffold.Body>\n <ModalScaffold.Footer>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={sign.isPending}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n disabled={sign.isPending || !name.trim() || !password}\n data-testid=\"sign-document-submit-button\"\n >\n {sign.isPending ? 'Signing...' : 'Sign'}\n </Button>\n </ModalScaffold.Footer>\n </form>\n </ModalScaffold>\n )\n}\n"]}
|