@arbidocs/blocks 0.5.48 → 0.5.50
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/DocumentReviewCard-DLR4XOIZ.cjs +516 -0
- package/dist/DocumentReviewCard-DLR4XOIZ.cjs.map +1 -0
- package/dist/DocumentReviewCard-Y67FFRPC.js +514 -0
- package/dist/DocumentReviewCard-Y67FFRPC.js.map +1 -0
- package/dist/calls/connected/ConnectedCallPage.d.ts +23 -0
- package/dist/calls/connected/index.d.ts +1 -0
- package/dist/calls/index.cjs +172 -0
- package/dist/calls/index.cjs.map +1 -1
- package/dist/calls/index.js +175 -4
- package/dist/calls/index.js.map +1 -1
- package/dist/chunk-3Y4UTPCD.js +1521 -0
- package/dist/chunk-3Y4UTPCD.js.map +1 -0
- package/dist/chunk-5TDGVOR5.js +142 -0
- package/dist/chunk-5TDGVOR5.js.map +1 -0
- package/dist/{chunk-QKOFQMAY.cjs → chunk-5YX3R6CK.cjs} +5 -4
- package/dist/chunk-5YX3R6CK.cjs.map +1 -0
- package/dist/chunk-63IH7V5F.js +13 -0
- package/dist/chunk-63IH7V5F.js.map +1 -0
- package/dist/chunk-C3VTWM74.js +123 -0
- package/dist/chunk-C3VTWM74.js.map +1 -0
- package/dist/chunk-DVE6NNZ2.cjs +15 -0
- package/dist/chunk-DVE6NNZ2.cjs.map +1 -0
- package/dist/{chunk-XBITXJZU.js → chunk-EQ433QPZ.js} +4 -3
- package/dist/chunk-EQ433QPZ.js.map +1 -0
- package/dist/{chunk-UAEYU2NN.cjs → chunk-H32DV7XS.cjs} +2 -136
- package/dist/chunk-H32DV7XS.cjs.map +1 -0
- package/dist/{chunk-EARQ2CUX.js → chunk-IQ3VDTR7.js} +6 -119
- package/dist/chunk-IQ3VDTR7.js.map +1 -0
- package/dist/chunk-NUQ3RY7M.cjs +130 -0
- package/dist/chunk-NUQ3RY7M.cjs.map +1 -0
- package/dist/{chunk-V2UQR7P6.cjs → chunk-QLY22ZZW.cjs} +9 -8
- package/dist/chunk-QLY22ZZW.cjs.map +1 -0
- package/dist/chunk-REH7PX3N.cjs +145 -0
- package/dist/chunk-REH7PX3N.cjs.map +1 -0
- package/dist/{chunk-VQHXVY26.cjs → chunk-RTS3B2W7.cjs} +2 -121
- package/dist/chunk-RTS3B2W7.cjs.map +1 -0
- package/dist/chunk-S7B5E3RU.cjs +1553 -0
- package/dist/chunk-S7B5E3RU.cjs.map +1 -0
- package/dist/{chunk-WZ63HE2C.js → chunk-XRL4R2TT.js} +4 -136
- package/dist/chunk-XRL4R2TT.js.map +1 -0
- package/dist/{chunk-E6EYRQC2.js → chunk-YYZH6VRP.js} +6 -5
- package/dist/chunk-YYZH6VRP.js.map +1 -0
- package/dist/connect/index.cjs +464 -1861
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +55 -1538
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +39 -39
- package/dist/connect/viewer.js +1 -1
- package/dist/connection/config/useDeveloperConfig.d.ts +1 -1
- package/dist/connection/files/fields/DocumentFieldParts.d.ts +2 -1
- package/dist/connection/files/fields/documentField.d.ts +1 -0
- package/dist/connection/files/grid/cells.d.ts +1 -0
- package/dist/connection/files/page/ConnectedFilesPage.d.ts +5 -2
- package/dist/connection/files/review/DocumentReviewCard.d.ts +32 -0
- package/dist/connection/files/review/useDocumentValueWrites.d.ts +15 -0
- package/dist/connection/files/review/useReviewColumns.d.ts +33 -0
- package/dist/files/cells/RelatedDocsCell.d.ts +3 -1
- package/dist/files/index.cjs +221 -221
- package/dist/files/index.js +1 -1
- package/dist/home/index.cjs +7 -6
- package/dist/home/index.cjs.map +1 -1
- package/dist/home/index.js +2 -1
- package/dist/home/index.js.map +1 -1
- package/dist/index.cjs +82 -82
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +5 -8
- package/dist/index.js.map +1 -1
- package/dist/workspaces/index.cjs +29 -28
- package/dist/workspaces/index.cjs.map +1 -1
- package/dist/workspaces/index.js +4 -3
- package/dist/workspaces/index.js.map +1 -1
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/chunk-E6EYRQC2.js.map +0 -1
- package/dist/chunk-EARQ2CUX.js.map +0 -1
- package/dist/chunk-QKOFQMAY.cjs.map +0 -1
- package/dist/chunk-UAEYU2NN.cjs.map +0 -1
- package/dist/chunk-V2UQR7P6.cjs.map +0 -1
- package/dist/chunk-VQHXVY26.cjs.map +0 -1
- package/dist/chunk-WZ63HE2C.js.map +0 -1
- package/dist/chunk-XBITXJZU.js.map +0 -1
package/dist/connect/index.cjs
CHANGED
|
@@ -2,18 +2,20 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkV7JDMKNQ_cjs = require('../chunk-V7JDMKNQ.cjs');
|
|
5
|
-
var
|
|
5
|
+
var chunkS7B5E3RU_cjs = require('../chunk-S7B5E3RU.cjs');
|
|
6
|
+
var chunkQLY22ZZW_cjs = require('../chunk-QLY22ZZW.cjs');
|
|
6
7
|
var chunkKWJW5TMH_cjs = require('../chunk-KWJW5TMH.cjs');
|
|
7
8
|
var chunkPSIKUQYM_cjs = require('../chunk-PSIKUQYM.cjs');
|
|
8
9
|
var chunkYD3RN2FY_cjs = require('../chunk-YD3RN2FY.cjs');
|
|
9
10
|
var chunk7KIM64LQ_cjs = require('../chunk-7KIM64LQ.cjs');
|
|
10
11
|
var chunkOU3RGQFX_cjs = require('../chunk-OU3RGQFX.cjs');
|
|
11
|
-
require('../chunk-
|
|
12
|
+
require('../chunk-REH7PX3N.cjs');
|
|
13
|
+
require('../chunk-H32DV7XS.cjs');
|
|
12
14
|
var chunkFEVJA4BP_cjs = require('../chunk-FEVJA4BP.cjs');
|
|
13
15
|
var chunkMBGV6JHG_cjs = require('../chunk-MBGV6JHG.cjs');
|
|
14
16
|
var chunkFYL7IGK2_cjs = require('../chunk-FYL7IGK2.cjs');
|
|
15
17
|
var chunkBB4PMCU6_cjs = require('../chunk-BB4PMCU6.cjs');
|
|
16
|
-
var
|
|
18
|
+
var chunk5YX3R6CK_cjs = require('../chunk-5YX3R6CK.cjs');
|
|
17
19
|
var chunk2WLXQGWC_cjs = require('../chunk-2WLXQGWC.cjs');
|
|
18
20
|
var chunk223D4727_cjs = require('../chunk-223D4727.cjs');
|
|
19
21
|
var chunkTQSU3I4C_cjs = require('../chunk-TQSU3I4C.cjs');
|
|
@@ -24,7 +26,8 @@ require('../chunk-464YPRAE.cjs');
|
|
|
24
26
|
require('../chunk-PICGTGEB.cjs');
|
|
25
27
|
var chunk5FYU7ZIU_cjs = require('../chunk-5FYU7ZIU.cjs');
|
|
26
28
|
require('../chunk-ZESMRGDV.cjs');
|
|
27
|
-
var
|
|
29
|
+
var chunkRTS3B2W7_cjs = require('../chunk-RTS3B2W7.cjs');
|
|
30
|
+
var chunkNUQ3RY7M_cjs = require('../chunk-NUQ3RY7M.cjs');
|
|
28
31
|
var chunkC2ECYOPP_cjs = require('../chunk-C2ECYOPP.cjs');
|
|
29
32
|
var chunkGOWXP5KT_cjs = require('../chunk-GOWXP5KT.cjs');
|
|
30
33
|
var chunk6R5Q65PB_cjs = require('../chunk-6R5Q65PB.cjs');
|
|
@@ -98,11 +101,10 @@ var ui = require('@arbidocs/react/ui');
|
|
|
98
101
|
var jsxRuntime = require('react/jsx-runtime');
|
|
99
102
|
var shell = require('@arbidocs/react/shell');
|
|
100
103
|
var documentTools = require('@arbidocs/react/document-tools');
|
|
101
|
-
var zustand = require('zustand');
|
|
102
104
|
var artifacts = require('@arbidocs/react/artifacts');
|
|
105
|
+
var zustand = require('zustand');
|
|
103
106
|
var core = require('@dnd-kit/core');
|
|
104
107
|
var reactVirtual = require('@tanstack/react-virtual');
|
|
105
|
-
var middleware = require('zustand/middleware');
|
|
106
108
|
var reactDom = require('react-dom');
|
|
107
109
|
|
|
108
110
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -164,9 +166,9 @@ var ConnectedUserEntity = React9.memo(function ConnectedUserEntity2({
|
|
|
164
166
|
if (isMe) openSettings();
|
|
165
167
|
else openDirectChat?.(user.external_id);
|
|
166
168
|
};
|
|
167
|
-
const tooltipContent = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
169
|
+
const tooltipContent = /* @__PURE__ */ jsxRuntime.jsxs(chunkNUQ3RY7M_cjs.EntityTooltip, { children: [
|
|
168
170
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
169
|
-
|
|
171
|
+
chunkNUQ3RY7M_cjs.EntityTooltipHeader,
|
|
170
172
|
{
|
|
171
173
|
lead: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
172
174
|
ui.Avatar,
|
|
@@ -197,13 +199,13 @@ var ConnectedUserEntity = React9.memo(function ConnectedUserEntity2({
|
|
|
197
199
|
subtitle: user.email
|
|
198
200
|
}
|
|
199
201
|
),
|
|
200
|
-
userIsAgent && agentOwner && /* @__PURE__ */ jsxRuntime.jsx(
|
|
202
|
+
userIsAgent && agentOwner && /* @__PURE__ */ jsxRuntime.jsx(chunkNUQ3RY7M_cjs.EntityTooltipSection, { children: /* @__PURE__ */ jsxRuntime.jsxs(chunkNUQ3RY7M_cjs.EntityTooltipHint, { icon: /* @__PURE__ */ jsxRuntime.jsx(react.ArbiBotHeadIcon, { className: "w-3.5 h-3.5 flex-shrink-0" }), children: [
|
|
201
203
|
"Agent of",
|
|
202
204
|
" ",
|
|
203
205
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium text-foreground", children: ui.getUserDisplayName(agentOwner) })
|
|
204
206
|
] }) }),
|
|
205
207
|
sharedWorkspaces.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
206
|
-
|
|
208
|
+
chunkNUQ3RY7M_cjs.EntityTooltipSection,
|
|
207
209
|
{
|
|
208
210
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Users, { className: "w-3.5 h-3.5 flex-shrink-0" }),
|
|
209
211
|
heading: "Shared Workspaces",
|
|
@@ -234,7 +236,7 @@ var ConnectedUserEntity = React9.memo(function ConnectedUserEntity2({
|
|
|
234
236
|
] })
|
|
235
237
|
}
|
|
236
238
|
),
|
|
237
|
-
interactive && variant === "pill" && canChat && /* @__PURE__ */ jsxRuntime.jsx(
|
|
239
|
+
interactive && variant === "pill" && canChat && /* @__PURE__ */ jsxRuntime.jsx(chunkNUQ3RY7M_cjs.EntityTooltipHint, { isRuled: true, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MessageCircleMore, { className: "w-3 h-3" }), children: "Click to send message" })
|
|
238
240
|
] });
|
|
239
241
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
240
242
|
ui.UserEntity,
|
|
@@ -388,7 +390,7 @@ function ConnectedWorkspaceActivity({
|
|
|
388
390
|
[feed.data]
|
|
389
391
|
);
|
|
390
392
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
391
|
-
|
|
393
|
+
chunkRTS3B2W7_cjs.WorkspaceActivityList,
|
|
392
394
|
{
|
|
393
395
|
...listProps,
|
|
394
396
|
items,
|
|
@@ -1417,126 +1419,6 @@ function useNotificationToasts(options2 = {}) {
|
|
|
1417
1419
|
});
|
|
1418
1420
|
});
|
|
1419
1421
|
}
|
|
1420
|
-
var usePendingSyncDialog = zustand.create((set) => ({
|
|
1421
|
-
open: false,
|
|
1422
|
-
setOpen: (open) => set({ open })
|
|
1423
|
-
}));
|
|
1424
|
-
function openPendingSyncDialog() {
|
|
1425
|
-
usePendingSyncDialog.getState().setOpen(true);
|
|
1426
|
-
}
|
|
1427
|
-
var STATUS_META = {
|
|
1428
|
-
queued: { dot: "bg-yellow-text", text: "Waiting to sync", tone: "text-yellow-text" },
|
|
1429
|
-
syncing: { dot: "bg-blue-text", text: "Syncing\u2026", tone: "text-blue-text" },
|
|
1430
|
-
error: { dot: "bg-red-text", text: "Failed", tone: "text-red-text" }
|
|
1431
|
-
};
|
|
1432
|
-
function StatusCell({ data }) {
|
|
1433
|
-
if (!data) return null;
|
|
1434
|
-
const meta = STATUS_META[data.status];
|
|
1435
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: `inline-flex items-center gap-1.5 text-sm font-medium ${meta.tone}`, children: [
|
|
1436
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: `h-1.5 w-1.5 rounded-full ${meta.dot}` }),
|
|
1437
|
-
meta.text
|
|
1438
|
-
] });
|
|
1439
|
-
}
|
|
1440
|
-
function ConnectedPendingSyncDialog() {
|
|
1441
|
-
const isOpen = usePendingSyncDialog((s) => s.open);
|
|
1442
|
-
const setOpen = usePendingSyncDialog((s) => s.setOpen);
|
|
1443
|
-
const isOnline = documentTools.useIsOnline();
|
|
1444
|
-
const items = react.usePendingSyncItems();
|
|
1445
|
-
const cancelMany = react.useCancelManyPendingSync();
|
|
1446
|
-
const [selected, setSelected] = React9.useState([]);
|
|
1447
|
-
const undoableIds = React9.useMemo(
|
|
1448
|
-
() => items.filter((i) => i.status !== "syncing").map((i) => i.mutationId),
|
|
1449
|
-
[items]
|
|
1450
|
-
);
|
|
1451
|
-
const selectedUndoableIds = React9.useMemo(
|
|
1452
|
-
() => selected.filter((i) => i.status !== "syncing").map((i) => i.mutationId),
|
|
1453
|
-
[selected]
|
|
1454
|
-
);
|
|
1455
|
-
const columnDefs = React9.useMemo(
|
|
1456
|
-
() => [
|
|
1457
|
-
{
|
|
1458
|
-
colId: "document",
|
|
1459
|
-
headerName: "Document",
|
|
1460
|
-
field: "document",
|
|
1461
|
-
flex: 1,
|
|
1462
|
-
minWidth: 140,
|
|
1463
|
-
tooltipField: "document"
|
|
1464
|
-
},
|
|
1465
|
-
{
|
|
1466
|
-
colId: "change",
|
|
1467
|
-
headerName: "Change",
|
|
1468
|
-
field: "change",
|
|
1469
|
-
flex: 1.4,
|
|
1470
|
-
minWidth: 160,
|
|
1471
|
-
tooltipField: "change"
|
|
1472
|
-
},
|
|
1473
|
-
{
|
|
1474
|
-
colId: "when",
|
|
1475
|
-
headerName: "When",
|
|
1476
|
-
width: 120,
|
|
1477
|
-
// Sort by the raw timestamp; display the friendly relative string.
|
|
1478
|
-
valueGetter: (p) => p.data?.at ?? 0,
|
|
1479
|
-
valueFormatter: (p) => p.value ? ui.formatRelativeTime(new Date(Number(p.value)).toISOString(), { style: "short" }) : ""
|
|
1480
|
-
},
|
|
1481
|
-
{
|
|
1482
|
-
colId: "status",
|
|
1483
|
-
headerName: "Status",
|
|
1484
|
-
width: 150,
|
|
1485
|
-
valueGetter: (p) => p.data?.status ?? "",
|
|
1486
|
-
cellRenderer: StatusCell
|
|
1487
|
-
}
|
|
1488
|
-
],
|
|
1489
|
-
[]
|
|
1490
|
-
);
|
|
1491
|
-
const hasFailed = items.some((i) => i.status === "error");
|
|
1492
|
-
const title = !isOnline ? "Offline changes" : hasFailed ? "Some changes didn\u2019t sync" : items.length > 0 ? "Syncing your changes" : "No changes waiting";
|
|
1493
|
-
const description = !isOnline ? "These edits are saved on this device and will sync automatically when you reconnect." : hasFailed ? "These edits didn\u2019t reach the server, so they\u2019re only saved on this device. Undo to discard them." : "Edits you made offline are syncing to the server.";
|
|
1494
|
-
const undoSelected = () => {
|
|
1495
|
-
cancelMany(selectedUndoableIds);
|
|
1496
|
-
setSelected([]);
|
|
1497
|
-
};
|
|
1498
|
-
const undoAll = () => {
|
|
1499
|
-
cancelMany(undoableIds);
|
|
1500
|
-
setSelected([]);
|
|
1501
|
-
};
|
|
1502
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ui.Dialog, { open: isOpen, onOpenChange: setOpen, children: /* @__PURE__ */ jsxRuntime.jsxs(ui.DialogContent, { presentation: "sheet", className: "sm:max-w-2xl", "data-testid": "pending-sync-modal", children: [
|
|
1503
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { children: [
|
|
1504
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogTitle, { className: "flex items-center gap-2", children: [
|
|
1505
|
-
isOnline ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "h-5 w-5 text-primary" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.WifiOff, { className: "h-5 w-5 text-yellow-text" }),
|
|
1506
|
-
title
|
|
1507
|
-
] }),
|
|
1508
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { children: description })
|
|
1509
|
-
] }),
|
|
1510
|
-
items.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalSection, { className: "flex flex-col items-center gap-2 py-10 text-center text-muted-foreground", children: [
|
|
1511
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, { className: "h-6 w-6 text-green-text opacity-70" }),
|
|
1512
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: "Everything is up to date." })
|
|
1513
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(chunkULWRNGGE_cjs.ModalSection, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1514
|
-
chunkLKK52DEY_cjs.GridView,
|
|
1515
|
-
{
|
|
1516
|
-
items,
|
|
1517
|
-
columnDefs,
|
|
1518
|
-
getItemId: (item) => String(item.mutationId),
|
|
1519
|
-
selection: { mode: "multiple", selected, onSelectionChange: setSelected },
|
|
1520
|
-
height: "320px",
|
|
1521
|
-
gridId: "pending-sync-grid-v1"
|
|
1522
|
-
}
|
|
1523
|
-
) }),
|
|
1524
|
-
undoableIds.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(ui.DialogFooter, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1525
|
-
ui.Button,
|
|
1526
|
-
{
|
|
1527
|
-
variant: "outline",
|
|
1528
|
-
className: "gap-1.5",
|
|
1529
|
-
"data-testid": "pending-sync-undo",
|
|
1530
|
-
disabled: selected.length > 0 && selectedUndoableIds.length === 0,
|
|
1531
|
-
onClick: selected.length > 0 ? undoSelected : undoAll,
|
|
1532
|
-
children: [
|
|
1533
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.RotateCcw, { className: "h-4 w-4" }),
|
|
1534
|
-
selected.length > 0 ? `Undo selected (${selectedUndoableIds.length})` : `Undo all (${undoableIds.length})`
|
|
1535
|
-
]
|
|
1536
|
-
}
|
|
1537
|
-
) })
|
|
1538
|
-
] }) });
|
|
1539
|
-
}
|
|
1540
1422
|
function ConnectedWorkspaceNotificationMenu({
|
|
1541
1423
|
workspaceId: workspaceProp,
|
|
1542
1424
|
...menuProps
|
|
@@ -1553,7 +1435,7 @@ function ConnectedWorkspaceNotificationMenu({
|
|
|
1553
1435
|
}, [error, notify18]);
|
|
1554
1436
|
if (!workspaceId) return null;
|
|
1555
1437
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1556
|
-
|
|
1438
|
+
chunkRTS3B2W7_cjs.WorkspaceNotificationMenu,
|
|
1557
1439
|
{
|
|
1558
1440
|
...menuProps,
|
|
1559
1441
|
level,
|
|
@@ -1572,7 +1454,7 @@ function ConnectedThreadFollow({
|
|
|
1572
1454
|
enabled: live
|
|
1573
1455
|
});
|
|
1574
1456
|
if (!conversationId) return null;
|
|
1575
|
-
const Control = as === "menu-item" ?
|
|
1457
|
+
const Control = as === "menu-item" ? chunkRTS3B2W7_cjs.ThreadFollowMenuItem : chunkRTS3B2W7_cjs.ThreadFollowButton;
|
|
1576
1458
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1577
1459
|
Control,
|
|
1578
1460
|
{
|
|
@@ -2309,7 +2191,7 @@ function useConnectedAgentManagement({
|
|
|
2309
2191
|
const onEditorOpenChange = (open) => {
|
|
2310
2192
|
setEditorOpen(open);
|
|
2311
2193
|
};
|
|
2312
|
-
const
|
|
2194
|
+
const create2 = () => {
|
|
2313
2195
|
setEditing(null);
|
|
2314
2196
|
setEditorOpen(true);
|
|
2315
2197
|
};
|
|
@@ -2343,7 +2225,7 @@ function useConnectedAgentManagement({
|
|
|
2343
2225
|
return {
|
|
2344
2226
|
agents,
|
|
2345
2227
|
isLoading,
|
|
2346
|
-
create:
|
|
2228
|
+
create: create2,
|
|
2347
2229
|
edit,
|
|
2348
2230
|
assign,
|
|
2349
2231
|
remove,
|
|
@@ -3559,7 +3441,7 @@ function ConnectedTagTable({
|
|
|
3559
3441
|
const fail2 = (fallback) => (e) => notify18(browser.refusalReason(e, fallback), "error");
|
|
3560
3442
|
const snapshot2 = (data) => {
|
|
3561
3443
|
const title = exportTitle ?? ui.tagKindTitle(kind, { plural: true });
|
|
3562
|
-
const bytes =
|
|
3444
|
+
const bytes = chunkRTS3B2W7_cjs.tagTableDocx(data, {
|
|
3563
3445
|
title,
|
|
3564
3446
|
nameOf: (id) => people.find((p) => p.value === id)?.label
|
|
3565
3447
|
});
|
|
@@ -3568,7 +3450,7 @@ function ConnectedTagTable({
|
|
|
3568
3450
|
return { blob: new Blob([bytes], { type: chunkJIOHDVWH_cjs.DOCX_MIME_TYPE }), name };
|
|
3569
3451
|
};
|
|
3570
3452
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3571
|
-
|
|
3453
|
+
chunkRTS3B2W7_cjs.TagTable,
|
|
3572
3454
|
{
|
|
3573
3455
|
...props,
|
|
3574
3456
|
table,
|
|
@@ -3706,9 +3588,9 @@ function GlossaryExport({ labelId, nameOf }) {
|
|
|
3706
3588
|
const narrowed = agreements.find((a) => a.id === narrowTo);
|
|
3707
3589
|
const title = narrowed ? `Glossary - ${narrowed.name}` : "Glossary";
|
|
3708
3590
|
const download = (format) => {
|
|
3709
|
-
const entries =
|
|
3710
|
-
const blob = format === "docx" ? new Blob([
|
|
3711
|
-
documentTools.downloadBlob(blob,
|
|
3591
|
+
const entries = chunkRTS3B2W7_cjs.glossaryEntries(sources, { labelId: narrowed?.id });
|
|
3592
|
+
const blob = format === "docx" ? new Blob([chunkRTS3B2W7_cjs.glossaryDocx(entries, { title })], { type: chunkJIOHDVWH_cjs.DOCX_MIME_TYPE }) : new Blob([chunkRTS3B2W7_cjs.glossaryMarkdown(entries, { title })], { type: "text/markdown" });
|
|
3593
|
+
documentTools.downloadBlob(blob, chunkRTS3B2W7_cjs.glossaryFileName(title, format));
|
|
3712
3594
|
};
|
|
3713
3595
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", "data-testid": "tags-glossary", children: [
|
|
3714
3596
|
agreements.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -3747,958 +3629,6 @@ function GlossaryExport({ labelId, nameOf }) {
|
|
|
3747
3629
|
] })
|
|
3748
3630
|
] });
|
|
3749
3631
|
}
|
|
3750
|
-
function DocumentSyncGlyph({
|
|
3751
|
-
docExtId,
|
|
3752
|
-
size = 13,
|
|
3753
|
-
className,
|
|
3754
|
-
bgClassName = "bg-muted-foreground"
|
|
3755
|
-
}) {
|
|
3756
|
-
const isAvailableOffline = react.useOfflineDocumentIds().has(docExtId);
|
|
3757
|
-
if (!isAvailableOffline) return null;
|
|
3758
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3759
|
-
"span",
|
|
3760
|
-
{
|
|
3761
|
-
title: "Available offline (saved on this device)",
|
|
3762
|
-
"aria-label": "Available offline",
|
|
3763
|
-
"data-testid": `offline-available-badge-${docExtId}`,
|
|
3764
|
-
className: ui.cn(
|
|
3765
|
-
"inline-flex items-center justify-center rounded-full text-white ring-1 ring-white",
|
|
3766
|
-
bgClassName,
|
|
3767
|
-
className
|
|
3768
|
-
),
|
|
3769
|
-
style: { width: size, height: size },
|
|
3770
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowDownToLine, { size: Math.round(size * 0.7), strokeWidth: 2.75 })
|
|
3771
|
-
}
|
|
3772
|
-
);
|
|
3773
|
-
}
|
|
3774
|
-
var NO_ACTIONS = {};
|
|
3775
|
-
var ACTIVE_STATUSES = react.IN_FLIGHT_DOCUMENT_STATUSES;
|
|
3776
|
-
var TERMINAL_STATUSES = react.FINISHED_DOCUMENT_STATUSES;
|
|
3777
|
-
var STATUS_LABEL = {
|
|
3778
|
-
uploading: "Uploading",
|
|
3779
|
-
queued: "Queued",
|
|
3780
|
-
parsing: "Parsing",
|
|
3781
|
-
encrypting: "Encrypting",
|
|
3782
|
-
indexing: "Indexing",
|
|
3783
|
-
analysing: "Analysing"
|
|
3784
|
-
};
|
|
3785
|
-
function isActiveDocumentStatus(status) {
|
|
3786
|
-
return ACTIVE_STATUSES.has(status.toLowerCase());
|
|
3787
|
-
}
|
|
3788
|
-
function useDocStatus(doc) {
|
|
3789
|
-
return react.resolveDocumentStatus(doc, react.useProcessingTask(doc.external_id));
|
|
3790
|
-
}
|
|
3791
|
-
function TileStatusBadge({ doc, status }) {
|
|
3792
|
-
let tone = "neutral";
|
|
3793
|
-
let icon2 = null;
|
|
3794
|
-
let title = "";
|
|
3795
|
-
switch (status) {
|
|
3796
|
-
case "completed":
|
|
3797
|
-
tone = "success";
|
|
3798
|
-
icon2 = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { className: "size-4 text-green-text", strokeWidth: 2.75 });
|
|
3799
|
-
title = "Ready";
|
|
3800
|
-
break;
|
|
3801
|
-
case "failed":
|
|
3802
|
-
tone = "danger";
|
|
3803
|
-
icon2 = /* @__PURE__ */ jsxRuntime.jsx(
|
|
3804
|
-
chunkQKOFQMAY_cjs.FailedStageIcon,
|
|
3805
|
-
{
|
|
3806
|
-
stage: doc.failed_stage ?? null,
|
|
3807
|
-
errorMessage: doc.error_message,
|
|
3808
|
-
className: "size-4 text-red-text"
|
|
3809
|
-
}
|
|
3810
|
-
);
|
|
3811
|
-
title = "Failed";
|
|
3812
|
-
break;
|
|
3813
|
-
case "skipped":
|
|
3814
|
-
icon2 = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SkipForward, { className: "size-4 text-muted-foreground", strokeWidth: 2.75 });
|
|
3815
|
-
title = "Skipped";
|
|
3816
|
-
break;
|
|
3817
|
-
case "empty":
|
|
3818
|
-
tone = "warning";
|
|
3819
|
-
icon2 = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileX, { className: "size-4 text-yellow-text", strokeWidth: 2.75 });
|
|
3820
|
-
title = "Empty \u2014 no extractable content";
|
|
3821
|
-
break;
|
|
3822
|
-
case "low-content":
|
|
3823
|
-
tone = "warning";
|
|
3824
|
-
icon2 = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-4 text-yellow-text", strokeWidth: 2.75 });
|
|
3825
|
-
title = "Low content \u2014 minimal extractable content";
|
|
3826
|
-
break;
|
|
3827
|
-
default:
|
|
3828
|
-
return null;
|
|
3829
|
-
}
|
|
3830
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3831
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
3832
|
-
{
|
|
3833
|
-
tone,
|
|
3834
|
-
icon: icon2,
|
|
3835
|
-
title,
|
|
3836
|
-
testId: `explorer-file-status-${doc.external_id}`
|
|
3837
|
-
}
|
|
3838
|
-
);
|
|
3839
|
-
}
|
|
3840
|
-
function TileVisibilityBadge({ doc }) {
|
|
3841
|
-
const shared = !!doc.shared;
|
|
3842
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3843
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
3844
|
-
{
|
|
3845
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(ui.VisibilityIcon, { isShared: shared, className: "size-3.5", "aria-hidden": true }),
|
|
3846
|
-
label: shared ? ui.getEntityLabel("WORKSPACE") : "Only you",
|
|
3847
|
-
title: chunkQKOFQMAY_cjs.visibilityAudience(shared),
|
|
3848
|
-
testId: `explorer-file-visibility-${doc.external_id}`
|
|
3849
|
-
}
|
|
3850
|
-
);
|
|
3851
|
-
}
|
|
3852
|
-
function MiniUserAvatar({ user }) {
|
|
3853
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(ui.Avatar, { className: "h-4 w-4 border border-white", children: [
|
|
3854
|
-
user.picture && /* @__PURE__ */ jsxRuntime.jsx(ui.AvatarImage, { src: user.picture, alt: ui.getUserDisplayName(user) }),
|
|
3855
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3856
|
-
ui.AvatarFallback,
|
|
3857
|
-
{
|
|
3858
|
-
className: ui.cn(
|
|
3859
|
-
"text-xs font-semibold leading-none text-white",
|
|
3860
|
-
ui.getUserAvatarColor(user.external_id)
|
|
3861
|
-
),
|
|
3862
|
-
children: ui.getUserInitials(user)
|
|
3863
|
-
}
|
|
3864
|
-
)
|
|
3865
|
-
] });
|
|
3866
|
-
}
|
|
3867
|
-
function FileTooltipContent({
|
|
3868
|
-
doc,
|
|
3869
|
-
modifiedBy,
|
|
3870
|
-
tagNameById
|
|
3871
|
-
}) {
|
|
3872
|
-
const labels = (doc.doctags ?? []).map((dt) => tagNameById.get(dt.tag_ext_id)).filter((name) => !!name);
|
|
3873
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3874
|
-
chunkQKOFQMAY_cjs.ExplorerFileTooltip,
|
|
3875
|
-
{
|
|
3876
|
-
title: ui.getDocumentTitle(doc, doc.file_name ?? ""),
|
|
3877
|
-
summary: ui.getDocumentSubject(doc),
|
|
3878
|
-
modifiedLabel: doc.updated_at ? ui.formatFriendlyDate(doc.updated_at, false) : null,
|
|
3879
|
-
modifiedByAvatar: modifiedBy && /* @__PURE__ */ jsxRuntime.jsx(MiniUserAvatar, { user: modifiedBy }),
|
|
3880
|
-
shared: !!doc.shared,
|
|
3881
|
-
visibilityIcon: /* @__PURE__ */ jsxRuntime.jsx(ui.VisibilityIcon, { isShared: !!doc.shared, className: "h-3 w-3" }),
|
|
3882
|
-
labels,
|
|
3883
|
-
uiLabels: { shared: chunkQKOFQMAY_cjs.visibilityAudience(true), private: chunkQKOFQMAY_cjs.visibilityAudience(false) }
|
|
3884
|
-
}
|
|
3885
|
-
);
|
|
3886
|
-
}
|
|
3887
|
-
function startMenuItem(items) {
|
|
3888
|
-
if (items.length === 0) return [];
|
|
3889
|
-
return [
|
|
3890
|
-
{
|
|
3891
|
-
id: "start",
|
|
3892
|
-
label: "Start\u2026",
|
|
3893
|
-
icon: lucideReact.Sparkles,
|
|
3894
|
-
testId: "explorer-start-menu",
|
|
3895
|
-
onSelect: () => {
|
|
3896
|
-
},
|
|
3897
|
-
submenu: items.map((item) => ({
|
|
3898
|
-
id: item.id,
|
|
3899
|
-
label: item.title,
|
|
3900
|
-
icon: lucideReact.Play,
|
|
3901
|
-
onSelect: item.run,
|
|
3902
|
-
testId: `explorer-start-${item.id}`
|
|
3903
|
-
}))
|
|
3904
|
-
}
|
|
3905
|
-
];
|
|
3906
|
-
}
|
|
3907
|
-
var FileTile = React9.memo(function FileTile2({
|
|
3908
|
-
doc,
|
|
3909
|
-
density,
|
|
3910
|
-
selected,
|
|
3911
|
-
dragging,
|
|
3912
|
-
dndActive,
|
|
3913
|
-
renaming,
|
|
3914
|
-
canDelete,
|
|
3915
|
-
thumbnailUrl,
|
|
3916
|
-
modifiedBy,
|
|
3917
|
-
tagNameById,
|
|
3918
|
-
onSelect,
|
|
3919
|
-
onToggle,
|
|
3920
|
-
onOpen,
|
|
3921
|
-
onReview,
|
|
3922
|
-
onStartRename,
|
|
3923
|
-
onCommitRename,
|
|
3924
|
-
onCancelRename,
|
|
3925
|
-
onDownload,
|
|
3926
|
-
onMove,
|
|
3927
|
-
onDelete,
|
|
3928
|
-
actions = NO_ACTIONS
|
|
3929
|
-
}) {
|
|
3930
|
-
const { attributes, listeners: listeners2, setNodeRef } = core.useDraggable({
|
|
3931
|
-
id: `doc:${doc.external_id}`,
|
|
3932
|
-
data: { type: "doc", docId: doc.external_id }
|
|
3933
|
-
});
|
|
3934
|
-
const { notify: notify18 } = chunkI72IYIO2_cjs.useBlocksEnvironment();
|
|
3935
|
-
const { startItemsForFile, openDocumentChat, emailDocument } = actions;
|
|
3936
|
-
const status = useDocStatus(doc);
|
|
3937
|
-
const isProcessing = ACTIVE_STATUSES.has(status);
|
|
3938
|
-
const isOffline = react.useOfflineDocumentIds().has(doc.external_id);
|
|
3939
|
-
const isViewing = react.useOpenViewerDocumentId() === doc.external_id;
|
|
3940
|
-
const showStatusMarker = !isProcessing && TERMINAL_STATUSES.has(status);
|
|
3941
|
-
const Icon = ui.getFileTypeIcon(doc.file_name, { mime: doc.file_type });
|
|
3942
|
-
const { data: mailPolicy } = react.useMailPolicy();
|
|
3943
|
-
const shareAsEmail = async () => {
|
|
3944
|
-
try {
|
|
3945
|
-
await emailDocument?.(doc);
|
|
3946
|
-
} catch (error) {
|
|
3947
|
-
notify18(error instanceof Error ? error.message : "Could not attach document", "error");
|
|
3948
|
-
}
|
|
3949
|
-
};
|
|
3950
|
-
const startItems = startItemsForFile?.(doc);
|
|
3951
|
-
const menuItems = [
|
|
3952
|
-
{ id: "open", label: "Open", icon: lucideReact.SquarePen, onSelect: () => onOpen(doc) },
|
|
3953
|
-
...onReview ? [{ id: "review", label: "Open in Review", icon: lucideReact.BookOpen, onSelect: () => onReview(doc) }] : [],
|
|
3954
|
-
...openDocumentChat ? [
|
|
3955
|
-
{
|
|
3956
|
-
id: "chat",
|
|
3957
|
-
label: "Document chat",
|
|
3958
|
-
icon: lucideReact.MessagesSquare,
|
|
3959
|
-
onSelect: () => openDocumentChat(doc.external_id)
|
|
3960
|
-
}
|
|
3961
|
-
] : [],
|
|
3962
|
-
...startMenuItem(startItems ?? []),
|
|
3963
|
-
{
|
|
3964
|
-
id: "rename",
|
|
3965
|
-
label: "Rename",
|
|
3966
|
-
icon: lucideReact.Pencil,
|
|
3967
|
-
onSelect: () => onStartRename(doc),
|
|
3968
|
-
separatorBefore: true
|
|
3969
|
-
},
|
|
3970
|
-
{ id: "download", label: "Download", icon: lucideReact.Download, onSelect: () => onDownload(doc) },
|
|
3971
|
-
...emailDocument && mailPolicy?.enabled ? [
|
|
3972
|
-
{
|
|
3973
|
-
id: "email",
|
|
3974
|
-
label: "Send as email attachment",
|
|
3975
|
-
icon: lucideReact.Mail,
|
|
3976
|
-
onSelect: () => {
|
|
3977
|
-
void shareAsEmail();
|
|
3978
|
-
}
|
|
3979
|
-
}
|
|
3980
|
-
] : [],
|
|
3981
|
-
...onMove ? [{ id: "move", label: "Move to\u2026", icon: lucideReact.FolderInput, onSelect: () => onMove(doc) }] : [],
|
|
3982
|
-
...canDelete ? [
|
|
3983
|
-
{
|
|
3984
|
-
id: "delete",
|
|
3985
|
-
label: "Delete",
|
|
3986
|
-
icon: lucideReact.Trash2,
|
|
3987
|
-
onSelect: () => onDelete(doc),
|
|
3988
|
-
destructive: true,
|
|
3989
|
-
separatorBefore: true
|
|
3990
|
-
}
|
|
3991
|
-
] : []
|
|
3992
|
-
];
|
|
3993
|
-
const tooltip = renaming || dndActive ? void 0 : /* @__PURE__ */ jsxRuntime.jsx(FileTooltipContent, { doc, modifiedBy, tagNameById });
|
|
3994
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3995
|
-
chunkQKOFQMAY_cjs.ExplorerFileTile,
|
|
3996
|
-
{
|
|
3997
|
-
id: doc.external_id,
|
|
3998
|
-
title: ui.getDocumentTitle(doc, doc.file_name ?? ""),
|
|
3999
|
-
density,
|
|
4000
|
-
selected,
|
|
4001
|
-
dragging,
|
|
4002
|
-
renaming,
|
|
4003
|
-
thumbnailUrl,
|
|
4004
|
-
renderFileIcon: (size) => /* @__PURE__ */ jsxRuntime.jsx(Icon, { size, className: "drop-shadow-sm" }),
|
|
4005
|
-
progress: isProcessing ? { label: STATUS_LABEL[status] ?? status, queued: status === "queued" } : void 0,
|
|
4006
|
-
statusMarker: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
4007
|
-
/* @__PURE__ */ jsxRuntime.jsx(TileVisibilityBadge, { doc }),
|
|
4008
|
-
showStatusMarker && /* @__PURE__ */ jsxRuntime.jsx(TileStatusBadge, { doc, status })
|
|
4009
|
-
] }),
|
|
4010
|
-
offlineMarker: isOffline ? /* @__PURE__ */ jsxRuntime.jsx(DocumentSyncGlyph, { docExtId: doc.external_id, size: 24, bgClassName: "bg-primary" }) : void 0,
|
|
4011
|
-
entity: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4012
|
-
ui.DocumentEntity,
|
|
4013
|
-
{
|
|
4014
|
-
doc,
|
|
4015
|
-
labelMaxWidth: "max-w-full",
|
|
4016
|
-
noClamp: true,
|
|
4017
|
-
labelClassName: "whitespace-normal line-clamp-2 break-words",
|
|
4018
|
-
viewing: isViewing,
|
|
4019
|
-
tooltipContent: /* @__PURE__ */ jsxRuntime.jsx(FileTooltipContent, { doc, modifiedBy, tagNameById }),
|
|
4020
|
-
className: ui.cn(
|
|
4021
|
-
"w-full min-w-0 max-w-full bg-background/90 backdrop-blur-sm",
|
|
4022
|
-
density === "list" ? "text-xs" : void 0
|
|
4023
|
-
),
|
|
4024
|
-
onClick: (e) => {
|
|
4025
|
-
e.stopPropagation();
|
|
4026
|
-
onOpen(doc);
|
|
4027
|
-
}
|
|
4028
|
-
}
|
|
4029
|
-
),
|
|
4030
|
-
tooltip,
|
|
4031
|
-
menuItems,
|
|
4032
|
-
rootRef: setNodeRef,
|
|
4033
|
-
rootProps: { ...listeners2, ...attributes },
|
|
4034
|
-
onOpen: () => onOpen(doc),
|
|
4035
|
-
onSelect: (e) => onSelect(doc, e),
|
|
4036
|
-
onToggle: (e) => onToggle(doc, e),
|
|
4037
|
-
onCommitRename: (name) => onCommitRename(doc, name),
|
|
4038
|
-
onCancelRename
|
|
4039
|
-
}
|
|
4040
|
-
);
|
|
4041
|
-
});
|
|
4042
|
-
var FolderTile = React9.memo(function FolderTile2({
|
|
4043
|
-
folder,
|
|
4044
|
-
density,
|
|
4045
|
-
editing,
|
|
4046
|
-
selected,
|
|
4047
|
-
partiallySelected,
|
|
4048
|
-
documents,
|
|
4049
|
-
onOpen,
|
|
4050
|
-
onToggleSelect,
|
|
4051
|
-
onCommitName,
|
|
4052
|
-
onCancelName,
|
|
4053
|
-
onStartRename,
|
|
4054
|
-
onDownload,
|
|
4055
|
-
onMove,
|
|
4056
|
-
onDelete,
|
|
4057
|
-
actions = NO_ACTIONS
|
|
4058
|
-
}) {
|
|
4059
|
-
const { setNodeRef, isOver } = core.useDroppable({
|
|
4060
|
-
id: `folder:${folder.path.join("/")}`,
|
|
4061
|
-
data: { type: "folder", path: folder.path }
|
|
4062
|
-
});
|
|
4063
|
-
const { startItemsForFolder } = actions;
|
|
4064
|
-
const tasks = react.useProcessingTasks();
|
|
4065
|
-
const processingCount = React9.useMemo(
|
|
4066
|
-
() => documents.filter(
|
|
4067
|
-
(doc) => isActiveDocumentStatus(react.resolveDocumentStatus(doc, tasks[doc.external_id]))
|
|
4068
|
-
).length,
|
|
4069
|
-
[documents, tasks]
|
|
4070
|
-
);
|
|
4071
|
-
const isEmpty = folder.count === 0;
|
|
4072
|
-
const iconSize = density === "list" ? 34 : 48;
|
|
4073
|
-
const menuItems = [
|
|
4074
|
-
...onStartRename ? [{ id: "rename", label: "Rename", icon: lucideReact.Pencil, onSelect: () => onStartRename(folder) }] : [],
|
|
4075
|
-
...!isEmpty ? startMenuItem(startItemsForFolder?.(folder.path.join("/")) ?? []) : [],
|
|
4076
|
-
...onDownload && !isEmpty ? [{ id: "download", label: "Download", icon: lucideReact.Download, onSelect: () => onDownload(folder) }] : [],
|
|
4077
|
-
...onMove && !isEmpty ? [{ id: "move", label: "Move to\u2026", icon: lucideReact.FolderInput, onSelect: () => onMove(folder) }] : [],
|
|
4078
|
-
...onDelete ? [
|
|
4079
|
-
{
|
|
4080
|
-
id: "delete",
|
|
4081
|
-
label: "Delete",
|
|
4082
|
-
icon: lucideReact.Trash2,
|
|
4083
|
-
onSelect: () => onDelete(folder),
|
|
4084
|
-
destructive: true,
|
|
4085
|
-
separatorBefore: true
|
|
4086
|
-
}
|
|
4087
|
-
] : []
|
|
4088
|
-
];
|
|
4089
|
-
const displayName = folder.path.length === 1 ? chunkQKOFQMAY_cjs.formatFolderSegment(folder.name) : folder.name;
|
|
4090
|
-
const providerIcon = folder.path.length === 1 && chunkQKOFQMAY_cjs.hasFolderProviderIcon(folder.name) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4091
|
-
"span",
|
|
4092
|
-
{
|
|
4093
|
-
className: "flex items-center justify-center drop-shadow-sm",
|
|
4094
|
-
style: { width: iconSize, height: iconSize },
|
|
4095
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FolderProviderIcon, { folderPath: folder.name, className: "h-full w-full" })
|
|
4096
|
-
}
|
|
4097
|
-
) : void 0;
|
|
4098
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4099
|
-
chunkQKOFQMAY_cjs.ExplorerFolderTile,
|
|
4100
|
-
{
|
|
4101
|
-
name: folder.name,
|
|
4102
|
-
displayName: displayName === "" ? null : displayName,
|
|
4103
|
-
path: folder.path,
|
|
4104
|
-
count: folder.count,
|
|
4105
|
-
density,
|
|
4106
|
-
editing,
|
|
4107
|
-
selected,
|
|
4108
|
-
partiallySelected,
|
|
4109
|
-
processingCount,
|
|
4110
|
-
isOver,
|
|
4111
|
-
icon: providerIcon,
|
|
4112
|
-
menuItems,
|
|
4113
|
-
rootRef: setNodeRef,
|
|
4114
|
-
onOpen: () => onOpen(folder),
|
|
4115
|
-
onToggleSelect: onToggleSelect ? (e) => onToggleSelect(folder, e) : void 0,
|
|
4116
|
-
onCommitName: (name) => onCommitName?.(folder, name),
|
|
4117
|
-
onCancelName
|
|
4118
|
-
}
|
|
4119
|
-
);
|
|
4120
|
-
});
|
|
4121
|
-
var PROCESSING_LABELS = {
|
|
4122
|
-
parsing: "Parsing",
|
|
4123
|
-
encrypting: "Encrypting",
|
|
4124
|
-
indexing: "Indexing",
|
|
4125
|
-
analysing: "Analysing"
|
|
4126
|
-
};
|
|
4127
|
-
var QUOTA_PREFIX = "QUOTA_EXCEEDED:";
|
|
4128
|
-
function parseQuotaError(errorMessage2) {
|
|
4129
|
-
if (!errorMessage2 || !errorMessage2.startsWith(QUOTA_PREFIX)) return null;
|
|
4130
|
-
const body = errorMessage2.slice(QUOTA_PREFIX.length);
|
|
4131
|
-
const spend = body.match(/spend=([0-9.]+)/)?.[1];
|
|
4132
|
-
const budget = body.match(/budget=([0-9.]+)/)?.[1];
|
|
4133
|
-
const projectExtId = body.match(/project_ext_id=([^\s,]+)/)?.[1] ?? null;
|
|
4134
|
-
if (spend === void 0 || budget === void 0) return null;
|
|
4135
|
-
return { spend: Number(spend), budget: Number(budget), projectExtId };
|
|
4136
|
-
}
|
|
4137
|
-
function useResolvedDocStatus(doc) {
|
|
4138
|
-
const task = react.useProcessingTask(doc?.external_id ?? "");
|
|
4139
|
-
const isPendingSync = react.useDocumentPendingSync(doc?.external_id);
|
|
4140
|
-
if (!doc || !doc.status) return null;
|
|
4141
|
-
const status = react.resolveDocumentStatus(doc, doc.external_id ? task : void 0);
|
|
4142
|
-
return { status, isPendingSync, failedStage: task?.failed_stage ?? doc.failed_stage ?? null };
|
|
4143
|
-
}
|
|
4144
|
-
var GLYPH = "size-3.5 shrink-0";
|
|
4145
|
-
function describeGlyph(resolved, doc) {
|
|
4146
|
-
if (resolved.isPendingSync) {
|
|
4147
|
-
return {
|
|
4148
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: `${GLYPH} text-yellow-text` }),
|
|
4149
|
-
title: "Changes saved on this device, waiting to sync"
|
|
4150
|
-
};
|
|
4151
|
-
}
|
|
4152
|
-
switch (resolved.status) {
|
|
4153
|
-
case "queued": {
|
|
4154
|
-
const isDocx = doc.file_name?.toLowerCase().endsWith(".docx");
|
|
4155
|
-
return {
|
|
4156
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: `${GLYPH} text-muted-foreground` }),
|
|
4157
|
-
title: isDocx ? "The document is available to edit. PDF and search indexing are processing." : "Queued, waiting to start"
|
|
4158
|
-
};
|
|
4159
|
-
}
|
|
4160
|
-
case "parsing":
|
|
4161
|
-
case "encrypting":
|
|
4162
|
-
case "indexing":
|
|
4163
|
-
case "analysing":
|
|
4164
|
-
return {
|
|
4165
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: `${GLYPH} animate-spin text-ai-ink` }),
|
|
4166
|
-
title: PROCESSING_LABELS[resolved.status]
|
|
4167
|
-
};
|
|
4168
|
-
case "skipped":
|
|
4169
|
-
return {
|
|
4170
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SkipForward, { className: `${GLYPH} text-muted-foreground` }),
|
|
4171
|
-
title: "Skipped"
|
|
4172
|
-
};
|
|
4173
|
-
case "empty":
|
|
4174
|
-
return {
|
|
4175
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileX, { className: `${GLYPH} text-yellow-text` }),
|
|
4176
|
-
title: "Empty, no extractable content"
|
|
4177
|
-
};
|
|
4178
|
-
case "low-content":
|
|
4179
|
-
return {
|
|
4180
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: `${GLYPH} text-yellow-text` }),
|
|
4181
|
-
title: "Low content, minimal extractable content"
|
|
4182
|
-
};
|
|
4183
|
-
case "failed":
|
|
4184
|
-
if (doc.error_message?.startsWith(QUOTA_PREFIX)) {
|
|
4185
|
-
return { node: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { className: `${GLYPH} text-yellow-text` }), title: "AI usage used up" };
|
|
4186
|
-
}
|
|
4187
|
-
return {
|
|
4188
|
-
node: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4189
|
-
chunkQKOFQMAY_cjs.FailedStageIcon,
|
|
4190
|
-
{
|
|
4191
|
-
stage: resolved.failedStage,
|
|
4192
|
-
errorMessage: doc.error_message,
|
|
4193
|
-
className: `${GLYPH} text-red-text`
|
|
4194
|
-
}
|
|
4195
|
-
),
|
|
4196
|
-
title: "Failed"
|
|
4197
|
-
};
|
|
4198
|
-
default:
|
|
4199
|
-
return null;
|
|
4200
|
-
}
|
|
4201
|
-
}
|
|
4202
|
-
var DocumentStatusGlyph = React9.memo(function DocumentStatusGlyph2({
|
|
4203
|
-
doc
|
|
4204
|
-
}) {
|
|
4205
|
-
const resolved = useResolvedDocStatus(doc);
|
|
4206
|
-
const shown = resolved ? describeGlyph(resolved, doc) : null;
|
|
4207
|
-
if (!resolved || !shown) return null;
|
|
4208
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4209
|
-
"span",
|
|
4210
|
-
{
|
|
4211
|
-
role: "img",
|
|
4212
|
-
"aria-label": shown.title,
|
|
4213
|
-
title: shown.title,
|
|
4214
|
-
"data-slot": "document-status-glyph",
|
|
4215
|
-
"data-status": resolved.status,
|
|
4216
|
-
className: "inline-flex items-center",
|
|
4217
|
-
children: shown.node
|
|
4218
|
-
}
|
|
4219
|
-
);
|
|
4220
|
-
});
|
|
4221
|
-
var StatusCell2 = React9.memo(function StatusCell3({
|
|
4222
|
-
doc,
|
|
4223
|
-
onStatusClick,
|
|
4224
|
-
actions
|
|
4225
|
-
}) {
|
|
4226
|
-
const resolved = useResolvedDocStatus(doc);
|
|
4227
|
-
if (!doc || !resolved) return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "\u2014" });
|
|
4228
|
-
const { status, isPendingSync, failedStage } = resolved;
|
|
4229
|
-
const cell = (pill) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-full w-full items-center justify-center overflow-hidden", children: pill });
|
|
4230
|
-
const click = () => onStatusClick?.();
|
|
4231
|
-
if (isPendingSync) {
|
|
4232
|
-
return cell(
|
|
4233
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4234
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4235
|
-
{
|
|
4236
|
-
tone: "warning",
|
|
4237
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "size-3.5" }),
|
|
4238
|
-
label: "Pending",
|
|
4239
|
-
title: "Changes saved on this device \u2014 waiting to sync",
|
|
4240
|
-
onClick: openPendingSyncDialog
|
|
4241
|
-
}
|
|
4242
|
-
)
|
|
4243
|
-
);
|
|
4244
|
-
}
|
|
4245
|
-
switch (status) {
|
|
4246
|
-
case "completed":
|
|
4247
|
-
return cell(
|
|
4248
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4249
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4250
|
-
{
|
|
4251
|
-
tone: "success",
|
|
4252
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle, { className: "size-3.5" }),
|
|
4253
|
-
label: "Ready",
|
|
4254
|
-
title: "Ready",
|
|
4255
|
-
onClick: click
|
|
4256
|
-
}
|
|
4257
|
-
)
|
|
4258
|
-
);
|
|
4259
|
-
case "skipped":
|
|
4260
|
-
return cell(
|
|
4261
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4262
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4263
|
-
{
|
|
4264
|
-
tone: "neutral",
|
|
4265
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SkipForward, { className: "size-3.5" }),
|
|
4266
|
-
label: "Skipped",
|
|
4267
|
-
title: "Skipped",
|
|
4268
|
-
onClick: click
|
|
4269
|
-
}
|
|
4270
|
-
)
|
|
4271
|
-
);
|
|
4272
|
-
case "empty":
|
|
4273
|
-
return cell(
|
|
4274
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4275
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4276
|
-
{
|
|
4277
|
-
tone: "warning",
|
|
4278
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.FileX, { className: "size-3.5" }),
|
|
4279
|
-
label: "Empty",
|
|
4280
|
-
title: "Empty - no extractable content",
|
|
4281
|
-
onClick: click
|
|
4282
|
-
}
|
|
4283
|
-
)
|
|
4284
|
-
);
|
|
4285
|
-
case "low-content":
|
|
4286
|
-
return cell(
|
|
4287
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4288
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4289
|
-
{
|
|
4290
|
-
tone: "warning",
|
|
4291
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "size-3.5" }),
|
|
4292
|
-
label: "Low content",
|
|
4293
|
-
title: "Low content - minimal extractable content",
|
|
4294
|
-
onClick: click
|
|
4295
|
-
}
|
|
4296
|
-
)
|
|
4297
|
-
);
|
|
4298
|
-
case "failed": {
|
|
4299
|
-
const quota = parseQuotaError(doc.error_message);
|
|
4300
|
-
if (quota) {
|
|
4301
|
-
return cell(
|
|
4302
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4303
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4304
|
-
{
|
|
4305
|
-
tone: "warning",
|
|
4306
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { className: "size-3.5" }),
|
|
4307
|
-
label: "Quota",
|
|
4308
|
-
title: "AI usage used up \u2014 click for options",
|
|
4309
|
-
onClick: () => actions?.openQuota?.(quota)
|
|
4310
|
-
}
|
|
4311
|
-
)
|
|
4312
|
-
);
|
|
4313
|
-
}
|
|
4314
|
-
return cell(
|
|
4315
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4316
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4317
|
-
{
|
|
4318
|
-
tone: "danger",
|
|
4319
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4320
|
-
chunkQKOFQMAY_cjs.FailedStageIcon,
|
|
4321
|
-
{
|
|
4322
|
-
stage: failedStage,
|
|
4323
|
-
errorMessage: doc.error_message,
|
|
4324
|
-
className: "size-3.5"
|
|
4325
|
-
}
|
|
4326
|
-
),
|
|
4327
|
-
label: "Failed",
|
|
4328
|
-
onClick: click
|
|
4329
|
-
}
|
|
4330
|
-
)
|
|
4331
|
-
);
|
|
4332
|
-
}
|
|
4333
|
-
case "queued": {
|
|
4334
|
-
const isDocx = doc.file_name?.toLowerCase().endsWith(".docx");
|
|
4335
|
-
return cell(
|
|
4336
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4337
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4338
|
-
{
|
|
4339
|
-
tone: "neutral",
|
|
4340
|
-
label: isDocx ? "Uploaded" : "Queued",
|
|
4341
|
-
progress: "queued",
|
|
4342
|
-
title: isDocx ? "The document is available to edit. PDF and search indexing are processing." : "Queued - waiting to start",
|
|
4343
|
-
onClick: click
|
|
4344
|
-
}
|
|
4345
|
-
)
|
|
4346
|
-
);
|
|
4347
|
-
}
|
|
4348
|
-
case "parsing":
|
|
4349
|
-
case "encrypting":
|
|
4350
|
-
case "indexing":
|
|
4351
|
-
case "analysing":
|
|
4352
|
-
return cell(
|
|
4353
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4354
|
-
chunkQKOFQMAY_cjs.StatusPill,
|
|
4355
|
-
{
|
|
4356
|
-
tone: "info",
|
|
4357
|
-
label: PROCESSING_LABELS[status],
|
|
4358
|
-
progress: "processing",
|
|
4359
|
-
title: PROCESSING_LABELS[status],
|
|
4360
|
-
onClick: click
|
|
4361
|
-
}
|
|
4362
|
-
)
|
|
4363
|
-
);
|
|
4364
|
-
default:
|
|
4365
|
-
return cell(/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-muted-foreground", children: status }));
|
|
4366
|
-
}
|
|
4367
|
-
});
|
|
4368
|
-
var UserAvatar = React9.memo(function UserAvatar2({
|
|
4369
|
-
user,
|
|
4370
|
-
isMe = false,
|
|
4371
|
-
onOpen
|
|
4372
|
-
}) {
|
|
4373
|
-
if (!user) return /* @__PURE__ */ jsxRuntime.jsx(ui.UserEntity, { empty: true, size: "xs" });
|
|
4374
|
-
const colorClass = ui.getUserAvatarColor(user.external_id);
|
|
4375
|
-
const agent = ui.isAgent(user);
|
|
4376
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4377
|
-
ui.UserEntity,
|
|
4378
|
-
{
|
|
4379
|
-
size: "xs",
|
|
4380
|
-
variant: "icon",
|
|
4381
|
-
showTooltip: false,
|
|
4382
|
-
interactive: !!onOpen,
|
|
4383
|
-
initials: ui.getUserInitials(user),
|
|
4384
|
-
displayName: isMe ? "You" : ui.getUserDisplayName(user),
|
|
4385
|
-
picture: user.picture,
|
|
4386
|
-
colorClass,
|
|
4387
|
-
isAgent: agent,
|
|
4388
|
-
isVerified: user.is_identity_verified === true,
|
|
4389
|
-
agentStyle: agent ? ui.agentAvatarColors(colorClass) : void 0,
|
|
4390
|
-
isMe,
|
|
4391
|
-
onClick: onOpen ? (e) => {
|
|
4392
|
-
e.stopPropagation();
|
|
4393
|
-
onOpen(user.external_id);
|
|
4394
|
-
} : void 0
|
|
4395
|
-
}
|
|
4396
|
-
);
|
|
4397
|
-
});
|
|
4398
|
-
function DocumentSummaryTooltip({
|
|
4399
|
-
doc,
|
|
4400
|
-
users
|
|
4401
|
-
}) {
|
|
4402
|
-
const { data: tags } = react.useTags();
|
|
4403
|
-
const modifiedBy = users.find(
|
|
4404
|
-
(u) => u.external_id === (doc.updated_by_ext_id ?? doc.created_by_ext_id)
|
|
4405
|
-
);
|
|
4406
|
-
const tagNameById = /* @__PURE__ */ new Map();
|
|
4407
|
-
for (const tag of tags ?? []) tagNameById.set(tag.external_id, tag.name);
|
|
4408
|
-
return /* @__PURE__ */ jsxRuntime.jsx(FileTooltipContent, { doc, modifiedBy, tagNameById });
|
|
4409
|
-
}
|
|
4410
|
-
var OPEN_AFTER_DOUBLE_CLICK_WINDOW_MS = 300;
|
|
4411
|
-
var DocumentNameCell = React9.memo(function DocumentNameCell2({
|
|
4412
|
-
doc,
|
|
4413
|
-
canEdit,
|
|
4414
|
-
users,
|
|
4415
|
-
onOpen,
|
|
4416
|
-
onReview,
|
|
4417
|
-
onDocumentChat,
|
|
4418
|
-
onRename,
|
|
4419
|
-
onDownload,
|
|
4420
|
-
onMove,
|
|
4421
|
-
onDelete
|
|
4422
|
-
}) {
|
|
4423
|
-
const arbi = react.useArbi();
|
|
4424
|
-
const { notify: notify18 } = chunkI72IYIO2_cjs.useBlocksEnvironment();
|
|
4425
|
-
const isViewing = react.useOpenViewerDocumentId() === doc.external_id;
|
|
4426
|
-
const openTimerRef = React9.useRef(void 0);
|
|
4427
|
-
React9.useEffect(() => () => window.clearTimeout(openTimerRef.current), []);
|
|
4428
|
-
const downloadMarkup = async () => {
|
|
4429
|
-
try {
|
|
4430
|
-
const { blob, fileName } = await documentTools.fetchMarkupPdf(arbi.getClient().fetch, doc.external_id);
|
|
4431
|
-
documentTools.downloadBlob(blob, fileName);
|
|
4432
|
-
} catch (e) {
|
|
4433
|
-
notify18(e instanceof Error ? e.message : "The markup could not be downloaded", "error");
|
|
4434
|
-
}
|
|
4435
|
-
};
|
|
4436
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4437
|
-
chunkQKOFQMAY_cjs.DocumentNameCellFrame,
|
|
4438
|
-
{
|
|
4439
|
-
testId: `open-document-viewer-button-${doc.external_id}`,
|
|
4440
|
-
isViewing,
|
|
4441
|
-
subtitle: [doc.created_at?.slice(0, 10), doc.folder ? ui.formatFolderLabel(doc.folder) : null].filter(Boolean).join(" \xB7 "),
|
|
4442
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4443
|
-
ui.DocumentEntity,
|
|
4444
|
-
{
|
|
4445
|
-
doc,
|
|
4446
|
-
size: "base",
|
|
4447
|
-
labelMaxWidth: "max-w-full",
|
|
4448
|
-
fullWidth: true,
|
|
4449
|
-
status: /* @__PURE__ */ jsxRuntime.jsx(DocumentStatusGlyph, { doc }),
|
|
4450
|
-
tooltipContent: /* @__PURE__ */ jsxRuntime.jsx(DocumentSummaryTooltip, { doc, users }),
|
|
4451
|
-
iconBadge: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4452
|
-
DocumentSyncGlyph,
|
|
4453
|
-
{
|
|
4454
|
-
docExtId: doc.external_id,
|
|
4455
|
-
size: 10,
|
|
4456
|
-
className: "absolute -bottom-1 -right-1"
|
|
4457
|
-
}
|
|
4458
|
-
),
|
|
4459
|
-
onClick: (e) => {
|
|
4460
|
-
e.stopPropagation();
|
|
4461
|
-
window.clearTimeout(openTimerRef.current);
|
|
4462
|
-
if (e.detail > 1) return;
|
|
4463
|
-
openTimerRef.current = window.setTimeout(onOpen, OPEN_AFTER_DOUBLE_CLICK_WINDOW_MS);
|
|
4464
|
-
},
|
|
4465
|
-
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4466
|
-
chunkQKOFQMAY_cjs.DocumentRowMenu,
|
|
4467
|
-
{
|
|
4468
|
-
canEdit,
|
|
4469
|
-
onOpen,
|
|
4470
|
-
onReview,
|
|
4471
|
-
onDocumentChat,
|
|
4472
|
-
onRename,
|
|
4473
|
-
onDownload,
|
|
4474
|
-
onDownloadMarkup: documentTools.currentHasMarkup(doc) ? () => void downloadMarkup() : void 0,
|
|
4475
|
-
downloadMarkupDisabledReason: documentTools.isSignedVersion(doc) ? documentTools.SIGNED_LOCKED_REASON : void 0,
|
|
4476
|
-
onMove,
|
|
4477
|
-
onDelete
|
|
4478
|
-
}
|
|
4479
|
-
),
|
|
4480
|
-
className: "min-w-0 max-w-full border-transparent bg-transparent hover:bg-foreground/5"
|
|
4481
|
-
}
|
|
4482
|
-
)
|
|
4483
|
-
}
|
|
4484
|
-
);
|
|
4485
|
-
});
|
|
4486
|
-
var DocumentSharedCell = React9.memo(function DocumentSharedCell2({
|
|
4487
|
-
document: document2,
|
|
4488
|
-
disabled = false,
|
|
4489
|
-
disabledTooltip,
|
|
4490
|
-
onToggle
|
|
4491
|
-
}) {
|
|
4492
|
-
const handleToggle = React9.useCallback(
|
|
4493
|
-
(shouldShare) => onToggle(document2.external_id, shouldShare),
|
|
4494
|
-
[document2.external_id, onToggle]
|
|
4495
|
-
);
|
|
4496
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4497
|
-
chunkVQHXVY26_cjs.SharedCell,
|
|
4498
|
-
{
|
|
4499
|
-
item: document2,
|
|
4500
|
-
onToggle: handleToggle,
|
|
4501
|
-
disabled,
|
|
4502
|
-
disabledTooltip,
|
|
4503
|
-
tooltipActive: chunkQKOFQMAY_cjs.visibilityToggleTooltip(true),
|
|
4504
|
-
tooltipInactive: chunkQKOFQMAY_cjs.visibilityToggleTooltip(false),
|
|
4505
|
-
workspaceLabel: ui.getEntityLabel("WORKSPACE")
|
|
4506
|
-
}
|
|
4507
|
-
);
|
|
4508
|
-
});
|
|
4509
|
-
function useDocumentFolders(documents, value) {
|
|
4510
|
-
return React9.useMemo(() => {
|
|
4511
|
-
const paths = /* @__PURE__ */ new Set();
|
|
4512
|
-
for (const doc of documents) if (doc.folder) paths.add(doc.folder);
|
|
4513
|
-
if (value) paths.add(value);
|
|
4514
|
-
return [...paths].sort((a, b) => a.localeCompare(b));
|
|
4515
|
-
}, [documents, value]);
|
|
4516
|
-
}
|
|
4517
|
-
function folderSegments(folder) {
|
|
4518
|
-
return folder.split("/").map((part, i) => i === 0 ? chunkQKOFQMAY_cjs.formatFolderSegment(part) : part).filter((part, i) => i > 0 || part !== "");
|
|
4519
|
-
}
|
|
4520
|
-
var DocumentFolderCell = React9.memo(
|
|
4521
|
-
function DocumentFolderCell2({
|
|
4522
|
-
document: document2,
|
|
4523
|
-
isEditable,
|
|
4524
|
-
allDocuments,
|
|
4525
|
-
onUpdateFolder
|
|
4526
|
-
}) {
|
|
4527
|
-
const folder = document2.folder;
|
|
4528
|
-
const folders = useDocumentFolders(allDocuments, folder);
|
|
4529
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4530
|
-
chunkQKOFQMAY_cjs.FolderCell,
|
|
4531
|
-
{
|
|
4532
|
-
folder,
|
|
4533
|
-
segments: folder ? folderSegments(folder) : [],
|
|
4534
|
-
icon: folder && chunkQKOFQMAY_cjs.hasFolderProviderIcon(folder) ? /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FolderProviderIcon, { folderPath: folder, className: "h-3.5 w-3.5 flex-none shrink-0" }) : void 0,
|
|
4535
|
-
isEditable,
|
|
4536
|
-
picker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4537
|
-
chunkQKOFQMAY_cjs.FolderCommandList,
|
|
4538
|
-
{
|
|
4539
|
-
folders,
|
|
4540
|
-
value: folder,
|
|
4541
|
-
onSelect: (next) => onUpdateFolder(document2.external_id, next),
|
|
4542
|
-
showRemove: !!folder
|
|
4543
|
-
}
|
|
4544
|
-
)
|
|
4545
|
-
}
|
|
4546
|
-
);
|
|
4547
|
-
},
|
|
4548
|
-
(prev, next) => prev.document.external_id === next.document.external_id && prev.document.folder === next.document.folder && prev.isEditable === next.isEditable && prev.allDocuments === next.allDocuments && prev.onUpdateFolder === next.onUpdateFolder
|
|
4549
|
-
);
|
|
4550
|
-
var RELATION_LABELS = {
|
|
4551
|
-
redaction: "Redacted copy",
|
|
4552
|
-
annotated: "Annotated copy",
|
|
4553
|
-
production: "Production",
|
|
4554
|
-
crop: "Crop",
|
|
4555
|
-
redline_base: "Redline",
|
|
4556
|
-
redline_revised: "Redline",
|
|
4557
|
-
translation: "Translation"
|
|
4558
|
-
};
|
|
4559
|
-
var relationLabel = (role, version) => {
|
|
4560
|
-
const label = role ? RELATION_LABELS[role] : void 0;
|
|
4561
|
-
return version ? `${label ?? "Made"} from v${version}` : label;
|
|
4562
|
-
};
|
|
4563
|
-
var RelatedDocumentsCell = React9.memo(function RelatedDocumentsCell2({
|
|
4564
|
-
currentDoc,
|
|
4565
|
-
related,
|
|
4566
|
-
viewingDocumentId,
|
|
4567
|
-
onDocumentClick,
|
|
4568
|
-
onDelete,
|
|
4569
|
-
onCompare
|
|
4570
|
-
}) {
|
|
4571
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4572
|
-
chunkQKOFQMAY_cjs.RelatedDocsCell,
|
|
4573
|
-
{
|
|
4574
|
-
parent: related.parent,
|
|
4575
|
-
attachments: related.children,
|
|
4576
|
-
madeFrom: related.madeFrom,
|
|
4577
|
-
copies: related.copies,
|
|
4578
|
-
getRelation: (doc) => relationLabel(related.roles[doc.external_id], related.versions?.[doc.external_id]),
|
|
4579
|
-
duplicates: related.duplicates,
|
|
4580
|
-
similar: related.similar.map(({ doc }) => doc),
|
|
4581
|
-
renderDoc: (doc) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4582
|
-
ui.DocumentEntity,
|
|
4583
|
-
{
|
|
4584
|
-
doc,
|
|
4585
|
-
icon: viewingDocumentId === doc.external_id ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Eye, { className: "h-3.5 w-3.5 flex-shrink-0 text-primary" }) : void 0,
|
|
4586
|
-
onClick: () => onDocumentClick(doc.external_id)
|
|
4587
|
-
}
|
|
4588
|
-
),
|
|
4589
|
-
getKey: (doc) => doc.external_id,
|
|
4590
|
-
onSwitchTo: (doc) => {
|
|
4591
|
-
const version = related.versions?.[doc.external_id];
|
|
4592
|
-
onDocumentClick(version ? `${doc.external_id}@v${version}` : doc.external_id);
|
|
4593
|
-
},
|
|
4594
|
-
onDelete,
|
|
4595
|
-
onCompare: onCompare ? (doc) => onCompare(currentDoc.external_id, doc.external_id) : void 0
|
|
4596
|
-
}
|
|
4597
|
-
);
|
|
4598
|
-
});
|
|
4599
|
-
var NOT_A_MEMBER_MESSAGE = "Join this workspace as a collaborator or owner to create or apply labels.";
|
|
4600
|
-
var DocumentLabelsCell = React9.memo(function DocumentLabelsCell2({
|
|
4601
|
-
doc,
|
|
4602
|
-
labels,
|
|
4603
|
-
createDocTag,
|
|
4604
|
-
deleteDocTag,
|
|
4605
|
-
createTag,
|
|
4606
|
-
isMember,
|
|
4607
|
-
rowHeight,
|
|
4608
|
-
actions
|
|
4609
|
-
}) {
|
|
4610
|
-
const isCreatingTag = react.useIsCreatingTag();
|
|
4611
|
-
const { notify: notify18 } = chunkI72IYIO2_cjs.useBlocksEnvironment();
|
|
4612
|
-
const options2 = React9.useMemo(
|
|
4613
|
-
() => labels.map((t) => ({
|
|
4614
|
-
id: t.external_id,
|
|
4615
|
-
name: t.name,
|
|
4616
|
-
color: ui.getEntityColor(t.external_id, "medium")
|
|
4617
|
-
})),
|
|
4618
|
-
[labels]
|
|
4619
|
-
);
|
|
4620
|
-
const appliedIds = React9.useMemo(
|
|
4621
|
-
() => new Set(
|
|
4622
|
-
(doc.doctags || []).filter((dt) => labels.some((t) => t.external_id === dt.tag_ext_id)).map((dt) => dt.tag_ext_id)
|
|
4623
|
-
),
|
|
4624
|
-
[doc.doctags, labels]
|
|
4625
|
-
);
|
|
4626
|
-
const applyTag = React9.useCallback(
|
|
4627
|
-
(tagId) => createDocTag.mutateAsync({ tagId, docIds: [doc.external_id] }),
|
|
4628
|
-
[createDocTag, doc.external_id]
|
|
4629
|
-
);
|
|
4630
|
-
const handleToggle = React9.useCallback(
|
|
4631
|
-
async (tagId) => {
|
|
4632
|
-
if (!isMember) return notify18(NOT_A_MEMBER_MESSAGE, "info");
|
|
4633
|
-
if (appliedIds.has(tagId)) {
|
|
4634
|
-
await deleteDocTag.mutateAsync({ tagId, docIds: [doc.external_id] });
|
|
4635
|
-
} else {
|
|
4636
|
-
await applyTag(tagId);
|
|
4637
|
-
}
|
|
4638
|
-
},
|
|
4639
|
-
[isMember, appliedIds, deleteDocTag, applyTag, doc.external_id, notify18]
|
|
4640
|
-
);
|
|
4641
|
-
const handleCreate = React9.useCallback(
|
|
4642
|
-
async (name) => {
|
|
4643
|
-
const trimmed = name.trim();
|
|
4644
|
-
if (!trimmed) return;
|
|
4645
|
-
if (!isMember) return notify18(NOT_A_MEMBER_MESSAGE, "info");
|
|
4646
|
-
const existing = labels.find((t) => t.name.toLowerCase() === trimmed.toLowerCase());
|
|
4647
|
-
if (existing) {
|
|
4648
|
-
if (!appliedIds.has(existing.external_id)) await applyTag(existing.external_id);
|
|
4649
|
-
return;
|
|
4650
|
-
}
|
|
4651
|
-
if (isCreatingTag(trimmed)) return;
|
|
4652
|
-
const created = await createTag.mutateAsync({
|
|
4653
|
-
name: trimmed,
|
|
4654
|
-
tagType: { type: "checkbox", options: [] },
|
|
4655
|
-
shared: false
|
|
4656
|
-
});
|
|
4657
|
-
if (created?.external_id) await applyTag(created.external_id);
|
|
4658
|
-
},
|
|
4659
|
-
[isMember, labels, appliedIds, createTag, applyTag, isCreatingTag, notify18]
|
|
4660
|
-
);
|
|
4661
|
-
const openFieldsManager = actions?.openFieldsManager;
|
|
4662
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4663
|
-
chunk5Y6V7F6W_cjs.LabelMultiSelectView,
|
|
4664
|
-
{
|
|
4665
|
-
options: options2,
|
|
4666
|
-
appliedIds,
|
|
4667
|
-
onToggle: handleToggle,
|
|
4668
|
-
onCreate: handleCreate,
|
|
4669
|
-
onEditLabels: openFieldsManager ? () => openFieldsManager() : void 0,
|
|
4670
|
-
rowHeight
|
|
4671
|
-
}
|
|
4672
|
-
);
|
|
4673
|
-
});
|
|
4674
|
-
function DocumentUser({
|
|
4675
|
-
user,
|
|
4676
|
-
tooltip = true,
|
|
4677
|
-
variant = "icon"
|
|
4678
|
-
}) {
|
|
4679
|
-
const { renderUser: renderUser2 } = react.useDocumentsSupport();
|
|
4680
|
-
const { openUser } = react.useDocumentHostActions();
|
|
4681
|
-
if (user && renderUser2) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: renderUser2(user, { tooltip, variant }) });
|
|
4682
|
-
if (user && variant === "pill")
|
|
4683
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4684
|
-
ui.UserEntity,
|
|
4685
|
-
{
|
|
4686
|
-
size: "sm",
|
|
4687
|
-
variant: "pill",
|
|
4688
|
-
displayName: ui.getUserDisplayName(user),
|
|
4689
|
-
picture: user.picture,
|
|
4690
|
-
initials: `${user.given_name?.charAt(0) ?? ""}${user.family_name?.charAt(0) ?? ""}`
|
|
4691
|
-
}
|
|
4692
|
-
);
|
|
4693
|
-
return /* @__PURE__ */ jsxRuntime.jsx(UserAvatar, { user, onOpen: openUser });
|
|
4694
|
-
}
|
|
4695
|
-
function useMemberLookup() {
|
|
4696
|
-
const { data: members = [] } = react.useWorkspaceUsers();
|
|
4697
|
-
return React9.useCallback(
|
|
4698
|
-
(userId) => userId ? members.find((m) => m.user.external_id === userId)?.user : void 0,
|
|
4699
|
-
[members]
|
|
4700
|
-
);
|
|
4701
|
-
}
|
|
4702
3632
|
var ANNOTATION_FORMATS = ["text", "select", "number", "date"];
|
|
4703
3633
|
var isAnnotationFormat = (type) => ANNOTATION_FORMATS.includes(type ?? "");
|
|
4704
3634
|
function kindOptions(group, tag) {
|
|
@@ -4719,7 +3649,7 @@ function ConnectedTagForm({
|
|
|
4719
3649
|
nameByKind = false
|
|
4720
3650
|
}) {
|
|
4721
3651
|
const isCreate = !tag;
|
|
4722
|
-
const memberById = useMemberLookup();
|
|
3652
|
+
const memberById = chunkS7B5E3RU_cjs.useMemberLookup();
|
|
4723
3653
|
const creator = memberById(tag?.created_by_ext_id);
|
|
4724
3654
|
const updater = memberById(tag?.updated_by_ext_id);
|
|
4725
3655
|
const fieldLabel = ui.getEntityLabel("TAG", "SINGULAR");
|
|
@@ -4799,19 +3729,19 @@ function ConnectedTagForm({
|
|
|
4799
3729
|
metaLines.push({
|
|
4800
3730
|
text: `Created ${ui.formatFriendlyDate(tag.created_at)}`,
|
|
4801
3731
|
byLabel: "by",
|
|
4802
|
-
by: creator ? /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: creator }) : void 0
|
|
3732
|
+
by: creator ? /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.DocumentUser, { user: creator }) : void 0
|
|
4803
3733
|
});
|
|
4804
3734
|
if (tag.updated_at && tag.updated_at !== tag.created_at) {
|
|
4805
3735
|
metaLines.push({
|
|
4806
3736
|
text: `Updated ${ui.formatFriendlyDate(tag.updated_at)}`,
|
|
4807
3737
|
byLabel: "by",
|
|
4808
|
-
by: updater ? /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: updater }) : void 0
|
|
3738
|
+
by: updater ? /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.DocumentUser, { user: updater }) : void 0
|
|
4809
3739
|
});
|
|
4810
3740
|
}
|
|
4811
3741
|
}
|
|
4812
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3742
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.TagFormRoot, { children: [
|
|
4813
3743
|
!nameOnRow && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4814
|
-
|
|
3744
|
+
chunk5YX3R6CK_cjs.TagFormNameField,
|
|
4815
3745
|
{
|
|
4816
3746
|
label: group || nameByKind ? `${ui.tagKindTitle(kind)} Name` : `${columnLabel} Name`,
|
|
4817
3747
|
placeholder: `Enter ${kindNoun ?? columnLabel.toLowerCase()} name...`,
|
|
@@ -4821,7 +3751,7 @@ function ConnectedTagForm({
|
|
|
4821
3751
|
}
|
|
4822
3752
|
),
|
|
4823
3753
|
kinds.length > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4824
|
-
|
|
3754
|
+
chunk5YX3R6CK_cjs.TagFormSelectField,
|
|
4825
3755
|
{
|
|
4826
3756
|
label: "Kind",
|
|
4827
3757
|
testId: "inline-tag-form-kind-field",
|
|
@@ -4836,7 +3766,7 @@ function ConnectedTagForm({
|
|
|
4836
3766
|
}
|
|
4837
3767
|
),
|
|
4838
3768
|
kind === "annotation" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4839
|
-
|
|
3769
|
+
chunk5YX3R6CK_cjs.TagFormSelectField,
|
|
4840
3770
|
{
|
|
4841
3771
|
label: group === "annotation" ? "Value type" : "Field Type",
|
|
4842
3772
|
testId: "inline-tag-form-type-field",
|
|
@@ -4848,7 +3778,7 @@ function ConnectedTagForm({
|
|
|
4848
3778
|
}
|
|
4849
3779
|
),
|
|
4850
3780
|
showParentPicker && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4851
|
-
|
|
3781
|
+
chunk5YX3R6CK_cjs.TagFormSelectField,
|
|
4852
3782
|
{
|
|
4853
3783
|
label: "Nested Under",
|
|
4854
3784
|
value: parentId,
|
|
@@ -4872,14 +3802,14 @@ function ConnectedTagForm({
|
|
|
4872
3802
|
hint: !canClearParent ? "This field can move to a different parent, but the API has no way to move it back to the top level." : void 0
|
|
4873
3803
|
}
|
|
4874
3804
|
),
|
|
4875
|
-
nestingEnabled && hasChildren && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3805
|
+
nestingEnabled && hasChildren && /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.TagFormNote, { testId: "inline-tag-form-parent-locked", children: [
|
|
4876
3806
|
"Other fields are nested under this one, so it cannot itself be nested \u2014 fields nest",
|
|
4877
3807
|
" ",
|
|
4878
3808
|
browser.TAG_NESTING_MAX_DEPTH,
|
|
4879
3809
|
" levels deep."
|
|
4880
3810
|
] }),
|
|
4881
3811
|
tagType === "select" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4882
|
-
|
|
3812
|
+
chunk5YX3R6CK_cjs.TagFormOptionsEditor,
|
|
4883
3813
|
{
|
|
4884
3814
|
label: "Options",
|
|
4885
3815
|
options: options2,
|
|
@@ -4892,7 +3822,7 @@ function ConnectedTagForm({
|
|
|
4892
3822
|
}
|
|
4893
3823
|
),
|
|
4894
3824
|
tagType === "text" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4895
|
-
|
|
3825
|
+
chunk5YX3R6CK_cjs.TagFormInstructionField,
|
|
4896
3826
|
{
|
|
4897
3827
|
label: "AI Instruction",
|
|
4898
3828
|
optionalLabel: "(optional)",
|
|
@@ -4902,12 +3832,12 @@ function ConnectedTagForm({
|
|
|
4902
3832
|
onChange: setInstruction
|
|
4903
3833
|
}
|
|
4904
3834
|
),
|
|
4905
|
-
metaLines.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3835
|
+
metaLines.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.TagFormMeta, { lines: metaLines }),
|
|
4906
3836
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4907
|
-
|
|
3837
|
+
chunk5YX3R6CK_cjs.TagFormFooter,
|
|
4908
3838
|
{
|
|
4909
3839
|
sharedToggle: isCreate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4910
|
-
|
|
3840
|
+
chunk5YX3R6CK_cjs.TagFormSharedToggle,
|
|
4911
3841
|
{
|
|
4912
3842
|
label: "Shared with workspace",
|
|
4913
3843
|
toggle: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -5205,7 +4135,7 @@ function KindSection({
|
|
|
5205
4135
|
{
|
|
5206
4136
|
testId: `tags-kind-${kind}`,
|
|
5207
4137
|
title: ui.tagKindTitle(kind, { plural: true }),
|
|
5208
|
-
description:
|
|
4138
|
+
description: chunkRTS3B2W7_cjs.tagKindDescription(kind),
|
|
5209
4139
|
actions: picker,
|
|
5210
4140
|
children: [
|
|
5211
4141
|
browser.isEntityTag({ kind }) && extractingCount > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -5216,9 +4146,9 @@ function KindSection({
|
|
|
5216
4146
|
children: [
|
|
5217
4147
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "size-4 animate-spin" }),
|
|
5218
4148
|
"Extracting ",
|
|
5219
|
-
|
|
4149
|
+
chunkRTS3B2W7_cjs.entitiesPhrase().toLowerCase(),
|
|
5220
4150
|
" from ",
|
|
5221
|
-
|
|
4151
|
+
chunkRTS3B2W7_cjs.documentCount(extractingCount),
|
|
5222
4152
|
"\u2026"
|
|
5223
4153
|
]
|
|
5224
4154
|
}
|
|
@@ -5236,7 +4166,7 @@ function KindSection({
|
|
|
5236
4166
|
onOpenDocument: (id) => openDocument(id),
|
|
5237
4167
|
onOpenFact: ctx.onOpenFact,
|
|
5238
4168
|
onOpenThread: (id) => openConversation(id),
|
|
5239
|
-
labels:
|
|
4169
|
+
labels: chunkRTS3B2W7_cjs.tagTableLabels(kind),
|
|
5240
4170
|
testId: `tags-table-${kind}`
|
|
5241
4171
|
}
|
|
5242
4172
|
)
|
|
@@ -5338,12 +4268,12 @@ function TagSection({
|
|
|
5338
4268
|
onOpenDocument: (id) => openDocument(id),
|
|
5339
4269
|
onOpenFact: ctx.onOpenFact,
|
|
5340
4270
|
onOpenThread: (id) => openConversation(id),
|
|
5341
|
-
labels:
|
|
4271
|
+
labels: chunkRTS3B2W7_cjs.tagTableLabels(tag.kind),
|
|
5342
4272
|
testId: "tags-rows"
|
|
5343
4273
|
}
|
|
5344
4274
|
),
|
|
5345
4275
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5346
|
-
|
|
4276
|
+
chunkRTS3B2W7_cjs.TagDetail,
|
|
5347
4277
|
{
|
|
5348
4278
|
row: detailRow && narrowTagRow(detailRow, ctx.filter.matches),
|
|
5349
4279
|
fields: schema.data?.fields ?? [],
|
|
@@ -5355,10 +4285,10 @@ function TagSection({
|
|
|
5355
4285
|
onOpenDocument: (id) => openDocument(id),
|
|
5356
4286
|
onOpenFact: ctx.onOpenFact,
|
|
5357
4287
|
onOpenThread: (id) => openConversation(id),
|
|
5358
|
-
noteLabel:
|
|
4288
|
+
noteLabel: chunkRTS3B2W7_cjs.tagNoteLabel(tag.kind),
|
|
5359
4289
|
noteIsValue: tag.kind === "annotation",
|
|
5360
4290
|
renderPassages: (d, label) => renderPassages(d.doc_ext_id, label),
|
|
5361
|
-
labels:
|
|
4291
|
+
labels: chunkRTS3B2W7_cjs.tagDetailLabels(),
|
|
5362
4292
|
testId: "tags-detail"
|
|
5363
4293
|
}
|
|
5364
4294
|
)
|
|
@@ -5446,7 +4376,7 @@ function ConnectedTagsPage({
|
|
|
5446
4376
|
const onDelete = async (t) => {
|
|
5447
4377
|
const nested = browser.getChildTags([...tags], t.external_id);
|
|
5448
4378
|
const uses = browser.tagUseCount(t);
|
|
5449
|
-
const n2 =
|
|
4379
|
+
const n2 = chunkRTS3B2W7_cjs.tagsPageNouns();
|
|
5450
4380
|
const tagNoun = (count2) => (count2 === 1 ? n2.tag : n2.tags).toLowerCase();
|
|
5451
4381
|
const carriers = uses === 1 ? `${n2.document}, ${n2.fact} or ${n2.thread}` : `${n2.documents}, ${n2.facts} and ${n2.threads}`;
|
|
5452
4382
|
const message = `Delete ${ui.tagKindNouns(t.kind).singular} "${t.name}"?` + (uses > 0 ? `
|
|
@@ -5467,16 +4397,16 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
5467
4397
|
try {
|
|
5468
4398
|
await extract.mutateAsync(docIds);
|
|
5469
4399
|
notify18(
|
|
5470
|
-
`Extracting ${
|
|
4400
|
+
`Extracting ${chunkRTS3B2W7_cjs.entitiesPhrase().toLowerCase()} from ${chunkRTS3B2W7_cjs.documentCount(docIds.length)}. You will be notified when it is done.`,
|
|
5471
4401
|
"info"
|
|
5472
4402
|
);
|
|
5473
4403
|
} catch (error) {
|
|
5474
|
-
notify18(browser.refusalReason(error, `Could not extract ${
|
|
4404
|
+
notify18(browser.refusalReason(error, `Could not extract ${chunkRTS3B2W7_cjs.entitiesPhrase().toLowerCase()}`), "error");
|
|
5475
4405
|
throw error;
|
|
5476
4406
|
}
|
|
5477
4407
|
};
|
|
5478
4408
|
const picker = /* @__PURE__ */ jsxRuntime.jsx(
|
|
5479
|
-
|
|
4409
|
+
chunkRTS3B2W7_cjs.TagPicker,
|
|
5480
4410
|
{
|
|
5481
4411
|
tags: viewTags,
|
|
5482
4412
|
selectedId: tag?.external_id,
|
|
@@ -5490,10 +4420,10 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
5490
4420
|
onOpenTag: openTag,
|
|
5491
4421
|
onOpenFact
|
|
5492
4422
|
};
|
|
5493
|
-
const n =
|
|
4423
|
+
const n = chunkRTS3B2W7_cjs.tagsPageNouns();
|
|
5494
4424
|
const action = view === "person" || view === "organisation" ? {
|
|
5495
4425
|
label: "Extract",
|
|
5496
|
-
title: `Extract ${
|
|
4426
|
+
title: `Extract ${chunkRTS3B2W7_cjs.entitiesPhrase().toLowerCase()} from ${n.documents.toLowerCase()}`,
|
|
5497
4427
|
icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "h-4 w-4" }),
|
|
5498
4428
|
run: () => setExtracting(true),
|
|
5499
4429
|
testId: "tags-extract-entities"
|
|
@@ -5533,7 +4463,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
5533
4463
|
onTabChange: () => {
|
|
5534
4464
|
},
|
|
5535
4465
|
variant: "underline",
|
|
5536
|
-
firstTabContent: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4466
|
+
firstTabContent: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FilesFilterBar, { className: "flex-none", "data-testid": "tags-header-actions", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5537
4467
|
chunk2EI7NCUA_cjs.FilterInput,
|
|
5538
4468
|
{
|
|
5539
4469
|
value: filterText,
|
|
@@ -5561,7 +4491,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
5561
4491
|
)
|
|
5562
4492
|
}
|
|
5563
4493
|
) }),
|
|
5564
|
-
centerContent: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4494
|
+
centerContent: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FilesViewCenter, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5565
4495
|
chunk2WLXQGWC_cjs.ViewToggle,
|
|
5566
4496
|
{
|
|
5567
4497
|
options: browser.TAG_KINDS.map((k) => ({
|
|
@@ -5643,7 +4573,7 @@ ${nested.length} nested ${tagNoun(nested.length)} ${nested.length === 1 ? "moves
|
|
|
5643
4573
|
}
|
|
5644
4574
|
),
|
|
5645
4575
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5646
|
-
|
|
4576
|
+
chunkRTS3B2W7_cjs.ExtractEntitiesDialog,
|
|
5647
4577
|
{
|
|
5648
4578
|
open: extracting,
|
|
5649
4579
|
onOpenChange: setExtracting,
|
|
@@ -6422,7 +5352,7 @@ function useFactFilters(notes, view, chat) {
|
|
|
6422
5352
|
(selected, setSelected, opts) => {
|
|
6423
5353
|
const applied = new Set(selected);
|
|
6424
5354
|
return /* @__PURE__ */ jsxRuntime.jsx(chunkYD3RN2FY_cjs.FactFieldRow, { label: "Labels", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6425
|
-
|
|
5355
|
+
chunk5YX3R6CK_cjs.FieldLabelsSelect,
|
|
6426
5356
|
{
|
|
6427
5357
|
options: labelOptions,
|
|
6428
5358
|
appliedIds: applied,
|
|
@@ -6648,7 +5578,7 @@ var FactHeader = React9.memo(function FactHeader2({
|
|
|
6648
5578
|
if (params.enableSorting) params.progressSort(e.shiftKey);
|
|
6649
5579
|
},
|
|
6650
5580
|
children: [
|
|
6651
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5581
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FilterButton, { params, colId }),
|
|
6652
5582
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "order-2 min-w-0 flex-1 truncate", children: params.displayName }),
|
|
6653
5583
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "ag-sort-indicator-container order-2 flex-shrink-0", "aria-hidden": "true", children: [
|
|
6654
5584
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -6912,7 +5842,7 @@ function useFactsGrid({
|
|
|
6912
5842
|
var DEFAULT_TIMELINE_LABEL_WIDTH = 240;
|
|
6913
5843
|
function useFactsPageView() {
|
|
6914
5844
|
const [view, setView] = React9.useState("table");
|
|
6915
|
-
const [rowHeight, setRowHeight] = React9.useState(
|
|
5845
|
+
const [rowHeight, setRowHeight] = React9.useState(chunk5YX3R6CK_cjs.ROW_MIN);
|
|
6916
5846
|
const [labelWidth, setLabelWidth] = React9.useState(DEFAULT_TIMELINE_LABEL_WIDTH);
|
|
6917
5847
|
const [zoom, setZoom] = React9.useState(1);
|
|
6918
5848
|
const [filterText, setFilterText] = React9.useState("");
|
|
@@ -7276,7 +6206,7 @@ function ConnectedExportPanel({
|
|
|
7276
6206
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full", "data-testid": "export-documents", children: [
|
|
7277
6207
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-auto space-y-6 p-6", children: [
|
|
7278
6208
|
jobRunning && job && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7279
|
-
|
|
6209
|
+
chunk5YX3R6CK_cjs.TransferProgressView,
|
|
7280
6210
|
{
|
|
7281
6211
|
title: `${job.mode === "move" ? "Moving" : "Copying"} to ${targetName(job.target_workspace_ext_id)}`,
|
|
7282
6212
|
processed: job.processed ?? 0,
|
|
@@ -7289,7 +6219,7 @@ function ConnectedExportPanel({
|
|
|
7289
6219
|
),
|
|
7290
6220
|
jobDone && job && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7291
6221
|
react.isTransferResumable(job) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7292
|
-
|
|
6222
|
+
chunk5YX3R6CK_cjs.TransferResumeBanner,
|
|
7293
6223
|
{
|
|
7294
6224
|
message: `Stopped at ${job.processed} of ${job.total}. Resume to finish \u2014 nothing is copied twice.`,
|
|
7295
6225
|
onResume: () => handleResume(job),
|
|
@@ -7297,7 +6227,7 @@ function ConnectedExportPanel({
|
|
|
7297
6227
|
}
|
|
7298
6228
|
),
|
|
7299
6229
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7300
|
-
|
|
6230
|
+
chunk5YX3R6CK_cjs.ExportResultsReport,
|
|
7301
6231
|
{
|
|
7302
6232
|
summary: `${job.mode === "move" ? "Moved" : "Copied"} ${plural(
|
|
7303
6233
|
Number(job.counts?.copied ?? 0) + Number(job.counts?.removed ?? 0),
|
|
@@ -7310,7 +6240,7 @@ function ConnectedExportPanel({
|
|
|
7310
6240
|
] }),
|
|
7311
6241
|
!jobId && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7312
6242
|
resumable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7313
|
-
|
|
6243
|
+
chunk5YX3R6CK_cjs.TransferResumeBanner,
|
|
7314
6244
|
{
|
|
7315
6245
|
message: `A ${resumable.mode} to ${targetName(resumable.target_workspace_ext_id)} stopped at ${resumable.processed} of ${resumable.total}.`,
|
|
7316
6246
|
onResume: () => handleResume(resumable),
|
|
@@ -7318,7 +6248,7 @@ function ConnectedExportPanel({
|
|
|
7318
6248
|
}
|
|
7319
6249
|
),
|
|
7320
6250
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7321
|
-
|
|
6251
|
+
chunk5YX3R6CK_cjs.TransferScopeChooser,
|
|
7322
6252
|
{
|
|
7323
6253
|
scope: scopeChoice,
|
|
7324
6254
|
onScopeChange: setScopeChoice,
|
|
@@ -7329,7 +6259,7 @@ function ConnectedExportPanel({
|
|
|
7329
6259
|
}
|
|
7330
6260
|
),
|
|
7331
6261
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7332
|
-
|
|
6262
|
+
chunk5YX3R6CK_cjs.TransferKindsPicker,
|
|
7333
6263
|
{
|
|
7334
6264
|
options: ALL_KINDS.map((kind) => ({
|
|
7335
6265
|
kind,
|
|
@@ -7342,9 +6272,9 @@ function ConnectedExportPanel({
|
|
|
7342
6272
|
)
|
|
7343
6273
|
}
|
|
7344
6274
|
),
|
|
7345
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6275
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.TransferReferencesChooser, { value: references, onChange: setReferences }),
|
|
7346
6276
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7347
|
-
|
|
6277
|
+
chunk5YX3R6CK_cjs.ExportMethodChooser,
|
|
7348
6278
|
{
|
|
7349
6279
|
mode,
|
|
7350
6280
|
onModeChange: setMode,
|
|
@@ -7356,17 +6286,17 @@ function ConnectedExportPanel({
|
|
|
7356
6286
|
),
|
|
7357
6287
|
mode !== "download" && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7358
6288
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7359
|
-
|
|
6289
|
+
chunk5YX3R6CK_cjs.ExportWorkspacePicker,
|
|
7360
6290
|
{
|
|
7361
6291
|
workspaces: workspaceOptions,
|
|
7362
6292
|
selectedId: targetId,
|
|
7363
6293
|
onSelect: setTargetId
|
|
7364
6294
|
}
|
|
7365
6295
|
),
|
|
7366
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6296
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.TransferConflictChooser, { value: conflict, onChange: setConflict })
|
|
7367
6297
|
] }),
|
|
7368
6298
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7369
|
-
|
|
6299
|
+
chunk5YX3R6CK_cjs.TransferPlanSummary,
|
|
7370
6300
|
{
|
|
7371
6301
|
lines: summary.lines,
|
|
7372
6302
|
warnings: summary.warnings,
|
|
@@ -7383,7 +6313,7 @@ function ConnectedExportPanel({
|
|
|
7383
6313
|
] })
|
|
7384
6314
|
] }),
|
|
7385
6315
|
!jobId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7386
|
-
|
|
6316
|
+
chunk5YX3R6CK_cjs.ExportFooter,
|
|
7387
6317
|
{
|
|
7388
6318
|
onCancel: onClose,
|
|
7389
6319
|
onSubmit: handleSubmit,
|
|
@@ -7424,7 +6354,7 @@ function OpenExportDialog({
|
|
|
7424
6354
|
children: [
|
|
7425
6355
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkULWRNGGE_cjs.ModalHeader, { children: [
|
|
7426
6356
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7427
|
-
|
|
6357
|
+
chunk5YX3R6CK_cjs.ExportModalTitle,
|
|
7428
6358
|
{
|
|
7429
6359
|
workspace: workspace ? {
|
|
7430
6360
|
icon: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "touch-hit inline-flex", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7592,7 +6522,7 @@ function ConnectedFactsPage({
|
|
|
7592
6522
|
setView(request.view === "list" ? "table" : request.view);
|
|
7593
6523
|
onRequestHandled?.("view");
|
|
7594
6524
|
}, [request?.view]);
|
|
7595
|
-
const factsRowHeight = pageView.rowHeight ===
|
|
6525
|
+
const factsRowHeight = pageView.rowHeight === chunk5YX3R6CK_cjs.ROW_MIN ? chunk5YX3R6CK_cjs.ROW_MIN : chunk5YX3R6CK_cjs.rowHeightForLines(chunk5YX3R6CK_cjs.linesForRowHeight(pageView.rowHeight));
|
|
7596
6526
|
const [isExportOpen, setIsExportOpen] = React9.useState(false);
|
|
7597
6527
|
const [filterOpen, setFilterOpen] = React9.useState(false);
|
|
7598
6528
|
const [factSection, setFactSection] = React9.useState(null);
|
|
@@ -7646,7 +6576,7 @@ function ConnectedFactsPage({
|
|
|
7646
6576
|
onNewFact: composing && !editingId ? () => void 0 : composer.startNewFact,
|
|
7647
6577
|
navSlotRef: setNavSlot,
|
|
7648
6578
|
navigator: view === "table" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7649
|
-
|
|
6579
|
+
chunkRTS3B2W7_cjs.GridRowNavigator,
|
|
7650
6580
|
{
|
|
7651
6581
|
gridApi,
|
|
7652
6582
|
selectedId: editingId,
|
|
@@ -7659,7 +6589,7 @@ function ConnectedFactsPage({
|
|
|
7659
6589
|
tools: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
7660
6590
|
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(chunkYD3RN2FY_cjs.FactsFieldsButton, { getGridApi: () => gridApiRef.current }),
|
|
7661
6591
|
view === "table" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7662
|
-
|
|
6592
|
+
chunk5YX3R6CK_cjs.RowDensityControl,
|
|
7663
6593
|
{
|
|
7664
6594
|
rowHeight: factsRowHeight,
|
|
7665
6595
|
onRowHeightChange: pageView.setRowHeight,
|
|
@@ -10574,7 +9504,7 @@ You will lose access to all content in this ${workspaceWord()}.`,
|
|
|
10574
9504
|
};
|
|
10575
9505
|
}
|
|
10576
9506
|
var memberName = (user) => user.family_name ? `${user.given_name} ${user.family_name}` : user.given_name;
|
|
10577
|
-
var ALL_ROLES = ["owner", "collaborator", "guest"].map((value) => ({ value, label:
|
|
9507
|
+
var ALL_ROLES = ["owner", "collaborator", "guest"].map((value) => ({ value, label: chunkQLY22ZZW_cjs.formatRole(value), badgeClass: chunkQLY22ZZW_cjs.getRoleBadgeClass(value) }));
|
|
10578
9508
|
var BULK_ROLES = ALL_ROLES.filter((r) => r.value !== "owner");
|
|
10579
9509
|
var ROLE_ORDER = { owner: 0, collaborator: 1, guest: 2 };
|
|
10580
9510
|
function roleLock(targetId, selfId, isOwner) {
|
|
@@ -10621,7 +9551,7 @@ function ConnectedWorkspaceMembers({
|
|
|
10621
9551
|
try {
|
|
10622
9552
|
await updateRoles.mutateAsync({ userIds: rows2.map((r) => r.user.external_id), role });
|
|
10623
9553
|
notify18(
|
|
10624
|
-
single ? `${single}'s role updated to ${
|
|
9554
|
+
single ? `${single}'s role updated to ${chunkQLY22ZZW_cjs.formatRole(role)} in "${workspace.name}"` : `Updated ${rows2.length} users to ${chunkQLY22ZZW_cjs.formatRole(role)} in "${workspace.name}"`,
|
|
10625
9555
|
"success"
|
|
10626
9556
|
);
|
|
10627
9557
|
return true;
|
|
@@ -10678,7 +9608,7 @@ function ConnectedWorkspaceMembers({
|
|
|
10678
9608
|
{
|
|
10679
9609
|
role: row2.role,
|
|
10680
9610
|
roles: ALL_ROLES,
|
|
10681
|
-
tooltip: lock ??
|
|
9611
|
+
tooltip: lock ?? chunkQLY22ZZW_cjs.getRoleDescription(row2.role),
|
|
10682
9612
|
canChange: !lock,
|
|
10683
9613
|
isPending: updateRoles.isPending,
|
|
10684
9614
|
onChange: (value) => void setRoles([row2], value),
|
|
@@ -10829,13 +9759,13 @@ function ConnectedWorkspaceSettings({
|
|
|
10829
9759
|
const [membersExpanded, setMembersExpanded] = React9.useState(false);
|
|
10830
9760
|
const [shareOpen, setShareOpen] = React9.useState(false);
|
|
10831
9761
|
if (!workspace) {
|
|
10832
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9762
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkQLY22ZZW_cjs.PageLoading, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkRTS3B2W7_cjs.LoadingIndicator, { message: "Loading workspace..." }) });
|
|
10833
9763
|
}
|
|
10834
9764
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10835
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10836
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9765
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkQLY22ZZW_cjs.WorkspacePageFrame, { testId, children: [
|
|
9766
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkQLY22ZZW_cjs.WorkspaceIdentityPanel, { children: [
|
|
10837
9767
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10838
|
-
|
|
9768
|
+
chunkRTS3B2W7_cjs.EntityIdentityBar,
|
|
10839
9769
|
{
|
|
10840
9770
|
testId: "workspace-identity-bar",
|
|
10841
9771
|
canEdit: isOwner,
|
|
@@ -10852,7 +9782,7 @@ function ConnectedWorkspaceSettings({
|
|
|
10852
9782
|
label: "Name",
|
|
10853
9783
|
value: workspace.name,
|
|
10854
9784
|
placeholder: "Untitled",
|
|
10855
|
-
maxLength:
|
|
9785
|
+
maxLength: chunkRTS3B2W7_cjs.IDENTITY_NAME_MAX_LENGTH,
|
|
10856
9786
|
valueClassName: "truncate text-base font-semibold",
|
|
10857
9787
|
testId: "workspace-home-title",
|
|
10858
9788
|
hideLabel: true,
|
|
@@ -10867,7 +9797,7 @@ function ConnectedWorkspaceSettings({
|
|
|
10867
9797
|
}
|
|
10868
9798
|
),
|
|
10869
9799
|
trailing: project && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10870
|
-
|
|
9800
|
+
chunkQLY22ZZW_cjs.WorkspaceProjectSlot,
|
|
10871
9801
|
{
|
|
10872
9802
|
testId: "workspace-home-project",
|
|
10873
9803
|
caption: `${ui.getEntityLabel("PROJECT")}:`,
|
|
@@ -10886,13 +9816,13 @@ function ConnectedWorkspaceSettings({
|
|
|
10886
9816
|
testId: "workspace-home-description",
|
|
10887
9817
|
hideLabel: true,
|
|
10888
9818
|
trailing: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10889
|
-
|
|
9819
|
+
chunkQLY22ZZW_cjs.WorkspaceAudienceLine,
|
|
10890
9820
|
{
|
|
10891
9821
|
visibility: {
|
|
10892
9822
|
testId: "workspace-home-visibility",
|
|
10893
9823
|
caption: "Visibility:",
|
|
10894
9824
|
toggle: isOwner && isDeveloper ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
10895
|
-
|
|
9825
|
+
chunkQLY22ZZW_cjs.CommonWorkspaceToggle,
|
|
10896
9826
|
{
|
|
10897
9827
|
isCommon: workspace.is_public ?? false,
|
|
10898
9828
|
onToggle: (value) => void settings.setPublic(value),
|
|
@@ -10928,7 +9858,7 @@ function ConnectedWorkspaceSettings({
|
|
|
10928
9858
|
}
|
|
10929
9859
|
),
|
|
10930
9860
|
isMember && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10931
|
-
|
|
9861
|
+
chunkQLY22ZZW_cjs.ExpandableSection,
|
|
10932
9862
|
{
|
|
10933
9863
|
expanded: membersExpanded,
|
|
10934
9864
|
testId: "workspace-settings-members-section",
|
|
@@ -10965,7 +9895,7 @@ function ConnectedWorkspaceSettings({
|
|
|
10965
9895
|
)
|
|
10966
9896
|
] }),
|
|
10967
9897
|
!isOwner && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10968
|
-
|
|
9898
|
+
chunkQLY22ZZW_cjs.LeaveFooter,
|
|
10969
9899
|
{
|
|
10970
9900
|
testId: "workspace-settings-footer",
|
|
10971
9901
|
leave: {
|
|
@@ -11758,9 +10688,9 @@ function ConnectedWorkspaceEntity({
|
|
|
11758
10688
|
);
|
|
11759
10689
|
const documentCount2 = (workspace.shared_document_count ?? 0) + (workspace.private_document_count ?? 0);
|
|
11760
10690
|
const conversationCount = (workspace.shared_conversation_count ?? 0) + (workspace.private_conversation_count ?? 0);
|
|
11761
|
-
const tooltipContent = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10691
|
+
const tooltipContent = /* @__PURE__ */ jsxRuntime.jsxs(chunkNUQ3RY7M_cjs.EntityTooltip, { children: [
|
|
11762
10692
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11763
|
-
|
|
10693
|
+
chunkNUQ3RY7M_cjs.EntityTooltipHeader,
|
|
11764
10694
|
{
|
|
11765
10695
|
lead: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11766
10696
|
ui.ShieldIcon,
|
|
@@ -11773,11 +10703,11 @@ function ConnectedWorkspaceEntity({
|
|
|
11773
10703
|
),
|
|
11774
10704
|
title: name,
|
|
11775
10705
|
subtitle: workspace.description,
|
|
11776
|
-
trailing: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10706
|
+
trailing: /* @__PURE__ */ jsxRuntime.jsx(chunkQLY22ZZW_cjs.WorkspaceTypeBadge, { workspace, size: "sm" })
|
|
11777
10707
|
}
|
|
11778
10708
|
),
|
|
11779
10709
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11780
|
-
|
|
10710
|
+
chunkNUQ3RY7M_cjs.EntityTooltipStats,
|
|
11781
10711
|
{
|
|
11782
10712
|
stats: [
|
|
11783
10713
|
{
|
|
@@ -11801,11 +10731,11 @@ function ConnectedWorkspaceEntity({
|
|
|
11801
10731
|
]
|
|
11802
10732
|
}
|
|
11803
10733
|
),
|
|
11804
|
-
workspace.updated_at && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10734
|
+
workspace.updated_at && /* @__PURE__ */ jsxRuntime.jsxs(chunkNUQ3RY7M_cjs.EntityTooltipHint, { children: [
|
|
11805
10735
|
"Updated ",
|
|
11806
10736
|
ui.formatFriendlyDate(workspace.updated_at)
|
|
11807
10737
|
] }),
|
|
11808
|
-
interactive && variant !== "icon" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10738
|
+
interactive && variant !== "icon" && /* @__PURE__ */ jsxRuntime.jsxs(chunkNUQ3RY7M_cjs.EntityTooltipHint, { icon: /* @__PURE__ */ jsxRuntime.jsx(ui.EntityIcon, { entityType: "WORKSPACE", className: "w-3 h-3" }), children: [
|
|
11809
10739
|
"Click to open ",
|
|
11810
10740
|
ui.getEntityLabel("WORKSPACE").toLowerCase(),
|
|
11811
10741
|
" settings"
|
|
@@ -11900,13 +10830,13 @@ function ConnectedProjectSelector({
|
|
|
11900
10830
|
}) {
|
|
11901
10831
|
const { stripeEnabled } = chunkV7JDMKNQ_cjs.useBillingSupport();
|
|
11902
10832
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11903
|
-
|
|
10833
|
+
chunkQLY22ZZW_cjs.ProjectPicker,
|
|
11904
10834
|
{
|
|
11905
10835
|
value: projectExtId ?? void 0,
|
|
11906
10836
|
options: projectOptions.map((proj) => ({
|
|
11907
10837
|
id: proj.external_id,
|
|
11908
10838
|
content: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11909
|
-
|
|
10839
|
+
chunkQLY22ZZW_cjs.ProjectOptionRow,
|
|
11910
10840
|
{
|
|
11911
10841
|
identity: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11912
10842
|
ConnectedProjectEntity,
|
|
@@ -11973,8 +10903,8 @@ function WorkspaceCreateForm({
|
|
|
11973
10903
|
);
|
|
11974
10904
|
return;
|
|
11975
10905
|
}
|
|
11976
|
-
const
|
|
11977
|
-
const response = await
|
|
10906
|
+
const create2 = seed?.create ?? createWorkspaceMutation.mutateAsync;
|
|
10907
|
+
const response = await create2({
|
|
11978
10908
|
name: localWorkspaceName.trim(),
|
|
11979
10909
|
description: localWorkspaceDescription,
|
|
11980
10910
|
projectId: projectExtId
|
|
@@ -12000,10 +10930,10 @@ function WorkspaceCreateForm({
|
|
|
12000
10930
|
}
|
|
12001
10931
|
};
|
|
12002
10932
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-5", "data-testid": "create-workspace-form", children: [
|
|
12003
|
-
errorMessage2 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10933
|
+
errorMessage2 && /* @__PURE__ */ jsxRuntime.jsx(chunkQLY22ZZW_cjs.FormErrorBanner, { message: errorMessage2 }),
|
|
12004
10934
|
/* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className: "flex flex-col gap-5", children: [
|
|
12005
10935
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12006
|
-
|
|
10936
|
+
chunkQLY22ZZW_cjs.WorkspaceFieldsView,
|
|
12007
10937
|
{
|
|
12008
10938
|
name: localWorkspaceName,
|
|
12009
10939
|
description: localWorkspaceDescription,
|
|
@@ -12043,7 +10973,7 @@ function WorkspaceCreateForm({
|
|
|
12043
10973
|
] }) : void 0
|
|
12044
10974
|
}
|
|
12045
10975
|
),
|
|
12046
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
10976
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkQLY22ZZW_cjs.FormActions, { children: [
|
|
12047
10977
|
onCancel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
12048
10978
|
ui.Button,
|
|
12049
10979
|
{
|
|
@@ -12093,7 +11023,7 @@ function ConnectedWorkspaceFormModal({
|
|
|
12093
11023
|
const canCreate = demoSeed ? true : allowed;
|
|
12094
11024
|
const workspaceLabel = ui.getEntityLabel("WORKSPACE");
|
|
12095
11025
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
12096
|
-
|
|
11026
|
+
chunkQLY22ZZW_cjs.WorkspaceFormModal,
|
|
12097
11027
|
{
|
|
12098
11028
|
...frame,
|
|
12099
11029
|
...canCreate === false ? {
|
|
@@ -12753,7 +11683,7 @@ function ConnectedSharePointAdminConsentPage({
|
|
|
12753
11683
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12754
11684
|
chunkJYR55F3P_cjs.ConsentHeader,
|
|
12755
11685
|
{
|
|
12756
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
11686
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.VendorLogo, { vendorKey: "microsoft_sharepoint", product: "sharepoint" }),
|
|
12757
11687
|
title: "Approve ARBI for SharePoint access",
|
|
12758
11688
|
children: "A member of your organization uses ARBI and wants to sync documents from SharePoint. Your Microsoft 365 organization requires an administrator to approve this once for the whole organization."
|
|
12759
11689
|
}
|
|
@@ -15032,7 +13962,7 @@ function ConnectedWelcomeDialog({
|
|
|
15032
13962
|
firstName: firstName2,
|
|
15033
13963
|
hasReward: hasBalance,
|
|
15034
13964
|
projectPicker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15035
|
-
|
|
13965
|
+
chunkQLY22ZZW_cjs.ProjectPicker,
|
|
15036
13966
|
{
|
|
15037
13967
|
variant: "welcome",
|
|
15038
13968
|
value: selectedProject.external_id,
|
|
@@ -15095,7 +14025,7 @@ function WorkspaceCardsView({
|
|
|
15095
14025
|
const projectLabel = ui.getEntityLabel("PROJECT").toLowerCase();
|
|
15096
14026
|
const { groups, projects, selfId } = list;
|
|
15097
14027
|
if (groups.length === 0) {
|
|
15098
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14028
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkQLY22ZZW_cjs.WorkspaceList, { testId: "workspace-cards-list", className: "gap-0", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15099
14029
|
chunk7KIM64LQ_cjs.CreateTile,
|
|
15100
14030
|
{
|
|
15101
14031
|
label: `New ${workspaceLabel.toLowerCase()}`,
|
|
@@ -15107,7 +14037,7 @@ function WorkspaceCardsView({
|
|
|
15107
14037
|
}
|
|
15108
14038
|
) });
|
|
15109
14039
|
}
|
|
15110
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14040
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkQLY22ZZW_cjs.WorkspaceList, { testId: "workspace-cards-list", children: groups.map((group) => {
|
|
15111
14041
|
const project = projects.find((p) => p.external_id === group.projectExtId);
|
|
15112
14042
|
const { breakdown, readout } = chunkV7JDMKNQ_cjs.projectGroupBilling(project, {
|
|
15113
14043
|
isOwned: group.isOwned,
|
|
@@ -15115,7 +14045,7 @@ function WorkspaceCardsView({
|
|
|
15115
14045
|
});
|
|
15116
14046
|
const count2 = group.workspaces.length;
|
|
15117
14047
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15118
|
-
|
|
14048
|
+
chunkQLY22ZZW_cjs.WorkspaceGroup,
|
|
15119
14049
|
{
|
|
15120
14050
|
title: group.projectExtId ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
15121
14051
|
chunkOU3RGQFX_cjs.ProjectBandTitle,
|
|
@@ -15155,7 +14085,7 @@ function WorkspaceCardsView({
|
|
|
15155
14085
|
const state = workspaceState?.(workspace);
|
|
15156
14086
|
const selectLabel = state?.selectLabel;
|
|
15157
14087
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15158
|
-
|
|
14088
|
+
chunkQLY22ZZW_cjs.WorkspaceCard,
|
|
15159
14089
|
{
|
|
15160
14090
|
workspace: {
|
|
15161
14091
|
...toWorkspaceSummary(workspace, selfId),
|
|
@@ -15391,7 +14321,7 @@ function ConnectedWorkspaceList({
|
|
|
15391
14321
|
else void openWorkspace(workspace.external_id, { name: workspace.name });
|
|
15392
14322
|
};
|
|
15393
14323
|
const createDisabledReason = list.canCreateProjects === false ? react.PROJECT_CREATION_DENIED_REASON : void 0;
|
|
15394
|
-
if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
14324
|
+
if (list.isLoading) return /* @__PURE__ */ jsxRuntime.jsx(chunkRTS3B2W7_cjs.LoadingIndicator, { message: "Loading workspaces..." });
|
|
15395
14325
|
if (list.error) {
|
|
15396
14326
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
15397
14327
|
chunk7KIM64LQ_cjs.HomeLoadError,
|
|
@@ -15464,7 +14394,7 @@ function ConnectedWorkspaceList({
|
|
|
15464
14394
|
workspaceState
|
|
15465
14395
|
}
|
|
15466
14396
|
) })
|
|
15467
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(React9.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14397
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(React9.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkRTS3B2W7_cjs.LoadingIndicator, { message: "Loading grid..." }), children: /* @__PURE__ */ jsxRuntime.jsx(chunk7KIM64LQ_cjs.HomeCenteredColumn, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
15468
14398
|
WorkspaceTableView,
|
|
15469
14399
|
{
|
|
15470
14400
|
list,
|
|
@@ -15706,7 +14636,7 @@ function ProjectsListPage({
|
|
|
15706
14636
|
}
|
|
15707
14637
|
),
|
|
15708
14638
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15709
|
-
|
|
14639
|
+
chunkRTS3B2W7_cjs.Toolbar,
|
|
15710
14640
|
{
|
|
15711
14641
|
search,
|
|
15712
14642
|
onSearch: setSearch,
|
|
@@ -16009,113 +14939,6 @@ function ProjectDetailsForm({
|
|
|
16009
14939
|
] })
|
|
16010
14940
|
] });
|
|
16011
14941
|
}
|
|
16012
|
-
var useFilesStore = zustand.create()(
|
|
16013
|
-
middleware.persist(
|
|
16014
|
-
(set) => ({
|
|
16015
|
-
pendingFolders: {},
|
|
16016
|
-
addPendingFolder: (workspaceId, path) => set((state) => {
|
|
16017
|
-
const current = state.pendingFolders[workspaceId] ?? [];
|
|
16018
|
-
if (current.includes(path)) return state;
|
|
16019
|
-
return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } };
|
|
16020
|
-
}),
|
|
16021
|
-
removePendingFolder: (workspaceId, path) => set((state) => {
|
|
16022
|
-
const current = state.pendingFolders[workspaceId] ?? [];
|
|
16023
|
-
if (!current.includes(path)) return state;
|
|
16024
|
-
return {
|
|
16025
|
-
pendingFolders: {
|
|
16026
|
-
...state.pendingFolders,
|
|
16027
|
-
[workspaceId]: current.filter((p) => p !== path)
|
|
16028
|
-
}
|
|
16029
|
-
};
|
|
16030
|
-
})
|
|
16031
|
-
}),
|
|
16032
|
-
{
|
|
16033
|
-
name: "arbi_explorer_pending_folders",
|
|
16034
|
-
storage: middleware.createJSONStorage(() => sessionStorage),
|
|
16035
|
-
partialize: (state) => ({ pendingFolders: state.pendingFolders })
|
|
16036
|
-
}
|
|
16037
|
-
)
|
|
16038
|
-
);
|
|
16039
|
-
var NONE = [];
|
|
16040
|
-
function usePendingFolders(workspaceId) {
|
|
16041
|
-
return useFilesStore(
|
|
16042
|
-
(state) => (workspaceId ? state.pendingFolders[workspaceId] : void 0) ?? NONE
|
|
16043
|
-
);
|
|
16044
|
-
}
|
|
16045
|
-
var FILES_PREFS_KEY = "files";
|
|
16046
|
-
var DEFAULT_VIEW_MODE = "explorer";
|
|
16047
|
-
var useFilesPrefs = zustand.create()(
|
|
16048
|
-
middleware.persist(
|
|
16049
|
-
(set) => ({
|
|
16050
|
-
documentFilters: {},
|
|
16051
|
-
setDocumentFilters: (documentFilters) => set({ documentFilters }),
|
|
16052
|
-
viewModes: {},
|
|
16053
|
-
setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) => set(
|
|
16054
|
-
(state) => state.viewModes[prefsKey] === viewMode ? state : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }
|
|
16055
|
-
),
|
|
16056
|
-
// New users start at the compact minimum (more rows at once).
|
|
16057
|
-
rowHeight: chunkQKOFQMAY_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
|
|
16058
|
-
setRowHeight: (rowHeight) => set({ rowHeight })
|
|
16059
|
-
}),
|
|
16060
|
-
{
|
|
16061
|
-
name: "arbi_files_prefs",
|
|
16062
|
-
storage: middleware.createJSONStorage(() => localStorage),
|
|
16063
|
-
version: 1,
|
|
16064
|
-
// Version 0 kept one view for every files page: it becomes the files page's own.
|
|
16065
|
-
migrate: (persisted, version) => {
|
|
16066
|
-
const state = persisted ?? {};
|
|
16067
|
-
if (version >= 1) return state;
|
|
16068
|
-
const { viewMode, ...rest } = state;
|
|
16069
|
-
return {
|
|
16070
|
-
...rest,
|
|
16071
|
-
viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode } : {}
|
|
16072
|
-
};
|
|
16073
|
-
},
|
|
16074
|
-
partialize: (state) => ({
|
|
16075
|
-
documentFilters: state.documentFilters,
|
|
16076
|
-
viewModes: state.viewModes,
|
|
16077
|
-
rowHeight: state.rowHeight
|
|
16078
|
-
})
|
|
16079
|
-
}
|
|
16080
|
-
)
|
|
16081
|
-
);
|
|
16082
|
-
function filesViewMode(state, prefsKey = FILES_PREFS_KEY, defaultViewMode = DEFAULT_VIEW_MODE) {
|
|
16083
|
-
return state.viewModes[prefsKey] ?? defaultViewMode;
|
|
16084
|
-
}
|
|
16085
|
-
var useAiReviewStore = zustand.create()((set) => ({
|
|
16086
|
-
open: false,
|
|
16087
|
-
run: null,
|
|
16088
|
-
setOpen: (open) => set({ open }),
|
|
16089
|
-
setRun: (run) => set({ run }),
|
|
16090
|
-
markFinished: (docIds) => set((state) => {
|
|
16091
|
-
const run = state.run;
|
|
16092
|
-
if (!run) return state;
|
|
16093
|
-
const finished = new Set(run.finishedDocIds ?? []);
|
|
16094
|
-
const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id));
|
|
16095
|
-
if (added.length === 0) return state;
|
|
16096
|
-
return { run: { ...run, finishedDocIds: [...finished, ...added] } };
|
|
16097
|
-
})
|
|
16098
|
-
}));
|
|
16099
|
-
var useFilesGridStates = zustand.create()(
|
|
16100
|
-
middleware.persist(
|
|
16101
|
-
(set) => ({
|
|
16102
|
-
gridStates: {},
|
|
16103
|
-
setGridState: (gridId, state) => set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } }))
|
|
16104
|
-
}),
|
|
16105
|
-
{ name: "arbi_files_grids", storage: middleware.createJSONStorage(() => localStorage) }
|
|
16106
|
-
)
|
|
16107
|
-
);
|
|
16108
|
-
var useFilesDialogs = zustand.create()((set) => ({
|
|
16109
|
-
move: null,
|
|
16110
|
-
openMove: (folder = null) => set({ move: { folder } }),
|
|
16111
|
-
closeMove: () => set({ move: null }),
|
|
16112
|
-
bulkTagsOpen: false,
|
|
16113
|
-
setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),
|
|
16114
|
-
deleteRequest: null,
|
|
16115
|
-
requestDelete: (deleteRequest) => set({ deleteRequest }),
|
|
16116
|
-
exportOpen: false,
|
|
16117
|
-
setExportOpen: (exportOpen) => set({ exportOpen })
|
|
16118
|
-
}));
|
|
16119
14942
|
var GRID_GAP = 12;
|
|
16120
14943
|
var SCROLL_PADDING_X = 32;
|
|
16121
14944
|
var PAGE_ASPECT = 1.3;
|
|
@@ -16190,9 +15013,9 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16190
15013
|
for (const tag of workspaceTags ?? []) map.set(tag.external_id, tag.name);
|
|
16191
15014
|
return map;
|
|
16192
15015
|
}, [workspaceTags]);
|
|
16193
|
-
const pendingFolders = usePendingFolders(wsId);
|
|
16194
|
-
const addPendingFolder = useFilesStore((state) => state.addPendingFolder);
|
|
16195
|
-
const removePendingFolder = useFilesStore((state) => state.removePendingFolder);
|
|
15016
|
+
const pendingFolders = chunkS7B5E3RU_cjs.usePendingFolders(wsId);
|
|
15017
|
+
const addPendingFolder = chunkS7B5E3RU_cjs.useFilesStore((state) => state.addPendingFolder);
|
|
15018
|
+
const removePendingFolder = chunkS7B5E3RU_cjs.useFilesStore((state) => state.removePendingFolder);
|
|
16196
15019
|
const [editingFolderPath, setEditingFolderPath] = React9.useState(null);
|
|
16197
15020
|
const isSearching = search.trim().length > 0;
|
|
16198
15021
|
const selectedSet = React9.useMemo(() => new Set(selectedIds), [selectedIds]);
|
|
@@ -16201,8 +15024,8 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16201
15024
|
const { folders, files } = React9.useMemo(() => {
|
|
16202
15025
|
const result = isSearching ? {
|
|
16203
15026
|
folders: [],
|
|
16204
|
-
files:
|
|
16205
|
-
} :
|
|
15027
|
+
files: chunk5YX3R6CK_cjs.searchExplorerDocuments(documents, search, sort)
|
|
15028
|
+
} : chunk5YX3R6CK_cjs.buildExplorerEntries(documents, currentPath, sort, [...pendingFolders]);
|
|
16206
15029
|
if (sortReversed) result.files = [...result.files].reverse();
|
|
16207
15030
|
return result;
|
|
16208
15031
|
}, [documents, currentPath, sort, isSearching, search, sortReversed, pendingFolders]);
|
|
@@ -16213,7 +15036,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16213
15036
|
const orderedFileIds = React9.useMemo(() => files.map((d) => d.external_id), [files]);
|
|
16214
15037
|
const folderDocs = React9.useMemo(() => {
|
|
16215
15038
|
const map = /* @__PURE__ */ new Map();
|
|
16216
|
-
for (const f of folders) map.set(f.path.join("/"),
|
|
15039
|
+
for (const f of folders) map.set(f.path.join("/"), chunk5YX3R6CK_cjs.collectFolderDocs(documents, f.path));
|
|
16217
15040
|
return map;
|
|
16218
15041
|
}, [folders, documents]);
|
|
16219
15042
|
const folderSelection = React9.useMemo(() => {
|
|
@@ -16361,7 +15184,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16361
15184
|
let name = base;
|
|
16362
15185
|
let i = 2;
|
|
16363
15186
|
while (siblings.has(name.toLowerCase())) name = `${base} ${i++}`;
|
|
16364
|
-
const path =
|
|
15187
|
+
const path = chunk5YX3R6CK_cjs.joinFolderPath([...currentPath, name]);
|
|
16365
15188
|
if (!path) return;
|
|
16366
15189
|
addPendingFolder(wsId, path);
|
|
16367
15190
|
setEditingFolderPath(path);
|
|
@@ -16397,10 +15220,10 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16397
15220
|
notify18(`A folder named "${name}" already exists here.`, "error");
|
|
16398
15221
|
return;
|
|
16399
15222
|
}
|
|
16400
|
-
const oldPath =
|
|
15223
|
+
const oldPath = chunk5YX3R6CK_cjs.joinFolderPath(folder.path);
|
|
16401
15224
|
const newPrefix = [...folder.path.slice(0, -1), name];
|
|
16402
|
-
const newPath =
|
|
16403
|
-
const docs =
|
|
15225
|
+
const newPath = chunk5YX3R6CK_cjs.joinFolderPath(newPrefix);
|
|
15226
|
+
const docs = chunk5YX3R6CK_cjs.collectFolderDocs(documents, folder.path);
|
|
16404
15227
|
try {
|
|
16405
15228
|
if (await renameFolder(docs, folder.path, newPrefix) > 0) {
|
|
16406
15229
|
notify18(`Renamed folder to "${name}"`, "success");
|
|
@@ -16459,7 +15282,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16459
15282
|
const handleToggleFolder = React9.useCallback(
|
|
16460
15283
|
(folder, e) => {
|
|
16461
15284
|
e.stopPropagation();
|
|
16462
|
-
const ids =
|
|
15285
|
+
const ids = chunk5YX3R6CK_cjs.collectFolderDocs(documents, folder.path).map((d) => d.external_id);
|
|
16463
15286
|
if (ids.length === 0) return;
|
|
16464
15287
|
if (ids.every((id) => selectedSet.has(id))) {
|
|
16465
15288
|
const remove = new Set(ids);
|
|
@@ -16520,9 +15343,9 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16520
15343
|
);
|
|
16521
15344
|
const handleDelete = React9.useCallback(
|
|
16522
15345
|
async (doc) => {
|
|
16523
|
-
const name =
|
|
15346
|
+
const name = chunk5YX3R6CK_cjs.getExplorerDisplayName(doc);
|
|
16524
15347
|
const confirmed = await confirm({
|
|
16525
|
-
message: `Delete "${name}"? ${
|
|
15348
|
+
message: `Delete "${name}"? ${chunk5YX3R6CK_cjs.RECENTLY_DELETED_HINT}`,
|
|
16526
15349
|
title: "Delete file"
|
|
16527
15350
|
});
|
|
16528
15351
|
if (!confirmed) return;
|
|
@@ -16542,7 +15365,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16542
15365
|
);
|
|
16543
15366
|
const handleFolderDownload = React9.useCallback(
|
|
16544
15367
|
(folder) => {
|
|
16545
|
-
const docs =
|
|
15368
|
+
const docs = chunk5YX3R6CK_cjs.collectFolderDocs(documents, folder.path);
|
|
16546
15369
|
if (docs.length > 0) void downloadDocuments(docs);
|
|
16547
15370
|
},
|
|
16548
15371
|
[documents, downloadDocuments]
|
|
@@ -16551,7 +15374,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16551
15374
|
if (onFolderMove) return onFolderMove;
|
|
16552
15375
|
if (!onMoveSelected) return void 0;
|
|
16553
15376
|
return (folder) => {
|
|
16554
|
-
const ids =
|
|
15377
|
+
const ids = chunk5YX3R6CK_cjs.collectFolderDocs(documents, folder.path).map((d) => d.external_id);
|
|
16555
15378
|
if (ids.length === 0) return;
|
|
16556
15379
|
onSelectionChange(ids);
|
|
16557
15380
|
onMoveSelected();
|
|
@@ -16559,14 +15382,14 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16559
15382
|
}, [documents, onFolderMove, onMoveSelected, onSelectionChange]);
|
|
16560
15383
|
const handleFolderDelete = React9.useCallback(
|
|
16561
15384
|
async (folder) => {
|
|
16562
|
-
const docs =
|
|
15385
|
+
const docs = chunk5YX3R6CK_cjs.collectFolderDocs(documents, folder.path);
|
|
16563
15386
|
if (docs.length === 0) {
|
|
16564
|
-
const path =
|
|
15387
|
+
const path = chunk5YX3R6CK_cjs.joinFolderPath(folder.path);
|
|
16565
15388
|
if (wsId && path) removePendingFolder(wsId, path);
|
|
16566
15389
|
return;
|
|
16567
15390
|
}
|
|
16568
15391
|
const confirmed = await confirm({
|
|
16569
|
-
message: `Delete folder "${folder.name}" and its ${docs.length} item${docs.length === 1 ? "" : "s"}? ${
|
|
15392
|
+
message: `Delete folder "${folder.name}" and its ${docs.length} item${docs.length === 1 ? "" : "s"}? ${chunk5YX3R6CK_cjs.RECENTLY_DELETED_HINT_PLURAL}`,
|
|
16570
15393
|
title: "Delete folder"
|
|
16571
15394
|
});
|
|
16572
15395
|
if (!confirmed) return;
|
|
@@ -16583,8 +15406,8 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16583
15406
|
[confirm, documents, deleteDocuments, onSelectionChange, removePendingFolder, wsId, notify18]
|
|
16584
15407
|
);
|
|
16585
15408
|
const canDeleteFolder = React9.useCallback(
|
|
16586
|
-
(folder) => canUpload &&
|
|
16587
|
-
(doc) =>
|
|
15409
|
+
(folder) => canUpload && chunk5YX3R6CK_cjs.collectFolderDocs(documents, folder.path).every(
|
|
15410
|
+
(doc) => chunk5YX3R6CK_cjs.canDeleteDocument(doc, userId, role)
|
|
16588
15411
|
),
|
|
16589
15412
|
[canUpload, documents, userId, role]
|
|
16590
15413
|
);
|
|
@@ -16643,7 +15466,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16643
15466
|
setActiveDragId(null);
|
|
16644
15467
|
const data = event.over?.data.current;
|
|
16645
15468
|
if (data?.type === "folder" && data.path) {
|
|
16646
|
-
const targetFolder =
|
|
15469
|
+
const targetFolder = chunk5YX3R6CK_cjs.joinFolderPath(data.path);
|
|
16647
15470
|
const moving = dragIdsRef.current.filter((id) => {
|
|
16648
15471
|
const doc = documents.find((d) => d.external_id === id);
|
|
16649
15472
|
return doc && (doc.folder ?? null) !== targetFolder;
|
|
@@ -16683,7 +15506,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16683
15506
|
const dropped = Array.from(e.dataTransfer.files ?? []);
|
|
16684
15507
|
if (dropped.length > 0) {
|
|
16685
15508
|
e.preventDefault();
|
|
16686
|
-
onUploadFiles(dropped,
|
|
15509
|
+
onUploadFiles(dropped, chunk5YX3R6CK_cjs.joinFolderPath(currentPath));
|
|
16687
15510
|
}
|
|
16688
15511
|
},
|
|
16689
15512
|
[canUpload, currentPath, onUploadFiles]
|
|
@@ -16700,9 +15523,9 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16700
15523
|
onDragEnd: handleDragEnd,
|
|
16701
15524
|
onDragCancel: () => setActiveDragId(null),
|
|
16702
15525
|
children: [
|
|
16703
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15526
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ExplorerFrame, { "data-testid": "documents-explorer", children: /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.ExplorerStage, { children: [
|
|
16704
15527
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16705
|
-
|
|
15528
|
+
chunk5YX3R6CK_cjs.ExplorerScroller,
|
|
16706
15529
|
{
|
|
16707
15530
|
ref: scrollRef,
|
|
16708
15531
|
onClick: handleBackgroundClick,
|
|
@@ -16712,15 +15535,15 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16712
15535
|
onDragLeave: handleNativeDragLeave,
|
|
16713
15536
|
onDrop: handleNativeDrop,
|
|
16714
15537
|
"data-testid": "explorer-scroll",
|
|
16715
|
-
children: isLoading && documents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
16716
|
-
|
|
15538
|
+
children: isLoading && documents.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ExplorerLoadingTiles, {}) : entries.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
15539
|
+
chunk5YX3R6CK_cjs.ExplorerEmpty,
|
|
16717
15540
|
{
|
|
16718
15541
|
title: isSearching ? `No files match "${search.trim()}"` : "This folder is empty",
|
|
16719
15542
|
description: isSearching ? "Try a different search." : canUpload ? "Drop files here or use Upload to add documents." : "No documents here yet."
|
|
16720
15543
|
}
|
|
16721
15544
|
) : containerWidth === 0 ? (
|
|
16722
15545
|
// Not measured yet: rendering now would flash one stretched column.
|
|
16723
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15546
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ExplorerLoadingTiles, {})
|
|
16724
15547
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
16725
15548
|
"div",
|
|
16726
15549
|
{
|
|
@@ -16750,7 +15573,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16750
15573
|
if (entry.kind === "folder") {
|
|
16751
15574
|
const key = entry.path.join("/");
|
|
16752
15575
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16753
|
-
FolderTile,
|
|
15576
|
+
chunkS7B5E3RU_cjs.FolderTile,
|
|
16754
15577
|
{
|
|
16755
15578
|
folder: entry,
|
|
16756
15579
|
density,
|
|
@@ -16773,7 +15596,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16773
15596
|
}
|
|
16774
15597
|
const doc = entry.doc;
|
|
16775
15598
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16776
|
-
FileTile,
|
|
15599
|
+
chunkS7B5E3RU_cjs.FileTile,
|
|
16777
15600
|
{
|
|
16778
15601
|
doc,
|
|
16779
15602
|
density,
|
|
@@ -16781,7 +15604,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16781
15604
|
dragging: activeDragId === doc.external_id,
|
|
16782
15605
|
dndActive: activeDragId !== null,
|
|
16783
15606
|
renaming: renamingId === doc.external_id,
|
|
16784
|
-
canDelete:
|
|
15607
|
+
canDelete: chunk5YX3R6CK_cjs.canDeleteDocument(doc, userId, role),
|
|
16785
15608
|
thumbnailUrl: thumbnailsById.get(doc.external_id),
|
|
16786
15609
|
modifiedBy: userById.get(
|
|
16787
15610
|
doc.updated_by_ext_id ?? doc.created_by_ext_id
|
|
@@ -16810,9 +15633,9 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16810
15633
|
)
|
|
16811
15634
|
}
|
|
16812
15635
|
),
|
|
16813
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
15636
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ExplorerMarquee, { ref: marqueeOverlayRef, "data-testid": "explorer-marquee" }),
|
|
16814
15637
|
isFileDragOver && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16815
|
-
|
|
15638
|
+
chunk5YX3R6CK_cjs.ExplorerDropOverlay,
|
|
16816
15639
|
{
|
|
16817
15640
|
label: `Drop to upload${currentPath.length > 0 ? ` to "${currentPath[currentPath.length - 1]}"` : ""}`
|
|
16818
15641
|
}
|
|
@@ -16826,7 +15649,7 @@ var ConnectedFilesExplorer = React9.forwardRef(function ConnectedFilesExplorer2(
|
|
|
16826
15649
|
function DragPreview({ doc, count: count2 }) {
|
|
16827
15650
|
const Icon = ui.getFileTypeIcon(doc.file_name, { mime: doc.file_type });
|
|
16828
15651
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16829
|
-
|
|
15652
|
+
chunk5YX3R6CK_cjs.ExplorerDragPreview,
|
|
16830
15653
|
{
|
|
16831
15654
|
icon: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 20 }),
|
|
16832
15655
|
title: ui.getDocumentTitle(doc, doc.file_name ?? "Untitled"),
|
|
@@ -17336,10 +16159,10 @@ function ConnectedContactCardForm({
|
|
|
17336
16159
|
const [errors, setErrors] = React9.useState({});
|
|
17337
16160
|
const [serverError, setServerError] = React9.useState(null);
|
|
17338
16161
|
const [duplicateOf, setDuplicateOf] = React9.useState(null);
|
|
17339
|
-
const
|
|
16162
|
+
const create2 = react.useCreateContact();
|
|
17340
16163
|
const update = react.useUpdateContact();
|
|
17341
16164
|
const link = react.useLinkContact();
|
|
17342
|
-
const saving =
|
|
16165
|
+
const saving = create2.isPending || update.isPending || link.isPending;
|
|
17343
16166
|
const linked = !!contact?.email;
|
|
17344
16167
|
const locked = !!contact && !contact.card;
|
|
17345
16168
|
const set = (key, value) => setForm((f) => ({ ...f, [key]: value }));
|
|
@@ -17367,7 +16190,7 @@ function ConnectedContactCardForm({
|
|
|
17367
16190
|
};
|
|
17368
16191
|
if (invite && email) {
|
|
17369
16192
|
if (contact) link.mutate({ contact, email, card }, { onSuccess: onInvited, onError });
|
|
17370
|
-
else
|
|
16193
|
+
else create2.mutate({ email, card, invite: true }, { onSuccess: onInvited, onError });
|
|
17371
16194
|
return;
|
|
17372
16195
|
}
|
|
17373
16196
|
const onSuccess = () => {
|
|
@@ -17376,7 +16199,7 @@ function ConnectedContactCardForm({
|
|
|
17376
16199
|
};
|
|
17377
16200
|
if (contact?.external_id)
|
|
17378
16201
|
update.mutate({ id: contact.external_id, card }, { onSuccess, onError });
|
|
17379
|
-
else
|
|
16202
|
+
else create2.mutate({ card, invite: false }, { onSuccess, onError });
|
|
17380
16203
|
};
|
|
17381
16204
|
if (locked)
|
|
17382
16205
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-3", "data-testid": "contact-card-locked", children: [
|
|
@@ -17897,7 +16720,7 @@ function ConnectedContactMenu({
|
|
|
17897
16720
|
const updateUserSettings = react.useUpdateUserSettings();
|
|
17898
16721
|
const deleteContact = react.useDeleteContact();
|
|
17899
16722
|
const name = ui.getUserDisplayName(peer);
|
|
17900
|
-
const
|
|
16723
|
+
const isAgent8 = peer.external_id.startsWith("agt-");
|
|
17901
16724
|
const isMuted = React9.useMemo(
|
|
17902
16725
|
() => (userSettings?.muted_users || []).includes(peer.external_id),
|
|
17903
16726
|
[userSettings, peer.external_id]
|
|
@@ -17972,7 +16795,7 @@ Your conversation is not deleted \u2014 you can add them again.`,
|
|
|
17972
16795
|
},
|
|
17973
16796
|
// An agent is not a contact you can remove — it belongs to your account, and is managed from
|
|
17974
16797
|
// the agents panel.
|
|
17975
|
-
...!
|
|
16798
|
+
...!isAgent8 && contactId ? [
|
|
17976
16799
|
{
|
|
17977
16800
|
id: "remove",
|
|
17978
16801
|
label: "Remove contact",
|
|
@@ -19993,7 +18816,7 @@ function ConnectedMailbox({
|
|
|
19993
18816
|
onTabChange: () => {
|
|
19994
18817
|
},
|
|
19995
18818
|
compactBreakpoint: 360,
|
|
19996
|
-
firstTabContent: account ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18819
|
+
firstTabContent: account ? /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FilesFilterBar, { children: [
|
|
19997
18820
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19998
18821
|
chunk2EI7NCUA_cjs.FilterInput,
|
|
19999
18822
|
{
|
|
@@ -20028,7 +18851,7 @@ function ConnectedMailbox({
|
|
|
20028
18851
|
}
|
|
20029
18852
|
),
|
|
20030
18853
|
folderList && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20031
|
-
|
|
18854
|
+
chunk5YX3R6CK_cjs.FolderFilterButton,
|
|
20032
18855
|
{
|
|
20033
18856
|
label: folderList.find((f) => f.id === folderId)?.name ?? "Folders",
|
|
20034
18857
|
isActive: false,
|
|
@@ -20036,7 +18859,7 @@ function ConnectedMailbox({
|
|
|
20036
18859
|
onOpenChange: setFolderMenuOpen,
|
|
20037
18860
|
testId: "mail-folder-button",
|
|
20038
18861
|
children: folderList.map((item) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
20039
|
-
|
|
18862
|
+
chunk5YX3R6CK_cjs.FolderPickerRow,
|
|
20040
18863
|
{
|
|
20041
18864
|
label: item.name,
|
|
20042
18865
|
count: item.unread > 0 ? item.unread : void 0,
|
|
@@ -21243,7 +20066,7 @@ function BookingPagesPanel({ defaultTimeZone, className }) {
|
|
|
21243
20066
|
var selectClass4 = "h-9 w-full rounded-md border border-input bg-background px-2 text-sm text-foreground shadow-sm";
|
|
21244
20067
|
function CreateRoomForm({ zone, onDone }) {
|
|
21245
20068
|
const { notify: notify18 } = chunkI72IYIO2_cjs.useBlocksEnvironment();
|
|
21246
|
-
const
|
|
20069
|
+
const create2 = react.useCreateRoom();
|
|
21247
20070
|
const [name, setName] = React9.useState("");
|
|
21248
20071
|
const [type, setType] = React9.useState("room");
|
|
21249
20072
|
const [capacity, setCapacity] = React9.useState("");
|
|
@@ -21263,7 +20086,7 @@ function CreateRoomForm({ zone, onDone }) {
|
|
|
21263
20086
|
const cap = capacity.trim() ? Number(capacity) : null;
|
|
21264
20087
|
if (cap !== null && (!Number.isInteger(cap) || cap < 1))
|
|
21265
20088
|
return setError("Capacity must be a whole number");
|
|
21266
|
-
|
|
20089
|
+
create2.mutate(
|
|
21267
20090
|
{
|
|
21268
20091
|
name: name.trim(),
|
|
21269
20092
|
type,
|
|
@@ -21354,8 +20177,8 @@ function CreateRoomForm({ zone, onDone }) {
|
|
|
21354
20177
|
error && /* @__PURE__ */ jsxRuntime.jsx("p", { role: "alert", className: "text-sm text-destructive", children: error }),
|
|
21355
20178
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex justify-end gap-2", children: [
|
|
21356
20179
|
/* @__PURE__ */ jsxRuntime.jsx(ui.Button, { type: "button", variant: "ghost", onClick: onDone, children: "Cancel" }),
|
|
21357
|
-
/* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { type: "submit", disabled:
|
|
21358
|
-
|
|
20180
|
+
/* @__PURE__ */ jsxRuntime.jsxs(ui.Button, { type: "submit", disabled: create2.isPending, children: [
|
|
20181
|
+
create2.isPending && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "mr-1 size-4 animate-spin" }),
|
|
21359
20182
|
"Create"
|
|
21360
20183
|
] })
|
|
21361
20184
|
] })
|
|
@@ -23786,7 +22609,7 @@ function ConnectedUploadDropzone({
|
|
|
23786
22609
|
const onFiles = browse(fileInputRef);
|
|
23787
22610
|
const onFolder = browse(folderInputRef);
|
|
23788
22611
|
const dropTarget = /* @__PURE__ */ jsxRuntime.jsx(
|
|
23789
|
-
|
|
22612
|
+
chunk5YX3R6CK_cjs.UploadDropArea,
|
|
23790
22613
|
{
|
|
23791
22614
|
isActive: dragActive,
|
|
23792
22615
|
isDisabled: disabled,
|
|
@@ -23800,11 +22623,11 @@ function ConnectedUploadDropzone({
|
|
|
23800
22623
|
onClick: (e) => {
|
|
23801
22624
|
if (e.target === e.currentTarget) onFiles();
|
|
23802
22625
|
},
|
|
23803
|
-
actions: compact ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22626
|
+
actions: compact ? /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadBrowseButtons, { onFiles, onFolder, isDisabled: disabled }) : void 0
|
|
23804
22627
|
}
|
|
23805
22628
|
);
|
|
23806
22629
|
const urlDialog = (trigger) => onUrlsSubmit ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
23807
|
-
|
|
22630
|
+
chunk5YX3R6CK_cjs.UrlInputDialog,
|
|
23808
22631
|
{
|
|
23809
22632
|
onUrlsSubmit,
|
|
23810
22633
|
processing: disabled,
|
|
@@ -23817,12 +22640,12 @@ function ConnectedUploadDropzone({
|
|
|
23817
22640
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
23818
22641
|
dropTarget,
|
|
23819
22642
|
compactLeadingAction,
|
|
23820
|
-
onUrlsSubmit && /* @__PURE__ */ jsxRuntime.jsx(
|
|
22643
|
+
onUrlsSubmit && /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadSourceSection, { isIsolated: true, className: "flex flex-wrap justify-center gap-2", children: urlDialog(/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadUrlButton, { isDisabled: disabled, isCompact: true })) })
|
|
23821
22644
|
] });
|
|
23822
22645
|
}
|
|
23823
22646
|
if (!source) {
|
|
23824
22647
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
23825
|
-
|
|
22648
|
+
chunk5YX3R6CK_cjs.UploadSourcePicker,
|
|
23826
22649
|
{
|
|
23827
22650
|
isDisabled: disabled,
|
|
23828
22651
|
options: [
|
|
@@ -23858,14 +22681,14 @@ function ConnectedUploadDropzone({
|
|
|
23858
22681
|
}
|
|
23859
22682
|
if (source === "computer") {
|
|
23860
22683
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23861
|
-
|
|
22684
|
+
chunk5YX3R6CK_cjs.UploadSourceSection,
|
|
23862
22685
|
{
|
|
23863
22686
|
testId: "upload-source-computer",
|
|
23864
22687
|
className: "flex w-full flex-col gap-3 pointer-coarse:flex-col-reverse",
|
|
23865
22688
|
children: [
|
|
23866
22689
|
dropTarget,
|
|
23867
22690
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23868
|
-
|
|
22691
|
+
chunk5YX3R6CK_cjs.UploadBrowseButtons,
|
|
23869
22692
|
{
|
|
23870
22693
|
layout: "grid",
|
|
23871
22694
|
onFiles,
|
|
@@ -23878,15 +22701,15 @@ function ConnectedUploadDropzone({
|
|
|
23878
22701
|
);
|
|
23879
22702
|
}
|
|
23880
22703
|
if (source === "internet" && onUrlsSubmit) {
|
|
23881
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22704
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadSourceSection, { testId: "upload-source-internet", className: "flex flex-wrap gap-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadSourceSection, { isIsolated: true, children: urlDialog(/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadUrlButton, { isDisabled: disabled })) }) });
|
|
23882
22705
|
}
|
|
23883
22706
|
if (source === "email" && accounts) {
|
|
23884
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22707
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadSourceSection, { testId: "upload-source-email", isIsolated: true, children: accounts });
|
|
23885
22708
|
}
|
|
23886
22709
|
return null;
|
|
23887
22710
|
})();
|
|
23888
22711
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23889
|
-
|
|
22712
|
+
chunk5YX3R6CK_cjs.UploadFrame,
|
|
23890
22713
|
{
|
|
23891
22714
|
isCompact: compact,
|
|
23892
22715
|
isDimmed: disabled || processingMessage !== null,
|
|
@@ -23993,7 +22816,7 @@ function plural3(count2) {
|
|
|
23993
22816
|
function DefaultFooter({ submit, shared, onSharedChange }) {
|
|
23994
22817
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center justify-end gap-4 border-t border-border px-4 py-3 sm:px-6", children: [
|
|
23995
22818
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23996
|
-
|
|
22819
|
+
chunk5YX3R6CK_cjs.ShareToggle,
|
|
23997
22820
|
{
|
|
23998
22821
|
isVisible: shared,
|
|
23999
22822
|
onToggle: onSharedChange,
|
|
@@ -24158,7 +22981,7 @@ ${summary}`,
|
|
|
24158
22981
|
}
|
|
24159
22982
|
);
|
|
24160
22983
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 flex-col", "data-testid": "upload-documents", children: [
|
|
24161
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-2", children: uploading === null ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22984
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-2", children: uploading === null ? /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.UploadContainer, { className: "w-full px-4 pb-4 pt-2 sm:px-6", children: [
|
|
24162
22985
|
files.length === 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24163
22986
|
ConnectedUploadDropzone,
|
|
24164
22987
|
{
|
|
@@ -24174,7 +22997,7 @@ ${summary}`,
|
|
|
24174
22997
|
}
|
|
24175
22998
|
),
|
|
24176
22999
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24177
|
-
|
|
23000
|
+
chunk5YX3R6CK_cjs.SelectedFilesList,
|
|
24178
23001
|
{
|
|
24179
23002
|
renderFileIcon,
|
|
24180
23003
|
files,
|
|
@@ -24183,10 +23006,10 @@ ${summary}`,
|
|
|
24183
23006
|
formatFileSize: formatFileSize3
|
|
24184
23007
|
}
|
|
24185
23008
|
),
|
|
24186
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24187
|
-
error && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24188
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
24189
|
-
|
|
23009
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.RejectedFilesList, { files: refused, onClear: () => setRefused([]) }),
|
|
23010
|
+
error && /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadErrorMessage, { message: error })
|
|
23011
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.UploadContainer, { className: "w-full p-4 sm:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
23012
|
+
chunk5YX3R6CK_cjs.UploadProgress,
|
|
24190
23013
|
{
|
|
24191
23014
|
fileCount: count2,
|
|
24192
23015
|
entityLabel: plural3(count2),
|
|
@@ -24228,7 +23051,7 @@ function AddFromAccountsButton({
|
|
|
24228
23051
|
className: "gap-2",
|
|
24229
23052
|
"data-testid": dataTestId,
|
|
24230
23053
|
children: [
|
|
24231
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center gap-1", children: marks.map((m) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
23054
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex items-center gap-1", children: marks.map((m) => /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.VendorLogo, { vendorKey: m.vendorKey, product: m.product, className: "h-4 w-4" }, m.key)) }),
|
|
24232
23055
|
"Add from accounts"
|
|
24233
23056
|
]
|
|
24234
23057
|
}
|
|
@@ -24258,104 +23081,11 @@ function EmptyWorkspaceUpload({
|
|
|
24258
23081
|
compactLeadingAction: onImportFromEmail && /* @__PURE__ */ jsxRuntime.jsx(AddFromAccountsButton, { onImportFromEmail })
|
|
24259
23082
|
}
|
|
24260
23083
|
),
|
|
24261
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23084
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.PrivacyExplainerModal, {})
|
|
24262
23085
|
] })
|
|
24263
23086
|
}
|
|
24264
23087
|
);
|
|
24265
23088
|
}
|
|
24266
|
-
function ConnectedTagEntity({
|
|
24267
|
-
tag,
|
|
24268
|
-
size = "md",
|
|
24269
|
-
className = "",
|
|
24270
|
-
onClick,
|
|
24271
|
-
showTooltip = true,
|
|
24272
|
-
canEdit = false,
|
|
24273
|
-
onEditClick
|
|
24274
|
-
}) {
|
|
24275
|
-
const { data: workspaceTags } = react.useTags();
|
|
24276
|
-
const { data: members = [] } = react.useWorkspaceUsers();
|
|
24277
|
-
const byId = (id) => id ? members.find((m) => m.user.external_id === id)?.user : void 0;
|
|
24278
|
-
const freshTag = React9.useMemo(() => {
|
|
24279
|
-
if (!workspaceTags) return tag;
|
|
24280
|
-
const found = workspaceTags.find((t) => t.external_id === tag.external_id);
|
|
24281
|
-
return found || tag;
|
|
24282
|
-
}, [workspaceTags, tag]);
|
|
24283
|
-
const creator = byId(tag.created_by_ext_id) ?? null;
|
|
24284
|
-
const updater = byId(tag.updated_by_ext_id) ?? null;
|
|
24285
|
-
const Icon = ui.getTagTypeIcon(tag.tag_type.type);
|
|
24286
|
-
const tagColor = ui.getEntityColor(tag.external_id, "medium");
|
|
24287
|
-
const handleVisibilityToggle = () => {
|
|
24288
|
-
if (canEdit && onEditClick) {
|
|
24289
|
-
onEditClick();
|
|
24290
|
-
}
|
|
24291
|
-
};
|
|
24292
|
-
const tooltipContent = showTooltip ? /* @__PURE__ */ jsxRuntime.jsxs(chunkVQHXVY26_cjs.EntityTooltip, { children: [
|
|
24293
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24294
|
-
chunkVQHXVY26_cjs.EntityTooltipHeader,
|
|
24295
|
-
{
|
|
24296
|
-
lead: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24297
|
-
"span",
|
|
24298
|
-
{
|
|
24299
|
-
className: "inline-flex items-center justify-center rounded-md text-white p-1",
|
|
24300
|
-
style: { backgroundColor: tagColor },
|
|
24301
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 16 })
|
|
24302
|
-
}
|
|
24303
|
-
),
|
|
24304
|
-
title: tag.name
|
|
24305
|
-
}
|
|
24306
|
-
),
|
|
24307
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1.5 text-sm", children: [
|
|
24308
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
24309
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Type:" }),
|
|
24310
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: ui.getTagTypeLabel(tag.tag_type.type) })
|
|
24311
|
-
] }),
|
|
24312
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
24313
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Documents:" }),
|
|
24314
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "secondary", className: "h-5 min-w-[20px] justify-center", children: freshTag.doctag_count ?? 0 })
|
|
24315
|
-
] }),
|
|
24316
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
24317
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24318
|
-
ui.VisibilityToggle,
|
|
24319
|
-
{
|
|
24320
|
-
items: freshTag,
|
|
24321
|
-
onToggle: handleVisibilityToggle,
|
|
24322
|
-
disabled: !canEdit,
|
|
24323
|
-
showLabel: false,
|
|
24324
|
-
showTooltip: canEdit,
|
|
24325
|
-
tooltipActive: "Click to edit",
|
|
24326
|
-
tooltipInactive: "Click to edit"
|
|
24327
|
-
}
|
|
24328
|
-
),
|
|
24329
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: freshTag.shared ? "Shared" : "Private" })
|
|
24330
|
-
] }),
|
|
24331
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
24332
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Created:" }),
|
|
24333
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: ui.formatFriendlyDate(tag.created_at) }),
|
|
24334
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "by" }),
|
|
24335
|
-
/* @__PURE__ */ jsxRuntime.jsx(UserAvatar, { user: creator ?? void 0 })
|
|
24336
|
-
] }),
|
|
24337
|
-
tag.updated_at && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
24338
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "Updated:" }),
|
|
24339
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: ui.formatFriendlyDate(tag.updated_at) }),
|
|
24340
|
-
updater && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24341
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-muted-foreground", children: "by" }),
|
|
24342
|
-
/* @__PURE__ */ jsxRuntime.jsx(UserAvatar, { user: updater })
|
|
24343
|
-
] })
|
|
24344
|
-
] })
|
|
24345
|
-
] })
|
|
24346
|
-
] }) : void 0;
|
|
24347
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24348
|
-
ui.TagEntity,
|
|
24349
|
-
{
|
|
24350
|
-
tag: { ...tag, color: tagColor },
|
|
24351
|
-
size,
|
|
24352
|
-
className,
|
|
24353
|
-
onClick,
|
|
24354
|
-
showTooltip,
|
|
24355
|
-
tooltipContent
|
|
24356
|
-
}
|
|
24357
|
-
);
|
|
24358
|
-
}
|
|
24359
23089
|
var CheckboxCellRenderer = React9.memo(function CheckboxCellRenderer2({
|
|
24360
23090
|
params,
|
|
24361
23091
|
tagId,
|
|
@@ -24366,7 +23096,7 @@ var CheckboxCellRenderer = React9.memo(function CheckboxCellRenderer2({
|
|
|
24366
23096
|
if (!params.data) return null;
|
|
24367
23097
|
const isChecked = params.value === true;
|
|
24368
23098
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24369
|
-
|
|
23099
|
+
chunk5YX3R6CK_cjs.CheckboxCell,
|
|
24370
23100
|
{
|
|
24371
23101
|
isChecked,
|
|
24372
23102
|
color: tagColor,
|
|
@@ -24389,13 +23119,13 @@ var TagHeaderComponent = React9.memo(function TagHeaderComponent2({
|
|
|
24389
23119
|
return () => params.column.removeEventListener("sortChanged", updateSort);
|
|
24390
23120
|
}, [params.column]);
|
|
24391
23121
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24392
|
-
|
|
23122
|
+
chunk5YX3R6CK_cjs.TagColumnHeader,
|
|
24393
23123
|
{
|
|
24394
23124
|
isCentered: isCheckbox,
|
|
24395
23125
|
sort,
|
|
24396
23126
|
onSort: params.enableSorting ? (additive) => params.progressSort(additive) : void 0,
|
|
24397
|
-
filter: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24398
|
-
label: /* @__PURE__ */ jsxRuntime.jsx(ConnectedTagEntity, { tag, size: "sm" })
|
|
23127
|
+
filter: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FilterButton, { params, colId: tag.external_id }),
|
|
23128
|
+
label: /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.ConnectedTagEntity, { tag, size: "sm" })
|
|
24399
23129
|
}
|
|
24400
23130
|
);
|
|
24401
23131
|
});
|
|
@@ -24483,7 +23213,7 @@ function createTagColumn({
|
|
|
24483
23213
|
}
|
|
24484
23214
|
) : void 0,
|
|
24485
23215
|
// Use default rendering for text/number/select - shows value with truncation
|
|
24486
|
-
cellEditor: isSelect ?
|
|
23216
|
+
cellEditor: isSelect ? chunk5YX3R6CK_cjs.MultiSelectCellEditor : isText ? "agLargeTextCellEditor" : void 0,
|
|
24487
23217
|
cellEditorParams: isSelect ? createMultiSelectCellEditorParams(tag.tag_type.options || []) : isText ? { rows: 8, cols: 50 } : void 0,
|
|
24488
23218
|
cellEditorPopup: isText || isSelect,
|
|
24489
23219
|
// Text and Select tags use popup editor for better UX
|
|
@@ -24600,14 +23330,14 @@ function createDocumentColumns({
|
|
|
24600
23330
|
onToggleShared,
|
|
24601
23331
|
notify: notify18
|
|
24602
23332
|
}) {
|
|
24603
|
-
const isRowEditableByOwner = (params) =>
|
|
24604
|
-
const isRowEditableByMember = (params) =>
|
|
23333
|
+
const isRowEditableByOwner = (params) => chunk5YX3R6CK_cjs.canChangeVisibility(params.data, currentUserExtId);
|
|
23334
|
+
const isRowEditableByMember = (params) => chunk5YX3R6CK_cjs.canEditDocumentFields(params.data, currentUserExtId, workspaceRole);
|
|
24605
23335
|
const documentNameCellRenderer = (params) => {
|
|
24606
23336
|
const doc = params.data;
|
|
24607
23337
|
if (!doc) return null;
|
|
24608
23338
|
const context = params.context;
|
|
24609
23339
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24610
|
-
DocumentNameCell,
|
|
23340
|
+
chunkS7B5E3RU_cjs.DocumentNameCell,
|
|
24611
23341
|
{
|
|
24612
23342
|
doc,
|
|
24613
23343
|
canEdit: isRowEditableByMember(params),
|
|
@@ -24626,7 +23356,7 @@ function createDocumentColumns({
|
|
|
24626
23356
|
if (!params.data) return null;
|
|
24627
23357
|
const isOwner = isRowEditableByOwner(params);
|
|
24628
23358
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24629
|
-
DocumentSharedCell,
|
|
23359
|
+
chunkS7B5E3RU_cjs.DocumentSharedCell,
|
|
24630
23360
|
{
|
|
24631
23361
|
document: params.data,
|
|
24632
23362
|
disabled: !isOwner,
|
|
@@ -24639,7 +23369,7 @@ function createDocumentColumns({
|
|
|
24639
23369
|
if (!params.data) return null;
|
|
24640
23370
|
const context = params.context;
|
|
24641
23371
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24642
|
-
|
|
23372
|
+
chunkS7B5E3RU_cjs.StatusCell,
|
|
24643
23373
|
{
|
|
24644
23374
|
doc: params.data,
|
|
24645
23375
|
onStatusClick,
|
|
@@ -24652,7 +23382,7 @@ function createDocumentColumns({
|
|
|
24652
23382
|
if (!params.data) return null;
|
|
24653
23383
|
const context = params.context;
|
|
24654
23384
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24655
|
-
DocumentLabelsCell,
|
|
23385
|
+
chunkS7B5E3RU_cjs.DocumentLabelsCell,
|
|
24656
23386
|
{
|
|
24657
23387
|
doc: params.data,
|
|
24658
23388
|
labels: checkboxTags,
|
|
@@ -24671,7 +23401,7 @@ function createDocumentColumns({
|
|
|
24671
23401
|
const related = context?.getRelatedDocs?.().get(params.data.external_id);
|
|
24672
23402
|
if (!related || react.getRelatedTotal(related) === 0) return null;
|
|
24673
23403
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24674
|
-
RelatedDocumentsCell,
|
|
23404
|
+
chunkS7B5E3RU_cjs.RelatedDocumentsCell,
|
|
24675
23405
|
{
|
|
24676
23406
|
currentDoc: params.data,
|
|
24677
23407
|
related,
|
|
@@ -24686,7 +23416,7 @@ function createDocumentColumns({
|
|
|
24686
23416
|
if (!params.data) return null;
|
|
24687
23417
|
const context = params.context;
|
|
24688
23418
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
24689
|
-
DocumentFolderCell,
|
|
23419
|
+
chunkS7B5E3RU_cjs.DocumentFolderCell,
|
|
24690
23420
|
{
|
|
24691
23421
|
document: params.data,
|
|
24692
23422
|
isEditable: isRowEditableByMember(params),
|
|
@@ -24806,7 +23536,7 @@ function createDocumentColumns({
|
|
|
24806
23536
|
singleClickEdit: true,
|
|
24807
23537
|
cellEditor: "agSelectCellEditor",
|
|
24808
23538
|
cellEditorParams: {
|
|
24809
|
-
values: [...
|
|
23539
|
+
values: [...chunk5YX3R6CK_cjs.DOCUMENT_TYPE_OPTIONS]
|
|
24810
23540
|
},
|
|
24811
23541
|
context: { icon: lucideReact.Sparkles },
|
|
24812
23542
|
valueGetter: (params) => ui.getDocumentNature(params.data) || "",
|
|
@@ -25112,7 +23842,7 @@ function createDocumentColumns({
|
|
|
25112
23842
|
const context = params.context;
|
|
25113
23843
|
const creator = context?.getWorkspaceUsers?.().find((u) => u.external_id === params.data.created_by_ext_id);
|
|
25114
23844
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25115
|
-
UserAvatar,
|
|
23845
|
+
chunkS7B5E3RU_cjs.UserAvatar,
|
|
25116
23846
|
{
|
|
25117
23847
|
user: creator,
|
|
25118
23848
|
isMe: !!creator && creator.external_id === context?.getCurrentUserId?.(),
|
|
@@ -25344,7 +24074,7 @@ function useDocumentTable({
|
|
|
25344
24074
|
}
|
|
25345
24075
|
const stabilizedTagIds = prevTagIdsRef.current;
|
|
25346
24076
|
const stabilizedTagNames = prevTagNamesRef.current;
|
|
25347
|
-
const defaultVisibleColumns = React9.useMemo(() => [...
|
|
24077
|
+
const defaultVisibleColumns = React9.useMemo(() => [...chunk5YX3R6CK_cjs.DEFAULT_DOCUMENT_COLUMNS], []);
|
|
25348
24078
|
const toggleShared = React9.useCallback((docId, shared) => {
|
|
25349
24079
|
updateDocRef.current.mutate({ documents: [{ external_id: docId, shared }] });
|
|
25350
24080
|
}, []);
|
|
@@ -25609,10 +24339,10 @@ function ConnectedFilesBulkActions({
|
|
|
25609
24339
|
const bulk = useDocumentBulkActions(selectedDocuments);
|
|
25610
24340
|
const count2 = selectedDocuments.length;
|
|
25611
24341
|
const noun = ui.getEntityLabel("DOCUMENT", count2 === 1 ? "SINGULAR" : "PLURAL");
|
|
25612
|
-
const shareState =
|
|
24342
|
+
const shareState = chunk5YX3R6CK_cjs.shareStateOf(bulk.freshSelectedDocuments);
|
|
25613
24343
|
const handleToggleShare = async (shouldShare) => {
|
|
25614
24344
|
if (shouldShare) return bulk.share();
|
|
25615
|
-
const confirmed = await
|
|
24345
|
+
const confirmed = await chunk5YX3R6CK_cjs.confirmHideFromMembers(
|
|
25616
24346
|
confirm,
|
|
25617
24347
|
bulk.freshSelectedDocuments.length,
|
|
25618
24348
|
members
|
|
@@ -25629,7 +24359,7 @@ function ConnectedFilesBulkActions({
|
|
|
25629
24359
|
const { openDocumentsChat, openFieldsManager } = actions;
|
|
25630
24360
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25631
24361
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25632
|
-
|
|
24362
|
+
chunk5YX3R6CK_cjs.BulkActionsBar,
|
|
25633
24363
|
{
|
|
25634
24364
|
count: count2,
|
|
25635
24365
|
onClear: onClearSelection,
|
|
@@ -25655,7 +24385,7 @@ function ConnectedFilesBulkActions({
|
|
|
25655
24385
|
onDelete: () => setConfirming("delete"),
|
|
25656
24386
|
shareState,
|
|
25657
24387
|
shareLabels: shareState === "shared" ? { share: "Make private" } : void 0,
|
|
25658
|
-
shareTooltip:
|
|
24388
|
+
shareTooltip: chunk5YX3R6CK_cjs.shareTooltipFor(shareState, bulk.freshSelectedDocuments.length === 1),
|
|
25659
24389
|
onToggleShare: (shouldShare) => void handleToggleShare(shouldShare)
|
|
25660
24390
|
}
|
|
25661
24391
|
),
|
|
@@ -25670,7 +24400,7 @@ function ConnectedFilesBulkActions({
|
|
|
25670
24400
|
onClearSelection();
|
|
25671
24401
|
},
|
|
25672
24402
|
title: `Delete ${count2} ${noun}`,
|
|
25673
|
-
description: `Delete ${namedTargets(selectedDocuments)}? ${count2 === 1 ?
|
|
24403
|
+
description: `Delete ${namedTargets(selectedDocuments)}? ${count2 === 1 ? chunk5YX3R6CK_cjs.RECENTLY_DELETED_HINT : chunk5YX3R6CK_cjs.RECENTLY_DELETED_HINT_PLURAL}`,
|
|
25674
24404
|
confirmText: "Delete",
|
|
25675
24405
|
variant: "destructive"
|
|
25676
24406
|
}
|
|
@@ -26016,9 +24746,9 @@ function useDocumentFilters({
|
|
|
26016
24746
|
const { data: members = [] } = react.useWorkspaceUsers();
|
|
26017
24747
|
const user = members.find((m) => m.user.external_id === currentUserId)?.user;
|
|
26018
24748
|
const offlineIds = react.useOfflineDocumentIds();
|
|
26019
|
-
const pendingFolders = usePendingFolders(selectedWorkspaceId);
|
|
26020
|
-
const persistedDocumentFilters = useFilesPrefs((state) => state.documentFilters);
|
|
26021
|
-
const setPersistedDocumentFilters = useFilesPrefs((state) => state.setDocumentFilters);
|
|
24749
|
+
const pendingFolders = chunkS7B5E3RU_cjs.usePendingFolders(selectedWorkspaceId);
|
|
24750
|
+
const persistedDocumentFilters = chunkS7B5E3RU_cjs.useFilesPrefs((state) => state.documentFilters);
|
|
24751
|
+
const setPersistedDocumentFilters = chunkS7B5E3RU_cjs.useFilesPrefs((state) => state.setDocumentFilters);
|
|
26022
24752
|
const folderTree = React9.useMemo(() => {
|
|
26023
24753
|
const allPaths = /* @__PURE__ */ new Set();
|
|
26024
24754
|
let hasUnfiled = false;
|
|
@@ -26239,7 +24969,7 @@ function useDocumentFilters({
|
|
|
26239
24969
|
{
|
|
26240
24970
|
id: "uploaded_by_me",
|
|
26241
24971
|
label: "Uploaded by me",
|
|
26242
|
-
icon: user ? /* @__PURE__ */ jsxRuntime.jsx(UserAvatar, { user, isMe: true }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "h-4 w-4" }),
|
|
24972
|
+
icon: user ? /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.UserAvatar, { user, isMe: true }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.User, { className: "h-4 w-4" }),
|
|
26243
24973
|
count: docs.filter((doc) => doc.created_by_ext_id === currentUserId).length
|
|
26244
24974
|
},
|
|
26245
24975
|
{
|
|
@@ -26367,7 +25097,7 @@ function useDocumentFilters({
|
|
|
26367
25097
|
const folderPath = React9.useMemo(() => {
|
|
26368
25098
|
for (const [key, state] of documentFilters) {
|
|
26369
25099
|
if (key.startsWith("folder:") && key !== "folder:none" && state === "include") {
|
|
26370
|
-
return
|
|
25100
|
+
return chunk5YX3R6CK_cjs.parseFolderSegments(key.slice("folder:".length));
|
|
26371
25101
|
}
|
|
26372
25102
|
}
|
|
26373
25103
|
return [];
|
|
@@ -26376,7 +25106,7 @@ function useDocumentFilters({
|
|
|
26376
25106
|
(path) => {
|
|
26377
25107
|
const next = new Map(documentFilters);
|
|
26378
25108
|
for (const key of next.keys()) if (key.startsWith("folder:")) next.set(key, null);
|
|
26379
|
-
const joined =
|
|
25109
|
+
const joined = chunk5YX3R6CK_cjs.joinFolderPath(path);
|
|
26380
25110
|
if (joined) next.set(`folder:${joined}`, "include");
|
|
26381
25111
|
setDocumentFilters(next);
|
|
26382
25112
|
},
|
|
@@ -26441,8 +25171,8 @@ function ConnectedAiReview({
|
|
|
26441
25171
|
const generate = react.useGenerateDocTags();
|
|
26442
25172
|
const { data: liveDocs = [] } = react.useDocuments();
|
|
26443
25173
|
const { data: tags = [] } = react.useTags();
|
|
26444
|
-
const result = useAiReviewStore((s) => s.run);
|
|
26445
|
-
const setResult = useAiReviewStore((s) => s.setRun);
|
|
25174
|
+
const result = chunkS7B5E3RU_cjs.useAiReviewStore((s) => s.run);
|
|
25175
|
+
const setResult = chunkS7B5E3RU_cjs.useAiReviewStore((s) => s.setRun);
|
|
26446
25176
|
const phase = result ? "review" : "ask";
|
|
26447
25177
|
const docCount = documents.length;
|
|
26448
25178
|
const scope = allDocuments ? "processed" : "selected";
|
|
@@ -26668,7 +25398,7 @@ function ConnectedAiReview({
|
|
|
26668
25398
|
}, [kind]);
|
|
26669
25399
|
const description = phase === "ask" ? `Ask one question \u2014 ARBI answers it for each of the ${docCount} ${scope} document${plural5(docCount)}.` : aiCellsTotal > 0 ? reviewProgress(aiCellsDone, aiCellsEmpty, aiCellsTotal) : `Applied to ${rows.length} document${plural5(rows.length)}`;
|
|
26670
25400
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26671
|
-
|
|
25401
|
+
chunk5YX3R6CK_cjs.AiReviewDialogView,
|
|
26672
25402
|
{
|
|
26673
25403
|
open,
|
|
26674
25404
|
onOpenChange: handleOpenChange,
|
|
@@ -26714,7 +25444,7 @@ function useAiReviewLiveUpdates() {
|
|
|
26714
25444
|
if (message.batch_type !== "doctag_generate") return;
|
|
26715
25445
|
const docIds = message.doc_ext_ids ?? [];
|
|
26716
25446
|
if (!docIds.length) return;
|
|
26717
|
-
void refreshDocuments(docIds).then(() => useAiReviewStore.getState().markFinished(docIds));
|
|
25447
|
+
void refreshDocuments(docIds).then(() => chunkS7B5E3RU_cjs.useAiReviewStore.getState().markFinished(docIds));
|
|
26718
25448
|
const { clearTask } = react.useArbiWsStore.getState();
|
|
26719
25449
|
for (const id of docIds) clearTask(id);
|
|
26720
25450
|
});
|
|
@@ -26749,7 +25479,7 @@ function useBatchCompleteToasts() {
|
|
|
26749
25479
|
timer.current = null;
|
|
26750
25480
|
const runs = pending.current;
|
|
26751
25481
|
pending.current = /* @__PURE__ */ new Map();
|
|
26752
|
-
const hasReview = !!useAiReviewStore.getState().run;
|
|
25482
|
+
const hasReview = !!chunkS7B5E3RU_cjs.useAiReviewStore.getState().run;
|
|
26753
25483
|
for (const [id, entry] of runs) {
|
|
26754
25484
|
const n = entry.docIds.size;
|
|
26755
25485
|
notify18(
|
|
@@ -26762,7 +25492,7 @@ function useBatchCompleteToasts() {
|
|
|
26762
25492
|
...hasReview && {
|
|
26763
25493
|
action: {
|
|
26764
25494
|
label: "View results",
|
|
26765
|
-
onClick: () => useAiReviewStore.getState().setOpen(true)
|
|
25495
|
+
onClick: () => chunkS7B5E3RU_cjs.useAiReviewStore.getState().setOpen(true)
|
|
26766
25496
|
}
|
|
26767
25497
|
}
|
|
26768
25498
|
}
|
|
@@ -26770,7 +25500,7 @@ function useBatchCompleteToasts() {
|
|
|
26770
25500
|
}
|
|
26771
25501
|
}, AI_FIELDS_NOTICE_WINDOW_MS);
|
|
26772
25502
|
} else if (message.batch_type === "entity_extract") {
|
|
26773
|
-
say(`${
|
|
25503
|
+
say(`${chunkRTS3B2W7_cjs.entitiesPhrase()} extracted from ${chunkRTS3B2W7_cjs.documentCount(docIds.length)}`, "success", {
|
|
26774
25504
|
...openTags && { action: { label: "View", onClick: openTags } }
|
|
26775
25505
|
});
|
|
26776
25506
|
} else if (message.batch_type === "upload") {
|
|
@@ -26809,12 +25539,12 @@ function ConnectedMoveToFolder({
|
|
|
26809
25539
|
setIsSubmitting(true);
|
|
26810
25540
|
try {
|
|
26811
25541
|
if (folderToMove) {
|
|
26812
|
-
const docsInFolder =
|
|
25542
|
+
const docsInFolder = chunk5YX3R6CK_cjs.collectFolderDocs(allDocs, folderToMove.path);
|
|
26813
25543
|
if (docsInFolder.length === 0) {
|
|
26814
25544
|
onClose();
|
|
26815
25545
|
return;
|
|
26816
25546
|
}
|
|
26817
|
-
const newPrefixSegments = targetFolder ? [...
|
|
25547
|
+
const newPrefixSegments = targetFolder ? [...chunk5YX3R6CK_cjs.parseFolderSegments(targetFolder), folderToMove.name] : [folderToMove.name];
|
|
26818
25548
|
await renameFolder(docsInFolder, folderToMove.path, newPrefixSegments);
|
|
26819
25549
|
const dest = targetFolder ? `"${targetFolder}/${folderToMove.name}"` : `"${folderToMove.name}" (root)`;
|
|
26820
25550
|
notify18(`Moved folder to ${dest}`, "success");
|
|
@@ -26839,9 +25569,9 @@ function ConnectedMoveToFolder({
|
|
|
26839
25569
|
}
|
|
26840
25570
|
};
|
|
26841
25571
|
const isFolderMode = !!folderToMove;
|
|
26842
|
-
const folders = useDocumentFolders(allDocs, targetFolder);
|
|
25572
|
+
const folders = chunkS7B5E3RU_cjs.useDocumentFolders(allDocs, targetFolder);
|
|
26843
25573
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26844
|
-
|
|
25574
|
+
chunk5YX3R6CK_cjs.MoveToFolderDialog,
|
|
26845
25575
|
{
|
|
26846
25576
|
open: isOpen,
|
|
26847
25577
|
onClose,
|
|
@@ -26851,7 +25581,7 @@ function ConnectedMoveToFolder({
|
|
|
26851
25581
|
isSubmitting,
|
|
26852
25582
|
onConfirm: handleMove,
|
|
26853
25583
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26854
|
-
|
|
25584
|
+
chunk5YX3R6CK_cjs.FolderCommandList,
|
|
26855
25585
|
{
|
|
26856
25586
|
folders,
|
|
26857
25587
|
value: targetFolder,
|
|
@@ -27047,7 +25777,7 @@ function useFieldWrites({
|
|
|
27047
25777
|
const createTag = react.useCreateTag();
|
|
27048
25778
|
const updateTag = react.useUpdateTag();
|
|
27049
25779
|
const deleteTag = react.useDeleteTag();
|
|
27050
|
-
const
|
|
25780
|
+
const create2 = React9.useCallback(
|
|
27051
25781
|
async (data) => {
|
|
27052
25782
|
let created;
|
|
27053
25783
|
try {
|
|
@@ -27153,7 +25883,7 @@ ${nested.length} nested ${nested.length === 1 ? "field moves" : "fields move"} t
|
|
|
27153
25883
|
},
|
|
27154
25884
|
[confirm, notify18, deleteTag, tags, workspaceTags, nouns]
|
|
27155
25885
|
);
|
|
27156
|
-
return { create:
|
|
25886
|
+
return { create: create2, update, rename, toggleShared, removeMany };
|
|
27157
25887
|
}
|
|
27158
25888
|
var ownFieldsExport = (props) => /* @__PURE__ */ jsxRuntime.jsx(ConnectedExportDialog, { ...props, entityType: "TAG", testId: "export-fields-modal" });
|
|
27159
25889
|
function ConnectedFieldsEditor({
|
|
@@ -27247,7 +25977,7 @@ function ConnectedFieldsEditor({
|
|
|
27247
25977
|
const [sortBy, setSortBy] = React9.useState("name-asc");
|
|
27248
25978
|
const [filterText, setFilterText] = React9.useState("");
|
|
27249
25979
|
const fieldRows = React9.useMemo(
|
|
27250
|
-
() => browser.flattenTagTree(
|
|
25980
|
+
() => browser.flattenTagTree(chunk5YX3R6CK_cjs.sortFields(chunk5YX3R6CK_cjs.filterFieldsByName(tags, filterText), sortBy)),
|
|
27251
25981
|
[tags, filterText, sortBy]
|
|
27252
25982
|
);
|
|
27253
25983
|
const exportItems = React9.useMemo(
|
|
@@ -27267,7 +25997,7 @@ function ConnectedFieldsEditor({
|
|
|
27267
25997
|
setIsDeleting(false);
|
|
27268
25998
|
}
|
|
27269
25999
|
};
|
|
27270
|
-
const copy =
|
|
26000
|
+
const copy = chunk5YX3R6CK_cjs.fieldsApplyBarCopy({
|
|
27271
26001
|
nouns,
|
|
27272
26002
|
targetNoun,
|
|
27273
26003
|
fieldCount,
|
|
@@ -27276,9 +26006,9 @@ function ConnectedFieldsEditor({
|
|
|
27276
26006
|
isApplying,
|
|
27277
26007
|
isClearing
|
|
27278
26008
|
});
|
|
27279
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26009
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FieldsEditorRoot, { children: [
|
|
27280
26010
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27281
|
-
|
|
26011
|
+
chunk5YX3R6CK_cjs.FieldsEditorToolbar,
|
|
27282
26012
|
{
|
|
27283
26013
|
nouns,
|
|
27284
26014
|
onNew: () => {
|
|
@@ -27306,11 +26036,11 @@ function ConnectedFieldsEditor({
|
|
|
27306
26036
|
onSortByChange: setSortBy
|
|
27307
26037
|
}
|
|
27308
26038
|
),
|
|
27309
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
26039
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FieldsEditorList, { children: [
|
|
27310
26040
|
fieldRows.map(({ tag, depth, childCount }) => {
|
|
27311
26041
|
const isEditingThis = editingTagId === tag.external_id;
|
|
27312
26042
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27313
|
-
|
|
26043
|
+
chunk5YX3R6CK_cjs.FieldRow,
|
|
27314
26044
|
{
|
|
27315
26045
|
tagId: tag.external_id,
|
|
27316
26046
|
name: tag.name,
|
|
@@ -27363,10 +26093,10 @@ function ConnectedFieldsEditor({
|
|
|
27363
26093
|
tag.external_id
|
|
27364
26094
|
);
|
|
27365
26095
|
}),
|
|
27366
|
-
fieldRows.length === 0 && !isCreatingTag && /* @__PURE__ */ jsxRuntime.jsx(
|
|
26096
|
+
fieldRows.length === 0 && !isCreatingTag && /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FieldsEmptyState, { children: chunk5YX3R6CK_cjs.fieldsEmptyText({ nouns, filterText, hasKind: !!kind }) })
|
|
27367
26097
|
] }),
|
|
27368
26098
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27369
|
-
|
|
26099
|
+
chunk5YX3R6CK_cjs.FieldsApplyBar,
|
|
27370
26100
|
{
|
|
27371
26101
|
hint: copy.hint,
|
|
27372
26102
|
applyLabel: copy.applyLabel,
|
|
@@ -27443,8 +26173,8 @@ function ConnectedFieldsManager({
|
|
|
27443
26173
|
}
|
|
27444
26174
|
);
|
|
27445
26175
|
const body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
27446
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27447
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26176
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FieldsManagerDefinition, { children: DEFINITIONS[activeKind] }),
|
|
26177
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FieldsManagerBody, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27448
26178
|
ConnectedFieldsEditor,
|
|
27449
26179
|
{
|
|
27450
26180
|
group: activeKind,
|
|
@@ -27463,7 +26193,7 @@ function ConnectedFieldsManager({
|
|
|
27463
26193
|
"data-testid": "fields-manager-dialog",
|
|
27464
26194
|
children: [
|
|
27465
26195
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.DialogHeader, { className: "px-4 py-3 border-b", children: [
|
|
27466
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26196
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogTitle, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FieldsManagerTitle, { title }) }),
|
|
27467
26197
|
/* @__PURE__ */ jsxRuntime.jsx(ui.DialogDescription, { className: "sr-only", children: "Create, edit, and delete labels and annotations for your workspace documents." })
|
|
27468
26198
|
] }),
|
|
27469
26199
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-4 py-2 border-b", children: tabHeader }),
|
|
@@ -27474,7 +26204,7 @@ function ConnectedFieldsManager({
|
|
|
27474
26204
|
}
|
|
27475
26205
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col h-full", children: [
|
|
27476
26206
|
/* @__PURE__ */ jsxRuntime.jsxs(chunkFEVJA4BP_cjs.DraggableHeader, { children: [
|
|
27477
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26207
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FieldsManagerTitle, { title, className: "px-4 pt-3.5 pb-2" }),
|
|
27478
26208
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-3", children: tabHeader })
|
|
27479
26209
|
] }),
|
|
27480
26210
|
body
|
|
@@ -27695,7 +26425,7 @@ function ConnectedBulkTagEditor({
|
|
|
27695
26425
|
const isClearing = change?.action === "remove";
|
|
27696
26426
|
return {
|
|
27697
26427
|
id: tag.external_id,
|
|
27698
|
-
badge: /* @__PURE__ */ jsxRuntime.jsx(ConnectedTagEntity, { tag, size: "md" }),
|
|
26428
|
+
badge: /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.ConnectedTagEntity, { tag, size: "md" }),
|
|
27699
26429
|
type: tag.tag_type.type,
|
|
27700
26430
|
color: ui.getEntityColor(tag.external_id, "medium"),
|
|
27701
26431
|
options: tag.tag_type.type === "select" ? tag.tag_type.options : void 0,
|
|
@@ -27727,7 +26457,7 @@ function ConnectedBulkTagEditor({
|
|
|
27727
26457
|
const documentsLabel = ui.getEntityLabel("DOCUMENT", "PLURAL").toLowerCase();
|
|
27728
26458
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
27729
26459
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27730
|
-
|
|
26460
|
+
chunk5YX3R6CK_cjs.BulkTagEditorDialog,
|
|
27731
26461
|
{
|
|
27732
26462
|
open,
|
|
27733
26463
|
onClose,
|
|
@@ -27785,7 +26515,7 @@ function ConnectedBulkTagEditor({
|
|
|
27785
26515
|
}
|
|
27786
26516
|
),
|
|
27787
26517
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27788
|
-
|
|
26518
|
+
chunk5YX3R6CK_cjs.BulkReplaceDialog,
|
|
27789
26519
|
{
|
|
27790
26520
|
open: showGenerateConfirmation,
|
|
27791
26521
|
onClose: () => setShowGenerateConfirmation(false),
|
|
@@ -27809,228 +26539,6 @@ function ConnectedBulkTagEditor({
|
|
|
27809
26539
|
)
|
|
27810
26540
|
] });
|
|
27811
26541
|
}
|
|
27812
|
-
function FolderPicker({
|
|
27813
|
-
documents,
|
|
27814
|
-
value,
|
|
27815
|
-
onSelect
|
|
27816
|
-
}) {
|
|
27817
|
-
const folders = useDocumentFolders(documents, value);
|
|
27818
|
-
return /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FolderCommandList, { folders, value, onSelect, showRemove: !!value });
|
|
27819
|
-
}
|
|
27820
|
-
function RelatedDocuments({
|
|
27821
|
-
doc,
|
|
27822
|
-
related,
|
|
27823
|
-
onOpen,
|
|
27824
|
-
onDelete,
|
|
27825
|
-
onCompare
|
|
27826
|
-
}) {
|
|
27827
|
-
const viewingDocumentId = react.useOpenViewerDocumentId();
|
|
27828
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27829
|
-
RelatedDocumentsCell,
|
|
27830
|
-
{
|
|
27831
|
-
currentDoc: doc,
|
|
27832
|
-
related,
|
|
27833
|
-
viewingDocumentId,
|
|
27834
|
-
onDocumentClick: (id) => onOpen?.(id),
|
|
27835
|
-
onDelete: (other) => onDelete?.(other.external_id),
|
|
27836
|
-
onCompare
|
|
27837
|
-
}
|
|
27838
|
-
);
|
|
27839
|
-
}
|
|
27840
|
-
function DocTagAttribution({ doctag }) {
|
|
27841
|
-
const memberById = useMemberLookup();
|
|
27842
|
-
const creator = memberById(doctag.created_by_ext_id);
|
|
27843
|
-
const updater = doctag.updated_by_ext_id && doctag.updated_by_ext_id !== doctag.created_by_ext_id ? memberById(doctag.updated_by_ext_id) : void 0;
|
|
27844
|
-
const lastUser = updater || creator;
|
|
27845
|
-
if (!lastUser) return null;
|
|
27846
|
-
const lines = [
|
|
27847
|
-
creator && `Created ${ui.formatFriendlyDate(doctag.created_at)} by ${creator.given_name || creator.email}`,
|
|
27848
|
-
updater && `Updated ${ui.formatFriendlyDate(doctag.updated_at)} by ${updater.given_name || updater.email}`
|
|
27849
|
-
].filter((line) => !!line);
|
|
27850
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27851
|
-
chunkQKOFQMAY_cjs.FieldAttribution,
|
|
27852
|
-
{
|
|
27853
|
-
avatar: /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: lastUser, tooltip: false }),
|
|
27854
|
-
date: ui.formatFriendlyDate(updater ? doctag.updated_at : doctag.created_at),
|
|
27855
|
-
lines
|
|
27856
|
-
}
|
|
27857
|
-
);
|
|
27858
|
-
}
|
|
27859
|
-
function LabelsCombobox({
|
|
27860
|
-
labelTags,
|
|
27861
|
-
appliedTagIds,
|
|
27862
|
-
onToggle,
|
|
27863
|
-
onCreateAndApply
|
|
27864
|
-
}) {
|
|
27865
|
-
const options2 = React9.useMemo(
|
|
27866
|
-
() => labelTags.map((t) => ({
|
|
27867
|
-
id: t.external_id,
|
|
27868
|
-
name: t.name,
|
|
27869
|
-
color: ui.getEntityColor(t.external_id, "medium")
|
|
27870
|
-
})),
|
|
27871
|
-
[labelTags]
|
|
27872
|
-
);
|
|
27873
|
-
const handleCreate = (name) => {
|
|
27874
|
-
const trimmed = name.trim();
|
|
27875
|
-
if (!trimmed) return;
|
|
27876
|
-
const existing = labelTags.find((t) => t.name.toLowerCase() === trimmed.toLowerCase());
|
|
27877
|
-
if (!existing) onCreateAndApply?.(trimmed);
|
|
27878
|
-
else if (!appliedTagIds.has(existing.external_id)) onToggle(existing);
|
|
27879
|
-
};
|
|
27880
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27881
|
-
chunkQKOFQMAY_cjs.FieldLabelsSelect,
|
|
27882
|
-
{
|
|
27883
|
-
options: options2,
|
|
27884
|
-
appliedIds: appliedTagIds,
|
|
27885
|
-
onToggle: (id) => {
|
|
27886
|
-
const tag = labelTags.find((t) => t.external_id === id);
|
|
27887
|
-
if (tag) onToggle(tag);
|
|
27888
|
-
},
|
|
27889
|
-
onCreate: onCreateAndApply ? handleCreate : void 0
|
|
27890
|
-
}
|
|
27891
|
-
);
|
|
27892
|
-
}
|
|
27893
|
-
var METADATA_FIELDS = {
|
|
27894
|
-
title: (doc) => ui.getDocumentTitle(doc),
|
|
27895
|
-
doc_nature: (doc) => doc.doc_metadata?.doc_nature || "",
|
|
27896
|
-
doc_author: (doc) => doc.doc_metadata?.doc_author || "",
|
|
27897
|
-
doc_subject: (doc) => doc.doc_metadata?.doc_subject || "",
|
|
27898
|
-
// As the table shows it: with the time when the value has one (emails).
|
|
27899
|
-
doc_date: (doc) => ui.formatDocDate(ui.getDocumentDate(doc))
|
|
27900
|
-
};
|
|
27901
|
-
var INPUT_CLASS = "text-sm bg-muted/40 focus:bg-background transition-colors";
|
|
27902
|
-
var READ_ONLY_FIELDS = {
|
|
27903
|
-
file_name: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "strong", children: doc.file_name || "N/A" }),
|
|
27904
|
-
status: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", children: doc.status || "N/A" }),
|
|
27905
|
-
n_pages: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", children: doc.n_pages || "N/A" }),
|
|
27906
|
-
created_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", children: doc.created_at ? ui.formatFriendlyDate(doc.created_at) : "N/A" }),
|
|
27907
|
-
updated_at: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", children: doc.updated_at ? ui.formatFriendlyDate(doc.updated_at) : "N/A" }),
|
|
27908
|
-
file_type: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", children: ui.friendlyFileType(doc.file_type, doc.file_name) }),
|
|
27909
|
-
file_size: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", children: doc.file_size ? `${Math.round(doc.file_size / 1024)} KB` : "N/A" }),
|
|
27910
|
-
doc_id: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", isMono: true, children: doc.external_id || "N/A" }),
|
|
27911
|
-
content_hash: (doc) => /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { tone: "muted", isMono: true, isTruncated: true, children: doc.content_hash || "N/A" })
|
|
27912
|
-
};
|
|
27913
|
-
function documentFieldContent(options2) {
|
|
27914
|
-
const { columnId, doc, canEdit, workspaceTags, getColumnLabel, getColumnIcon } = options2;
|
|
27915
|
-
const Icon = getColumnIcon(columnId);
|
|
27916
|
-
const standard = (children) => ({
|
|
27917
|
-
label: getColumnLabel(columnId),
|
|
27918
|
-
icon: Icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { size: 14 }) : void 0,
|
|
27919
|
-
children
|
|
27920
|
-
});
|
|
27921
|
-
const metadata = METADATA_FIELDS[columnId];
|
|
27922
|
-
if (metadata) {
|
|
27923
|
-
const editable = options2.isColumnEditable(columnId) && canEdit;
|
|
27924
|
-
return standard(
|
|
27925
|
-
editable ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
27926
|
-
ui.DebouncedInput,
|
|
27927
|
-
{
|
|
27928
|
-
value: metadata(doc),
|
|
27929
|
-
onChange: (value2) => options2.onUpdateDocumentField(columnId, value2),
|
|
27930
|
-
multiline: true,
|
|
27931
|
-
placeholder: `Add ${getColumnLabel(columnId).toLowerCase()}\u2026`,
|
|
27932
|
-
className: INPUT_CLASS
|
|
27933
|
-
}
|
|
27934
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldValue, { children: metadata(doc) || "N/A" })
|
|
27935
|
-
);
|
|
27936
|
-
}
|
|
27937
|
-
const readOnly = READ_ONLY_FIELDS[columnId];
|
|
27938
|
-
if (readOnly) return standard(readOnly(doc));
|
|
27939
|
-
if (columnId === "created_by") return standard(/* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: options2.creator }));
|
|
27940
|
-
if (columnId === "folder") {
|
|
27941
|
-
return standard(
|
|
27942
|
-
canEdit ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
27943
|
-
chunkQKOFQMAY_cjs.FieldFolderSelect,
|
|
27944
|
-
{
|
|
27945
|
-
folder: doc.folder,
|
|
27946
|
-
picker: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27947
|
-
FolderPicker,
|
|
27948
|
-
{
|
|
27949
|
-
documents: options2.allDocuments ?? [],
|
|
27950
|
-
value: doc.folder,
|
|
27951
|
-
onSelect: (folder) => options2.onUpdateDocumentField("folder", folder)
|
|
27952
|
-
}
|
|
27953
|
-
)
|
|
27954
|
-
}
|
|
27955
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldFolderValue, { folder: doc.folder })
|
|
27956
|
-
);
|
|
27957
|
-
}
|
|
27958
|
-
if (columnId === "related") {
|
|
27959
|
-
const related = options2.relatedDocs;
|
|
27960
|
-
if (!related) return null;
|
|
27961
|
-
return standard(
|
|
27962
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27963
|
-
RelatedDocuments,
|
|
27964
|
-
{
|
|
27965
|
-
doc,
|
|
27966
|
-
related,
|
|
27967
|
-
onOpen: options2.onOpenDocument,
|
|
27968
|
-
onDelete: options2.onDeleteDocument,
|
|
27969
|
-
onCompare: options2.onCompareDocuments
|
|
27970
|
-
}
|
|
27971
|
-
)
|
|
27972
|
-
);
|
|
27973
|
-
}
|
|
27974
|
-
if (columnId === "all_tags") {
|
|
27975
|
-
const labelTags = workspaceTags.filter(browser.isLabelTag);
|
|
27976
|
-
const appliedIds = new Set(
|
|
27977
|
-
(doc.doctags ?? []).filter((dt) => labelTags.some((t) => t.external_id === dt.tag_ext_id)).map((dt) => dt.tag_ext_id)
|
|
27978
|
-
);
|
|
27979
|
-
return standard(
|
|
27980
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27981
|
-
LabelsCombobox,
|
|
27982
|
-
{
|
|
27983
|
-
labelTags,
|
|
27984
|
-
appliedTagIds: appliedIds,
|
|
27985
|
-
onToggle: (tag2) => options2.onUpdateTagValue(tag2, !appliedIds.has(tag2.external_id)),
|
|
27986
|
-
onCreateAndApply: options2.onCreateAndApplyLabel
|
|
27987
|
-
}
|
|
27988
|
-
)
|
|
27989
|
-
);
|
|
27990
|
-
}
|
|
27991
|
-
const tag = workspaceTags.find((t) => t.external_id === columnId);
|
|
27992
|
-
if (!tag || !browser.isAnnotationTag(tag)) return null;
|
|
27993
|
-
const doctag = doc.doctags?.find((dt) => dt.tag_ext_id === tag.external_id);
|
|
27994
|
-
let value;
|
|
27995
|
-
if (tag.tag_type.type === "select") {
|
|
27996
|
-
value = /* @__PURE__ */ jsxRuntime.jsx(
|
|
27997
|
-
chunkQKOFQMAY_cjs.FieldNativeSelect,
|
|
27998
|
-
{
|
|
27999
|
-
value: doctag?.note || "",
|
|
28000
|
-
options: tag.tag_type.options,
|
|
28001
|
-
onChange: (next) => options2.onUpdateTagValue(tag, next),
|
|
28002
|
-
ariaLabel: tag.name
|
|
28003
|
-
}
|
|
28004
|
-
);
|
|
28005
|
-
} else if (tag.tag_type.type === "number") {
|
|
28006
|
-
value = /* @__PURE__ */ jsxRuntime.jsx(
|
|
28007
|
-
ui.DebouncedInput,
|
|
28008
|
-
{
|
|
28009
|
-
type: "number",
|
|
28010
|
-
value: doctag?.note || "",
|
|
28011
|
-
onChange: (next) => options2.onUpdateTagValue(tag, next),
|
|
28012
|
-
placeholder: `Add ${tag.name.toLowerCase()}\u2026`,
|
|
28013
|
-
className: INPUT_CLASS
|
|
28014
|
-
}
|
|
28015
|
-
);
|
|
28016
|
-
} else {
|
|
28017
|
-
value = /* @__PURE__ */ jsxRuntime.jsx(
|
|
28018
|
-
ui.Textarea,
|
|
28019
|
-
{
|
|
28020
|
-
value: doctag?.note || "",
|
|
28021
|
-
onChange: (e) => options2.onUpdateTagWithCitations(tag, e.target.value, doctag?.citations ?? null),
|
|
28022
|
-
placeholder: "Add a note...",
|
|
28023
|
-
rows: 2,
|
|
28024
|
-
className: INPUT_CLASS
|
|
28025
|
-
}
|
|
28026
|
-
);
|
|
28027
|
-
}
|
|
28028
|
-
return {
|
|
28029
|
-
label: tag.name,
|
|
28030
|
-
tag,
|
|
28031
|
-
children: doctag ? /* @__PURE__ */ jsxRuntime.jsx(chunkQKOFQMAY_cjs.FieldWithAttribution, { attribution: /* @__PURE__ */ jsxRuntime.jsx(DocTagAttribution, { doctag }), children: value }) : value
|
|
28032
|
-
};
|
|
28033
|
-
}
|
|
28034
26542
|
|
|
28035
26543
|
// src/connection/files/views/tableViews.ts
|
|
28036
26544
|
var belongsTo = (view, workspaceId, table) => view.workspace === workspaceId && (view.table ?? null) === table;
|
|
@@ -28131,7 +26639,7 @@ function ViewSelector({
|
|
|
28131
26639
|
columns: defaultColumns,
|
|
28132
26640
|
icon: lucideReact.Table,
|
|
28133
26641
|
// Both built-ins load at the minimal (compact) row height.
|
|
28134
|
-
rowHeight:
|
|
26642
|
+
rowHeight: chunk5YX3R6CK_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
|
|
28135
26643
|
// [] = loading this view unpins everything.
|
|
28136
26644
|
pinnedLeft: []
|
|
28137
26645
|
},
|
|
@@ -28142,15 +26650,15 @@ function ViewSelector({
|
|
|
28142
26650
|
// batch-select checkbox and Title stay fixed left while scrolling.
|
|
28143
26651
|
columns: defaultColumns,
|
|
28144
26652
|
icon: lucideReact.Columns3,
|
|
28145
|
-
rowHeight:
|
|
26653
|
+
rowHeight: chunk5YX3R6CK_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
|
|
28146
26654
|
pinnedLeft: DOCUMENT_VIEW_PINNED
|
|
28147
26655
|
},
|
|
28148
26656
|
{
|
|
28149
26657
|
key: "email-default",
|
|
28150
26658
|
label: "Email view",
|
|
28151
|
-
columns: [...
|
|
26659
|
+
columns: [...chunk5YX3R6CK_cjs.EMAIL_VIEW_COLUMNS],
|
|
28152
26660
|
icon: lucideReact.Mail,
|
|
28153
|
-
rowHeight:
|
|
26661
|
+
rowHeight: chunk5YX3R6CK_cjs.DOCUMENTS_ROW_HEIGHT_INITIAL,
|
|
28154
26662
|
pinnedLeft: []
|
|
28155
26663
|
}
|
|
28156
26664
|
],
|
|
@@ -28174,7 +26682,7 @@ function ViewSelector({
|
|
|
28174
26682
|
},
|
|
28175
26683
|
[confirm, workspaceId, deleteView, notify18]
|
|
28176
26684
|
);
|
|
28177
|
-
const menu =
|
|
26685
|
+
const menu = chunk5YX3R6CK_cjs.useGridViews({
|
|
28178
26686
|
getGridApi,
|
|
28179
26687
|
defaultColumns,
|
|
28180
26688
|
builtins,
|
|
@@ -28189,7 +26697,7 @@ function ViewSelector({
|
|
|
28189
26697
|
onDeleteView,
|
|
28190
26698
|
isSaving
|
|
28191
26699
|
});
|
|
28192
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26700
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ViewSelectorMenu, { ...menu });
|
|
28193
26701
|
}
|
|
28194
26702
|
function DocumentsFilterBarActions({
|
|
28195
26703
|
isModal,
|
|
@@ -28229,7 +26737,7 @@ function DocumentsFilterBarActions({
|
|
|
28229
26737
|
),
|
|
28230
26738
|
documentsViewMode === "grid" && // The phone list is a fixed two-line layout, so row density only applies from sm up.
|
|
28231
26739
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden sm:block", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28232
|
-
|
|
26740
|
+
chunk5YX3R6CK_cjs.RowDensityControl,
|
|
28233
26741
|
{
|
|
28234
26742
|
rowHeight: documentsRowHeight,
|
|
28235
26743
|
onRowHeightChange: onDocumentsRowHeightChange
|
|
@@ -28397,7 +26905,7 @@ function DocumentsUploadButton({
|
|
|
28397
26905
|
[hasAccountProviders, onSelectSource, onEmailWorkspace, onCreateNew, onTakePhoto]
|
|
28398
26906
|
);
|
|
28399
26907
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28400
|
-
|
|
26908
|
+
chunk5YX3R6CK_cjs.FilesAddMenu,
|
|
28401
26909
|
{
|
|
28402
26910
|
items,
|
|
28403
26911
|
isCompact,
|
|
@@ -28410,8 +26918,8 @@ function DocumentsUploadButton({
|
|
|
28410
26918
|
}
|
|
28411
26919
|
function PersistedGridView(props) {
|
|
28412
26920
|
const { persistState, gridId } = props;
|
|
28413
|
-
const setGridState = useFilesGridStates((state) => state.setGridState);
|
|
28414
|
-
const gridState = persistState && gridId ? useFilesGridStates.getState().gridStates[gridId] : void 0;
|
|
26921
|
+
const setGridState = chunkS7B5E3RU_cjs.useFilesGridStates((state) => state.setGridState);
|
|
26922
|
+
const gridState = persistState && gridId ? chunkS7B5E3RU_cjs.useFilesGridStates.getState().gridStates[gridId] : void 0;
|
|
28415
26923
|
const onGridStateChange = React9.useCallback(
|
|
28416
26924
|
(state) => {
|
|
28417
26925
|
if (persistState && gridId) setGridState(gridId, state);
|
|
@@ -28478,10 +26986,17 @@ var TABLET_VISIBLE_COLUMNS = ["title", "doc_subject"];
|
|
|
28478
26986
|
var TABLET_TABLE_BELOW = 860;
|
|
28479
26987
|
var TABLET_VIEWPORT_BELOW = 1100;
|
|
28480
26988
|
var NO_CONVERSATION_DOCUMENTS = [];
|
|
26989
|
+
var DocumentReviewCard = React9.lazy(
|
|
26990
|
+
() => import('../DocumentReviewCard-DLR4XOIZ.cjs').then((module) => ({ default: module.DocumentReviewCard }))
|
|
26991
|
+
);
|
|
26992
|
+
function defaultReviewCard(props) {
|
|
26993
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React9.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(chunkRTS3B2W7_cjs.LoadingIndicator, { message: "Loading document viewer..." }), children: /* @__PURE__ */ jsxRuntime.jsx(DocumentReviewCard, { ...props }, `navigator-${props.currentDocument.external_id}`) });
|
|
26994
|
+
}
|
|
28481
26995
|
function ConnectedFilesPage({
|
|
28482
26996
|
isModal = false,
|
|
28483
26997
|
onClose,
|
|
28484
26998
|
onToggleDocument,
|
|
26999
|
+
onCompareDocuments,
|
|
28485
27000
|
onUpload,
|
|
28486
27001
|
onStatusClick,
|
|
28487
27002
|
onOpenTags,
|
|
@@ -28494,7 +27009,7 @@ function ConnectedFilesPage({
|
|
|
28494
27009
|
workspaceIcon,
|
|
28495
27010
|
externalSearchQuery = "",
|
|
28496
27011
|
renderSearch,
|
|
28497
|
-
renderReviewCard,
|
|
27012
|
+
renderReviewCard = defaultReviewCard,
|
|
28498
27013
|
renderFieldsManager,
|
|
28499
27014
|
bulkTagBreadcrumb,
|
|
28500
27015
|
dialogs,
|
|
@@ -28502,7 +27017,7 @@ function ConnectedFilesPage({
|
|
|
28502
27017
|
gridStateVersion,
|
|
28503
27018
|
onGridApi,
|
|
28504
27019
|
onRelatedDocsChange,
|
|
28505
|
-
prefsKey = FILES_PREFS_KEY,
|
|
27020
|
+
prefsKey = chunkS7B5E3RU_cjs.FILES_PREFS_KEY,
|
|
28506
27021
|
defaultViewMode
|
|
28507
27022
|
}) {
|
|
28508
27023
|
const { openDocument } = chunkI72IYIO2_cjs.useBlocksEnvironment();
|
|
@@ -28534,15 +27049,15 @@ function ConnectedFilesPage({
|
|
|
28534
27049
|
const inConversationDocuments = react.useArbiSessionState(
|
|
28535
27050
|
(s) => s.conversationDocuments[s.conversationId ?? "new"] ?? NO_CONVERSATION_DOCUMENTS
|
|
28536
27051
|
);
|
|
28537
|
-
const viewMode = useFilesPrefs((s) => filesViewMode(s, prefsKey, defaultViewMode));
|
|
28538
|
-
const setPrefsViewMode = useFilesPrefs((s) => s.setViewMode);
|
|
27052
|
+
const viewMode = chunkS7B5E3RU_cjs.useFilesPrefs((s) => chunkS7B5E3RU_cjs.filesViewMode(s, prefsKey, defaultViewMode));
|
|
27053
|
+
const setPrefsViewMode = chunkS7B5E3RU_cjs.useFilesPrefs((s) => s.setViewMode);
|
|
28539
27054
|
const setViewMode = React9.useCallback(
|
|
28540
27055
|
(mode) => setPrefsViewMode(mode, prefsKey),
|
|
28541
27056
|
[setPrefsViewMode, prefsKey]
|
|
28542
27057
|
);
|
|
28543
|
-
const rowHeight = useFilesPrefs((s) => s.rowHeight);
|
|
28544
|
-
const setRowHeight = useFilesPrefs((s) => s.setRowHeight);
|
|
28545
|
-
const ownGridStates = useFilesGridStates((s) => s.gridStates);
|
|
27058
|
+
const rowHeight = chunkS7B5E3RU_cjs.useFilesPrefs((s) => s.rowHeight);
|
|
27059
|
+
const setRowHeight = chunkS7B5E3RU_cjs.useFilesPrefs((s) => s.setRowHeight);
|
|
27060
|
+
const ownGridStates = chunkS7B5E3RU_cjs.useFilesGridStates((s) => s.gridStates);
|
|
28546
27061
|
const stateVersion = gridStateVersion ?? ownGridStates;
|
|
28547
27062
|
const [pageEl, setPageEl] = React9.useState(null);
|
|
28548
27063
|
const [isTabletWidth, setIsTabletWidth] = React9.useState(false);
|
|
@@ -28572,15 +27087,15 @@ function ConnectedFilesPage({
|
|
|
28572
27087
|
const [explorerSortReversed, setExplorerSortReversed] = React9.useState(false);
|
|
28573
27088
|
const [explorerTileSize, setExplorerTileSize] = React9.useState(TILE_DEFAULT);
|
|
28574
27089
|
const [urlDialogOpen, setUrlDialogOpen] = React9.useState(false);
|
|
28575
|
-
const move = useFilesDialogs((s) => s.move);
|
|
28576
|
-
const openMove = useFilesDialogs((s) => s.openMove);
|
|
28577
|
-
const closeMove = useFilesDialogs((s) => s.closeMove);
|
|
28578
|
-
const bulkTagsOpen = useFilesDialogs((s) => s.bulkTagsOpen);
|
|
28579
|
-
const setBulkTagsOpen = useFilesDialogs((s) => s.setBulkTagsOpen);
|
|
28580
|
-
const deleteRequest = useFilesDialogs((s) => s.deleteRequest);
|
|
28581
|
-
const requestDelete = useFilesDialogs((s) => s.requestDelete);
|
|
28582
|
-
const exportOpen = useFilesDialogs((s) => s.exportOpen);
|
|
28583
|
-
const setExportOpen = useFilesDialogs((s) => s.setExportOpen);
|
|
27090
|
+
const move = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.move);
|
|
27091
|
+
const openMove = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.openMove);
|
|
27092
|
+
const closeMove = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.closeMove);
|
|
27093
|
+
const bulkTagsOpen = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.bulkTagsOpen);
|
|
27094
|
+
const setBulkTagsOpen = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.setBulkTagsOpen);
|
|
27095
|
+
const deleteRequest = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.deleteRequest);
|
|
27096
|
+
const requestDelete = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.requestDelete);
|
|
27097
|
+
const exportOpen = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.exportOpen);
|
|
27098
|
+
const setExportOpen = chunkS7B5E3RU_cjs.useFilesDialogs((s) => s.setExportOpen);
|
|
28584
27099
|
const openOwnExport = React9.useCallback(() => setExportOpen(true), [setExportOpen]);
|
|
28585
27100
|
const exportItems = React9.useMemo(
|
|
28586
27101
|
() => selectedDocuments.map((doc) => ({
|
|
@@ -28626,17 +27141,17 @@ function ConnectedFilesPage({
|
|
|
28626
27141
|
}, [relatedDocsMap, onRelatedDocsChange]);
|
|
28627
27142
|
const defaultVisibleColumns = React9.useMemo(
|
|
28628
27143
|
() => [
|
|
28629
|
-
...
|
|
27144
|
+
...chunk5YX3R6CK_cjs.DEFAULT_DOCUMENT_COLUMNS,
|
|
28630
27145
|
...allTags.filter(browser.isAnnotationTag).map((tag) => tag.external_id)
|
|
28631
27146
|
],
|
|
28632
27147
|
[allTags]
|
|
28633
27148
|
);
|
|
28634
27149
|
const handleReorderColumns = React9.useCallback((ids, gridApi2) => {
|
|
28635
|
-
if (gridApi2)
|
|
27150
|
+
if (gridApi2) chunk5YX3R6CK_cjs.applyColumnLayout(gridApi2, ids);
|
|
28636
27151
|
}, []);
|
|
28637
27152
|
const handleLoadView = React9.useCallback(
|
|
28638
27153
|
(view, gridApi2) => {
|
|
28639
|
-
|
|
27154
|
+
chunk5YX3R6CK_cjs.applyViewColumns(gridApi2, view, handleReorderColumns);
|
|
28640
27155
|
if (typeof view.tile_size === "number") setExplorerTileSize(view.tile_size);
|
|
28641
27156
|
if (typeof view.row_height === "number") setRowHeight(view.row_height);
|
|
28642
27157
|
},
|
|
@@ -28729,7 +27244,7 @@ function ConnectedFilesPage({
|
|
|
28729
27244
|
);
|
|
28730
27245
|
const currentDocument = viewingDocumentId ? filteredDocuments.find((d) => d.external_id === viewingDocumentId) ?? documents.find((d) => d.external_id === viewingDocumentId) ?? null : null;
|
|
28731
27246
|
const navigatorDocuments = React9.useMemo(
|
|
28732
|
-
() =>
|
|
27247
|
+
() => chunk5YX3R6CK_cjs.sortExplorerFiles(filteredDocuments, explorerSort, explorerSortReversed),
|
|
28733
27248
|
[filteredDocuments, explorerSort, explorerSortReversed]
|
|
28734
27249
|
);
|
|
28735
27250
|
const navigatorOnNavigate = React9.useCallback(
|
|
@@ -28796,7 +27311,7 @@ function ConnectedFilesPage({
|
|
|
28796
27311
|
},
|
|
28797
27312
|
rowHeight
|
|
28798
27313
|
};
|
|
28799
|
-
const documentsTabActions = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27314
|
+
const documentsTabActions = /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FilesFilterBar, { children: [
|
|
28800
27315
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28801
27316
|
chunk2EI7NCUA_cjs.FilterInput,
|
|
28802
27317
|
{
|
|
@@ -28831,7 +27346,7 @@ function ConnectedFilesPage({
|
|
|
28831
27346
|
),
|
|
28832
27347
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
28833
27348
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28834
|
-
|
|
27349
|
+
chunk5YX3R6CK_cjs.DocumentsFolderButton,
|
|
28835
27350
|
{
|
|
28836
27351
|
documents,
|
|
28837
27352
|
documentFilters,
|
|
@@ -28839,7 +27354,7 @@ function ConnectedFilesPage({
|
|
|
28839
27354
|
onNewFolder: canUpload ? handleNewFolder : void 0
|
|
28840
27355
|
}
|
|
28841
27356
|
),
|
|
28842
|
-
onOpenTags && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27357
|
+
onOpenTags && /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FilesTagsButton, { onClick: onOpenTags }),
|
|
28843
27358
|
headerExtras
|
|
28844
27359
|
] })
|
|
28845
27360
|
] });
|
|
@@ -28862,9 +27377,9 @@ function ConnectedFilesPage({
|
|
|
28862
27377
|
);
|
|
28863
27378
|
const reviewGridId = isModal ? "documents-modal-grid-v6" : "documents-main-grid-v6";
|
|
28864
27379
|
const showBulkBar = (viewMode === "grid" || viewMode === "explorer" || viewMode === "navigator") && documents.length > 0;
|
|
28865
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27380
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FilesPage, { isModal, ref: setPageEl, children: [
|
|
28866
27381
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28867
|
-
|
|
27382
|
+
chunk5YX3R6CK_cjs.UrlInputDialog,
|
|
28868
27383
|
{
|
|
28869
27384
|
open: urlDialogOpen,
|
|
28870
27385
|
onOpenChange: setUrlDialogOpen,
|
|
@@ -28873,7 +27388,7 @@ function ConnectedFilesPage({
|
|
|
28873
27388
|
titleIcon: workspaceIcon
|
|
28874
27389
|
}
|
|
28875
27390
|
),
|
|
28876
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
27391
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FilesPageHeader, { children: [
|
|
28877
27392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28878
27393
|
chunkMEMWZ72Y_cjs.TabHeader,
|
|
28879
27394
|
{
|
|
@@ -28894,7 +27409,7 @@ function ConnectedFilesPage({
|
|
|
28894
27409
|
activeTabId: "documents",
|
|
28895
27410
|
onTabChange: () => handleViewModeChange(lastDocsViewRef.current),
|
|
28896
27411
|
firstTabContent: isNarrowFilterRow ? null : documentsTabActions,
|
|
28897
|
-
centerContent: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27412
|
+
centerContent: /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FilesViewCenter, { className: isNarrowFilterRow ? "min-w-0" : void 0, children: [
|
|
28898
27413
|
!isNarrowFilterRow && viewToggle,
|
|
28899
27414
|
/* @__PURE__ */ jsxRuntime.jsx(ProgressiveLoadingChip, {})
|
|
28900
27415
|
] }),
|
|
@@ -28924,14 +27439,14 @@ function ConnectedFilesPage({
|
|
|
28924
27439
|
}
|
|
28925
27440
|
),
|
|
28926
27441
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28927
|
-
|
|
27442
|
+
chunk5YX3R6CK_cjs.FilesToolbar,
|
|
28928
27443
|
{
|
|
28929
27444
|
className: "px-3 pb-2",
|
|
28930
27445
|
rightActions: viewMode === "grid" || viewMode === "explorer" || viewMode === "navigator" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
28931
27446
|
viewMode === "grid" ? (
|
|
28932
27447
|
// ‹ n / N › over the table's displayed rows; a step opens the document.
|
|
28933
27448
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28934
|
-
|
|
27449
|
+
chunkRTS3B2W7_cjs.GridRowNavigator,
|
|
28935
27450
|
{
|
|
28936
27451
|
gridApi,
|
|
28937
27452
|
selectedId: viewingDocumentId ?? selectedDocumentIds[0] ?? null,
|
|
@@ -28946,7 +27461,7 @@ function ConnectedFilesPage({
|
|
|
28946
27461
|
) : viewMode === "explorer" ? (
|
|
28947
27462
|
// The same over the explorer's tiles.
|
|
28948
27463
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28949
|
-
|
|
27464
|
+
chunk5YX3R6CK_cjs.ExplorerFileNavigator,
|
|
28950
27465
|
{
|
|
28951
27466
|
fileIds: explorerFileIds,
|
|
28952
27467
|
selectedId: viewingDocumentId ?? selectedDocumentIds[0] ?? null,
|
|
@@ -28985,7 +27500,7 @@ function ConnectedFilesPage({
|
|
|
28985
27500
|
}
|
|
28986
27501
|
),
|
|
28987
27502
|
viewMode === "navigator" && currentDocument && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28988
|
-
|
|
27503
|
+
chunk5YX3R6CK_cjs.NavigatorPickerBar,
|
|
28989
27504
|
{
|
|
28990
27505
|
currentDocument,
|
|
28991
27506
|
documents: navigatorDocuments,
|
|
@@ -28997,11 +27512,11 @@ function ConnectedFilesPage({
|
|
|
28997
27512
|
}
|
|
28998
27513
|
)
|
|
28999
27514
|
] }),
|
|
29000
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
27515
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.FilesPageMain, { children: [
|
|
29001
27516
|
viewMode === "grid" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29002
|
-
|
|
27517
|
+
chunk5YX3R6CK_cjs.DocumentGrid,
|
|
29003
27518
|
{
|
|
29004
|
-
layout:
|
|
27519
|
+
layout: chunk5YX3R6CK_cjs.resolveDocumentGridLayout(isNarrowFilterRow, isModal, isTabletWidth),
|
|
29005
27520
|
presets: gridPresets,
|
|
29006
27521
|
GridComponent,
|
|
29007
27522
|
showEmptyWorkspace: documents.length === 0 && !isLoading && isMember,
|
|
@@ -29047,6 +27562,7 @@ function ConnectedFilesPage({
|
|
|
29047
27562
|
gridApi: gridApiRef.current,
|
|
29048
27563
|
onNavigate: navigatorOnNavigate,
|
|
29049
27564
|
onOpenDocumentViewer: onToggleDocument,
|
|
27565
|
+
onCompareDocuments,
|
|
29050
27566
|
onDeleteDocument: requestDeleteDocument,
|
|
29051
27567
|
isDocumentViewerEnabled,
|
|
29052
27568
|
onReorderColumns: (ids) => handleReorderColumns(ids, gridApiRef.current ?? void 0),
|
|
@@ -29094,7 +27610,7 @@ function ConnectedFilesPage({
|
|
|
29094
27610
|
onProduce
|
|
29095
27611
|
}
|
|
29096
27612
|
),
|
|
29097
|
-
isModal && onClose && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27613
|
+
isModal && onClose && /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.FilesModalFooter, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Button, { variant: "outline", onClick: onClose, children: "Close" }) }),
|
|
29098
27614
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29099
27615
|
chunkGMM3RBIB_cjs.ConfirmDialog,
|
|
29100
27616
|
{
|
|
@@ -29105,7 +27621,7 @@ function ConnectedFilesPage({
|
|
|
29105
27621
|
requestDelete(null);
|
|
29106
27622
|
},
|
|
29107
27623
|
title: "Delete Document",
|
|
29108
|
-
description: deleteRequest ? `Delete "${ui.getDocumentTitle(deleteRequest, "this document")}"? ${
|
|
27624
|
+
description: deleteRequest ? `Delete "${ui.getDocumentTitle(deleteRequest, "this document")}"? ${chunk5YX3R6CK_cjs.RECENTLY_DELETED_HINT}` : "",
|
|
29109
27625
|
confirmText: "Delete",
|
|
29110
27626
|
variant: "destructive"
|
|
29111
27627
|
}
|
|
@@ -29158,8 +27674,8 @@ function ConnectedFilesPage({
|
|
|
29158
27674
|
}
|
|
29159
27675
|
var NO_DOCUMENTS3 = [];
|
|
29160
27676
|
function ConnectedAiReviewHost(props) {
|
|
29161
|
-
const open = useAiReviewStore((s) => s.open);
|
|
29162
|
-
const setOpen = useAiReviewStore((s) => s.setOpen);
|
|
27677
|
+
const open = chunkS7B5E3RU_cjs.useAiReviewStore((s) => s.open);
|
|
27678
|
+
const setOpen = chunkS7B5E3RU_cjs.useAiReviewStore((s) => s.setOpen);
|
|
29163
27679
|
return /* @__PURE__ */ jsxRuntime.jsx(ConnectedAiReview, { open, onOpenChange: setOpen, ...props });
|
|
29164
27680
|
}
|
|
29165
27681
|
function ConnectedGridView(props) {
|
|
@@ -29296,7 +27812,7 @@ var PROVIDER_FAMILIES = [
|
|
|
29296
27812
|
{ key: "google", label: "Google", vendors: ["gmail"] }
|
|
29297
27813
|
];
|
|
29298
27814
|
function VendorGlyph({ catalog }) {
|
|
29299
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
27815
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.VendorLogo, { vendorKey: catalog.vendor_key, className: "h-7 w-7" });
|
|
29300
27816
|
}
|
|
29301
27817
|
function mailboxProductName(catalog) {
|
|
29302
27818
|
if (catalog.vendor_key === "microsoft") return "Outlook";
|
|
@@ -29363,7 +27879,7 @@ function EmailProviderRow({
|
|
|
29363
27879
|
const emailNoun = (n) => n === 1 ? "email" : "emails";
|
|
29364
27880
|
const syncedCount = thisSync?.synced_count ?? 0;
|
|
29365
27881
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29366
|
-
|
|
27882
|
+
chunk5YX3R6CK_cjs.ImportRow,
|
|
29367
27883
|
{
|
|
29368
27884
|
testId: `email-provider-row-${catalog.vendor_key}`,
|
|
29369
27885
|
logo: /* @__PURE__ */ jsxRuntime.jsx(VendorGlyph, { catalog }),
|
|
@@ -29372,7 +27888,7 @@ function EmailProviderRow({
|
|
|
29372
27888
|
// Connecting AND reconnecting are owned by the family header, so a
|
|
29373
27889
|
// not-connected or needs-reconnect row shows no button of its own.
|
|
29374
27890
|
!isConnected || needsReconnect ? null : /* @__PURE__ */ jsxRuntime.jsx(
|
|
29375
|
-
|
|
27891
|
+
chunk5YX3R6CK_cjs.ImportRunActions,
|
|
29376
27892
|
{
|
|
29377
27893
|
isRunning: running,
|
|
29378
27894
|
isStopping: cancelSync.isPending,
|
|
@@ -29387,10 +27903,10 @@ function EmailProviderRow({
|
|
|
29387
27903
|
),
|
|
29388
27904
|
children: [
|
|
29389
27905
|
isConnected && !needsReconnect && !running && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29390
|
-
|
|
27906
|
+
chunk5YX3R6CK_cjs.ImportSummary,
|
|
29391
27907
|
{
|
|
29392
|
-
aside: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29393
|
-
|
|
27908
|
+
aside: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ImportAside, { children: thisSync && thisSync.folders.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27909
|
+
chunk5YX3R6CK_cjs.FolderSummary,
|
|
29394
27910
|
{
|
|
29395
27911
|
names: thisSync.folders.map(
|
|
29396
27912
|
(id) => mailboxFolders?.find((f) => f.id === id)?.name
|
|
@@ -29413,7 +27929,7 @@ function EmailProviderRow({
|
|
|
29413
27929
|
}
|
|
29414
27930
|
),
|
|
29415
27931
|
running && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29416
|
-
|
|
27932
|
+
chunk5YX3R6CK_cjs.ImportProgress,
|
|
29417
27933
|
{
|
|
29418
27934
|
processed: progress?.processed ?? 0,
|
|
29419
27935
|
total: progress?.total,
|
|
@@ -29530,9 +28046,9 @@ function EmailImportPanel({
|
|
|
29530
28046
|
return { family, entries, extra, identity, connectVendor, connected, needsReconnect };
|
|
29531
28047
|
}).filter((g) => g.entries.length > 0 || g.extra);
|
|
29532
28048
|
if (groups.length === 0) return null;
|
|
29533
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28049
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ImportPanel, { "data-testid": "email-import-panel", children: groups.map(
|
|
29534
28050
|
({ family, entries, extra, identity, connectVendor, connected, needsReconnect }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29535
|
-
|
|
28051
|
+
chunk5YX3R6CK_cjs.ImportFamilySection,
|
|
29536
28052
|
{
|
|
29537
28053
|
label: family.label,
|
|
29538
28054
|
identity,
|
|
@@ -29541,7 +28057,7 @@ function EmailImportPanel({
|
|
|
29541
28057
|
onAction: () => void (!connected ? connectFamily(connectVendor) : needsReconnect ? reconnectFamily(connectVendor) : disconnectFamily(family, connectVendor, identity)),
|
|
29542
28058
|
testId: `import-family-${family.key}`,
|
|
29543
28059
|
actionButton: !connected ? { testId: `import-family-connect-${family.key}` } : needsReconnect ? { testId: `import-family-reconnect-${family.key}` } : { testId: `import-family-disconnect-${family.key}` },
|
|
29544
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28060
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.ImportList, { children: [
|
|
29545
28061
|
entries.map((entry) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
29546
28062
|
EmailProviderRow,
|
|
29547
28063
|
{
|
|
@@ -29625,7 +28141,7 @@ function driveProduct(vendorKey) {
|
|
|
29625
28141
|
}
|
|
29626
28142
|
function VendorGlyph2({ catalog }) {
|
|
29627
28143
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29628
|
-
|
|
28144
|
+
chunk5YX3R6CK_cjs.VendorLogo,
|
|
29629
28145
|
{
|
|
29630
28146
|
vendorKey: catalog.vendor_key,
|
|
29631
28147
|
product: driveProduct(catalog.vendor_key).glyph,
|
|
@@ -29748,7 +28264,7 @@ function OneDriveProviderRow({
|
|
|
29748
28264
|
const driveNoun = (n) => n === 1 ? "document" : "documents";
|
|
29749
28265
|
const showRunActions = isConnected && !needsReconnect;
|
|
29750
28266
|
const reconnectAction = ownsAuth && needsReconnect ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
29751
|
-
|
|
28267
|
+
chunk5YX3R6CK_cjs.ImportActionButton,
|
|
29752
28268
|
{
|
|
29753
28269
|
onClick: () => void reconnectSelf(),
|
|
29754
28270
|
disabled: reauthPending,
|
|
@@ -29757,7 +28273,7 @@ function OneDriveProviderRow({
|
|
|
29757
28273
|
}
|
|
29758
28274
|
) : null;
|
|
29759
28275
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29760
|
-
|
|
28276
|
+
chunk5YX3R6CK_cjs.ImportRow,
|
|
29761
28277
|
{
|
|
29762
28278
|
testId: `onedrive-provider-row-${catalog.vendor_key}`,
|
|
29763
28279
|
logo: /* @__PURE__ */ jsxRuntime.jsx(VendorGlyph2, { catalog }),
|
|
@@ -29769,7 +28285,7 @@ function OneDriveProviderRow({
|
|
|
29769
28285
|
// Until folders are configured here (or when nothing new is pending), Import now
|
|
29770
28286
|
// stays disabled; the gear opens the folder picker.
|
|
29771
28287
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29772
|
-
|
|
28288
|
+
chunk5YX3R6CK_cjs.ImportRunActions,
|
|
29773
28289
|
{
|
|
29774
28290
|
isRunning: running,
|
|
29775
28291
|
isStopping: cancelSync.isPending,
|
|
@@ -29788,16 +28304,16 @@ function OneDriveProviderRow({
|
|
|
29788
28304
|
) : reconnectAction
|
|
29789
28305
|
),
|
|
29790
28306
|
children: [
|
|
29791
|
-
ownsAuth && needsReconnect && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28307
|
+
ownsAuth && needsReconnect && /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.ImportHint, { "data-testid": `onedrive-reconnect-hint-${catalog.vendor_key}`, children: [
|
|
29792
28308
|
"Couldn\u2019t reach SharePoint. Click ",
|
|
29793
28309
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-medium", children: "Reconnect" }),
|
|
29794
28310
|
" \u2014 if it keeps happening, log out and back in to refresh the connection."
|
|
29795
28311
|
] }),
|
|
29796
28312
|
configuredHere && !needsReconnect && !running && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
29797
|
-
|
|
28313
|
+
chunk5YX3R6CK_cjs.ImportSummary,
|
|
29798
28314
|
{
|
|
29799
28315
|
className: "mt-2",
|
|
29800
|
-
aside: typeof pendingCount === "number" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
28316
|
+
aside: typeof pendingCount === "number" ? /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ImportAside, { className: "max-w-none shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx("span", { "data-testid": `drive-pending-${catalog.vendor_key}`, children: pendingCount > 0 ? `${pendingCount.toLocaleString()} new ${driveNoun(pendingCount)} to sync` : "No new documents to sync" }) }) : void 0,
|
|
29801
28317
|
children: [
|
|
29802
28318
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
29803
28319
|
"Syncing ",
|
|
@@ -29825,7 +28341,7 @@ function OneDriveProviderRow({
|
|
|
29825
28341
|
}
|
|
29826
28342
|
),
|
|
29827
28343
|
running && /* @__PURE__ */ jsxRuntime.jsx(
|
|
29828
|
-
|
|
28344
|
+
chunk5YX3R6CK_cjs.ImportProgress,
|
|
29829
28345
|
{
|
|
29830
28346
|
processed: progress?.processed ?? 0,
|
|
29831
28347
|
total: progress?.total,
|
|
@@ -29889,13 +28405,13 @@ function SharePointEnableRow({
|
|
|
29889
28405
|
}
|
|
29890
28406
|
};
|
|
29891
28407
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29892
|
-
|
|
28408
|
+
chunk5YX3R6CK_cjs.ImportRow,
|
|
29893
28409
|
{
|
|
29894
28410
|
testId: `onedrive-provider-row-${catalog.vendor_key}`,
|
|
29895
|
-
logo: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28411
|
+
logo: /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.VendorLogo, { vendorKey: catalog.vendor_key, product: product.glyph, className: "h-7 w-7" }),
|
|
29896
28412
|
name: product.name,
|
|
29897
28413
|
actions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29898
|
-
|
|
28414
|
+
chunk5YX3R6CK_cjs.ImportActionButton,
|
|
29899
28415
|
{
|
|
29900
28416
|
onClick: () => void enable(),
|
|
29901
28417
|
disabled: pending,
|
|
@@ -29903,7 +28419,7 @@ function SharePointEnableRow({
|
|
|
29903
28419
|
children: pending ? "Enabling\u2026" : `Enable ${product.name}`
|
|
29904
28420
|
}
|
|
29905
28421
|
),
|
|
29906
|
-
children: sharePointAdminUrl && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28422
|
+
children: sharePointAdminUrl && /* @__PURE__ */ jsxRuntime.jsxs(chunk5YX3R6CK_cjs.ImportHint, { children: [
|
|
29907
28423
|
"Does your organization require admin approval?",
|
|
29908
28424
|
" ",
|
|
29909
28425
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -29952,11 +28468,11 @@ function DriveImportPanel({
|
|
|
29952
28468
|
}
|
|
29953
28469
|
const product = driveProduct(entry.vendor_key);
|
|
29954
28470
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
29955
|
-
|
|
28471
|
+
chunk5YX3R6CK_cjs.ImportRow,
|
|
29956
28472
|
{
|
|
29957
28473
|
testId: `onedrive-provider-row-${entry.vendor_key}`,
|
|
29958
28474
|
logo: /* @__PURE__ */ jsxRuntime.jsx(
|
|
29959
|
-
|
|
28475
|
+
chunk5YX3R6CK_cjs.VendorLogo,
|
|
29960
28476
|
{
|
|
29961
28477
|
vendorKey: entry.vendor_key,
|
|
29962
28478
|
product: product.glyph,
|
|
@@ -29981,7 +28497,7 @@ function DriveImportPanel({
|
|
|
29981
28497
|
);
|
|
29982
28498
|
}).filter(Boolean);
|
|
29983
28499
|
if (rows.length === 0) return null;
|
|
29984
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28500
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ImportList, { "data-testid": "onedrive-import-panel", children: rows });
|
|
29985
28501
|
}
|
|
29986
28502
|
function useHasAccountsImport() {
|
|
29987
28503
|
const isVendorVisible = react.useConnectorVendorVisibility();
|
|
@@ -30059,7 +28575,7 @@ function ProcessingSection({
|
|
|
30059
28575
|
tasks,
|
|
30060
28576
|
onDelete
|
|
30061
28577
|
}) {
|
|
30062
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28578
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.TaskSection, { title, count: count2, status, tooltip: SECTION_TOOLTIPS[status], children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
30063
28579
|
chunkJYR55F3P_cjs.UploadTaskList,
|
|
30064
28580
|
{
|
|
30065
28581
|
tasks,
|
|
@@ -30314,7 +28830,7 @@ var MENU_LABELS = {
|
|
|
30314
28830
|
};
|
|
30315
28831
|
function applyDatabaseColumns(columns, api) {
|
|
30316
28832
|
const kept = (id) => api.getColumn(id) ? [id] : [];
|
|
30317
|
-
|
|
28833
|
+
chunk5YX3R6CK_cjs.applyColumnLayout(api, [...kept(chunkTQSU3I4C_cjs.OPEN_ROW_COL_ID), ...columns, ...kept(chunkTQSU3I4C_cjs.ADD_COLUMN_COL_ID)]);
|
|
30318
28834
|
}
|
|
30319
28835
|
function DatabaseViewsMenu({
|
|
30320
28836
|
databaseId,
|
|
@@ -30333,7 +28849,7 @@ function DatabaseViewsMenu({
|
|
|
30333
28849
|
[defaultColumns]
|
|
30334
28850
|
);
|
|
30335
28851
|
const onLoadView = React9.useCallback(
|
|
30336
|
-
(view, api) =>
|
|
28852
|
+
(view, api) => chunk5YX3R6CK_cjs.applyViewColumns(api, view, applyDatabaseColumns),
|
|
30337
28853
|
[]
|
|
30338
28854
|
);
|
|
30339
28855
|
const onSaveView = React9.useCallback(
|
|
@@ -30353,7 +28869,7 @@ function DatabaseViewsMenu({
|
|
|
30353
28869
|
},
|
|
30354
28870
|
[confirm, deleteView, notify18]
|
|
30355
28871
|
);
|
|
30356
|
-
const menu =
|
|
28872
|
+
const menu = chunk5YX3R6CK_cjs.useGridViews({
|
|
30357
28873
|
getGridApi,
|
|
30358
28874
|
defaultColumns,
|
|
30359
28875
|
builtins,
|
|
@@ -30366,7 +28882,7 @@ function DatabaseViewsMenu({
|
|
|
30366
28882
|
onDeleteView,
|
|
30367
28883
|
isSaving
|
|
30368
28884
|
});
|
|
30369
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
28885
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.ViewSelectorMenu, { ...menu, labels: MENU_LABELS });
|
|
30370
28886
|
}
|
|
30371
28887
|
function useMoveLocalViews(gridId, ready, importViews) {
|
|
30372
28888
|
const localViews = react.useArbiSessionState((state) => state.grid.savedViews[gridId]);
|
|
@@ -31500,7 +30016,7 @@ function MeetingAvatar() {
|
|
|
31500
30016
|
);
|
|
31501
30017
|
}
|
|
31502
30018
|
var isGroupChat = (chat) => !!chat && chat.kind !== "direct";
|
|
31503
|
-
var
|
|
30019
|
+
var isAgent6 = (user) => browser.chats.isAgentExtId(user.external_id);
|
|
31504
30020
|
function ConnectedMessenger({
|
|
31505
30021
|
activeId,
|
|
31506
30022
|
onOpen,
|
|
@@ -31537,7 +30053,7 @@ function ConnectedMessenger({
|
|
|
31537
30053
|
// Presence rides on the row's avatar.
|
|
31538
30054
|
avatar(c.peer)
|
|
31539
30055
|
),
|
|
31540
|
-
badge: !isGroupChat(c.chat) &&
|
|
30056
|
+
badge: !isGroupChat(c.chat) && isAgent6(c.peer) ? /* @__PURE__ */ jsxRuntime.jsx(ui.AgentBadge, {}) : void 0
|
|
31541
30057
|
}));
|
|
31542
30058
|
const all = [...decorated, ...extraRows];
|
|
31543
30059
|
if (!filters?.size) return all;
|
|
@@ -31545,7 +30061,7 @@ function ConnectedMessenger({
|
|
|
31545
30061
|
unread: (row2) => row2.unreadCount > 0,
|
|
31546
30062
|
// A person is muted, not a group that happens to list them first.
|
|
31547
30063
|
muted: (row2) => !isGroupChat(row2.chat) && mutedUsers.has(row2.peer.external_id),
|
|
31548
|
-
agents: (row2) => !isGroupChat(row2.chat) &&
|
|
30064
|
+
agents: (row2) => !isGroupChat(row2.chat) && isAgent6(row2.peer),
|
|
31549
30065
|
meetings: (row2) => row2.chat?.kind === "meeting",
|
|
31550
30066
|
...rowFilters
|
|
31551
30067
|
};
|
|
@@ -31676,12 +30192,12 @@ function ConnectedMessenger({
|
|
|
31676
30192
|
{
|
|
31677
30193
|
avatar: activePeer ? avatar(activePeer) : void 0,
|
|
31678
30194
|
name: activePeer ? react.userDisplayName(activePeer) : "Conversation",
|
|
31679
|
-
badge: activePeer &&
|
|
30195
|
+
badge: activePeer && isAgent6(activePeer) ? /* @__PURE__ */ jsxRuntime.jsx(ui.AgentBadge, {}) : void 0,
|
|
31680
30196
|
presence: presence ? /* @__PURE__ */ jsxRuntime.jsx(ui.PresenceLabel, { status: presence }) : void 0,
|
|
31681
30197
|
email: activePeer?.email,
|
|
31682
30198
|
menu: activePeer ? directActions?.(activePeer, {
|
|
31683
30199
|
// A personal agent never carries over into a group, and a self-chat has no peer.
|
|
31684
|
-
addPeople:
|
|
30200
|
+
addPeople: isAgent6(activePeer) || activeIsSelf || !PeoplePicker ? void 0 : () => setPicker({ mode: "from-direct", fixed: [activePeer] })
|
|
31685
30201
|
}) : void 0
|
|
31686
30202
|
}
|
|
31687
30203
|
),
|
|
@@ -32717,7 +31233,7 @@ function ConnectedGrantWorkspaceAccessDialog({
|
|
|
32717
31233
|
...isExternal ? { access_duration_seconds: Number(accessHours) * 3600 } : {}
|
|
32718
31234
|
});
|
|
32719
31235
|
const wsName = workspaces.find((w) => w.external_id === wsId)?.name ?? "the workspace";
|
|
32720
|
-
const roleLabel =
|
|
31236
|
+
const roleLabel = chunkQLY22ZZW_cjs.formatRole(selectedRole).toLowerCase();
|
|
32721
31237
|
const expiresAt = Array.isArray(grantedMembers) ? grantedMembers.find((member) => member.user?.email === requester.email)?.access_expires_at : void 0;
|
|
32722
31238
|
const expiryIso = expiresAt && !/(?:Z|[+-]\d{2}:\d{2})$/i.test(expiresAt) ? `${expiresAt}Z` : expiresAt;
|
|
32723
31239
|
const expiryZone = expiryIso ? new Intl.DateTimeFormat(void 0, { timeZoneName: "short" }).formatToParts(new Date(expiryIso)).find((part) => part.type === "timeZoneName")?.value : void 0;
|
|
@@ -32820,17 +31336,17 @@ function ConnectedGrantWorkspaceAccessDialog({
|
|
|
32820
31336
|
onValueChange: (v) => setSelectedRole(v),
|
|
32821
31337
|
disabled: busy,
|
|
32822
31338
|
children: [
|
|
32823
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectTrigger, { "data-testid": "grant-role-select", children: /* @__PURE__ */ jsxRuntime.jsx(ui.SelectValue, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className:
|
|
31339
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectTrigger, { "data-testid": "grant-role-select", children: /* @__PURE__ */ jsxRuntime.jsx(ui.SelectValue, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className: chunkQLY22ZZW_cjs.getRoleBadgeClass(selectedRole), children: chunkQLY22ZZW_cjs.formatRole(selectedRole) }) }) }),
|
|
32824
31340
|
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectContent, { children: GRANTABLE_ROLES.filter((role) => !isExternal || role.value !== "owner").map(
|
|
32825
31341
|
(role) => /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: role.value, children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-2", children: [
|
|
32826
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className:
|
|
31342
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className: chunkQLY22ZZW_cjs.getRoleBadgeClass(role.value), children: role.label }),
|
|
32827
31343
|
role.value === "guest" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Read-only" })
|
|
32828
31344
|
] }) }, role.value)
|
|
32829
31345
|
) })
|
|
32830
31346
|
]
|
|
32831
31347
|
}
|
|
32832
31348
|
),
|
|
32833
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-xs text-muted-foreground", children:
|
|
31349
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1.5 text-xs text-muted-foreground", children: chunkQLY22ZZW_cjs.getRoleDescription(selectedRole) }),
|
|
32834
31350
|
!canGrant(primaryKind) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-yellow-text", "data-testid": "owner-temporary-warning", children: "Temporary access can\u2019t be owner \u2014 pick another role or grant permanent." })
|
|
32835
31351
|
] })
|
|
32836
31352
|
] }),
|
|
@@ -33980,7 +32496,7 @@ function useWorkflowTasks() {
|
|
|
33980
32496
|
() => Object.fromEntries(documents.map((d) => [d.external_id, ui.getDocumentTitle(d, d.external_id)])),
|
|
33981
32497
|
[documents]
|
|
33982
32498
|
);
|
|
33983
|
-
const
|
|
32499
|
+
const create2 = React9.useCallback(
|
|
33984
32500
|
async (ctx, forceWorkflow = false) => {
|
|
33985
32501
|
const request = chunkJYR55F3P_cjs.taskComposerToCreateRequest(
|
|
33986
32502
|
{ ...ctx, documentTitles, plan: ctx.plan ?? null },
|
|
@@ -34047,7 +32563,7 @@ function useWorkflowTasks() {
|
|
|
34047
32563
|
[activeWorkspaceId, documentTitles, grantAgentAccess, updateWorkflowMutation]
|
|
34048
32564
|
);
|
|
34049
32565
|
return {
|
|
34050
|
-
create:
|
|
32566
|
+
create: create2,
|
|
34051
32567
|
update,
|
|
34052
32568
|
updateWorkflow,
|
|
34053
32569
|
isPending: createWork.isPending || startQuery.isPending || createWorkflow.isPending || updateConversation.isPending || updateWorkflowMutation.isPending
|
|
@@ -34732,7 +33248,7 @@ function ResourceShareForm({
|
|
|
34732
33248
|
const memberRole = memberRoleByEmail.get(lower);
|
|
34733
33249
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1.5 shrink-0", children: [
|
|
34734
33250
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-muted-foreground", children: "Member" }),
|
|
34735
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className:
|
|
33251
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className: chunkQLY22ZZW_cjs.getRoleBadgeClass(memberRole), children: chunkQLY22ZZW_cjs.formatRole(memberRole) })
|
|
34736
33252
|
] });
|
|
34737
33253
|
}
|
|
34738
33254
|
const role = rolesByEmail[selected.email] ?? "collaborator";
|
|
@@ -34743,12 +33259,12 @@ function ResourceShareForm({
|
|
|
34743
33259
|
value: role,
|
|
34744
33260
|
onValueChange: (value) => setRolesByEmail((prev) => ({ ...prev, [selected.email]: value })),
|
|
34745
33261
|
children: [
|
|
34746
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectTrigger, { className: "h-7 w-[120px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.SelectValue, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className:
|
|
34747
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectContent, { children: ALL_ROLES2.map((r) => /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: r.value, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className:
|
|
33262
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectTrigger, { className: "h-7 w-[120px]", children: /* @__PURE__ */ jsxRuntime.jsx(ui.SelectValue, { children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className: chunkQLY22ZZW_cjs.getRoleBadgeClass(role), children: chunkQLY22ZZW_cjs.formatRole(role) }) }) }),
|
|
33263
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.SelectContent, { children: ALL_ROLES2.map((r) => /* @__PURE__ */ jsxRuntime.jsx(ui.SelectItem, { value: r.value, children: /* @__PURE__ */ jsxRuntime.jsx(ui.Badge, { variant: "default", className: chunkQLY22ZZW_cjs.getRoleBadgeClass(r.value), children: r.label }) }, r.value)) })
|
|
34748
33264
|
]
|
|
34749
33265
|
}
|
|
34750
33266
|
) }) }),
|
|
34751
|
-
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "left", className: "max-w-[300px]", children: /* @__PURE__ */ jsxRuntime.jsx("p", { children:
|
|
33267
|
+
/* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "left", className: "max-w-[300px]", children: /* @__PURE__ */ jsxRuntime.jsx("p", { children: chunkQLY22ZZW_cjs.getRoleDescription(role) }) })
|
|
34752
33268
|
] }) });
|
|
34753
33269
|
};
|
|
34754
33270
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
@@ -35216,7 +33732,7 @@ function useThreadLabels(canEditShared) {
|
|
|
35216
33732
|
if (failed)
|
|
35217
33733
|
notify18(`Could not update labels on ${failed} thread${failed === 1 ? "" : "s"}.`, "error");
|
|
35218
33734
|
};
|
|
35219
|
-
const
|
|
33735
|
+
const create2 = async (rows, name) => {
|
|
35220
33736
|
if (!canEdit(rows) || !name.trim()) return;
|
|
35221
33737
|
try {
|
|
35222
33738
|
const existing = labels.find((tag) => tag.name.toLowerCase() === name.trim().toLowerCase());
|
|
@@ -35238,7 +33754,7 @@ function useThreadLabels(canEditShared) {
|
|
|
35238
33754
|
options: options2,
|
|
35239
33755
|
appliedIds: new Set(row2.label_ext_ids ?? []),
|
|
35240
33756
|
onToggle: (id) => void apply([row2], id, Boolean(row2.label_ext_ids?.includes(id))),
|
|
35241
|
-
onCreate: (name) => void
|
|
33757
|
+
onCreate: (name) => void create2([row2], name),
|
|
35242
33758
|
rowHeight: 40
|
|
35243
33759
|
}
|
|
35244
33760
|
),
|
|
@@ -35252,7 +33768,7 @@ function useThreadLabels(canEditShared) {
|
|
|
35252
33768
|
).map((label) => label.id)
|
|
35253
33769
|
);
|
|
35254
33770
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
35255
|
-
|
|
33771
|
+
chunk5YX3R6CK_cjs.BulkLabelSelectView,
|
|
35256
33772
|
{
|
|
35257
33773
|
options: options2,
|
|
35258
33774
|
appliedIds: all,
|
|
@@ -35260,7 +33776,7 @@ function useThreadLabels(canEditShared) {
|
|
|
35260
33776
|
disabled: !canEdit(rows) || update.isPending || createTag.isPending,
|
|
35261
33777
|
isCompact,
|
|
35262
33778
|
onToggle: (id) => void apply(rows, id, all.has(id)),
|
|
35263
|
-
onCreate: (name) => void
|
|
33779
|
+
onCreate: (name) => void create2(rows, name)
|
|
35264
33780
|
}
|
|
35265
33781
|
);
|
|
35266
33782
|
}
|
|
@@ -35378,7 +33894,7 @@ function useConnectedThreadActivity(conversationId) {
|
|
|
35378
33894
|
stepChip: eventStep ? stepChipOf(eventStep, event.kind, stepDocument) : void 0,
|
|
35379
33895
|
// No avatar tooltip: the entry is already a button (or titled row) that carries the same
|
|
35380
33896
|
// details, and a tooltip trigger inside it would be a nested <button>.
|
|
35381
|
-
avatar: assistant ? /* @__PURE__ */ jsxRuntime.jsx(chunkJYR55F3P_cjs.AssistantEntity, { variant: "icon", size: 20, showTooltip: false }) : member ? /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: member, tooltip: false }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: "size-4 text-muted-foreground" }),
|
|
33897
|
+
avatar: assistant ? /* @__PURE__ */ jsxRuntime.jsx(chunkJYR55F3P_cjs.AssistantEntity, { variant: "icon", size: 20, showTooltip: false }) : member ? /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.DocumentUser, { user: member, tooltip: false }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: "size-4 text-muted-foreground" }),
|
|
35382
33898
|
time: ui.formatRelativeTime(event.created_at, { style: "short" }),
|
|
35383
33899
|
exactTime: ui.formatFriendlyDate(event.created_at),
|
|
35384
33900
|
onOpenDocument: docId && doc ? () => openDocument(docId) : void 0,
|
|
@@ -35584,7 +34100,7 @@ function ConnectedThreadTaskBar({
|
|
|
35584
34100
|
) }),
|
|
35585
34101
|
/* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenuContent, { align: "end", children: [
|
|
35586
34102
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
35587
|
-
|
|
34103
|
+
chunkRTS3B2W7_cjs.ThreadFollowMenuItem,
|
|
35588
34104
|
{
|
|
35589
34105
|
following: follow.following,
|
|
35590
34106
|
onFollowingChange: (on) => (
|
|
@@ -35748,7 +34264,7 @@ function ConnectedTaskComposer({
|
|
|
35748
34264
|
const planWork = react.usePlanWork();
|
|
35749
34265
|
const { tasks: allTasks } = react.useWorkItems();
|
|
35750
34266
|
const { data: documents = [] } = react.useDocuments();
|
|
35751
|
-
const { create:
|
|
34267
|
+
const { create: create2, update, updateWorkflow, isPending } = useWorkflowTasks();
|
|
35752
34268
|
const scopeSource = chunkFYL7IGK2_cjs.useConnectedWorkflowScopeSource();
|
|
35753
34269
|
const activeWorkspaceId = react.useArbiSessionState((s) => s.workspaceId);
|
|
35754
34270
|
const activeWorkspace = React9.useMemo(
|
|
@@ -35878,7 +34394,7 @@ function ConnectedTaskComposer({
|
|
|
35878
34394
|
await update(task, ctx);
|
|
35879
34395
|
notify18(`Updated \u201C${task.title ?? "task"}\u201D`, "success");
|
|
35880
34396
|
} else {
|
|
35881
|
-
const created = await
|
|
34397
|
+
const created = await create2(ctx, saveOnly && !options2?.runOnce);
|
|
35882
34398
|
if (created.kind === "workflow") {
|
|
35883
34399
|
notify18(`Saved \u201C${created.workflow.name}\u201D.`, "success");
|
|
35884
34400
|
openWorkflow?.();
|
|
@@ -36352,7 +34868,7 @@ function useRenderTaskPerson() {
|
|
|
36352
34868
|
return React9.useCallback(
|
|
36353
34869
|
(person) => {
|
|
36354
34870
|
const user = person.id ? byId.get(person.id) : void 0;
|
|
36355
|
-
return user ? /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZXHGPTAZ_cjs.PersonPill, { person });
|
|
34871
|
+
return user ? /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.DocumentUser, { user, variant: "pill" }) : /* @__PURE__ */ jsxRuntime.jsx(chunkZXHGPTAZ_cjs.PersonPill, { person });
|
|
36356
34872
|
},
|
|
36357
34873
|
[byId]
|
|
36358
34874
|
);
|
|
@@ -38317,7 +36833,7 @@ var MessageComponent = ({
|
|
|
38317
36833
|
revealActionsOnHover: true,
|
|
38318
36834
|
leading: isUser ? (
|
|
38319
36835
|
// Someone else's author is the pill above their run; only mine is marked here.
|
|
38320
|
-
!isOtherPerson && messageAuthorUser && /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: messageAuthorUser })
|
|
36836
|
+
!isOtherPerson && messageAuthorUser && /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.DocumentUser, { user: messageAuthorUser })
|
|
38321
36837
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
38322
36838
|
"span",
|
|
38323
36839
|
{
|
|
@@ -38422,7 +36938,7 @@ var MessageComponent = ({
|
|
|
38422
36938
|
messageId,
|
|
38423
36939
|
align: isOtherPerson ? "start" : "end",
|
|
38424
36940
|
children: [
|
|
38425
|
-
startsAuthorRun && messageAuthorUser && /* @__PURE__ */ jsxRuntime.jsx(chunk226ILMHW_cjs.MessageAuthor, { children: /* @__PURE__ */ jsxRuntime.jsx(DocumentUser, { user: messageAuthorUser, variant: "pill" }) }),
|
|
36941
|
+
startsAuthorRun && messageAuthorUser && /* @__PURE__ */ jsxRuntime.jsx(chunk226ILMHW_cjs.MessageAuthor, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkS7B5E3RU_cjs.DocumentUser, { user: messageAuthorUser, variant: "pill" }) }),
|
|
38426
36942
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
38427
36943
|
chunk226ILMHW_cjs.MessageBubble,
|
|
38428
36944
|
{
|
|
@@ -39704,7 +38220,7 @@ function ConnectedConversationPage({
|
|
|
39704
38220
|
!isInChat && /* @__PURE__ */ jsxRuntime.jsx(chunkQK3SHV3F_cjs.ConversationHistoryPane, { children: searchEnabled && semanticSearchOpen ? /* @__PURE__ */ jsxRuntime.jsx(ConnectedThreadsPage, { showHeader: false, search: true, ResultsBoundary }) : /* @__PURE__ */ jsxRuntime.jsx(ConnectedThreadsPage, { showHeader: false, focusLauncher }) })
|
|
39705
38221
|
] }),
|
|
39706
38222
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
39707
|
-
|
|
38223
|
+
chunk5YX3R6CK_cjs.UrlInputDialog,
|
|
39708
38224
|
{
|
|
39709
38225
|
open: urlDialogOpen,
|
|
39710
38226
|
onOpenChange: setUrlDialogOpen,
|
|
@@ -39765,7 +38281,7 @@ function ConnectedConversationEmpty({
|
|
|
39765
38281
|
compactLeadingAction: onImportFromEmail && /* @__PURE__ */ jsxRuntime.jsx(AddFromAccountsButton, { onImportFromEmail })
|
|
39766
38282
|
}
|
|
39767
38283
|
),
|
|
39768
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
38284
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk5YX3R6CK_cjs.PrivacyExplainerModal, {})
|
|
39769
38285
|
] })
|
|
39770
38286
|
}
|
|
39771
38287
|
);
|
|
@@ -42520,7 +41036,7 @@ function SsoResendVerificationButton({
|
|
|
42520
41036
|
onClick: async () => handleResendEmailVerification(),
|
|
42521
41037
|
disabled: loading || disabled,
|
|
42522
41038
|
"aria-label": "Resend verification email",
|
|
42523
|
-
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
41039
|
+
children: loading ? /* @__PURE__ */ jsxRuntime.jsx(chunkRTS3B2W7_cjs.LoadingIndicator, {}) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
42524
41040
|
"Didn't get a verification email? ",
|
|
42525
41041
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-semibold", children: "Resend" })
|
|
42526
41042
|
] })
|
|
@@ -43749,10 +42265,10 @@ function useContextualHints() {
|
|
|
43749
42265
|
const session = react.useArbiSessionStore();
|
|
43750
42266
|
const { data: userSettings } = react.useUserSettings();
|
|
43751
42267
|
const updateUserSettings = react.useUpdateUserSettings();
|
|
43752
|
-
const [sessionOverride] = react.useTransientView(
|
|
43753
|
-
const setShowHints = (value) =>
|
|
42268
|
+
const [sessionOverride] = react.useTransientView(chunkRTS3B2W7_cjs.TIPS_VISIBILITY_OVERRIDE, null);
|
|
42269
|
+
const setShowHints = (value) => chunkRTS3B2W7_cjs.setHintsSessionOverride(session, value);
|
|
43754
42270
|
const setShowHintsPersisted = (value) => {
|
|
43755
|
-
|
|
42271
|
+
chunkRTS3B2W7_cjs.setHintsSessionOverride(session, null);
|
|
43756
42272
|
updateUserSettings.mutate({ show_hints: value });
|
|
43757
42273
|
};
|
|
43758
42274
|
return {
|
|
@@ -43817,6 +42333,122 @@ Object.defineProperty(exports, "useRewardBalance", {
|
|
|
43817
42333
|
enumerable: true,
|
|
43818
42334
|
get: function () { return chunkV7JDMKNQ_cjs.useRewardBalance; }
|
|
43819
42335
|
});
|
|
42336
|
+
Object.defineProperty(exports, "ConnectedPendingSyncDialog", {
|
|
42337
|
+
enumerable: true,
|
|
42338
|
+
get: function () { return chunkS7B5E3RU_cjs.ConnectedPendingSyncDialog; }
|
|
42339
|
+
});
|
|
42340
|
+
Object.defineProperty(exports, "ConnectedTagEntity", {
|
|
42341
|
+
enumerable: true,
|
|
42342
|
+
get: function () { return chunkS7B5E3RU_cjs.ConnectedTagEntity; }
|
|
42343
|
+
});
|
|
42344
|
+
Object.defineProperty(exports, "DocumentFolderCell", {
|
|
42345
|
+
enumerable: true,
|
|
42346
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentFolderCell; }
|
|
42347
|
+
});
|
|
42348
|
+
Object.defineProperty(exports, "DocumentLabelsCell", {
|
|
42349
|
+
enumerable: true,
|
|
42350
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentLabelsCell; }
|
|
42351
|
+
});
|
|
42352
|
+
Object.defineProperty(exports, "DocumentNameCell", {
|
|
42353
|
+
enumerable: true,
|
|
42354
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentNameCell; }
|
|
42355
|
+
});
|
|
42356
|
+
Object.defineProperty(exports, "DocumentSharedCell", {
|
|
42357
|
+
enumerable: true,
|
|
42358
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentSharedCell; }
|
|
42359
|
+
});
|
|
42360
|
+
Object.defineProperty(exports, "DocumentStatusGlyph", {
|
|
42361
|
+
enumerable: true,
|
|
42362
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentStatusGlyph; }
|
|
42363
|
+
});
|
|
42364
|
+
Object.defineProperty(exports, "DocumentSyncGlyph", {
|
|
42365
|
+
enumerable: true,
|
|
42366
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentSyncGlyph; }
|
|
42367
|
+
});
|
|
42368
|
+
Object.defineProperty(exports, "DocumentUser", {
|
|
42369
|
+
enumerable: true,
|
|
42370
|
+
get: function () { return chunkS7B5E3RU_cjs.DocumentUser; }
|
|
42371
|
+
});
|
|
42372
|
+
Object.defineProperty(exports, "FILES_PREFS_KEY", {
|
|
42373
|
+
enumerable: true,
|
|
42374
|
+
get: function () { return chunkS7B5E3RU_cjs.FILES_PREFS_KEY; }
|
|
42375
|
+
});
|
|
42376
|
+
Object.defineProperty(exports, "FileTooltipContent", {
|
|
42377
|
+
enumerable: true,
|
|
42378
|
+
get: function () { return chunkS7B5E3RU_cjs.FileTooltipContent; }
|
|
42379
|
+
});
|
|
42380
|
+
Object.defineProperty(exports, "RelatedDocumentsCell", {
|
|
42381
|
+
enumerable: true,
|
|
42382
|
+
get: function () { return chunkS7B5E3RU_cjs.RelatedDocumentsCell; }
|
|
42383
|
+
});
|
|
42384
|
+
Object.defineProperty(exports, "StatusCell", {
|
|
42385
|
+
enumerable: true,
|
|
42386
|
+
get: function () { return chunkS7B5E3RU_cjs.StatusCell; }
|
|
42387
|
+
});
|
|
42388
|
+
Object.defineProperty(exports, "UserAvatar", {
|
|
42389
|
+
enumerable: true,
|
|
42390
|
+
get: function () { return chunkS7B5E3RU_cjs.UserAvatar; }
|
|
42391
|
+
});
|
|
42392
|
+
Object.defineProperty(exports, "documentFieldContent", {
|
|
42393
|
+
enumerable: true,
|
|
42394
|
+
get: function () { return chunkS7B5E3RU_cjs.documentFieldContent; }
|
|
42395
|
+
});
|
|
42396
|
+
Object.defineProperty(exports, "filesViewMode", {
|
|
42397
|
+
enumerable: true,
|
|
42398
|
+
get: function () { return chunkS7B5E3RU_cjs.filesViewMode; }
|
|
42399
|
+
});
|
|
42400
|
+
Object.defineProperty(exports, "isActiveDocumentStatus", {
|
|
42401
|
+
enumerable: true,
|
|
42402
|
+
get: function () { return chunkS7B5E3RU_cjs.isActiveDocumentStatus; }
|
|
42403
|
+
});
|
|
42404
|
+
Object.defineProperty(exports, "openPendingSyncDialog", {
|
|
42405
|
+
enumerable: true,
|
|
42406
|
+
get: function () { return chunkS7B5E3RU_cjs.openPendingSyncDialog; }
|
|
42407
|
+
});
|
|
42408
|
+
Object.defineProperty(exports, "parseQuotaError", {
|
|
42409
|
+
enumerable: true,
|
|
42410
|
+
get: function () { return chunkS7B5E3RU_cjs.parseQuotaError; }
|
|
42411
|
+
});
|
|
42412
|
+
Object.defineProperty(exports, "startMenuItem", {
|
|
42413
|
+
enumerable: true,
|
|
42414
|
+
get: function () { return chunkS7B5E3RU_cjs.startMenuItem; }
|
|
42415
|
+
});
|
|
42416
|
+
Object.defineProperty(exports, "useAiReviewStore", {
|
|
42417
|
+
enumerable: true,
|
|
42418
|
+
get: function () { return chunkS7B5E3RU_cjs.useAiReviewStore; }
|
|
42419
|
+
});
|
|
42420
|
+
Object.defineProperty(exports, "useDocumentFolders", {
|
|
42421
|
+
enumerable: true,
|
|
42422
|
+
get: function () { return chunkS7B5E3RU_cjs.useDocumentFolders; }
|
|
42423
|
+
});
|
|
42424
|
+
Object.defineProperty(exports, "useFilesDialogs", {
|
|
42425
|
+
enumerable: true,
|
|
42426
|
+
get: function () { return chunkS7B5E3RU_cjs.useFilesDialogs; }
|
|
42427
|
+
});
|
|
42428
|
+
Object.defineProperty(exports, "useFilesGridStates", {
|
|
42429
|
+
enumerable: true,
|
|
42430
|
+
get: function () { return chunkS7B5E3RU_cjs.useFilesGridStates; }
|
|
42431
|
+
});
|
|
42432
|
+
Object.defineProperty(exports, "useFilesPrefs", {
|
|
42433
|
+
enumerable: true,
|
|
42434
|
+
get: function () { return chunkS7B5E3RU_cjs.useFilesPrefs; }
|
|
42435
|
+
});
|
|
42436
|
+
Object.defineProperty(exports, "useFilesStore", {
|
|
42437
|
+
enumerable: true,
|
|
42438
|
+
get: function () { return chunkS7B5E3RU_cjs.useFilesStore; }
|
|
42439
|
+
});
|
|
42440
|
+
Object.defineProperty(exports, "useMemberLookup", {
|
|
42441
|
+
enumerable: true,
|
|
42442
|
+
get: function () { return chunkS7B5E3RU_cjs.useMemberLookup; }
|
|
42443
|
+
});
|
|
42444
|
+
Object.defineProperty(exports, "usePendingFolders", {
|
|
42445
|
+
enumerable: true,
|
|
42446
|
+
get: function () { return chunkS7B5E3RU_cjs.usePendingFolders; }
|
|
42447
|
+
});
|
|
42448
|
+
Object.defineProperty(exports, "useResolvedDocStatus", {
|
|
42449
|
+
enumerable: true,
|
|
42450
|
+
get: function () { return chunkS7B5E3RU_cjs.useResolvedDocStatus; }
|
|
42451
|
+
});
|
|
43820
42452
|
Object.defineProperty(exports, "ConnectedAssistantDock", {
|
|
43821
42453
|
enumerable: true,
|
|
43822
42454
|
get: function () { return chunkMBGV6JHG_cjs.ConnectedAssistantDock; }
|
|
@@ -44091,7 +42723,6 @@ exports.ConnectedNotificationPreferences = ConnectedNotificationPreferences;
|
|
|
44091
42723
|
exports.ConnectedOAuthConsentPage = ConnectedOAuthConsentPage;
|
|
44092
42724
|
exports.ConnectedPanelHost = ConnectedPanelHost;
|
|
44093
42725
|
exports.ConnectedPasswordChangeDialog = ConnectedPasswordChangeDialog;
|
|
44094
|
-
exports.ConnectedPendingSyncDialog = ConnectedPendingSyncDialog;
|
|
44095
42726
|
exports.ConnectedPeopleMultiSelect = ConnectedPeopleMultiSelect;
|
|
44096
42727
|
exports.ConnectedPremiumModels = ConnectedPremiumModels;
|
|
44097
42728
|
exports.ConnectedPrivacySettings = ConnectedPrivacySettings;
|
|
@@ -44122,7 +42753,6 @@ exports.ConnectedSsoCallback = ConnectedSsoCallback;
|
|
|
44122
42753
|
exports.ConnectedStorageProjectCard = ConnectedStorageProjectCard;
|
|
44123
42754
|
exports.ConnectedStorageSettings = ConnectedStorageSettings;
|
|
44124
42755
|
exports.ConnectedTagEditorDialog = ConnectedTagEditorDialog;
|
|
44125
|
-
exports.ConnectedTagEntity = ConnectedTagEntity;
|
|
44126
42756
|
exports.ConnectedTagForm = ConnectedTagForm;
|
|
44127
42757
|
exports.ConnectedTagTable = ConnectedTagTable;
|
|
44128
42758
|
exports.ConnectedTagsPage = ConnectedTagsPage;
|
|
@@ -44174,19 +42804,10 @@ exports.DEFAULT_SETTINGS_SECTIONS = DEFAULT_SETTINGS_SECTIONS;
|
|
|
44174
42804
|
exports.DEFAULT_TIMELINE_LABEL_WIDTH = DEFAULT_TIMELINE_LABEL_WIDTH;
|
|
44175
42805
|
exports.DEFAULT_WORKSPACE_LIST_LABELS = DEFAULT_WORKSPACE_LIST_LABELS;
|
|
44176
42806
|
exports.DeveloperFooter = DeveloperFooter;
|
|
44177
|
-
exports.DocumentFolderCell = DocumentFolderCell;
|
|
44178
|
-
exports.DocumentLabelsCell = DocumentLabelsCell;
|
|
44179
|
-
exports.DocumentNameCell = DocumentNameCell;
|
|
44180
|
-
exports.DocumentSharedCell = DocumentSharedCell;
|
|
44181
|
-
exports.DocumentStatusGlyph = DocumentStatusGlyph;
|
|
44182
|
-
exports.DocumentSyncGlyph = DocumentSyncGlyph;
|
|
44183
|
-
exports.DocumentUser = DocumentUser;
|
|
44184
42807
|
exports.DocumentsFilterBarActions = DocumentsFilterBarActions;
|
|
44185
42808
|
exports.DocumentsUploadButton = DocumentsUploadButton;
|
|
44186
42809
|
exports.EmptyWorkspaceUpload = EmptyWorkspaceUpload;
|
|
44187
42810
|
exports.FACTS_GRID_ID = FACTS_GRID_ID;
|
|
44188
|
-
exports.FILES_PREFS_KEY = FILES_PREFS_KEY;
|
|
44189
|
-
exports.FileTooltipContent = FileTooltipContent;
|
|
44190
42811
|
exports.ImportVcfButton = ImportVcfButton;
|
|
44191
42812
|
exports.ImportVcfSummary = ImportVcfSummary;
|
|
44192
42813
|
exports.InvoicesModal = InvoicesModal;
|
|
@@ -44210,7 +42831,6 @@ exports.ProjectUsageContent = ProjectUsageContent;
|
|
|
44210
42831
|
exports.ProjectsTable = ProjectsTable;
|
|
44211
42832
|
exports.REFERRAL_OFFER = REFERRAL_OFFER;
|
|
44212
42833
|
exports.RecoveryKeyDownload = RecoveryKeyDownload;
|
|
44213
|
-
exports.RelatedDocumentsCell = RelatedDocumentsCell;
|
|
44214
42834
|
exports.ReportProblemDialog = ReportProblemDialog;
|
|
44215
42835
|
exports.RunStatsBadges = RunStatsBadges;
|
|
44216
42836
|
exports.RunningSubagents = RunningSubagents;
|
|
@@ -44221,7 +42841,6 @@ exports.SessionStatusIcon = SessionStatusIcon;
|
|
|
44221
42841
|
exports.SharedProjects = SharedProjects;
|
|
44222
42842
|
exports.SourceChips = SourceChips;
|
|
44223
42843
|
exports.SsoResendVerificationButton = SsoResendVerificationButton;
|
|
44224
|
-
exports.StatusCell = StatusCell2;
|
|
44225
42844
|
exports.StorageBreakdown = StorageBreakdown;
|
|
44226
42845
|
exports.StorageItemsTable = StorageItemsTable;
|
|
44227
42846
|
exports.StorageTiers = StorageTiers;
|
|
@@ -44230,7 +42849,6 @@ exports.TILE_DEFAULT = TILE_DEFAULT;
|
|
|
44230
42849
|
exports.TILE_MAX = TILE_MAX;
|
|
44231
42850
|
exports.TILE_MIN = TILE_MIN;
|
|
44232
42851
|
exports.ThreadSwitcher = ThreadSwitcher;
|
|
44233
|
-
exports.UserAvatar = UserAvatar;
|
|
44234
42852
|
exports.ViewSelector = ViewSelector;
|
|
44235
42853
|
exports.WORKSPACES_TAB_ID = WORKSPACES_TAB_ID;
|
|
44236
42854
|
exports.WorkflowLaunchHost = WorkflowLaunchHost;
|
|
@@ -44257,23 +42875,18 @@ exports.defaultHost = defaultHost;
|
|
|
44257
42875
|
exports.describePlan = describePlan;
|
|
44258
42876
|
exports.distinctPeers = distinctPeers;
|
|
44259
42877
|
exports.documentFamilyMeta = documentFamilyMeta;
|
|
44260
|
-
exports.documentFieldContent = documentFieldContent;
|
|
44261
|
-
exports.filesViewMode = filesViewMode;
|
|
44262
42878
|
exports.filterNotificationCenterItems = filterNotificationCenterItems;
|
|
44263
42879
|
exports.formatStorageGb = formatStorageGb;
|
|
44264
42880
|
exports.groupFallbackName = groupFallbackName;
|
|
44265
42881
|
exports.identifyOAuthClient = identifyOAuthClient;
|
|
44266
|
-
exports.isActiveDocumentStatus = isActiveDocumentStatus;
|
|
44267
42882
|
exports.joinEventMeeting = joinEventMeeting;
|
|
44268
42883
|
exports.loadEventWebinar = loadEventWebinar;
|
|
44269
42884
|
exports.mailSettingsSection = mailSettingsSection;
|
|
44270
42885
|
exports.openMeetingLink = openMeetingLink;
|
|
44271
|
-
exports.openPendingSyncDialog = openPendingSyncDialog;
|
|
44272
42886
|
exports.openSsoPopup = openSsoPopup;
|
|
44273
42887
|
exports.organisationSettingsSection = organisationSettingsSection;
|
|
44274
42888
|
exports.parseArbiCallUrl = parseArbiCallUrl;
|
|
44275
42889
|
exports.parseOAuthConsentRequest = parseOAuthConsentRequest;
|
|
44276
|
-
exports.parseQuotaError = parseQuotaError;
|
|
44277
42890
|
exports.parseTypedSkill = parseTypedSkill;
|
|
44278
42891
|
exports.primaryProjectWorkspace = primaryProjectWorkspace;
|
|
44279
42892
|
exports.privacySettingsSection = privacySettingsSection;
|
|
@@ -44290,7 +42903,6 @@ exports.resolveSsoName = resolveSsoName;
|
|
|
44290
42903
|
exports.reviewAccessRequest = reviewAccessRequest;
|
|
44291
42904
|
exports.reviewProgress = reviewProgress;
|
|
44292
42905
|
exports.shareEventCall = shareEventCall;
|
|
44293
|
-
exports.startMenuItem = startMenuItem;
|
|
44294
42906
|
exports.storageSettingsSection = storageSettingsSection;
|
|
44295
42907
|
exports.suppliedKinds = suppliedKinds;
|
|
44296
42908
|
exports.threadStateOf = threadStateOf;
|
|
@@ -44301,7 +42913,6 @@ exports.usageSettingsSection = usageSettingsSection;
|
|
|
44301
42913
|
exports.useAccessRequestUnderReview = useAccessRequestUnderReview;
|
|
44302
42914
|
exports.useAddFromUrls = useAddFromUrls;
|
|
44303
42915
|
exports.useAiReviewLiveUpdates = useAiReviewLiveUpdates;
|
|
44304
|
-
exports.useAiReviewStore = useAiReviewStore;
|
|
44305
42916
|
exports.useAppShell = useAppShell;
|
|
44306
42917
|
exports.useAuthPages = useAuthPages;
|
|
44307
42918
|
exports.useAutoRefreshPendingProjects = useAutoRefreshPendingProjects;
|
|
@@ -44317,18 +42928,12 @@ exports.useConnectedWorkspaceSettings = useConnectedWorkspaceSettings;
|
|
|
44317
42928
|
exports.useContextualHints = useContextualHints;
|
|
44318
42929
|
exports.useDocumentBulkActions = useDocumentBulkActions;
|
|
44319
42930
|
exports.useDocumentFilters = useDocumentFilters;
|
|
44320
|
-
exports.useDocumentFolders = useDocumentFolders;
|
|
44321
42931
|
exports.useDocumentGridSync = useDocumentGridSync;
|
|
44322
42932
|
exports.useDocumentNavigation = useDocumentNavigation;
|
|
44323
42933
|
exports.useDocumentTable = useDocumentTable;
|
|
44324
42934
|
exports.useExportStore = useExportStore;
|
|
44325
|
-
exports.useFilesDialogs = useFilesDialogs;
|
|
44326
|
-
exports.useFilesGridStates = useFilesGridStates;
|
|
44327
|
-
exports.useFilesPrefs = useFilesPrefs;
|
|
44328
|
-
exports.useFilesStore = useFilesStore;
|
|
44329
42935
|
exports.useHasAccountsImport = useHasAccountsImport;
|
|
44330
42936
|
exports.useLaunchWorkflow = useLaunchWorkflow;
|
|
44331
|
-
exports.useMemberLookup = useMemberLookup;
|
|
44332
42937
|
exports.useMessengerRows = useMessengerRows;
|
|
44333
42938
|
exports.useModelPicker = useModelPicker;
|
|
44334
42939
|
exports.useNotificationBellEntry = useNotificationBellEntry;
|
|
@@ -44338,7 +42943,6 @@ exports.useOpenChunk = useOpenChunk;
|
|
|
44338
42943
|
exports.useOpenNotificationTarget = useOpenNotificationTarget;
|
|
44339
42944
|
exports.useOpenWorkspaceActivityTarget = useOpenWorkspaceActivityTarget;
|
|
44340
42945
|
exports.useOpenWorkspaceIcon = useOpenWorkspaceIcon;
|
|
44341
|
-
exports.usePendingFolders = usePendingFolders;
|
|
44342
42946
|
exports.usePendingTaskThread = usePendingTaskThread;
|
|
44343
42947
|
exports.useProjectBillingFocus = useProjectBillingFocus;
|
|
44344
42948
|
exports.useProjectSummaries = useProjectSummaries;
|
|
@@ -44346,7 +42950,6 @@ exports.useProjectSummary = useProjectSummary;
|
|
|
44346
42950
|
exports.useReferralReward = useReferralReward;
|
|
44347
42951
|
exports.useRenderTaskPerson = useRenderTaskPerson;
|
|
44348
42952
|
exports.useReportProblem = useReportProblem;
|
|
44349
|
-
exports.useResolvedDocStatus = useResolvedDocStatus;
|
|
44350
42953
|
exports.useSessionPanelMode = useSessionPanelMode;
|
|
44351
42954
|
exports.useSessionSidebar = useSessionSidebar;
|
|
44352
42955
|
exports.useSkillsEnabled = useSkillsEnabled;
|