@arbidocs/blocks 0.5.113 → 0.5.115
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-VCJ6Q7WE.cjs → ConnectedCallDock-WER7R222.cjs} +27 -27
- package/dist/{ConnectedCallDock-VCJ6Q7WE.cjs.map → ConnectedCallDock-WER7R222.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-BUI3ILJD.cjs → ConnectedCallRoom-T7OBQTYP.cjs} +19 -19
- package/dist/{ConnectedCallRoom-BUI3ILJD.cjs.map → ConnectedCallRoom-T7OBQTYP.cjs.map} +1 -1
- package/dist/{ConnectedMailInviteCard-P65MQM6J.cjs → ConnectedMailInviteCard-EINB3THA.cjs} +5 -5
- package/dist/{ConnectedMailInviteCard-P65MQM6J.cjs.map → ConnectedMailInviteCard-EINB3THA.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-JO2H4QIP.cjs → ConnectedNativeDocxComparison-YXMYJWXY.cjs} +24 -24
- package/dist/{ConnectedNativeDocxComparison-JO2H4QIP.cjs.map → ConnectedNativeDocxComparison-YXMYJWXY.cjs.map} +1 -1
- package/dist/{ConnectedProductionSetDialog-BSPM4NQC.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +9 -9
- package/dist/{ConnectedProductionSetDialog-BSPM4NQC.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-DMQEJFCA.cjs → ConnectedStreamedWordArtifact-2RTCHVPI.cjs} +24 -24
- package/dist/{ConnectedStreamedWordArtifact-DMQEJFCA.cjs.map → ConnectedStreamedWordArtifact-2RTCHVPI.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-UBE2DVAC.cjs → DocumentReviewCard-ZSBZBGFK.cjs} +23 -23
- package/dist/{DocumentReviewCard-UBE2DVAC.cjs.map → DocumentReviewCard-ZSBZBGFK.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-EBYRA3ZZ.cjs → FilesViewerDialog-I5QIHQZT.cjs} +55 -55
- package/dist/{FilesViewerDialog-EBYRA3ZZ.cjs.map → FilesViewerDialog-I5QIHQZT.cjs.map} +1 -1
- package/dist/{NativeDocxEditor-EJEIJDOC.cjs → NativeDocxEditor-H6TAEVGY.cjs} +6 -6
- package/dist/{NativeDocxEditor-EJEIJDOC.cjs.map → NativeDocxEditor-H6TAEVGY.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-BO2OJO7A.cjs → WorkspaceTableView-J3C6VH4T.cjs} +9 -9
- package/dist/{WorkspaceTableView-BO2OJO7A.cjs.map → WorkspaceTableView-J3C6VH4T.cjs.map} +1 -1
- package/dist/agents/index.cjs +298 -298
- package/dist/{ai-EMNMGDAN.cjs → ai-IM4A23YT.cjs} +27 -27
- package/dist/ai-IM4A23YT.cjs.map +1 -0
- package/dist/calls/index.cjs +149 -149
- package/dist/chat/DraftingDocChip.d.ts +3 -1
- package/dist/chat/DraftingDocChip.js +7 -4
- package/dist/chat/DraftingDocChip.js.map +2 -2
- package/dist/chat/index.cjs +65 -65
- package/dist/{chunk-AJVZYRAJ.cjs → chunk-24EDG4PC.cjs} +68 -68
- package/dist/{chunk-AJVZYRAJ.cjs.map → chunk-24EDG4PC.cjs.map} +1 -1
- package/dist/{chunk-GTTDJMWX.cjs → chunk-325GVZE6.cjs} +6 -6
- package/dist/{chunk-GTTDJMWX.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
- package/dist/{chunk-HM5L4SBC.cjs → chunk-3A7QWUAW.cjs} +3 -3
- package/dist/{chunk-HM5L4SBC.cjs.map → chunk-3A7QWUAW.cjs.map} +1 -1
- package/dist/{chunk-ET3NVY27.cjs → chunk-42TURFHF.cjs} +5 -5
- package/dist/{chunk-ET3NVY27.cjs.map → chunk-42TURFHF.cjs.map} +1 -1
- package/dist/{chunk-J2RXQVVF.cjs → chunk-4EK7TAP7.cjs} +5 -5
- package/dist/{chunk-J2RXQVVF.cjs.map → chunk-4EK7TAP7.cjs.map} +1 -1
- package/dist/{chunk-BHTEKYWJ.cjs → chunk-557MJ4IH.cjs} +23 -23
- package/dist/{chunk-BHTEKYWJ.cjs.map → chunk-557MJ4IH.cjs.map} +1 -1
- package/dist/{chunk-Y45VRNSZ.cjs → chunk-57NHXEU2.cjs} +4 -4
- package/dist/{chunk-Y45VRNSZ.cjs.map → chunk-57NHXEU2.cjs.map} +1 -1
- package/dist/{chunk-MUA5PJGX.cjs → chunk-5SKHK3BG.cjs} +4 -4
- package/dist/{chunk-MUA5PJGX.cjs.map → chunk-5SKHK3BG.cjs.map} +1 -1
- package/dist/{chunk-AFXDLDPU.cjs → chunk-5UYFLFNR.cjs} +4 -4
- package/dist/{chunk-AFXDLDPU.cjs.map → chunk-5UYFLFNR.cjs.map} +1 -1
- package/dist/{chunk-OTG5T5Z5.cjs → chunk-6UTKM5AB.cjs} +5 -5
- package/dist/{chunk-OTG5T5Z5.cjs.map → chunk-6UTKM5AB.cjs.map} +1 -1
- package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
- package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
- package/dist/{chunk-MQANCZOD.cjs → chunk-A3T3IC3K.cjs} +78 -78
- package/dist/{chunk-MQANCZOD.cjs.map → chunk-A3T3IC3K.cjs.map} +1 -1
- package/dist/{chunk-5VCID67B.cjs → chunk-B3LZITVF.cjs} +12 -12
- package/dist/{chunk-5VCID67B.cjs.map → chunk-B3LZITVF.cjs.map} +1 -1
- package/dist/{chunk-OZWYCRRK.cjs → chunk-BQ5RIWWT.cjs} +30 -30
- package/dist/{chunk-OZWYCRRK.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
- package/dist/chunk-CIHERNDO.cjs +18 -0
- package/dist/{chunk-L52N2LVE.cjs.map → chunk-CIHERNDO.cjs.map} +1 -1
- package/dist/{chunk-NP4EWPIP.cjs → chunk-CJYWHUZR.cjs} +6 -6
- package/dist/{chunk-NP4EWPIP.cjs.map → chunk-CJYWHUZR.cjs.map} +1 -1
- package/dist/{chunk-6W4X4EFI.cjs → chunk-CMGNRMPA.cjs} +5 -5
- package/dist/{chunk-6W4X4EFI.cjs.map → chunk-CMGNRMPA.cjs.map} +1 -1
- package/dist/{chunk-YONJRX6N.cjs → chunk-CPG7II4E.cjs} +28 -28
- package/dist/{chunk-YONJRX6N.cjs.map → chunk-CPG7II4E.cjs.map} +1 -1
- package/dist/{chunk-GGBNUDLK.cjs → chunk-CPR6EHG7.cjs} +70 -70
- package/dist/{chunk-GGBNUDLK.cjs.map → chunk-CPR6EHG7.cjs.map} +1 -1
- package/dist/{chunk-DZWIVRYP.cjs → chunk-DDIW4HLU.cjs} +36 -36
- package/dist/{chunk-DZWIVRYP.cjs.map → chunk-DDIW4HLU.cjs.map} +1 -1
- package/dist/{chunk-Z3VNKPPH.cjs → chunk-E3Y7RI3J.cjs} +4 -4
- package/dist/{chunk-Z3VNKPPH.cjs.map → chunk-E3Y7RI3J.cjs.map} +1 -1
- package/dist/{chunk-WT7CCCIN.cjs → chunk-GNX3FBBX.cjs} +4 -4
- package/dist/{chunk-WT7CCCIN.cjs.map → chunk-GNX3FBBX.cjs.map} +1 -1
- package/dist/{chunk-IIWJQEBC.cjs → chunk-H7PHOTX2.cjs} +10 -10
- package/dist/{chunk-IIWJQEBC.cjs.map → chunk-H7PHOTX2.cjs.map} +1 -1
- package/dist/{chunk-LQHXUSWZ.cjs → chunk-HQDR43JC.cjs} +6 -6
- package/dist/{chunk-LQHXUSWZ.cjs.map → chunk-HQDR43JC.cjs.map} +1 -1
- package/dist/{chunk-6LQN4BMX.cjs → chunk-IDCD5TEZ.cjs} +5 -5
- package/dist/{chunk-6LQN4BMX.cjs.map → chunk-IDCD5TEZ.cjs.map} +1 -1
- package/dist/{chunk-INEPPS4H.cjs → chunk-IW7CDJTA.cjs} +4 -4
- package/dist/{chunk-INEPPS4H.cjs.map → chunk-IW7CDJTA.cjs.map} +1 -1
- package/dist/{chunk-6YOZKXV6.cjs → chunk-JR2YSBD5.cjs} +4 -4
- package/dist/{chunk-6YOZKXV6.cjs.map → chunk-JR2YSBD5.cjs.map} +1 -1
- package/dist/{chunk-ZFKWCGA5.cjs → chunk-JV5TVUOU.cjs} +4 -4
- package/dist/{chunk-ZFKWCGA5.cjs.map → chunk-JV5TVUOU.cjs.map} +1 -1
- package/dist/{chunk-IFOGBMAE.cjs → chunk-KLMNCBLY.cjs} +9 -6
- package/dist/chunk-KLMNCBLY.cjs.map +1 -0
- package/dist/{chunk-JDI7E4RI.cjs → chunk-KTQOGT2L.cjs} +14 -14
- package/dist/{chunk-JDI7E4RI.cjs.map → chunk-KTQOGT2L.cjs.map} +1 -1
- package/dist/{chunk-OKHKJ5ML.cjs → chunk-KXIRVKCJ.cjs} +11 -11
- package/dist/{chunk-OKHKJ5ML.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
- package/dist/{chunk-4ED7CNOX.cjs → chunk-M6IKVKU5.cjs} +40 -3
- package/dist/chunk-M6IKVKU5.cjs.map +1 -0
- package/dist/{chunk-XKDUPU7B.cjs → chunk-NJCK6V6U.cjs} +4 -4
- package/dist/{chunk-XKDUPU7B.cjs.map → chunk-NJCK6V6U.cjs.map} +1 -1
- package/dist/{chunk-OVKJ7OVZ.cjs → chunk-NNUK5ZM7.cjs} +6 -6
- package/dist/{chunk-OVKJ7OVZ.cjs.map → chunk-NNUK5ZM7.cjs.map} +1 -1
- package/dist/{chunk-MJHIBCF7.cjs → chunk-NY3YUCOW.cjs} +4 -4
- package/dist/{chunk-MJHIBCF7.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
- package/dist/{chunk-R4TP3VS3.cjs → chunk-OEREKAAP.cjs} +101 -101
- package/dist/{chunk-R4TP3VS3.cjs.map → chunk-OEREKAAP.cjs.map} +1 -1
- package/dist/{chunk-ENUZ35NR.cjs → chunk-P5AQYC4D.cjs} +4 -4
- package/dist/{chunk-ENUZ35NR.cjs.map → chunk-P5AQYC4D.cjs.map} +1 -1
- package/dist/{chunk-ZZZ6AZDR.cjs → chunk-P77YTTJ3.cjs} +4 -4
- package/dist/{chunk-ZZZ6AZDR.cjs.map → chunk-P77YTTJ3.cjs.map} +1 -1
- package/dist/{chunk-5I2VUNZR.cjs → chunk-PGJYD67F.cjs} +6 -6
- package/dist/{chunk-5I2VUNZR.cjs.map → chunk-PGJYD67F.cjs.map} +1 -1
- package/dist/{chunk-BYN7UMC5.cjs → chunk-PL7HUTM3.cjs} +8 -8
- package/dist/{chunk-BYN7UMC5.cjs.map → chunk-PL7HUTM3.cjs.map} +1 -1
- package/dist/{chunk-T7J352JD.cjs → chunk-QMIHLJMH.cjs} +6 -6
- package/dist/{chunk-T7J352JD.cjs.map → chunk-QMIHLJMH.cjs.map} +1 -1
- package/dist/{chunk-WJP6ICDM.cjs → chunk-R7CJEIA5.cjs} +4 -4
- package/dist/{chunk-WJP6ICDM.cjs.map → chunk-R7CJEIA5.cjs.map} +1 -1
- package/dist/{chunk-IE677C4I.cjs → chunk-SBWIA4PL.cjs} +21 -21
- package/dist/{chunk-IE677C4I.cjs.map → chunk-SBWIA4PL.cjs.map} +1 -1
- package/dist/{chunk-GVTKFVXH.cjs → chunk-SGYSDABK.cjs} +6 -6
- package/dist/{chunk-GVTKFVXH.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
- package/dist/{chunk-PIB7K7HI.cjs → chunk-T23UTIRI.cjs} +8 -8
- package/dist/{chunk-PIB7K7HI.cjs.map → chunk-T23UTIRI.cjs.map} +1 -1
- package/dist/{chunk-E4BLRF2L.cjs → chunk-TDO5UWXF.cjs} +5 -5
- package/dist/{chunk-E4BLRF2L.cjs.map → chunk-TDO5UWXF.cjs.map} +1 -1
- package/dist/{chunk-U5T46QCS.cjs → chunk-TKHCIHE2.cjs} +3 -3
- package/dist/chunk-TKHCIHE2.cjs.map +1 -0
- package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
- package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
- package/dist/{chunk-A4Z5CTLF.cjs → chunk-TT4IF52H.cjs} +39 -39
- package/dist/{chunk-A4Z5CTLF.cjs.map → chunk-TT4IF52H.cjs.map} +1 -1
- package/dist/{chunk-WIAWHETB.cjs → chunk-ULPTSXXO.cjs} +4 -4
- package/dist/{chunk-WIAWHETB.cjs.map → chunk-ULPTSXXO.cjs.map} +1 -1
- package/dist/{chunk-K5MYEWD5.cjs → chunk-UZHWXKS6.cjs} +7 -7
- package/dist/{chunk-K5MYEWD5.cjs.map → chunk-UZHWXKS6.cjs.map} +1 -1
- package/dist/{chunk-XW524KUX.cjs → chunk-VJCSEMXT.cjs} +4 -4
- package/dist/{chunk-XW524KUX.cjs.map → chunk-VJCSEMXT.cjs.map} +1 -1
- package/dist/{chunk-B5442TKX.cjs → chunk-VRK3IQAP.cjs} +4 -4
- package/dist/{chunk-B5442TKX.cjs.map → chunk-VRK3IQAP.cjs.map} +1 -1
- package/dist/{chunk-MYRKL3JO.cjs → chunk-VWTOIGX4.cjs} +4 -4
- package/dist/{chunk-MYRKL3JO.cjs.map → chunk-VWTOIGX4.cjs.map} +1 -1
- package/dist/{chunk-KZKGZ7IG.cjs → chunk-WAV762GP.cjs} +14 -14
- package/dist/{chunk-KZKGZ7IG.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
- package/dist/{chunk-DMNX556N.cjs → chunk-WR2SF44W.cjs} +10 -10
- package/dist/{chunk-DMNX556N.cjs.map → chunk-WR2SF44W.cjs.map} +1 -1
- package/dist/{chunk-M2D4POJV.cjs → chunk-WXUU3COI.cjs} +9 -9
- package/dist/{chunk-M2D4POJV.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
- package/dist/{chunk-FGEBA3TL.cjs → chunk-X5LANJDZ.cjs} +26 -26
- package/dist/{chunk-FGEBA3TL.cjs.map → chunk-X5LANJDZ.cjs.map} +1 -1
- package/dist/{chunk-MY7Q3QE2.cjs → chunk-XKVPSOKP.cjs} +4 -4
- package/dist/{chunk-MY7Q3QE2.cjs.map → chunk-XKVPSOKP.cjs.map} +1 -1
- package/dist/{chunk-ONZOVO2B.cjs → chunk-Y24V6HPR.cjs} +24 -24
- package/dist/{chunk-ONZOVO2B.cjs.map → chunk-Y24V6HPR.cjs.map} +1 -1
- package/dist/{chunk-KGGSBJMU.cjs → chunk-YGXOKB5Z.cjs} +4 -4
- package/dist/{chunk-KGGSBJMU.cjs.map → chunk-YGXOKB5Z.cjs.map} +1 -1
- package/dist/{chunk-YAPXIANR.cjs → chunk-YVCOQHCE.cjs} +5 -5
- package/dist/{chunk-YAPXIANR.cjs.map → chunk-YVCOQHCE.cjs.map} +1 -1
- package/dist/{chunk-LCNKKSN3.cjs → chunk-ZTXQIIFV.cjs} +6 -6
- package/dist/{chunk-LCNKKSN3.cjs.map → chunk-ZTXQIIFV.cjs.map} +1 -1
- package/dist/citations/index.cjs +8 -8
- package/dist/connect/docx.cjs +28 -28
- package/dist/connect/index.cjs +1683 -1497
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/viewer.cjs +41 -41
- package/dist/connection/ConnectedWorkflowBuilder.d.ts +11 -0
- package/dist/connection/ConnectedWorkflowBuilder.js +42 -3
- package/dist/connection/ConnectedWorkflowBuilder.js.map +2 -2
- package/dist/connection/conversation/ConnectedConversation.js +143 -55
- package/dist/connection/conversation/ConnectedConversation.js.map +2 -2
- package/dist/connection/conversation/ConnectedConversationPage.js +36 -2
- package/dist/connection/conversation/ConnectedConversationPage.js.map +2 -2
- package/dist/connection/conversation/ConversationSendButton.d.ts +1 -0
- package/dist/connection/conversation/ConversationSendButton.js +3 -2
- package/dist/connection/conversation/ConversationSendButton.js.map +2 -2
- package/dist/connection/conversation/DocumentTargetNotice.d.ts +7 -0
- package/dist/connection/conversation/DocumentTargetNotice.js +45 -0
- package/dist/connection/conversation/DocumentTargetNotice.js.map +7 -0
- package/dist/connection/conversation/documentSwitch.d.ts +9 -0
- package/dist/connection/conversation/documentSwitch.js +40 -0
- package/dist/connection/conversation/documentSwitch.js.map +7 -0
- package/dist/connection/workflows/ConnectedWorkflowsPage.js +10 -3
- package/dist/connection/workflows/ConnectedWorkflowsPage.js.map +2 -2
- package/dist/connection/workflows/useWorkflowsPageState.d.ts +1 -0
- package/dist/connection/workflows/useWorkflowsPageState.js.map +2 -2
- package/dist/dashboards/index.cjs +23 -23
- package/dist/docx/NativeDocxEditor.js +3 -1
- package/dist/docx/NativeDocxEditor.js.map +2 -2
- package/dist/docx/index.cjs +38 -38
- package/dist/docx/signatures/SignatureFields.d.ts +2 -0
- package/dist/docx/signatures/SignatureFields.js +40 -2
- package/dist/docx/signatures/SignatureFields.js.map +2 -2
- package/dist/embed/index.cjs +50 -50
- package/dist/facts/index.cjs +44 -44
- package/dist/files/index.cjs +226 -226
- package/dist/home/index.cjs +32 -32
- package/dist/index.cjs +1694 -1694
- package/dist/provider/environment.d.ts +5 -0
- package/dist/provider/environment.js +1 -1
- package/dist/provider/environment.js.map +2 -2
- package/dist/provider/requests.d.ts +2 -0
- package/dist/provider/requests.js.map +2 -2
- package/dist/retrieval/index.cjs +4 -4
- package/dist/settings/index.cjs +147 -147
- package/dist/shell/index.cjs +91 -91
- package/dist/studio/index.cjs +42 -42
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +116 -74
- package/dist/workflow-canvas/index.cjs.map +1 -1
- package/dist/workspaces/index.cjs +27 -27
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ai-EMNMGDAN.cjs.map +0 -1
- package/dist/chunk-4ED7CNOX.cjs.map +0 -1
- package/dist/chunk-IFOGBMAE.cjs.map +0 -1
- package/dist/chunk-L52N2LVE.cjs +0 -18
- package/dist/chunk-U5T46QCS.cjs.map +0 -1
|
@@ -18,7 +18,8 @@ import { useOpenWorkflow } from "./useOpenWorkflow.js";
|
|
|
18
18
|
import { useHost } from "../../provider/host.js";
|
|
19
19
|
import { useIntentRequest, workflowOpenRequest } from "../../provider/requests.js";
|
|
20
20
|
import {
|
|
21
|
-
ConnectedWorkflowBuilder
|
|
21
|
+
ConnectedWorkflowBuilder,
|
|
22
|
+
scheduledTaskBuilderValue
|
|
22
23
|
} from "../ConnectedWorkflowBuilder.js";
|
|
23
24
|
import { ConnectedWorkflowHistory } from "../ConnectedWorkflowHistory.js";
|
|
24
25
|
import { ConnectedWorkflowsTable } from "../ConnectedWorkflowsTable.js";
|
|
@@ -95,7 +96,13 @@ function ConnectedWorkflowsPage({
|
|
|
95
96
|
setHostTabId(null);
|
|
96
97
|
openHistory(workflow);
|
|
97
98
|
};
|
|
98
|
-
useIntentRequest(workflowOpenRequest, ({ workflowId, view }) => {
|
|
99
|
+
useIntentRequest(workflowOpenRequest, ({ workflowId, view, preset }) => {
|
|
100
|
+
if (!workflowId && preset) {
|
|
101
|
+
setRunningId(null);
|
|
102
|
+
setHostTabId(null);
|
|
103
|
+
openBuilder({ kind: "new", preset });
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
99
106
|
if (view === "run") {
|
|
100
107
|
if (!workflowId) return;
|
|
101
108
|
closeBuilder();
|
|
@@ -216,7 +223,7 @@ function ConnectedWorkflowsPage({
|
|
|
216
223
|
ConnectedWorkflowBuilder,
|
|
217
224
|
{
|
|
218
225
|
workflowId: builder.kind === "saved" ? builder.id : void 0,
|
|
219
|
-
initial: template ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER } : void 0,
|
|
226
|
+
initial: template ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER } : builder.kind === "new" && builder.preset === "schedule" ? scheduledTaskBuilderValue() : void 0,
|
|
220
227
|
workflows: config?.stepWorkflows ?? webWorkflows,
|
|
221
228
|
renderIcon: config?.renderIcon,
|
|
222
229
|
onSaved: (id) => builderSaved(id, builderKey),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/connection/workflows/ConnectedWorkflowsPage.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * The Workflows page, connected: one composition of the saved workflows' table\n * (`ConnectedWorkflowsTable`), the visual builder (`ConnectedWorkflowBuilder`) and a workflow's\n * history (`ConnectedWorkflowHistory`), on the shared selection lifecycle\n * (`useWorkflowsPageState`).\n *\n * - The table lists the saved workflows, with the host's catalogue (`workflows.catalogue` in the\n * host configuration), when it has one, above them in the host's categories.\n * - A workflow opens in the builder, which takes the page (Back returns to the list). A document\n * action (annotate or email documents), which runs without a thread, keeps its own editor.\n * - A workflow's history opens as a tab of the table, beside the host's own `tabs`.\n * - `openWorkflow(id, { view })` from anywhere opens the workflow's builder or history here; the\n * host only shows the page. `view: 'run'` on a catalogue entry opens its run page here\n * (`ConnectedWorkflowRunPage`, with the entry's project options).\n *\n * It navigates only through the environment: threads open with `openConversation`, an AI review's\n * result with `openFiles` (offered when the host has it), a catalogue entry runs with\n * `openWorkflow(id, { view: 'run' })`.\n */\n\nimport { useCallback, useMemo, useState, type ReactNode } from 'react'\nimport { ArrowLeft, Pencil, Play, Plus, Workflow as WorkflowIcon } from 'lucide-react'\nimport {\n useInvalidateTagData,\n useRefreshDocuments,\n useTags,\n useWorkflowRuns,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { Button, formatFriendlyDate } from '@arbidocs/react/ui'\nimport { PageHeader, type PageHeaderProps } from '../../components/PageHeader'\nimport { describeTrigger } from '../../agents/tasks/taskHelpers'\nimport type { TaskRunsDialogLabels } from '../../agents/tasks/TaskRunsDialog'\nimport type { WorkflowListLabels } from '../../agents/tasks/workflowTableLabels'\nimport { WEB_WORKFLOWS } from '../../agents/workflows/catalogue/registry'\nimport { useNamedWorkflows } from './useNamedWorkflows'\nimport { DEFAULT_WORKFLOW_TRIGGER } from '../../workflow-canvas/trigger'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useOpenWorkflow } from './useOpenWorkflow'\nimport { useHost } from '../../provider/host'\nimport { useIntentRequest, workflowOpenRequest } from '../../provider/requests'\nimport {\n ConnectedWorkflowBuilder,\n type ConnectedWorkflowBuilderProps,\n} from '../ConnectedWorkflowBuilder'\nimport { ConnectedWorkflowHistory } from '../ConnectedWorkflowHistory'\nimport { ConnectedWorkflowsTable } from '../ConnectedWorkflowsTable'\nimport { ConnectedWorkflowRunPage } from './ConnectedWorkflowRunPage'\nimport { ConnectedTaskComposer } from '../tasks/ConnectedTaskComposer'\nimport { useRenderTaskPerson } from '../tasks/useTaskPeople'\nimport { useAiReviewStore } from '../files/store'\nimport { useWorkflowsPageState } from './useWorkflowsPageState'\nimport {\n DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS,\n DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS,\n WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS,\n type ConnectedWorkflowsPageLabels,\n} from './workflowsPageLabels'\n\ntype WorkflowRun = NonNullable<ReturnType<typeof useWorkflowRuns>['data']>[number]\n\n/** A tab of the host's beside the saved workflows (e.g. the agents that run them). */\nexport interface WorkflowsPageTab {\n id: string\n label: string\n icon?: ReactNode\n content: ReactNode\n}\n\n/** The table's own tab (the saved workflows). */\nconst LIST_TAB = 'automations'\n\nexport interface ConnectedWorkflowsPageProps {\n /** A host deep link to a workflow's history (e.g. a `?workflow=` URL), taken once it loads. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n /** A title block over the table (eyebrow, title, description). Absent: none. */\n pageHeader?: Omit<PageHeaderProps, 'actions' | 'tabs'>\n /** The host's tabs beside the saved workflows, before any open history. */\n tabs?: WorkflowsPageTab[]\n /**\n * One of the host's `tabs` to show instead of the saved workflows (a host deep link such as\n * `?tab=agents`): on mount, and again whenever it changes to another tab. Unknown ids show the\n * saved workflows.\n */\n initialTabId?: string | null\n /** The builder's words and options. */\n builderProps?: Pick<\n ConnectedWorkflowBuilderProps,\n | 'labels'\n | 'canvasLabels'\n | 'inspectorLabels'\n | 'triggerLabels'\n | 'connectedLabels'\n | 'eventKinds'\n | 'compose'\n >\n labels?: Partial<ConnectedWorkflowsPageLabels>\n tableLabels?: Partial<WorkflowListLabels>\n historyLabels?: Partial<TaskRunsDialogLabels>\n testId?: string\n}\n\nexport function ConnectedWorkflowsPage({\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n pageHeader,\n tabs,\n initialTabId,\n builderProps,\n labels,\n tableLabels,\n historyLabels,\n testId = 'workflows-page',\n}: ConnectedWorkflowsPageProps) {\n // The default step catalogue in the host's assistant name.\n const webWorkflows = useNamedWorkflows(WEB_WORKFLOWS)\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS, ...labels }\n const host = useHost()\n const config = host.workflows\n const { openConversation, openFiles } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const renderPerson = useRenderTaskPerson()\n const refreshDocuments = useRefreshDocuments()\n const invalidateTags = useInvalidateTagData()\n const { data: tags = [] } = useTags()\n const [editing, setEditing] = useState<WorkflowResponse | null>(null)\n const [editorOpen, setEditorOpen] = useState(false)\n const [hostTabId, setHostTabId] = useState<string | null>(initialTabId ?? null)\n // The host's link is applied again when it names another tab (the page stays mounted when the\n // host's address changes), never over the person's own choice of tab otherwise.\n const [appliedTabId, setAppliedTabId] = useState(initialTabId)\n if (initialTabId !== appliedTabId) {\n setAppliedTabId(initialTabId)\n if (initialTabId) setHostTabId(initialTabId)\n }\n // The catalogue entry being run (`openWorkflow(id, { view: 'run' })`).\n const [runningId, setRunningId] = useState<string | null>(null)\n // A workflow `openWorkflow(id, { view: 'runs' })` asked for, until it has loaded.\n const [requestedHistoryId, setRequestedHistoryId] = useState<string | null>(null)\n const consumeHistory = useCallback(() => {\n if (requestedHistoryId) setRequestedHistoryId(null)\n else onHistoryWorkflowConsumed?.()\n }, [requestedHistoryId, onHistoryWorkflowConsumed])\n const {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder,\n builderSaved,\n historyFor: runsFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab,\n } = useWorkflowsPageState({\n historyWorkflowId: requestedHistoryId ?? historyWorkflowId,\n onHistoryWorkflowConsumed: consumeHistory,\n })\n const listLabels = useMemo(\n () => ({ ...DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS, ...tableLabels }),\n [tableLabels]\n )\n const hostTab = tabs?.find((tab) => tab.id === hostTabId)\n const showHistory = (workflow: WorkflowResponse | null) => {\n setHostTabId(null)\n openHistory(workflow)\n }\n\n useIntentRequest(workflowOpenRequest, ({ workflowId, view }) => {\n if (view === 'run') {\n if (!workflowId) return\n closeBuilder()\n setRunningId(workflowId)\n return\n }\n setRunningId(null)\n if (workflowId && view !== 'runs') {\n openBuilder({ kind: 'saved', id: workflowId })\n return\n }\n closeBuilder()\n setHostTabId(null)\n if (workflowId) setRequestedHistoryId(workflowId)\n else selectHistoryTab(null)\n })\n\n const edit = (workflow: WorkflowResponse) => {\n showHistory(workflow)\n // Every workflow opens in the visual builder: stepped ones as their steps, a classic one (a\n // single prompt or skill) as one agent step, a reminder with no steps yet. Only document actions\n // (annotate / email documents), which run without a thread, keep their own editor.\n if (!workflow.action) {\n openBuilder({ kind: 'saved', id: workflow.external_id })\n return\n }\n setEditing(workflow)\n setEditorOpen(true)\n }\n\n // An AI review's result: its documents re-read, Files narrowed to its label, its fields shown.\n const openResult = async (execution: WorkflowRun) => {\n await refreshDocuments(execution.document_ext_ids)\n await invalidateTags()\n const fieldIds =\n (execution.result?.tag_ext_ids as string[] | undefined) ?? runsFor?.action?.tag_ext_ids ?? []\n useAiReviewStore.getState().setRun({\n docIds: execution.document_ext_ids,\n tags: fieldIds.map((fieldId) => ({\n id: fieldId,\n name: tags.find((tag) => tag.external_id === fieldId)?.name ?? 'Review',\n })),\n })\n useAiReviewStore.getState().setOpen(true)\n openFiles(\n execution.label_ext_id ? { filters: { [execution.label_ext_id]: 'include' } } : undefined\n )\n }\n const renderErrorReport = config?.renderErrorReport\n\n const running = runningId\n ? config?.catalogue?.find((entry) => entry.workflow.id === runningId)\n : undefined\n if (running && running.runnable !== false) {\n const stepWorkflows = config?.stepWorkflows ?? webWorkflows\n return (\n // The page in the Workflows page's frame: padded, scrolling.\n <div className=\"h-full min-h-0 w-full overflow-auto p-4 sm:p-6\">\n <ConnectedWorkflowRunPage\n key={running.workflow.id}\n workflow={running.workflow}\n projectFrom={running.projectFrom}\n inputsFromProject={running.inputsFromProject}\n onProjectCreated={running.onProjectCreated}\n options={{ resolveWorkflow: (id) => stepWorkflows.find((w) => w.id === id) }}\n renderIcon={config?.renderIcon}\n onOpenConversation={(id) => openConversation(id)}\n pageHeader={{\n eyebrow: running.category,\n leading: (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setRunningId(null)}\n aria-label={l.back}\n title={l.back}\n data-testid=\"workflow-run-back\"\n >\n <ArrowLeft className=\"size-4\" />\n </Button>\n ),\n }}\n testIdPrefix=\"workflow-run\"\n />\n </div>\n )\n }\n\n if (builder) {\n const template =\n builder.kind === 'template'\n ? config?.catalogue?.find((entry) => entry.workflow.id === builder.id)\n : undefined\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-3 overflow-auto p-4\"\n data-testid=\"workflow-builder\"\n >\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={closeBuilder}\n data-testid=\"workflow-builder-back\"\n >\n <ArrowLeft className=\"size-4\" /> {l.back}\n </Button>\n {template && template.runnable !== false && openWorkflow && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => openWorkflow(template.workflow.id, { view: 'run' })}\n data-testid=\"workflow-builder-run\"\n >\n <Play className=\"size-4\" /> {l.runTemplate}\n </Button>\n )}\n </div>\n <ConnectedWorkflowBuilder\n key={builderKey}\n workflowId={builder.kind === 'saved' ? builder.id : undefined}\n initial={\n template\n ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER }\n : undefined\n }\n workflows={config?.stepWorkflows ?? webWorkflows}\n renderIcon={config?.renderIcon}\n onSaved={(id) => builderSaved(id, builderKey)}\n testId=\"workflow-builder-canvas\"\n {...builderProps}\n />\n </div>\n )\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid={testId}>\n {pageHeader && <PageHeader {...pageHeader} />}\n <ConnectedWorkflowsTable\n onOpenTemplate={(id) => openBuilder({ kind: 'template', id })}\n tabs={[\n ...(tabs ?? []).map(({ id, label, icon }) => ({ id, label, icon })),\n ...historyTabs.map((workflow) => ({\n id: workflow.external_id,\n label: workflow.name,\n icon: <WorkflowIcon className=\"size-3.5\" />,\n onClose: () => {\n closeHistoryTab(workflow.external_id)\n if (activeHistoryId === workflow.external_id) setEditorOpen(false)\n },\n })),\n ]}\n activeTabId={hostTab?.id ?? activeHistoryId ?? LIST_TAB}\n onTabChange={(id) => {\n if (tabs?.some((tab) => tab.id === id)) {\n setHostTabId(id)\n return\n }\n setHostTabId(null)\n selectHistoryTab(id === LIST_TAB ? null : id)\n if (editorOpen) {\n const workflow = workflows.find((item) => item.external_id === id)\n if (workflow) setEditing(workflow)\n else setEditorOpen(false)\n }\n }}\n content={\n hostTab ? (\n hostTab.content\n ) : runsFor ? (\n <ConnectedWorkflowHistory\n inline\n hideHeader\n workflow={runsFor}\n onOpenChange={(open) => !open && openHistory(null)}\n formatDate={formatFriendlyDate}\n labels={historyLabels}\n renderErrorReport={\n renderErrorReport &&\n ((run) =>\n renderErrorReport(\n JSON.stringify(\n {\n workflow_ext_id: runsFor.external_id,\n run_id: run.id,\n status: run.status,\n error: run.error,\n },\n null,\n 2\n )\n ))\n }\n // Offered where the host shows files (its `openFiles`).\n onOpenResult={host.environment?.openFiles ? openResult : undefined}\n />\n ) : undefined\n }\n automationsOnly\n gridId=\"automations-grid-v1\"\n describeTrigger={(workflow) =>\n workflow.on_demand ? l.manualTrigger : describeTrigger(workflow)\n }\n formatDate={formatFriendlyDate}\n renderPerson={renderPerson}\n onViewRuns={showHistory}\n onOpenRow={edit}\n onEdit={edit}\n triggerChipLabels={WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS}\n labels={listLabels}\n // A narrow row (a phone) keeps the actions' icons, so the host's tabs keep their room.\n header={(isCompact) => (\n <>\n {runsFor && !hostTab && (\n <Button\n variant=\"ghost\"\n onClick={() => edit(runsFor)}\n aria-label={l.editAria}\n title={isCompact ? l.edit : undefined}\n >\n <Pencil className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.edit}\n </Button>\n )}\n <Button\n onClick={() => openBuilder({ kind: 'new' })}\n aria-label={isCompact ? l.newWorkflow : undefined}\n title={isCompact ? l.newWorkflow : undefined}\n data-testid=\"new-workflow-button\"\n >\n <Plus className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.newWorkflow}\n </Button>\n </>\n )}\n />\n <ConnectedTaskComposer\n kind=\"workflow\"\n saveOnly\n startLater\n open={editorOpen}\n onOpenChange={setEditorOpen}\n workflow={editing}\n />\n </div>\n )\n}\n"],
|
|
5
|
-
"mappings": ";
|
|
4
|
+
"sourcesContent": ["/**\n * The Workflows page, connected: one composition of the saved workflows' table\n * (`ConnectedWorkflowsTable`), the visual builder (`ConnectedWorkflowBuilder`) and a workflow's\n * history (`ConnectedWorkflowHistory`), on the shared selection lifecycle\n * (`useWorkflowsPageState`).\n *\n * - The table lists the saved workflows, with the host's catalogue (`workflows.catalogue` in the\n * host configuration), when it has one, above them in the host's categories.\n * - A workflow opens in the builder, which takes the page (Back returns to the list). A document\n * action (annotate or email documents), which runs without a thread, keeps its own editor.\n * - A workflow's history opens as a tab of the table, beside the host's own `tabs`.\n * - `openWorkflow(id, { view })` from anywhere opens the workflow's builder or history here; the\n * host only shows the page. `view: 'run'` on a catalogue entry opens its run page here\n * (`ConnectedWorkflowRunPage`, with the entry's project options).\n *\n * It navigates only through the environment: threads open with `openConversation`, an AI review's\n * result with `openFiles` (offered when the host has it), a catalogue entry runs with\n * `openWorkflow(id, { view: 'run' })`.\n */\n\nimport { useCallback, useMemo, useState, type ReactNode } from 'react'\nimport { ArrowLeft, Pencil, Play, Plus, Workflow as WorkflowIcon } from 'lucide-react'\nimport {\n useInvalidateTagData,\n useRefreshDocuments,\n useTags,\n useWorkflowRuns,\n type WorkflowResponse,\n} from '@arbidocs/react'\nimport { Button, formatFriendlyDate } from '@arbidocs/react/ui'\nimport { PageHeader, type PageHeaderProps } from '../../components/PageHeader'\nimport { describeTrigger } from '../../agents/tasks/taskHelpers'\nimport type { TaskRunsDialogLabels } from '../../agents/tasks/TaskRunsDialog'\nimport type { WorkflowListLabels } from '../../agents/tasks/workflowTableLabels'\nimport { WEB_WORKFLOWS } from '../../agents/workflows/catalogue/registry'\nimport { useNamedWorkflows } from './useNamedWorkflows'\nimport { DEFAULT_WORKFLOW_TRIGGER } from '../../workflow-canvas/trigger'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { useOpenWorkflow } from './useOpenWorkflow'\nimport { useHost } from '../../provider/host'\nimport { useIntentRequest, workflowOpenRequest } from '../../provider/requests'\nimport {\n ConnectedWorkflowBuilder,\n scheduledTaskBuilderValue,\n type ConnectedWorkflowBuilderProps,\n} from '../ConnectedWorkflowBuilder'\nimport { ConnectedWorkflowHistory } from '../ConnectedWorkflowHistory'\nimport { ConnectedWorkflowsTable } from '../ConnectedWorkflowsTable'\nimport { ConnectedWorkflowRunPage } from './ConnectedWorkflowRunPage'\nimport { ConnectedTaskComposer } from '../tasks/ConnectedTaskComposer'\nimport { useRenderTaskPerson } from '../tasks/useTaskPeople'\nimport { useAiReviewStore } from '../files/store'\nimport { useWorkflowsPageState } from './useWorkflowsPageState'\nimport {\n DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS,\n DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS,\n WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS,\n type ConnectedWorkflowsPageLabels,\n} from './workflowsPageLabels'\n\ntype WorkflowRun = NonNullable<ReturnType<typeof useWorkflowRuns>['data']>[number]\n\n/** A tab of the host's beside the saved workflows (e.g. the agents that run them). */\nexport interface WorkflowsPageTab {\n id: string\n label: string\n icon?: ReactNode\n content: ReactNode\n}\n\n/** The table's own tab (the saved workflows). */\nconst LIST_TAB = 'automations'\n\nexport interface ConnectedWorkflowsPageProps {\n /** A host deep link to a workflow's history (e.g. a `?workflow=` URL), taken once it loads. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n /** A title block over the table (eyebrow, title, description). Absent: none. */\n pageHeader?: Omit<PageHeaderProps, 'actions' | 'tabs'>\n /** The host's tabs beside the saved workflows, before any open history. */\n tabs?: WorkflowsPageTab[]\n /**\n * One of the host's `tabs` to show instead of the saved workflows (a host deep link such as\n * `?tab=agents`): on mount, and again whenever it changes to another tab. Unknown ids show the\n * saved workflows.\n */\n initialTabId?: string | null\n /** The builder's words and options. */\n builderProps?: Pick<\n ConnectedWorkflowBuilderProps,\n | 'labels'\n | 'canvasLabels'\n | 'inspectorLabels'\n | 'triggerLabels'\n | 'connectedLabels'\n | 'eventKinds'\n | 'compose'\n >\n labels?: Partial<ConnectedWorkflowsPageLabels>\n tableLabels?: Partial<WorkflowListLabels>\n historyLabels?: Partial<TaskRunsDialogLabels>\n testId?: string\n}\n\nexport function ConnectedWorkflowsPage({\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n pageHeader,\n tabs,\n initialTabId,\n builderProps,\n labels,\n tableLabels,\n historyLabels,\n testId = 'workflows-page',\n}: ConnectedWorkflowsPageProps) {\n // The default step catalogue in the host's assistant name.\n const webWorkflows = useNamedWorkflows(WEB_WORKFLOWS)\n const l = { ...DEFAULT_CONNECTED_WORKFLOWS_PAGE_LABELS, ...labels }\n const host = useHost()\n const config = host.workflows\n const { openConversation, openFiles } = useBlocksEnvironment()\n const openWorkflow = useOpenWorkflow()\n const renderPerson = useRenderTaskPerson()\n const refreshDocuments = useRefreshDocuments()\n const invalidateTags = useInvalidateTagData()\n const { data: tags = [] } = useTags()\n const [editing, setEditing] = useState<WorkflowResponse | null>(null)\n const [editorOpen, setEditorOpen] = useState(false)\n const [hostTabId, setHostTabId] = useState<string | null>(initialTabId ?? null)\n // The host's link is applied again when it names another tab (the page stays mounted when the\n // host's address changes), never over the person's own choice of tab otherwise.\n const [appliedTabId, setAppliedTabId] = useState(initialTabId)\n if (initialTabId !== appliedTabId) {\n setAppliedTabId(initialTabId)\n if (initialTabId) setHostTabId(initialTabId)\n }\n // The catalogue entry being run (`openWorkflow(id, { view: 'run' })`).\n const [runningId, setRunningId] = useState<string | null>(null)\n // A workflow `openWorkflow(id, { view: 'runs' })` asked for, until it has loaded.\n const [requestedHistoryId, setRequestedHistoryId] = useState<string | null>(null)\n const consumeHistory = useCallback(() => {\n if (requestedHistoryId) setRequestedHistoryId(null)\n else onHistoryWorkflowConsumed?.()\n }, [requestedHistoryId, onHistoryWorkflowConsumed])\n const {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder,\n builderSaved,\n historyFor: runsFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab,\n } = useWorkflowsPageState({\n historyWorkflowId: requestedHistoryId ?? historyWorkflowId,\n onHistoryWorkflowConsumed: consumeHistory,\n })\n const listLabels = useMemo(\n () => ({ ...DEFAULT_WORKFLOWS_PAGE_TABLE_LABELS, ...tableLabels }),\n [tableLabels]\n )\n const hostTab = tabs?.find((tab) => tab.id === hostTabId)\n const showHistory = (workflow: WorkflowResponse | null) => {\n setHostTabId(null)\n openHistory(workflow)\n }\n\n useIntentRequest(workflowOpenRequest, ({ workflowId, view, preset }) => {\n if (!workflowId && preset) {\n setRunningId(null)\n setHostTabId(null)\n openBuilder({ kind: 'new', preset })\n return\n }\n if (view === 'run') {\n if (!workflowId) return\n closeBuilder()\n setRunningId(workflowId)\n return\n }\n setRunningId(null)\n if (workflowId && view !== 'runs') {\n openBuilder({ kind: 'saved', id: workflowId })\n return\n }\n closeBuilder()\n setHostTabId(null)\n if (workflowId) setRequestedHistoryId(workflowId)\n else selectHistoryTab(null)\n })\n\n const edit = (workflow: WorkflowResponse) => {\n showHistory(workflow)\n // Every workflow opens in the visual builder: stepped ones as their steps, a classic one (a\n // single prompt or skill) as one agent step, a reminder with no steps yet. Only document actions\n // (annotate / email documents), which run without a thread, keep their own editor.\n if (!workflow.action) {\n openBuilder({ kind: 'saved', id: workflow.external_id })\n return\n }\n setEditing(workflow)\n setEditorOpen(true)\n }\n\n // An AI review's result: its documents re-read, Files narrowed to its label, its fields shown.\n const openResult = async (execution: WorkflowRun) => {\n await refreshDocuments(execution.document_ext_ids)\n await invalidateTags()\n const fieldIds =\n (execution.result?.tag_ext_ids as string[] | undefined) ?? runsFor?.action?.tag_ext_ids ?? []\n useAiReviewStore.getState().setRun({\n docIds: execution.document_ext_ids,\n tags: fieldIds.map((fieldId) => ({\n id: fieldId,\n name: tags.find((tag) => tag.external_id === fieldId)?.name ?? 'Review',\n })),\n })\n useAiReviewStore.getState().setOpen(true)\n openFiles(\n execution.label_ext_id ? { filters: { [execution.label_ext_id]: 'include' } } : undefined\n )\n }\n const renderErrorReport = config?.renderErrorReport\n\n const running = runningId\n ? config?.catalogue?.find((entry) => entry.workflow.id === runningId)\n : undefined\n if (running && running.runnable !== false) {\n const stepWorkflows = config?.stepWorkflows ?? webWorkflows\n return (\n // The page in the Workflows page's frame: padded, scrolling.\n <div className=\"h-full min-h-0 w-full overflow-auto p-4 sm:p-6\">\n <ConnectedWorkflowRunPage\n key={running.workflow.id}\n workflow={running.workflow}\n projectFrom={running.projectFrom}\n inputsFromProject={running.inputsFromProject}\n onProjectCreated={running.onProjectCreated}\n options={{ resolveWorkflow: (id) => stepWorkflows.find((w) => w.id === id) }}\n renderIcon={config?.renderIcon}\n onOpenConversation={(id) => openConversation(id)}\n pageHeader={{\n eyebrow: running.category,\n leading: (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => setRunningId(null)}\n aria-label={l.back}\n title={l.back}\n data-testid=\"workflow-run-back\"\n >\n <ArrowLeft className=\"size-4\" />\n </Button>\n ),\n }}\n testIdPrefix=\"workflow-run\"\n />\n </div>\n )\n }\n\n if (builder) {\n const template =\n builder.kind === 'template'\n ? config?.catalogue?.find((entry) => entry.workflow.id === builder.id)\n : undefined\n return (\n <div\n className=\"flex h-full min-h-0 flex-col gap-3 overflow-auto p-4\"\n data-testid=\"workflow-builder\"\n >\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={closeBuilder}\n data-testid=\"workflow-builder-back\"\n >\n <ArrowLeft className=\"size-4\" /> {l.back}\n </Button>\n {template && template.runnable !== false && openWorkflow && (\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => openWorkflow(template.workflow.id, { view: 'run' })}\n data-testid=\"workflow-builder-run\"\n >\n <Play className=\"size-4\" /> {l.runTemplate}\n </Button>\n )}\n </div>\n <ConnectedWorkflowBuilder\n key={builderKey}\n workflowId={builder.kind === 'saved' ? builder.id : undefined}\n initial={\n template\n ? { workflow: template.workflow, trigger: DEFAULT_WORKFLOW_TRIGGER }\n : builder.kind === 'new' && builder.preset === 'schedule'\n ? scheduledTaskBuilderValue()\n : undefined\n }\n workflows={config?.stepWorkflows ?? webWorkflows}\n renderIcon={config?.renderIcon}\n onSaved={(id) => builderSaved(id, builderKey)}\n testId=\"workflow-builder-canvas\"\n {...builderProps}\n />\n </div>\n )\n }\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid={testId}>\n {pageHeader && <PageHeader {...pageHeader} />}\n <ConnectedWorkflowsTable\n onOpenTemplate={(id) => openBuilder({ kind: 'template', id })}\n tabs={[\n ...(tabs ?? []).map(({ id, label, icon }) => ({ id, label, icon })),\n ...historyTabs.map((workflow) => ({\n id: workflow.external_id,\n label: workflow.name,\n icon: <WorkflowIcon className=\"size-3.5\" />,\n onClose: () => {\n closeHistoryTab(workflow.external_id)\n if (activeHistoryId === workflow.external_id) setEditorOpen(false)\n },\n })),\n ]}\n activeTabId={hostTab?.id ?? activeHistoryId ?? LIST_TAB}\n onTabChange={(id) => {\n if (tabs?.some((tab) => tab.id === id)) {\n setHostTabId(id)\n return\n }\n setHostTabId(null)\n selectHistoryTab(id === LIST_TAB ? null : id)\n if (editorOpen) {\n const workflow = workflows.find((item) => item.external_id === id)\n if (workflow) setEditing(workflow)\n else setEditorOpen(false)\n }\n }}\n content={\n hostTab ? (\n hostTab.content\n ) : runsFor ? (\n <ConnectedWorkflowHistory\n inline\n hideHeader\n workflow={runsFor}\n onOpenChange={(open) => !open && openHistory(null)}\n formatDate={formatFriendlyDate}\n labels={historyLabels}\n renderErrorReport={\n renderErrorReport &&\n ((run) =>\n renderErrorReport(\n JSON.stringify(\n {\n workflow_ext_id: runsFor.external_id,\n run_id: run.id,\n status: run.status,\n error: run.error,\n },\n null,\n 2\n )\n ))\n }\n // Offered where the host shows files (its `openFiles`).\n onOpenResult={host.environment?.openFiles ? openResult : undefined}\n />\n ) : undefined\n }\n automationsOnly\n gridId=\"automations-grid-v1\"\n describeTrigger={(workflow) =>\n workflow.on_demand ? l.manualTrigger : describeTrigger(workflow)\n }\n formatDate={formatFriendlyDate}\n renderPerson={renderPerson}\n onViewRuns={showHistory}\n onOpenRow={edit}\n onEdit={edit}\n triggerChipLabels={WORKFLOWS_PAGE_TRIGGER_CHIP_LABELS}\n labels={listLabels}\n // A narrow row (a phone) keeps the actions' icons, so the host's tabs keep their room.\n header={(isCompact) => (\n <>\n {runsFor && !hostTab && (\n <Button\n variant=\"ghost\"\n onClick={() => edit(runsFor)}\n aria-label={l.editAria}\n title={isCompact ? l.edit : undefined}\n >\n <Pencil className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.edit}\n </Button>\n )}\n <Button\n onClick={() => openBuilder({ kind: 'new' })}\n aria-label={isCompact ? l.newWorkflow : undefined}\n title={isCompact ? l.newWorkflow : undefined}\n data-testid=\"new-workflow-button\"\n >\n <Plus className={isCompact ? 'size-4' : 'mr-1.5 size-4'} />\n {!isCompact && l.newWorkflow}\n </Button>\n </>\n )}\n />\n <ConnectedTaskComposer\n kind=\"workflow\"\n saveOnly\n startLater\n open={editorOpen}\n onOpenChange={setEditorOpen}\n workflow={editing}\n />\n </div>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/connection/workflows/useWorkflowsPageState.ts"],
|
|
4
|
-
"sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useWorkflows, type WorkflowResponse } from '@arbidocs/react'\n\n/** A saved workflow, a new one, or a host catalogue entry opened as a template. */\nexport type WorkflowBuilderSelection =\n { kind: 'saved'; id: string }
|
|
5
|
-
"mappings": ";AAAA,SAAS,aAAa,WAAW,QAAQ,gBAAgB;AACzD,SAAS,oBAA2C;
|
|
4
|
+
"sourcesContent": ["import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useWorkflows, type WorkflowResponse } from '@arbidocs/react'\n\n/** A saved workflow, a new one, or a host catalogue entry opened as a template. */\nexport type WorkflowBuilderSelection =\n | { kind: 'saved'; id: string }\n | { kind: 'new'; preset?: 'schedule' }\n | { kind: 'template'; id: string }\n\nexport interface WorkflowsPageStateOptions {\n initialBuilder?: WorkflowBuilderSelection\n /** A host deep link to consume once the saved workflow has loaded. */\n historyWorkflowId?: string | null\n onHistoryWorkflowConsumed?: () => void\n}\n\n/** Shared selection lifecycle for workflow tables, builders and history views. No routing or layout. */\nexport function useWorkflowsPageState({\n initialBuilder,\n historyWorkflowId,\n onHistoryWorkflowConsumed,\n}: WorkflowsPageStateOptions = {}) {\n const { data: workflows = [] } = useWorkflows({ live: true })\n const [builder, setBuilder] = useState<WorkflowBuilderSelection | null>(initialBuilder ?? null)\n const [builderKey, setBuilderKey] = useState(0)\n const [historyIds, setHistoryIds] = useState<string[]>([])\n const [activeHistoryId, setActiveHistoryId] = useState<string | null>(null)\n // Resolve against current query data: renaming/deleting a workflow cannot leave a stale dialog.\n const historyFor = workflows.find((workflow) => workflow.external_id === activeHistoryId) ?? null\n const historyTabs = historyIds.flatMap((id) => {\n const workflow = workflows.find((item) => item.external_id === id)\n return workflow ? [workflow] : []\n })\n\n const openHistory = useCallback((workflow: WorkflowResponse | null) => {\n const id = workflow?.external_id ?? null\n if (id) setHistoryIds((ids) => (ids.includes(id) ? ids : [...ids, id]))\n setActiveHistoryId(id)\n }, [])\n const closeHistoryTab = useCallback((id: string) => {\n setHistoryIds((ids) => ids.filter((item) => item !== id))\n setActiveHistoryId((active) => (active === id ? null : active))\n }, [])\n const builderKeyRef = useRef(builderKey)\n builderKeyRef.current = builderKey\n const openBuilder = useCallback((selection: WorkflowBuilderSelection) => {\n setBuilder(selection)\n // Reopening a template/new/saved selection resets its unsaved canvas; saving does not.\n setBuilderKey((key) => key + 1)\n }, [])\n /**\n * A save finished (it lands once the workflows are re-read): the builder it came from (its\n * `builderKey`, default the current one) now edits the saved workflow. A save the person left\n * meanwhile (Back, or another workflow opened) changes nothing: it never reopens the builder.\n */\n const builderSaved = useCallback((id: string, fromKey?: number) => {\n if (fromKey !== undefined && fromKey !== builderKeyRef.current) return\n setBuilder((open) => (open ? { kind: 'saved', id } : null))\n }, [])\n\n useEffect(() => {\n const workflow = workflows.find((item) => item.external_id === historyWorkflowId)\n if (!workflow) return\n openHistory(workflow)\n onHistoryWorkflowConsumed?.()\n }, [historyWorkflowId, onHistoryWorkflowConsumed, openHistory, workflows])\n\n return {\n workflows,\n builder,\n builderKey,\n openBuilder,\n closeBuilder: () => setBuilder(null),\n builderSaved,\n historyFor,\n historyTabs,\n activeHistoryId,\n openHistory,\n closeHistoryTab,\n selectHistoryTab: setActiveHistoryId,\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAAA,SAAS,aAAa,WAAW,QAAQ,gBAAgB;AACzD,SAAS,oBAA2C;AAgB7C,SAAS,sBAAsB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACF,IAA+B,CAAC,GAAG;AACjC,QAAM,EAAE,MAAM,YAAY,CAAC,EAAE,IAAI,aAAa,EAAE,MAAM,KAAK,CAAC;AAC5D,QAAM,CAAC,SAAS,UAAU,IAAI,SAA0C,kBAAkB,IAAI;AAC9F,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,CAAC;AAC9C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAmB,CAAC,CAAC;AACzD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAwB,IAAI;AAE1E,QAAM,aAAa,UAAU,KAAK,CAAC,aAAa,SAAS,gBAAgB,eAAe,KAAK;AAC7F,QAAM,cAAc,WAAW,QAAQ,CAAC,OAAO;AAC7C,UAAM,WAAW,UAAU,KAAK,CAAC,SAAS,KAAK,gBAAgB,EAAE;AACjE,WAAO,WAAW,CAAC,QAAQ,IAAI,CAAC;AAAA,EAClC,CAAC;AAED,QAAM,cAAc,YAAY,CAAC,aAAsC;AACrE,UAAM,KAAK,UAAU,eAAe;AACpC,QAAI,GAAI,eAAc,CAAC,QAAS,IAAI,SAAS,EAAE,IAAI,MAAM,CAAC,GAAG,KAAK,EAAE,CAAE;AACtE,uBAAmB,EAAE;AAAA,EACvB,GAAG,CAAC,CAAC;AACL,QAAM,kBAAkB,YAAY,CAAC,OAAe;AAClD,kBAAc,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC;AACxD,uBAAmB,CAAC,WAAY,WAAW,KAAK,OAAO,MAAO;AAAA,EAChE,GAAG,CAAC,CAAC;AACL,QAAM,gBAAgB,OAAO,UAAU;AACvC,gBAAc,UAAU;AACxB,QAAM,cAAc,YAAY,CAAC,cAAwC;AACvE,eAAW,SAAS;AAEpB,kBAAc,CAAC,QAAQ,MAAM,CAAC;AAAA,EAChC,GAAG,CAAC,CAAC;AAML,QAAM,eAAe,YAAY,CAAC,IAAY,YAAqB;AACjE,QAAI,YAAY,UAAa,YAAY,cAAc,QAAS;AAChE,eAAW,CAAC,SAAU,OAAO,EAAE,MAAM,SAAS,GAAG,IAAI,IAAK;AAAA,EAC5D,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,UAAM,WAAW,UAAU,KAAK,CAAC,SAAS,KAAK,gBAAgB,iBAAiB;AAChF,QAAI,CAAC,SAAU;AACf,gBAAY,QAAQ;AACpB,gCAA4B;AAAA,EAC9B,GAAG,CAAC,mBAAmB,2BAA2B,aAAa,SAAS,CAAC;AAEzE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,MAAM,WAAW,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunk4EK7TAP7_cjs = require('../chunk-4EK7TAP7.cjs');
|
|
5
5
|
var chunkLVIQWRC5_cjs = require('../chunk-LVIQWRC5.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkUZHWXKS6_cjs = require('../chunk-UZHWXKS6.cjs');
|
|
7
7
|
var chunkPBPO54KZ_cjs = require('../chunk-PBPO54KZ.cjs');
|
|
8
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-ULPTSXXO.cjs');
|
|
9
9
|
require('../chunk-ZU2B2RZK.cjs');
|
|
10
10
|
var chunkNSD37OF5_cjs = require('../chunk-NSD37OF5.cjs');
|
|
11
11
|
var chunkOEJQFPWO_cjs = require('../chunk-OEJQFPWO.cjs');
|
|
12
|
-
require('../chunk-
|
|
13
|
-
require('../chunk-IPSHAMO2.cjs');
|
|
12
|
+
require('../chunk-JV5TVUOU.cjs');
|
|
14
13
|
var chunkZW6FPIFC_cjs = require('../chunk-ZW6FPIFC.cjs');
|
|
15
|
-
|
|
14
|
+
require('../chunk-IPSHAMO2.cjs');
|
|
15
|
+
var chunkTKHCIHE2_cjs = require('../chunk-TKHCIHE2.cjs');
|
|
16
16
|
require('../chunk-JDFBEGQO.cjs');
|
|
17
17
|
require('../chunk-ULWRNGGE.cjs');
|
|
18
18
|
require('../chunk-PLIF5CUV.cjs');
|
|
@@ -67,8 +67,8 @@ function PanelsGrid({
|
|
|
67
67
|
editing,
|
|
68
68
|
testId
|
|
69
69
|
}) {
|
|
70
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
-
|
|
70
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkUZHWXKS6_cjs.DashboardGrid, { testId: testId && `${testId}-grid`, children: spec.panels.map((panel, i) => /* @__PURE__ */ jsxRuntime.jsx(chunkUZHWXKS6_cjs.DashboardCell, { width: panel.width, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
+
chunkUZHWXKS6_cjs.DashboardPanel,
|
|
72
72
|
{
|
|
73
73
|
panel,
|
|
74
74
|
labels: panelLabels,
|
|
@@ -167,7 +167,7 @@ function ConnectedDashboardsPage({
|
|
|
167
167
|
testId = "dashboards"
|
|
168
168
|
}) {
|
|
169
169
|
const l = { ...DEFAULT_DASHBOARDS_PAGE_LABELS, ...labels };
|
|
170
|
-
const { confirm, notify } =
|
|
170
|
+
const { confirm, notify } = chunkTKHCIHE2_cjs.useBlocksEnvironment();
|
|
171
171
|
const workflowsOn = react.useFeature("workflows");
|
|
172
172
|
const templates = siteTemplates ?? chunkLVIQWRC5_cjs.templatesFor(chunkLVIQWRC5_cjs.DASHBOARD_TEMPLATES, { workflows: workflowsOn });
|
|
173
173
|
const store = react.useDashboardStore();
|
|
@@ -365,7 +365,7 @@ function ConnectedDashboardsPage({
|
|
|
365
365
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: l.editPanelDescription })
|
|
366
366
|
] }),
|
|
367
367
|
editingPanel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
368
|
-
|
|
368
|
+
chunk4EK7TAP7_cjs.PanelEditor,
|
|
369
369
|
{
|
|
370
370
|
value: editingPanel.panel,
|
|
371
371
|
onChange: (panel) => setEditingPanel({ ...editingPanel, panel }),
|
|
@@ -527,11 +527,11 @@ function ConnectedDashboardsPage({
|
|
|
527
527
|
|
|
528
528
|
Object.defineProperty(exports, "DEFAULT_PANEL_EDITOR_LABELS", {
|
|
529
529
|
enumerable: true,
|
|
530
|
-
get: function () { return
|
|
530
|
+
get: function () { return chunk4EK7TAP7_cjs.DEFAULT_PANEL_EDITOR_LABELS; }
|
|
531
531
|
});
|
|
532
532
|
Object.defineProperty(exports, "PanelEditor", {
|
|
533
533
|
enumerable: true,
|
|
534
|
-
get: function () { return
|
|
534
|
+
get: function () { return chunk4EK7TAP7_cjs.PanelEditor; }
|
|
535
535
|
});
|
|
536
536
|
Object.defineProperty(exports, "DASHBOARD_TEMPLATES", {
|
|
537
537
|
enumerable: true,
|
|
@@ -555,47 +555,47 @@ Object.defineProperty(exports, "usagePanels", {
|
|
|
555
555
|
});
|
|
556
556
|
Object.defineProperty(exports, "ChartRenderer", {
|
|
557
557
|
enumerable: true,
|
|
558
|
-
get: function () { return
|
|
558
|
+
get: function () { return chunkUZHWXKS6_cjs.ChartRenderer; }
|
|
559
559
|
});
|
|
560
560
|
Object.defineProperty(exports, "ChartTable", {
|
|
561
561
|
enumerable: true,
|
|
562
|
-
get: function () { return
|
|
562
|
+
get: function () { return chunkUZHWXKS6_cjs.ChartTable; }
|
|
563
563
|
});
|
|
564
564
|
Object.defineProperty(exports, "DEFAULT_CHART_RENDERER_LABELS", {
|
|
565
565
|
enumerable: true,
|
|
566
|
-
get: function () { return
|
|
566
|
+
get: function () { return chunkUZHWXKS6_cjs.DEFAULT_CHART_RENDERER_LABELS; }
|
|
567
567
|
});
|
|
568
568
|
Object.defineProperty(exports, "DEFAULT_DASHBOARD_PANEL_LABELS", {
|
|
569
569
|
enumerable: true,
|
|
570
|
-
get: function () { return
|
|
570
|
+
get: function () { return chunkUZHWXKS6_cjs.DEFAULT_DASHBOARD_PANEL_LABELS; }
|
|
571
571
|
});
|
|
572
572
|
Object.defineProperty(exports, "DEFAULT_PANEL_VIEW_LABELS", {
|
|
573
573
|
enumerable: true,
|
|
574
|
-
get: function () { return
|
|
574
|
+
get: function () { return chunkUZHWXKS6_cjs.DEFAULT_PANEL_VIEW_LABELS; }
|
|
575
575
|
});
|
|
576
576
|
Object.defineProperty(exports, "DashboardCell", {
|
|
577
577
|
enumerable: true,
|
|
578
|
-
get: function () { return
|
|
578
|
+
get: function () { return chunkUZHWXKS6_cjs.DashboardCell; }
|
|
579
579
|
});
|
|
580
580
|
Object.defineProperty(exports, "DashboardGrid", {
|
|
581
581
|
enumerable: true,
|
|
582
|
-
get: function () { return
|
|
582
|
+
get: function () { return chunkUZHWXKS6_cjs.DashboardGrid; }
|
|
583
583
|
});
|
|
584
584
|
Object.defineProperty(exports, "DashboardPanel", {
|
|
585
585
|
enumerable: true,
|
|
586
|
-
get: function () { return
|
|
586
|
+
get: function () { return chunkUZHWXKS6_cjs.DashboardPanel; }
|
|
587
587
|
});
|
|
588
588
|
Object.defineProperty(exports, "PANEL_FORMATTERS", {
|
|
589
589
|
enumerable: true,
|
|
590
|
-
get: function () { return
|
|
590
|
+
get: function () { return chunkUZHWXKS6_cjs.PANEL_FORMATTERS; }
|
|
591
591
|
});
|
|
592
592
|
Object.defineProperty(exports, "PanelView", {
|
|
593
593
|
enumerable: true,
|
|
594
|
-
get: function () { return
|
|
594
|
+
get: function () { return chunkUZHWXKS6_cjs.PanelView; }
|
|
595
595
|
});
|
|
596
596
|
Object.defineProperty(exports, "clampPanelWidth", {
|
|
597
597
|
enumerable: true,
|
|
598
|
-
get: function () { return
|
|
598
|
+
get: function () { return chunkUZHWXKS6_cjs.clampPanelWidth; }
|
|
599
599
|
});
|
|
600
600
|
Object.defineProperty(exports, "DEFAULT_UNIT_FORMATTERS", {
|
|
601
601
|
enumerable: true,
|
|
@@ -58,6 +58,7 @@ import {
|
|
|
58
58
|
import { QuickParts } from "./template/QuickParts.js";
|
|
59
59
|
import {
|
|
60
60
|
MySignatureContextItems,
|
|
61
|
+
SignatureFieldContextItem,
|
|
61
62
|
MySignatureMenu,
|
|
62
63
|
SignatureFieldMenu,
|
|
63
64
|
SignatureFieldsProvider
|
|
@@ -726,7 +727,8 @@ function NativeDocxEditor({
|
|
|
726
727
|
/* @__PURE__ */ jsx(DocxEditor.HyperLink, {}),
|
|
727
728
|
/* @__PURE__ */ jsxs(DocxEditor.ContextMenu, { children: [
|
|
728
729
|
/* @__PURE__ */ jsx(DocxContextMenuExtras, {}),
|
|
729
|
-
/* @__PURE__ */ jsx(MySignatureContextItems, {})
|
|
730
|
+
/* @__PURE__ */ jsx(MySignatureContextItems, {}),
|
|
731
|
+
/* @__PURE__ */ jsx(SignatureFieldContextItem, {})
|
|
730
732
|
] })
|
|
731
733
|
] }),
|
|
732
734
|
!compact && /* @__PURE__ */ jsx(DocxEditor.PageNumber, {})
|