@arbidocs/blocks 0.4.75 → 0.4.77

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 (113) hide show
  1. package/dist/agents/index.cjs +341 -253
  2. package/dist/agents/index.js +3 -3
  3. package/dist/agents/tasks/TaskActivityTimeline.d.ts +1 -1
  4. package/dist/agents/tasks/WorkflowThreadStrip.d.ts +44 -1
  5. package/dist/agents/tasks/index.d.ts +2 -1
  6. package/dist/agents/tasks/linkedRuns.d.ts +31 -0
  7. package/dist/agents/workflows/SchemaForm.d.ts +6 -1
  8. package/dist/agents/workflows/StepParts.d.ts +109 -0
  9. package/dist/agents/workflows/WorkflowRunner.d.ts +11 -2
  10. package/dist/agents/workflows/index.d.ts +3 -2
  11. package/dist/agents/workflows/planSteps.d.ts +10 -1
  12. package/dist/agents/workflows/run.d.ts +61 -8
  13. package/dist/agents/workflows/types.d.ts +160 -4
  14. package/dist/agents/workflows/useWorkflowPreview.d.ts +2 -1
  15. package/dist/agents/workflows/useWorkflowView.d.ts +19 -0
  16. package/dist/chat/ChatPage.d.ts +1 -1
  17. package/dist/chat/WorkflowStepChip.d.ts +24 -0
  18. package/dist/chat/chat-page-types.d.ts +4 -0
  19. package/dist/chat/index.cjs +130 -122
  20. package/dist/chat/index.d.ts +1 -0
  21. package/dist/chat/index.js +2 -2
  22. package/dist/{chunk-YWYVIQ7T.js → chunk-34UW6XUQ.js} +948 -38
  23. package/dist/chunk-34UW6XUQ.js.map +1 -0
  24. package/dist/{chunk-P2RBE3FD.cjs → chunk-3XR3IEGU.cjs} +965 -35
  25. package/dist/chunk-3XR3IEGU.cjs.map +1 -0
  26. package/dist/{chunk-ZWA7UUZL.cjs → chunk-7YUFMNFW.cjs} +2 -54
  27. package/dist/chunk-7YUFMNFW.cjs.map +1 -0
  28. package/dist/chunk-A24C6BNA.js +92 -0
  29. package/dist/chunk-A24C6BNA.js.map +1 -0
  30. package/dist/chunk-AINNADMT.cjs +62 -0
  31. package/dist/chunk-AINNADMT.cjs.map +1 -0
  32. package/dist/{chunk-7CVF3DK2.cjs → chunk-EKIUMNCN.cjs} +5 -5
  33. package/dist/{chunk-7CVF3DK2.cjs.map → chunk-EKIUMNCN.cjs.map} +1 -1
  34. package/dist/chunk-FE4ULGOR.js +151 -0
  35. package/dist/chunk-FE4ULGOR.js.map +1 -0
  36. package/dist/chunk-FT5FFXSJ.js +60 -0
  37. package/dist/chunk-FT5FFXSJ.js.map +1 -0
  38. package/dist/{chunk-HITAN7JF.cjs → chunk-GTXOV7IJ.cjs} +4 -4
  39. package/dist/{chunk-HITAN7JF.cjs.map → chunk-GTXOV7IJ.cjs.map} +1 -1
  40. package/dist/{chunk-LT2UORRG.js → chunk-HEVVT6IT.js} +205 -38
  41. package/dist/chunk-HEVVT6IT.js.map +1 -0
  42. package/dist/{chunk-IPGKTUF7.cjs → chunk-HOD6OM7L.cjs} +68 -3
  43. package/dist/chunk-HOD6OM7L.cjs.map +1 -0
  44. package/dist/{chunk-F4LUD3YC.cjs → chunk-JFUN4D7D.cjs} +229 -60
  45. package/dist/chunk-JFUN4D7D.cjs.map +1 -0
  46. package/dist/{chunk-UIWLDSTF.js → chunk-NIP5BOP7.js} +68 -5
  47. package/dist/chunk-NIP5BOP7.js.map +1 -0
  48. package/dist/{chunk-MK6NJQGF.js → chunk-OEM5ARVM.js} +3 -3
  49. package/dist/{chunk-MK6NJQGF.js.map → chunk-OEM5ARVM.js.map} +1 -1
  50. package/dist/{chunk-5EBGRG3X.js → chunk-OPA2Y6YZ.js} +3 -54
  51. package/dist/chunk-OPA2Y6YZ.js.map +1 -0
  52. package/dist/chunk-TZR36PPP.cjs +95 -0
  53. package/dist/chunk-TZR36PPP.cjs.map +1 -0
  54. package/dist/{chunk-WJEKRSPH.js → chunk-UEU23PTW.js} +3 -3
  55. package/dist/{chunk-WJEKRSPH.js.map → chunk-UEU23PTW.js.map} +1 -1
  56. package/dist/chunk-ZVBPRMHJ.cjs +153 -0
  57. package/dist/chunk-ZVBPRMHJ.cjs.map +1 -0
  58. package/dist/connect/docx.cjs +10 -88
  59. package/dist/connect/docx.cjs.map +1 -1
  60. package/dist/connect/docx.js +6 -86
  61. package/dist/connect/docx.js.map +1 -1
  62. package/dist/connect/index.cjs +295 -32
  63. package/dist/connect/index.cjs.map +1 -1
  64. package/dist/connect/index.js +280 -17
  65. package/dist/connect/index.js.map +1 -1
  66. package/dist/connection/ConnectedWorkflowRunner.d.ts +16 -2
  67. package/dist/connection/WorkflowRunnerDialogs.d.ts +37 -0
  68. package/dist/connection/useWorkflowThread.d.ts +12 -0
  69. package/dist/document-tools/index.cjs +7 -143
  70. package/dist/document-tools/index.cjs.map +1 -1
  71. package/dist/document-tools/index.js +5 -144
  72. package/dist/document-tools/index.js.map +1 -1
  73. package/dist/docx/index.cjs +18 -17
  74. package/dist/docx/index.cjs.map +1 -1
  75. package/dist/docx/index.js +3 -2
  76. package/dist/docx/index.js.map +1 -1
  77. package/dist/facts/index.cjs +1 -1
  78. package/dist/facts/index.js +1 -1
  79. package/dist/files/index.cjs +1 -1
  80. package/dist/files/index.js +1 -1
  81. package/dist/home/index.cjs +1 -1
  82. package/dist/home/index.js +1 -1
  83. package/dist/index.cjs +631 -535
  84. package/dist/index.js +8 -8
  85. package/dist/settings/index.cjs +1 -1
  86. package/dist/settings/index.js +1 -1
  87. package/dist/shell/index.cjs +1 -1
  88. package/dist/shell/index.js +1 -1
  89. package/dist/studio/index.cjs +4 -4
  90. package/dist/studio/index.js +3 -3
  91. package/dist/workflow-canvas/SignalsEditor.d.ts +41 -0
  92. package/dist/workflow-canvas/StepActionSettings.d.ts +132 -0
  93. package/dist/workflow-canvas/StepInspector.d.ts +28 -2
  94. package/dist/workflow-canvas/TriggerInspector.d.ts +11 -2
  95. package/dist/workflow-canvas/WorkflowBuilder.d.ts +17 -4
  96. package/dist/workflow-canvas/WorkflowCanvas.d.ts +27 -2
  97. package/dist/workflow-canvas/edit.d.ts +9 -1
  98. package/dist/workflow-canvas/index.cjs +1282 -208
  99. package/dist/workflow-canvas/index.cjs.map +1 -1
  100. package/dist/workflow-canvas/index.d.ts +2 -1
  101. package/dist/workflow-canvas/index.js +1255 -188
  102. package/dist/workflow-canvas/index.js.map +1 -1
  103. package/dist/workflow-canvas/trigger.d.ts +20 -1
  104. package/package.json +4 -4
  105. package/src/workflow-canvas/canvas.css +9 -0
  106. package/dist/chunk-5EBGRG3X.js.map +0 -1
  107. package/dist/chunk-F4LUD3YC.cjs.map +0 -1
  108. package/dist/chunk-IPGKTUF7.cjs.map +0 -1
  109. package/dist/chunk-LT2UORRG.js.map +0 -1
  110. package/dist/chunk-P2RBE3FD.cjs.map +0 -1
  111. package/dist/chunk-UIWLDSTF.js.map +0 -1
  112. package/dist/chunk-YWYVIQ7T.js.map +0 -1
  113. package/dist/chunk-ZWA7UUZL.cjs.map +0 -1
@@ -0,0 +1,153 @@
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
+ appearance
16
+ }) {
17
+ const { user, notify, openDocument, emailDocument, certificateUrl } = documentTools.useDocumentTools();
18
+ const [name, setName] = react.useState(() => user?.name ?? "");
19
+ const [includeDate, setIncludeDate] = react.useState(false);
20
+ const [password, setPassword] = react.useState("");
21
+ const [error, setError] = react.useState(null);
22
+ const sign = documentTools.useSignDocument();
23
+ const signer = { name };
24
+ const handleSubmit = async (e) => {
25
+ e.preventDefault();
26
+ if (!user?.email) return;
27
+ setError(null);
28
+ try {
29
+ const result = await sign.mutateAsync({
30
+ documentId,
31
+ pdfBlob,
32
+ email: user.email,
33
+ password,
34
+ signer,
35
+ appearance,
36
+ includeDate
37
+ });
38
+ const signedId = result.doc_ext_id;
39
+ const certificate = documentTools.certificateLink(result.signature, certificateUrl);
40
+ notify(
41
+ `Signed. The signed copy is saved as version ${result.version}.`,
42
+ "success",
43
+ emailDocument ? { action: { label: "Email it", onClick: () => emailDocument(signedId) } } : {
44
+ action: {
45
+ label: "View certificate",
46
+ onClick: () => {
47
+ window.open(certificate, "_blank", "noopener,noreferrer");
48
+ }
49
+ }
50
+ }
51
+ );
52
+ setPassword("");
53
+ onOpenChange(false);
54
+ openDocument?.(signedId);
55
+ } catch (err) {
56
+ setError(err instanceof Error ? err.message : "Signing failed");
57
+ }
58
+ };
59
+ return /* @__PURE__ */ jsxRuntime.jsx(
60
+ chunkULWRNGGE_cjs.ModalScaffold,
61
+ {
62
+ open,
63
+ onOpenChange: (next) => !sign.isPending && onOpenChange(next),
64
+ title: "Sign document",
65
+ description: "Sign this document electronically. The signed copy is saved as a new version.",
66
+ showDescription: true,
67
+ testId: "sign-document-dialog",
68
+ children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, children: [
69
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalScaffold.Body, { children: [
70
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
71
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "sign-name", children: "Name" }),
72
+ /* @__PURE__ */ jsxRuntime.jsx(
73
+ ui.Input,
74
+ {
75
+ id: "sign-name",
76
+ value: name,
77
+ onChange: (e) => setName(e.target.value),
78
+ "data-testid": "sign-document-name-input",
79
+ required: true
80
+ }
81
+ )
82
+ ] }),
83
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 pointer-coarse:min-h-11", children: [
84
+ /* @__PURE__ */ jsxRuntime.jsx(
85
+ ui.Checkbox,
86
+ {
87
+ id: "sign-include-date",
88
+ checked: includeDate,
89
+ onCheckedChange: (checked) => setIncludeDate(checked === true),
90
+ "data-testid": "sign-document-include-date"
91
+ }
92
+ ),
93
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "sign-include-date", className: "font-normal", children: "Include date" })
94
+ ] }),
95
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-muted-foreground", "data-testid": "sign-document-appearance-note", children: [
96
+ "Only your signature",
97
+ includeDate ? " and the date appear" : " appears",
98
+ " on the page. Anyone can click it to check it."
99
+ ] }),
100
+ name.trim() && /* @__PURE__ */ jsxRuntime.jsx(
101
+ "blockquote",
102
+ {
103
+ className: "border-l-2 border-border pl-3 text-sm text-muted-foreground",
104
+ "data-testid": "sign-document-intent",
105
+ children: documentTools.intentText(signer)
106
+ }
107
+ ),
108
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
109
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Label, { htmlFor: "sign-password", children: "Password" }),
110
+ /* @__PURE__ */ jsxRuntime.jsx(
111
+ ui.Input,
112
+ {
113
+ id: "sign-password",
114
+ type: "password",
115
+ autoComplete: "current-password",
116
+ value: password,
117
+ onChange: (e) => setPassword(e.target.value),
118
+ "data-testid": "sign-document-password-input",
119
+ required: true
120
+ }
121
+ )
122
+ ] }),
123
+ error && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-red-text", role: "alert", "data-testid": "sign-document-error", children: error })
124
+ ] }),
125
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalScaffold.Footer, { children: [
126
+ /* @__PURE__ */ jsxRuntime.jsx(
127
+ ui.Button,
128
+ {
129
+ type: "button",
130
+ variant: "outline",
131
+ onClick: () => onOpenChange(false),
132
+ disabled: sign.isPending,
133
+ children: "Cancel"
134
+ }
135
+ ),
136
+ /* @__PURE__ */ jsxRuntime.jsx(
137
+ ui.Button,
138
+ {
139
+ type: "submit",
140
+ disabled: sign.isPending || !name.trim() || !password,
141
+ "data-testid": "sign-document-submit-button",
142
+ children: sign.isPending ? "Signing..." : "Sign"
143
+ }
144
+ )
145
+ ] })
146
+ ] })
147
+ }
148
+ );
149
+ }
150
+
151
+ exports.SignDocumentDialog = SignDocumentDialog;
152
+ //# sourceMappingURL=chunk-ZVBPRMHJ.cjs.map
153
+ //# sourceMappingURL=chunk-ZVBPRMHJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/document-tools/SignDocumentDialog.tsx"],"names":["useDocumentTools","useState","useSignDocument","certificateLink","jsx","ModalScaffold","jsxs","Label","Input","Checkbox","Button"],"mappings":"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","file":"chunk-ZVBPRMHJ.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 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. */\n pdfBlob: Blob\n /** Where the signature goes; omitted = bottom of the last page. */\n appearance?: SignatureAppearance\n}\n\nexport function SignDocumentDialog({\n open,\n onOpenChange,\n documentId,\n pdfBlob,\n appearance,\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 sign = useSignDocument()\n\n const signer = { name }\n\n const handleSubmit = async (e: FormEvent) => {\n e.preventDefault()\n if (!user?.email) return\n setError(null)\n try {\n const result = await sign.mutateAsync({\n documentId,\n pdfBlob,\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 }\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 <p className=\"text-sm text-red-text\" role=\"alert\" data-testid=\"sign-document-error\">\n {error}\n </p>\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"]}
@@ -1,105 +1,27 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var chunkMUMH3Z6K_cjs = require('../chunk-MUMH3Z6K.cjs');
5
- var chunkZWA7UUZL_cjs = require('../chunk-ZWA7UUZL.cjs');
4
+ var chunkTZR36PPP_cjs = require('../chunk-TZR36PPP.cjs');
5
+ require('../chunk-MUMH3Z6K.cjs');
6
+ var chunkAINNADMT_cjs = require('../chunk-AINNADMT.cjs');
7
+ require('../chunk-7YUFMNFW.cjs');
6
8
  require('../chunk-7UTB4PHM.cjs');
7
9
  require('../chunk-MHVNT4J3.cjs');
8
10
  require('../chunk-DES3K4SD.cjs');
9
- var react$1 = require('react');
10
- var reactQuery = require('@tanstack/react-query');
11
- var react = require('@arbidocs/react');
12
11
  var jsxRuntime = require('react/jsx-runtime');
13
12
 
14
- function ConnectedNativeDocxEditor({
15
- fontBaseUrl = "/native-docx/fonts",
16
- ...props
17
- }) {
18
- const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
19
- return /* @__PURE__ */ jsxRuntime.jsx(chunkZWA7UUZL_cjs.NativeDocxEditor, { ...props, adapter });
20
- }
21
- function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
22
- const arbi = react.useArbi();
23
- const { workspaceId, apiUrl, user, ensureWorkspaceOpen } = chunkMUMH3Z6K_cjs.useConnection();
24
- const queries = reactQuery.useQueryClient();
25
- const { data: members } = reactQuery.useQuery({
26
- queryKey: ["native-docx-members", apiUrl, user?.externalId, workspaceId],
27
- enabled: arbi.isLoggedIn && !!workspaceId,
28
- queryFn: async () => {
29
- await ensureWorkspaceOpen();
30
- return arbi.workspaces.listUsers();
31
- }
32
- });
33
- const adapter = react$1.useMemo(
34
- () => ({
35
- request: async (path, options) => {
36
- await ensureWorkspaceOpen();
37
- return arbi.editor.request(path, options);
38
- },
39
- open: async (id) => {
40
- await ensureWorkspaceOpen();
41
- return (await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: "POST" })).json();
42
- },
43
- save: async (id, state) => (await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {
44
- method: "POST",
45
- headers: { "Content-Type": "application/json" },
46
- body: JSON.stringify({ state })
47
- })).json(),
48
- loadFonts: () => chunkZWA7UUZL_cjs.loadDocxFonts(fontBaseUrl),
49
- baseUrl: apiUrl,
50
- author: user?.name || "You",
51
- onVersionSaved: async (id) => {
52
- if (!workspaceId) return;
53
- const key = react.arbiQueryKeys.documents(workspaceId);
54
- try {
55
- const documents = await arbi.documents.get([id]);
56
- if (!documents.length) throw new Error("The saved version is not available yet.");
57
- queries.setQueryData(key, (previous) => [
58
- ...documents,
59
- ...(previous || []).filter(
60
- (doc) => !documents.some((saved) => saved.external_id === doc.external_id)
61
- )
62
- ]);
63
- } catch {
64
- await queries.invalidateQueries({ queryKey: key });
65
- }
66
- },
67
- notify: (message, kind) => react.notify[kind](message),
68
- mentions: members?.map(({ user: member }) => ({
69
- id: member.external_id,
70
- name: [member.given_name, member.family_name].filter(Boolean).join(" "),
71
- kind: member.external_id.startsWith("agt-") ? "agent" : "human"
72
- })),
73
- requestAgent: async (id, request) => {
74
- const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {
75
- method: "POST",
76
- headers: { "Content-Type": "application/json" },
77
- body: JSON.stringify({
78
- comment_id: request.commentId,
79
- instruction: request.instruction,
80
- request_id: request.requestId,
81
- recipient_ids: request.recipientIds
82
- })
83
- });
84
- const delivery = await response.json();
85
- react.notify.success("Mention delivered.");
86
- return { responseIds: delivery.response_ids || [] };
87
- },
88
- getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status
89
- }),
90
- [arbi, apiUrl, user?.name, members, ensureWorkspaceOpen, fontBaseUrl, queries, workspaceId]
91
- );
92
- return adapter;
93
- }
94
13
  function ConnectedStreamedWordArtifact({
95
14
  fontBaseUrl,
96
15
  ...props
97
16
  }) {
98
- const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
99
- return /* @__PURE__ */ jsxRuntime.jsx(chunkZWA7UUZL_cjs.StreamedWordArtifact, { ...props, adapter });
17
+ const adapter = chunkTZR36PPP_cjs.useConnectedNativeDocxAdapter(fontBaseUrl);
18
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkAINNADMT_cjs.StreamedWordArtifact, { ...props, adapter });
100
19
  }
101
20
 
102
- exports.ConnectedNativeDocxEditor = ConnectedNativeDocxEditor;
21
+ Object.defineProperty(exports, "ConnectedNativeDocxEditor", {
22
+ enumerable: true,
23
+ get: function () { return chunkTZR36PPP_cjs.ConnectedNativeDocxEditor; }
24
+ });
103
25
  exports.ConnectedStreamedWordArtifact = ConnectedStreamedWordArtifact;
104
26
  //# sourceMappingURL=docx.cjs.map
105
27
  //# sourceMappingURL=docx.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/connection/ConnectedNativeDocxEditor.tsx","../../src/connection/ConnectedStreamedWordArtifact.tsx"],"names":["jsx","NativeDocxEditor","useArbi","useConnection","useQueryClient","useQuery","useMemo","loadDocxFonts","arbiQueryKeys","notify","StreamedWordArtifact"],"mappings":"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","file":"docx.cjs","sourcesContent":["import { useMemo } from 'react'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useArbi, notify, arbiQueryKeys } from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport {\n NativeDocxEditor,\n type NativeDocxAdapter,\n type NativeDocxEditorProps,\n} from '../docx/NativeDocxEditor'\nimport { loadDocxFonts } from '../docx/fonts'\n\n/** Native Word widget bound to the standard blocks connection and SDK session. */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: Omit<NativeDocxEditorProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <NativeDocxEditor {...props} adapter={adapter} />\n}\n\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, apiUrl, user, ensureWorkspaceOpen } = useConnection()\n const queries = useQueryClient()\n const { data: members } = useQuery({\n queryKey: ['native-docx-members', apiUrl, user?.externalId, workspaceId],\n enabled: arbi.isLoggedIn && !!workspaceId,\n queryFn: async () => {\n await ensureWorkspaceOpen()\n return arbi.workspaces.listUsers()\n },\n })\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => loadDocxFonts(fontBaseUrl),\n baseUrl: apiUrl,\n author: user?.name || 'You',\n onVersionSaved: async (id) => {\n if (!workspaceId) return\n const key = arbiQueryKeys.documents(workspaceId)\n try {\n const documents = await arbi.documents.get([id])\n if (!documents.length) throw new Error('The saved version is not available yet.')\n queries.setQueryData<Awaited<ReturnType<typeof arbi.documents.list>>>(key, (previous) => [\n ...documents,\n ...(previous || []).filter(\n (doc) => !documents.some((saved) => saved.external_id === doc.external_id)\n ),\n ])\n } catch {\n await queries.invalidateQueries({ queryKey: key })\n }\n },\n notify: (message, kind) => notify[kind](message),\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify.success('Mention delivered.')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n }),\n [arbi, apiUrl, user?.name, members, ensureWorkspaceOpen, fontBaseUrl, queries, workspaceId]\n )\n return adapter\n}\n","import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport { StreamedWordArtifact, type StreamedWordArtifactProps } from '../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}
1
+ {"version":3,"sources":["../../src/connection/ConnectedStreamedWordArtifact.tsx"],"names":["useConnectedNativeDocxAdapter","jsx","StreamedWordArtifact"],"mappings":";;;;;;;;;;;AAGO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,MAAM,OAAA,GAAUA,gDAA8B,WAAW,CAAA;AACzD,EAAA,uBAAOC,cAAA,CAACC,sCAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,OAAA,EAAkB,CAAA;AAC5D","file":"docx.cjs","sourcesContent":["import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport { StreamedWordArtifact, type StreamedWordArtifactProps } from '../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}
@@ -1,94 +1,14 @@
1
1
  "use client";
2
- import { useConnection } from '../chunk-OYMWV45N.js';
3
- import { NativeDocxEditor, loadDocxFonts, StreamedWordArtifact } from '../chunk-5EBGRG3X.js';
2
+ import { useConnectedNativeDocxAdapter } from '../chunk-A24C6BNA.js';
3
+ export { ConnectedNativeDocxEditor } from '../chunk-A24C6BNA.js';
4
+ import '../chunk-OYMWV45N.js';
5
+ import { StreamedWordArtifact } from '../chunk-FT5FFXSJ.js';
6
+ import '../chunk-OPA2Y6YZ.js';
4
7
  import '../chunk-AA3PT6KR.js';
5
8
  import '../chunk-7F6CBP3Z.js';
6
9
  import '../chunk-VUNV25KB.js';
7
- import { useMemo } from 'react';
8
- import { useQueryClient, useQuery } from '@tanstack/react-query';
9
- import { useArbi, notify, arbiQueryKeys } from '@arbidocs/react';
10
10
  import { jsx } from 'react/jsx-runtime';
11
11
 
12
- function ConnectedNativeDocxEditor({
13
- fontBaseUrl = "/native-docx/fonts",
14
- ...props
15
- }) {
16
- const adapter = useConnectedNativeDocxAdapter(fontBaseUrl);
17
- return /* @__PURE__ */ jsx(NativeDocxEditor, { ...props, adapter });
18
- }
19
- function useConnectedNativeDocxAdapter(fontBaseUrl = "/native-docx/fonts") {
20
- const arbi = useArbi();
21
- const { workspaceId, apiUrl, user, ensureWorkspaceOpen } = useConnection();
22
- const queries = useQueryClient();
23
- const { data: members } = useQuery({
24
- queryKey: ["native-docx-members", apiUrl, user?.externalId, workspaceId],
25
- enabled: arbi.isLoggedIn && !!workspaceId,
26
- queryFn: async () => {
27
- await ensureWorkspaceOpen();
28
- return arbi.workspaces.listUsers();
29
- }
30
- });
31
- const adapter = useMemo(
32
- () => ({
33
- request: async (path, options) => {
34
- await ensureWorkspaceOpen();
35
- return arbi.editor.request(path, options);
36
- },
37
- open: async (id) => {
38
- await ensureWorkspaceOpen();
39
- return (await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: "POST" })).json();
40
- },
41
- save: async (id, state) => (await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {
42
- method: "POST",
43
- headers: { "Content-Type": "application/json" },
44
- body: JSON.stringify({ state })
45
- })).json(),
46
- loadFonts: () => loadDocxFonts(fontBaseUrl),
47
- baseUrl: apiUrl,
48
- author: user?.name || "You",
49
- onVersionSaved: async (id) => {
50
- if (!workspaceId) return;
51
- const key = arbiQueryKeys.documents(workspaceId);
52
- try {
53
- const documents = await arbi.documents.get([id]);
54
- if (!documents.length) throw new Error("The saved version is not available yet.");
55
- queries.setQueryData(key, (previous) => [
56
- ...documents,
57
- ...(previous || []).filter(
58
- (doc) => !documents.some((saved) => saved.external_id === doc.external_id)
59
- )
60
- ]);
61
- } catch {
62
- await queries.invalidateQueries({ queryKey: key });
63
- }
64
- },
65
- notify: (message, kind) => notify[kind](message),
66
- mentions: members?.map(({ user: member }) => ({
67
- id: member.external_id,
68
- name: [member.given_name, member.family_name].filter(Boolean).join(" "),
69
- kind: member.external_id.startsWith("agt-") ? "agent" : "human"
70
- })),
71
- requestAgent: async (id, request) => {
72
- const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {
73
- method: "POST",
74
- headers: { "Content-Type": "application/json" },
75
- body: JSON.stringify({
76
- comment_id: request.commentId,
77
- instruction: request.instruction,
78
- request_id: request.requestId,
79
- recipient_ids: request.recipientIds
80
- })
81
- });
82
- const delivery = await response.json();
83
- notify.success("Mention delivered.");
84
- return { responseIds: delivery.response_ids || [] };
85
- },
86
- getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status
87
- }),
88
- [arbi, apiUrl, user?.name, members, ensureWorkspaceOpen, fontBaseUrl, queries, workspaceId]
89
- );
90
- return adapter;
91
- }
92
12
  function ConnectedStreamedWordArtifact({
93
13
  fontBaseUrl,
94
14
  ...props
@@ -97,6 +17,6 @@ function ConnectedStreamedWordArtifact({
97
17
  return /* @__PURE__ */ jsx(StreamedWordArtifact, { ...props, adapter });
98
18
  }
99
19
 
100
- export { ConnectedNativeDocxEditor, ConnectedStreamedWordArtifact };
20
+ export { ConnectedStreamedWordArtifact };
101
21
  //# sourceMappingURL=docx.js.map
102
22
  //# sourceMappingURL=docx.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/connection/ConnectedNativeDocxEditor.tsx","../../src/connection/ConnectedStreamedWordArtifact.tsx"],"names":["jsx"],"mappings":"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","file":"docx.js","sourcesContent":["import { useMemo } from 'react'\nimport { useQuery, useQueryClient } from '@tanstack/react-query'\nimport { useArbi, notify, arbiQueryKeys } from '@arbidocs/react'\nimport { useConnection } from './ConnectionProvider'\nimport {\n NativeDocxEditor,\n type NativeDocxAdapter,\n type NativeDocxEditorProps,\n} from '../docx/NativeDocxEditor'\nimport { loadDocxFonts } from '../docx/fonts'\n\n/** Native Word widget bound to the standard blocks connection and SDK session. */\nexport function ConnectedNativeDocxEditor({\n fontBaseUrl = '/native-docx/fonts',\n ...props\n}: Omit<NativeDocxEditorProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <NativeDocxEditor {...props} adapter={adapter} />\n}\n\nexport function useConnectedNativeDocxAdapter(fontBaseUrl = '/native-docx/fonts') {\n const arbi = useArbi()\n const { workspaceId, apiUrl, user, ensureWorkspaceOpen } = useConnection()\n const queries = useQueryClient()\n const { data: members } = useQuery({\n queryKey: ['native-docx-members', apiUrl, user?.externalId, workspaceId],\n enabled: arbi.isLoggedIn && !!workspaceId,\n queryFn: async () => {\n await ensureWorkspaceOpen()\n return arbi.workspaces.listUsers()\n },\n })\n const adapter = useMemo<NativeDocxAdapter>(\n () => ({\n request: async (path, options) => {\n await ensureWorkspaceOpen()\n return arbi.editor.request(path, options)\n },\n open: async (id) => {\n await ensureWorkspaceOpen()\n return (\n await arbi.editor.request(`/${encodeURIComponent(id)}/session`, { method: 'POST' })\n ).json()\n },\n save: async (id, state) =>\n (\n await arbi.editor.request(`/${encodeURIComponent(id)}/save`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ state }),\n })\n ).json(),\n loadFonts: () => loadDocxFonts(fontBaseUrl),\n baseUrl: apiUrl,\n author: user?.name || 'You',\n onVersionSaved: async (id) => {\n if (!workspaceId) return\n const key = arbiQueryKeys.documents(workspaceId)\n try {\n const documents = await arbi.documents.get([id])\n if (!documents.length) throw new Error('The saved version is not available yet.')\n queries.setQueryData<Awaited<ReturnType<typeof arbi.documents.list>>>(key, (previous) => [\n ...documents,\n ...(previous || []).filter(\n (doc) => !documents.some((saved) => saved.external_id === doc.external_id)\n ),\n ])\n } catch {\n await queries.invalidateQueries({ queryKey: key })\n }\n },\n notify: (message, kind) => notify[kind](message),\n mentions: members?.map(({ user: member }) => ({\n id: member.external_id,\n name: [member.given_name, member.family_name].filter(Boolean).join(' '),\n kind: member.external_id.startsWith('agt-') ? 'agent' : 'human',\n })),\n requestAgent: async (id, request) => {\n const response = await arbi.editor.request(`/${encodeURIComponent(id)}/mentions`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n comment_id: request.commentId,\n instruction: request.instruction,\n request_id: request.requestId,\n recipient_ids: request.recipientIds,\n }),\n })\n const delivery = (await response.json()) as { response_ids: string[] }\n notify.success('Mention delivered.')\n return { responseIds: delivery.response_ids || [] }\n },\n getAgentStatus: async (responseId) => (await arbi.assistant.getResponse(responseId)).status,\n }),\n [arbi, apiUrl, user?.name, members, ensureWorkspaceOpen, fontBaseUrl, queries, workspaceId]\n )\n return adapter\n}\n","import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport { StreamedWordArtifact, type StreamedWordArtifactProps } from '../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}
1
+ {"version":3,"sources":["../../src/connection/ConnectedStreamedWordArtifact.tsx"],"names":[],"mappings":";;;;;;;;;;AAGO,SAAS,6BAAA,CAA8B;AAAA,EAC5C,WAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA0E;AACxE,EAAA,MAAM,OAAA,GAAU,8BAA8B,WAAW,CAAA;AACzD,EAAA,uBAAO,GAAA,CAAC,oBAAA,EAAA,EAAsB,GAAG,KAAA,EAAO,OAAA,EAAkB,CAAA;AAC5D","file":"docx.js","sourcesContent":["import { useConnectedNativeDocxAdapter } from './ConnectedNativeDocxEditor'\nimport { StreamedWordArtifact, type StreamedWordArtifactProps } from '../docx/StreamedWordArtifact'\n\nexport function ConnectedStreamedWordArtifact({\n fontBaseUrl,\n ...props\n}: Omit<StreamedWordArtifactProps, 'adapter'> & { fontBaseUrl?: string }) {\n const adapter = useConnectedNativeDocxAdapter(fontBaseUrl)\n return <StreamedWordArtifact {...props} adapter={adapter} />\n}\n"]}