@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.
Files changed (174) hide show
  1. package/dist/{ConnectedCallDock-IG3C4OMG.cjs → ConnectedCallDock-R3SJLBDY.cjs} +19 -19
  2. package/dist/{ConnectedCallDock-IG3C4OMG.cjs.map → ConnectedCallDock-R3SJLBDY.cjs.map} +1 -1
  3. package/dist/{ConnectedCallDock-WDY2XCMM.js → ConnectedCallDock-W6MVKME2.js} +10 -10
  4. package/dist/{ConnectedCallDock-WDY2XCMM.js.map → ConnectedCallDock-W6MVKME2.js.map} +1 -1
  5. package/dist/{ConnectedCallRoom-C7MVV2RP.js → ConnectedCallRoom-C6PP45LE.js} +10 -10
  6. package/dist/{ConnectedCallRoom-C7MVV2RP.js.map → ConnectedCallRoom-C6PP45LE.js.map} +1 -1
  7. package/dist/{ConnectedCallRoom-G2LDEGTQ.cjs → ConnectedCallRoom-EKC7RFYF.cjs} +11 -11
  8. package/dist/{ConnectedCallRoom-G2LDEGTQ.cjs.map → ConnectedCallRoom-EKC7RFYF.cjs.map} +1 -1
  9. package/dist/{ConnectedNativeDocxComparison-SPNYR7H3.cjs → ConnectedNativeDocxComparison-E2QVYVVI.cjs} +11 -11
  10. package/dist/{ConnectedNativeDocxComparison-SPNYR7H3.cjs.map → ConnectedNativeDocxComparison-E2QVYVVI.cjs.map} +1 -1
  11. package/dist/{ConnectedNativeDocxComparison-OGA52USP.js → ConnectedNativeDocxComparison-KPAQMOIF.js} +10 -10
  12. package/dist/{ConnectedNativeDocxComparison-OGA52USP.js.map → ConnectedNativeDocxComparison-KPAQMOIF.js.map} +1 -1
  13. package/dist/{ConnectedNativeDocxEditor-G3PUIFFB.js → ConnectedNativeDocxEditor-5PF7J3CP.js} +9 -9
  14. package/dist/{ConnectedNativeDocxEditor-G3PUIFFB.js.map → ConnectedNativeDocxEditor-5PF7J3CP.js.map} +1 -1
  15. package/dist/{ConnectedNativeDocxEditor-NSVZKH4R.cjs → ConnectedNativeDocxEditor-XV3K77ZB.cjs} +11 -11
  16. package/dist/{ConnectedNativeDocxEditor-NSVZKH4R.cjs.map → ConnectedNativeDocxEditor-XV3K77ZB.cjs.map} +1 -1
  17. package/dist/{ConnectedStreamedWordArtifact-RZDZ2GPW.cjs → ConnectedStreamedWordArtifact-3N5CIXZU.cjs} +11 -11
  18. package/dist/ConnectedStreamedWordArtifact-3N5CIXZU.cjs.map +1 -0
  19. package/dist/{ConnectedStreamedWordArtifact-S5PDRDTU.js → ConnectedStreamedWordArtifact-L45BLBRH.js} +10 -10
  20. package/dist/ConnectedStreamedWordArtifact-L45BLBRH.js.map +1 -0
  21. package/dist/NativeDocxEditor-ATPL3Q3O.js +1 -1
  22. package/dist/NativeDocxEditor-R4EIHWNL.cjs +1 -1
  23. package/dist/{WorkspaceTableView-GGY7YGSB.js → WorkspaceTableView-EZAFYKAJ.js} +8 -8
  24. package/dist/{WorkspaceTableView-GGY7YGSB.js.map → WorkspaceTableView-EZAFYKAJ.js.map} +1 -1
  25. package/dist/{WorkspaceTableView-OSXU4UTC.cjs → WorkspaceTableView-MQXVE3JB.cjs} +10 -10
  26. package/dist/{WorkspaceTableView-OSXU4UTC.cjs.map → WorkspaceTableView-MQXVE3JB.cjs.map} +1 -1
  27. package/dist/agents/index.cjs +330 -330
  28. package/dist/agents/index.js +8 -8
  29. package/dist/calls/index.cjs +135 -135
  30. package/dist/calls/index.js +11 -11
  31. package/dist/chat/index.cjs +80 -80
  32. package/dist/chat/index.js +3 -3
  33. package/dist/{chunk-YAJSGPGV.js → chunk-2WKAUDZZ.js} +3 -3
  34. package/dist/{chunk-YAJSGPGV.js.map → chunk-2WKAUDZZ.js.map} +1 -1
  35. package/dist/chunk-2YOVK524.js +174 -0
  36. package/dist/chunk-2YOVK524.js.map +1 -0
  37. package/dist/{chunk-MKDUGIEH.cjs → chunk-32W6STZ2.cjs} +5 -5
  38. package/dist/{chunk-MKDUGIEH.cjs.map → chunk-32W6STZ2.cjs.map} +1 -1
  39. package/dist/{chunk-W4WP3EA6.js → chunk-3SKLWW5D.js} +5 -5
  40. package/dist/{chunk-W4WP3EA6.js.map → chunk-3SKLWW5D.js.map} +1 -1
  41. package/dist/{chunk-3Y5SJU72.cjs → chunk-4KMYUM7Q.cjs} +5 -5
  42. package/dist/{chunk-3Y5SJU72.cjs.map → chunk-4KMYUM7Q.cjs.map} +1 -1
  43. package/dist/{chunk-NACDM6WA.js → chunk-4MQKXHMC.js} +3 -3
  44. package/dist/{chunk-NACDM6WA.js.map → chunk-4MQKXHMC.js.map} +1 -1
  45. package/dist/{chunk-FDT3MITL.cjs → chunk-54RSCDE6.cjs} +4 -4
  46. package/dist/{chunk-FDT3MITL.cjs.map → chunk-54RSCDE6.cjs.map} +1 -1
  47. package/dist/{chunk-CWAETM33.js → chunk-6NSGSEYS.js} +6 -6
  48. package/dist/{chunk-CWAETM33.js.map → chunk-6NSGSEYS.js.map} +1 -1
  49. package/dist/{chunk-7LUQLBF4.js → chunk-6SPVTPUQ.js} +6 -6
  50. package/dist/{chunk-7LUQLBF4.js.map → chunk-6SPVTPUQ.js.map} +1 -1
  51. package/dist/{chunk-3DSL7NKO.cjs → chunk-6TE3QA3Y.cjs} +10 -10
  52. package/dist/{chunk-3DSL7NKO.cjs.map → chunk-6TE3QA3Y.cjs.map} +1 -1
  53. package/dist/{chunk-CKPF2Z5Q.js → chunk-BKNHCORH.js} +3 -3
  54. package/dist/{chunk-CKPF2Z5Q.js.map → chunk-BKNHCORH.js.map} +1 -1
  55. package/dist/{chunk-75JMOB5W.cjs → chunk-BYCGAAV5.cjs} +3 -3
  56. package/dist/{chunk-75JMOB5W.cjs.map → chunk-BYCGAAV5.cjs.map} +1 -1
  57. package/dist/{chunk-Z6MKHM6V.cjs → chunk-DAEDRTIN.cjs} +4 -4
  58. package/dist/{chunk-Z6MKHM6V.cjs.map → chunk-DAEDRTIN.cjs.map} +1 -1
  59. package/dist/{chunk-SRXBYESO.cjs → chunk-DP4GMPI3.cjs} +4 -4
  60. package/dist/{chunk-SRXBYESO.cjs.map → chunk-DP4GMPI3.cjs.map} +1 -1
  61. package/dist/{chunk-VHJHY7TT.js → chunk-ECERC6TI.js} +3 -3
  62. package/dist/{chunk-VHJHY7TT.js.map → chunk-ECERC6TI.js.map} +1 -1
  63. package/dist/{chunk-5E2DYLHS.js → chunk-ELH375VC.js} +3 -3
  64. package/dist/{chunk-5E2DYLHS.js.map → chunk-ELH375VC.js.map} +1 -1
  65. package/dist/{chunk-LZSEMUFE.js → chunk-FJCSJLTM.js} +4 -4
  66. package/dist/{chunk-LZSEMUFE.js.map → chunk-FJCSJLTM.js.map} +1 -1
  67. package/dist/{chunk-I6PA4IJL.js → chunk-FT22URKT.js} +3 -3
  68. package/dist/{chunk-I6PA4IJL.js.map → chunk-FT22URKT.js.map} +1 -1
  69. package/dist/{chunk-6BBZP4ES.cjs → chunk-HJQLVCIK.cjs} +3 -3
  70. package/dist/{chunk-6BBZP4ES.cjs.map → chunk-HJQLVCIK.cjs.map} +1 -1
  71. package/dist/{chunk-OW6TTTG2.cjs → chunk-I7GQO43N.cjs} +5 -5
  72. package/dist/{chunk-OW6TTTG2.cjs.map → chunk-I7GQO43N.cjs.map} +1 -1
  73. package/dist/{chunk-3H4UW7A2.js → chunk-IFE4MZXD.js} +3 -3
  74. package/dist/{chunk-3H4UW7A2.js.map → chunk-IFE4MZXD.js.map} +1 -1
  75. package/dist/chunk-JH6JTI76.cjs +176 -0
  76. package/dist/chunk-JH6JTI76.cjs.map +1 -0
  77. package/dist/{chunk-WCHMVSAJ.cjs → chunk-L22BJYHL.cjs} +75 -75
  78. package/dist/{chunk-WCHMVSAJ.cjs.map → chunk-L22BJYHL.cjs.map} +1 -1
  79. package/dist/{chunk-JNOMGRKB.cjs → chunk-LHWKA2XI.cjs} +3 -3
  80. package/dist/{chunk-JNOMGRKB.cjs.map → chunk-LHWKA2XI.cjs.map} +1 -1
  81. package/dist/{chunk-SNS4UCT4.cjs → chunk-LPUQHIVP.cjs} +245 -5
  82. package/dist/chunk-LPUQHIVP.cjs.map +1 -0
  83. package/dist/{chunk-UQNMMLSF.js → chunk-LSKTOCKN.js} +4 -4
  84. package/dist/{chunk-UQNMMLSF.js.map → chunk-LSKTOCKN.js.map} +1 -1
  85. package/dist/{chunk-U4RYF7EJ.cjs → chunk-NG6AGVZ4.cjs} +9 -9
  86. package/dist/{chunk-U4RYF7EJ.cjs.map → chunk-NG6AGVZ4.cjs.map} +1 -1
  87. package/dist/{chunk-EFFHKEC4.js → chunk-NHY4AKA4.js} +4 -4
  88. package/dist/{chunk-EFFHKEC4.js.map → chunk-NHY4AKA4.js.map} +1 -1
  89. package/dist/{chunk-IV3NSLGS.cjs → chunk-NJ72FUE2.cjs} +7 -7
  90. package/dist/{chunk-IV3NSLGS.cjs.map → chunk-NJ72FUE2.cjs.map} +1 -1
  91. package/dist/{chunk-FGGACOGH.js → chunk-NNPFFPBF.js} +3 -3
  92. package/dist/{chunk-FGGACOGH.js.map → chunk-NNPFFPBF.js.map} +1 -1
  93. package/dist/{chunk-HKWXKSIE.cjs → chunk-PFJIGGNN.cjs} +50 -50
  94. package/dist/{chunk-HKWXKSIE.cjs.map → chunk-PFJIGGNN.cjs.map} +1 -1
  95. package/dist/{chunk-3ITJZ5WG.js → chunk-PISYMKGS.js} +4 -4
  96. package/dist/{chunk-3ITJZ5WG.js.map → chunk-PISYMKGS.js.map} +1 -1
  97. package/dist/{chunk-4EJLS6ZW.js → chunk-QH4OY5GP.js} +4 -4
  98. package/dist/{chunk-4EJLS6ZW.js.map → chunk-QH4OY5GP.js.map} +1 -1
  99. package/dist/{chunk-GDMSL7SN.cjs → chunk-QIY3ZHD2.cjs} +4 -4
  100. package/dist/{chunk-GDMSL7SN.cjs.map → chunk-QIY3ZHD2.cjs.map} +1 -1
  101. package/dist/{chunk-GGVTPFUB.cjs → chunk-R5YS2UZ3.cjs} +3 -3
  102. package/dist/{chunk-GGVTPFUB.cjs.map → chunk-R5YS2UZ3.cjs.map} +1 -1
  103. package/dist/{chunk-MDJRXT5Y.js → chunk-RC2REIM4.js} +3 -3
  104. package/dist/{chunk-MDJRXT5Y.js.map → chunk-RC2REIM4.js.map} +1 -1
  105. package/dist/{chunk-IVLWXDEJ.cjs → chunk-RPWWMOYP.cjs} +15 -15
  106. package/dist/{chunk-IVLWXDEJ.cjs.map → chunk-RPWWMOYP.cjs.map} +1 -1
  107. package/dist/{chunk-PUHOMKCN.js → chunk-S4KPVLHO.js} +5 -5
  108. package/dist/{chunk-PUHOMKCN.js.map → chunk-S4KPVLHO.js.map} +1 -1
  109. package/dist/{chunk-GZWSXTUU.js → chunk-TYOZWK4G.js} +3 -3
  110. package/dist/{chunk-GZWSXTUU.js.map → chunk-TYOZWK4G.js.map} +1 -1
  111. package/dist/{chunk-W3X2EA66.js → chunk-VMMRK4SR.js} +3 -3
  112. package/dist/{chunk-W3X2EA66.js.map → chunk-VMMRK4SR.js.map} +1 -1
  113. package/dist/{chunk-PY2GJIOY.js → chunk-VX5I35HZ.js} +3 -3
  114. package/dist/{chunk-PY2GJIOY.js.map → chunk-VX5I35HZ.js.map} +1 -1
  115. package/dist/{chunk-ORCIUPXA.cjs → chunk-WB4B6TSW.cjs} +4 -4
  116. package/dist/{chunk-ORCIUPXA.cjs.map → chunk-WB4B6TSW.cjs.map} +1 -1
  117. package/dist/{chunk-Y3ZEQVBP.cjs → chunk-WT2AGQYY.cjs} +4 -4
  118. package/dist/{chunk-Y3ZEQVBP.cjs.map → chunk-WT2AGQYY.cjs.map} +1 -1
  119. package/dist/{chunk-JOB2LSZO.js → chunk-XHJAYCPQ.js} +244 -7
  120. package/dist/chunk-XHJAYCPQ.js.map +1 -0
  121. package/dist/{chunk-DBY5MDKA.js → chunk-XSA46YJV.js} +3 -3
  122. package/dist/{chunk-DBY5MDKA.js.map → chunk-XSA46YJV.js.map} +1 -1
  123. package/dist/{chunk-UOOHVAXU.cjs → chunk-XUKQQCOK.cjs} +4 -4
  124. package/dist/{chunk-UOOHVAXU.cjs.map → chunk-XUKQQCOK.cjs.map} +1 -1
  125. package/dist/{chunk-DWZXSPMB.cjs → chunk-ZAVEMQ37.cjs} +3 -3
  126. package/dist/{chunk-DWZXSPMB.cjs.map → chunk-ZAVEMQ37.cjs.map} +1 -1
  127. package/dist/{chunk-POBX5U3F.cjs → chunk-ZOUVLJLV.cjs} +20 -20
  128. package/dist/{chunk-POBX5U3F.cjs.map → chunk-ZOUVLJLV.cjs.map} +1 -1
  129. package/dist/collaboration/index.cjs +68 -68
  130. package/dist/collaboration/index.js +2 -2
  131. package/dist/connect/docx.cjs +13 -13
  132. package/dist/connect/docx.js +9 -9
  133. package/dist/connect/index.cjs +957 -1000
  134. package/dist/connect/index.cjs.map +1 -1
  135. package/dist/connect/index.d.ts +0 -1
  136. package/dist/connect/index.js +34 -76
  137. package/dist/connect/index.js.map +1 -1
  138. package/dist/connect/viewer.cjs +76 -76
  139. package/dist/connect/viewer.js +14 -14
  140. package/dist/document-tools/index.cjs +29 -29
  141. package/dist/document-tools/index.js +4 -4
  142. package/dist/docx/index.cjs +1 -1
  143. package/dist/docx/index.js +1 -1
  144. package/dist/facts/index.cjs +58 -58
  145. package/dist/facts/index.js +6 -6
  146. package/dist/files/index.cjs +224 -224
  147. package/dist/files/index.js +4 -4
  148. package/dist/home/index.cjs +30 -30
  149. package/dist/home/index.js +5 -5
  150. package/dist/index.cjs +591 -591
  151. package/dist/index.js +16 -16
  152. package/dist/retrieval/index.cjs +1 -1
  153. package/dist/retrieval/index.js +1 -1
  154. package/dist/settings/index.cjs +160 -160
  155. package/dist/settings/index.js +5 -5
  156. package/dist/shell/index.cjs +2 -2
  157. package/dist/shell/index.js +2 -2
  158. package/dist/site/index.cjs +5 -5
  159. package/dist/site/index.js +1 -1
  160. package/dist/studio/index.cjs +7 -7
  161. package/dist/studio/index.js +6 -6
  162. package/dist/workflow-canvas/index.cjs +21 -21
  163. package/dist/workflow-canvas/index.js +8 -8
  164. package/node_modules/@arbidocs/coedit/package.json +1 -1
  165. package/package.json +5 -5
  166. package/dist/ConnectedStreamedWordArtifact-RZDZ2GPW.cjs.map +0 -1
  167. package/dist/ConnectedStreamedWordArtifact-S5PDRDTU.js.map +0 -1
  168. package/dist/chunk-2XLVE2XD.cjs +0 -416
  169. package/dist/chunk-2XLVE2XD.cjs.map +0 -1
  170. package/dist/chunk-JOB2LSZO.js.map +0 -1
  171. package/dist/chunk-PQU6LE7U.js +0 -411
  172. package/dist/chunk-PQU6LE7U.js.map +0 -1
  173. package/dist/chunk-SNS4UCT4.cjs.map +0 -1
  174. 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"]}