@arbidocs/blocks 0.5.117 → 0.5.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedCallDock-OZBTU3IT.cjs → ConnectedCallDock-WER7R222.cjs} +20 -20
- package/dist/{ConnectedCallDock-OZBTU3IT.cjs.map → ConnectedCallDock-WER7R222.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-VMZE2NFP.cjs → ConnectedCallRoom-T7OBQTYP.cjs} +13 -13
- package/dist/{ConnectedCallRoom-VMZE2NFP.cjs.map → ConnectedCallRoom-T7OBQTYP.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-7OUKTKYP.cjs → ConnectedNativeDocxComparison-546ILGLW.cjs} +17 -17
- package/dist/{ConnectedNativeDocxComparison-7OUKTKYP.cjs.map → ConnectedNativeDocxComparison-546ILGLW.cjs.map} +1 -1
- package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
- package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
- package/dist/{ConnectedStreamedWordArtifact-7V24ZDAC.cjs → ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs} +17 -17
- package/dist/{ConnectedStreamedWordArtifact-7V24ZDAC.cjs.map → ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-OCPFVMLD.cjs → DocumentReviewCard-ZSBZBGFK.cjs} +15 -15
- package/dist/{DocumentReviewCard-OCPFVMLD.cjs.map → DocumentReviewCard-ZSBZBGFK.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-KLRDIYEH.cjs → FilesViewerDialog-6UKR5WEF.cjs} +44 -44
- package/dist/{FilesViewerDialog-KLRDIYEH.cjs.map → FilesViewerDialog-6UKR5WEF.cjs.map} +1 -1
- package/dist/{WorkspaceTableView-IMAZICIZ.cjs → WorkspaceTableView-J3C6VH4T.cjs} +8 -8
- package/dist/{WorkspaceTableView-IMAZICIZ.cjs.map → WorkspaceTableView-J3C6VH4T.cjs.map} +1 -1
- package/dist/agents/index.cjs +297 -297
- package/dist/{ai-7U4B4CVF.cjs → ai-IM4A23YT.cjs} +24 -24
- package/dist/ai-IM4A23YT.cjs.map +1 -0
- package/dist/calls/index.cjs +121 -121
- package/dist/chat/index.cjs +1 -1
- package/dist/{chunk-Q6DQGGP4.cjs → chunk-325GVZE6.cjs} +3 -3
- package/dist/{chunk-Q6DQGGP4.cjs.map → chunk-325GVZE6.cjs.map} +1 -1
- package/dist/{chunk-LFRNBT2I.cjs → chunk-557MJ4IH.cjs} +20 -20
- package/dist/{chunk-LFRNBT2I.cjs.map → chunk-557MJ4IH.cjs.map} +1 -1
- package/dist/{chunk-JSQQV23D.cjs → chunk-6UTKM5AB.cjs} +3 -3
- package/dist/{chunk-JSQQV23D.cjs.map → chunk-6UTKM5AB.cjs.map} +1 -1
- package/dist/{chunk-H5OLHP2U.cjs → chunk-7OPOPYV6.cjs} +3 -3
- package/dist/{chunk-H5OLHP2U.cjs.map → chunk-7OPOPYV6.cjs.map} +1 -1
- package/dist/{chunk-VBL3SHWX.cjs → chunk-B2HNNG25.cjs} +50 -50
- package/dist/{chunk-VBL3SHWX.cjs.map → chunk-B2HNNG25.cjs.map} +1 -1
- package/dist/{chunk-WW6LXQY6.cjs → chunk-B3LZITVF.cjs} +12 -12
- package/dist/{chunk-WW6LXQY6.cjs.map → chunk-B3LZITVF.cjs.map} +1 -1
- package/dist/{chunk-4VZZWYEC.cjs → chunk-BQ5RIWWT.cjs} +3 -3
- package/dist/{chunk-4VZZWYEC.cjs.map → chunk-BQ5RIWWT.cjs.map} +1 -1
- package/dist/{chunk-MC4F2URI.cjs → chunk-CPG7II4E.cjs} +28 -28
- package/dist/{chunk-MC4F2URI.cjs.map → chunk-CPG7II4E.cjs.map} +1 -1
- package/dist/{chunk-7XT5B2DZ.cjs → chunk-CPR6EHG7.cjs} +47 -47
- package/dist/{chunk-7XT5B2DZ.cjs.map → chunk-CPR6EHG7.cjs.map} +1 -1
- package/dist/{chunk-3U36VYMD.cjs → chunk-DDIW4HLU.cjs} +27 -27
- package/dist/{chunk-3U36VYMD.cjs.map → chunk-DDIW4HLU.cjs.map} +1 -1
- package/dist/{chunk-BKY2LAV2.cjs → chunk-HB2O4THB.cjs} +4 -4
- package/dist/{chunk-BKY2LAV2.cjs.map → chunk-HB2O4THB.cjs.map} +1 -1
- package/dist/{chunk-TDN33HSK.cjs → chunk-KTQOGT2L.cjs} +6 -6
- package/dist/{chunk-TDN33HSK.cjs.map → chunk-KTQOGT2L.cjs.map} +1 -1
- package/dist/{chunk-UUENH4BJ.cjs → chunk-KXIRVKCJ.cjs} +3 -3
- package/dist/{chunk-UUENH4BJ.cjs.map → chunk-KXIRVKCJ.cjs.map} +1 -1
- package/dist/{chunk-E4DUXU5K.cjs → chunk-NIE3N6OM.cjs} +7 -7
- package/dist/{chunk-E4DUXU5K.cjs.map → chunk-NIE3N6OM.cjs.map} +1 -1
- package/dist/{chunk-XKDUPU7B.cjs → chunk-NJCK6V6U.cjs} +4 -4
- package/dist/{chunk-XKDUPU7B.cjs.map → chunk-NJCK6V6U.cjs.map} +1 -1
- package/dist/{chunk-5QUL5BZO.cjs → chunk-NNUK5ZM7.cjs} +4 -4
- package/dist/{chunk-5QUL5BZO.cjs.map → chunk-NNUK5ZM7.cjs.map} +1 -1
- package/dist/{chunk-4NPCDS2X.cjs → chunk-NY3YUCOW.cjs} +3 -3
- package/dist/{chunk-4NPCDS2X.cjs.map → chunk-NY3YUCOW.cjs.map} +1 -1
- package/dist/{chunk-6DCIZA3X.cjs → chunk-OEREKAAP.cjs} +75 -75
- package/dist/{chunk-6DCIZA3X.cjs.map → chunk-OEREKAAP.cjs.map} +1 -1
- package/dist/{chunk-3ODEWSRO.cjs → chunk-P77YTTJ3.cjs} +4 -4
- package/dist/{chunk-3ODEWSRO.cjs.map → chunk-P77YTTJ3.cjs.map} +1 -1
- package/dist/{chunk-OZVDOAXG.cjs → chunk-QHOHDNBU.cjs} +4 -4
- package/dist/{chunk-OZVDOAXG.cjs.map → chunk-QHOHDNBU.cjs.map} +1 -1
- package/dist/{chunk-LYTIQQQ2.cjs → chunk-R7CJEIA5.cjs} +3 -3
- package/dist/{chunk-LYTIQQQ2.cjs.map → chunk-R7CJEIA5.cjs.map} +1 -1
- package/dist/{chunk-D7ICHGWM.cjs → chunk-SB4M3ITT.cjs} +59 -59
- package/dist/{chunk-D7ICHGWM.cjs.map → chunk-SB4M3ITT.cjs.map} +1 -1
- package/dist/{chunk-2W5E62EY.cjs → chunk-SGYSDABK.cjs} +6 -6
- package/dist/{chunk-2W5E62EY.cjs.map → chunk-SGYSDABK.cjs.map} +1 -1
- package/dist/{chunk-UNDQYTRF.cjs → chunk-T23UTIRI.cjs} +6 -6
- package/dist/{chunk-UNDQYTRF.cjs.map → chunk-T23UTIRI.cjs.map} +1 -1
- package/dist/{chunk-E4BLRF2L.cjs → chunk-TDO5UWXF.cjs} +5 -5
- package/dist/{chunk-E4BLRF2L.cjs.map → chunk-TDO5UWXF.cjs.map} +1 -1
- package/dist/{chunk-4IOYQLKG.cjs → chunk-TP5PGWIO.cjs} +3 -3
- package/dist/{chunk-4IOYQLKG.cjs.map → chunk-TP5PGWIO.cjs.map} +1 -1
- package/dist/{chunk-7X3FS5HQ.cjs → chunk-TT4IF52H.cjs} +35 -35
- package/dist/{chunk-7X3FS5HQ.cjs.map → chunk-TT4IF52H.cjs.map} +1 -1
- package/dist/{chunk-VTYJAZDU.cjs → chunk-VGCTYTEW.cjs} +11 -11
- package/dist/{chunk-VTYJAZDU.cjs.map → chunk-VGCTYTEW.cjs.map} +1 -1
- package/dist/{chunk-GQXPNIRE.cjs → chunk-WAV762GP.cjs} +6 -6
- package/dist/{chunk-GQXPNIRE.cjs.map → chunk-WAV762GP.cjs.map} +1 -1
- package/dist/{chunk-MZ2KZXNU.cjs → chunk-WXUU3COI.cjs} +3 -3
- package/dist/{chunk-MZ2KZXNU.cjs.map → chunk-WXUU3COI.cjs.map} +1 -1
- package/dist/{chunk-BW5MF464.cjs → chunk-XKVPSOKP.cjs} +4 -4
- package/dist/{chunk-BW5MF464.cjs.map → chunk-XKVPSOKP.cjs.map} +1 -1
- package/dist/{chunk-57EE6CMW.cjs → chunk-Y24V6HPR.cjs} +15 -15
- package/dist/{chunk-57EE6CMW.cjs.map → chunk-Y24V6HPR.cjs.map} +1 -1
- package/dist/{chunk-7TEUGFIL.cjs → chunk-YGXOKB5Z.cjs} +4 -4
- package/dist/{chunk-7TEUGFIL.cjs.map → chunk-YGXOKB5Z.cjs.map} +1 -1
- package/dist/connect/docx.cjs +20 -20
- package/dist/connect/index.cjs +981 -981
- package/dist/connect/viewer.cjs +33 -33
- package/dist/dashboards/index.cjs +1 -1
- package/dist/embed/index.cjs +38 -38
- package/dist/files/index.cjs +224 -224
- package/dist/index.cjs +1589 -1589
- package/dist/settings/index.cjs +147 -147
- package/dist/shell/index.cjs +90 -90
- package/dist/studio/index.cjs +26 -26
- package/dist/workflow-canvas/index.cjs +54 -54
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-T6K2QYNZ.cjs +1 -1
- package/node_modules/@docx-editor.dev/core/dist/chunk-U4JZVSOE.js +1 -1
- package/package.json +5 -5
- package/dist/ai-7U4B4CVF.cjs.map +0 -1
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkCPR6EHG7_cjs = require('./chunk-CPR6EHG7.cjs');
|
|
5
|
+
var chunk7OPOPYV6_cjs = require('./chunk-7OPOPYV6.cjs');
|
|
6
|
+
require('./chunk-OAIOOVFN.cjs');
|
|
7
|
+
var chunkQMIHLJMH_cjs = require('./chunk-QMIHLJMH.cjs');
|
|
8
|
+
require('./chunk-JR2YSBD5.cjs');
|
|
9
|
+
require('./chunk-TMX7YFVM.cjs');
|
|
10
|
+
require('./chunk-3YZKDCWY.cjs');
|
|
11
|
+
require('./chunk-SJSGSHIT.cjs');
|
|
12
|
+
require('./chunk-ZT5MIFLC.cjs');
|
|
5
13
|
require('./chunk-CJYWHUZR.cjs');
|
|
6
14
|
require('./chunk-KLMNCBLY.cjs');
|
|
7
15
|
require('./chunk-PGJYD67F.cjs');
|
|
@@ -25,20 +33,12 @@ require('./chunk-QGVOT7E4.cjs');
|
|
|
25
33
|
require('./chunk-QRAQZTJE.cjs');
|
|
26
34
|
require('./chunk-UDSHVNU3.cjs');
|
|
27
35
|
require('./chunk-IPSHAMO2.cjs');
|
|
28
|
-
var chunkH5OLHP2U_cjs = require('./chunk-H5OLHP2U.cjs');
|
|
29
|
-
require('./chunk-OAIOOVFN.cjs');
|
|
30
|
-
var chunkQMIHLJMH_cjs = require('./chunk-QMIHLJMH.cjs');
|
|
31
|
-
require('./chunk-JR2YSBD5.cjs');
|
|
32
|
-
require('./chunk-TMX7YFVM.cjs');
|
|
33
36
|
var chunkZBP4ZSAJ_cjs = require('./chunk-ZBP4ZSAJ.cjs');
|
|
34
|
-
require('./chunk-3YZKDCWY.cjs');
|
|
35
|
-
require('./chunk-SJSGSHIT.cjs');
|
|
36
37
|
require('./chunk-PPCATBOY.cjs');
|
|
37
|
-
require('./chunk-ZT5MIFLC.cjs');
|
|
38
|
-
require('./chunk-LJJJ6CYH.cjs');
|
|
39
38
|
require('./chunk-TKHCIHE2.cjs');
|
|
40
39
|
require('./chunk-JDFBEGQO.cjs');
|
|
41
40
|
require('./chunk-ULWRNGGE.cjs');
|
|
41
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
42
42
|
require('./chunk-PLIF5CUV.cjs');
|
|
43
43
|
var react = require('@arbidocs/react');
|
|
44
44
|
var react$1 = require('react');
|
|
@@ -83,7 +83,7 @@ function WebinarHolding({
|
|
|
83
83
|
}) {
|
|
84
84
|
useJoinWhenLive(callExtId, linkVersion, variant === "waiting");
|
|
85
85
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
-
|
|
86
|
+
chunk7OPOPYV6_cjs.WebinarWaiting,
|
|
87
87
|
{
|
|
88
88
|
variant,
|
|
89
89
|
title,
|
|
@@ -196,7 +196,7 @@ function ConnectedCallDock() {
|
|
|
196
196
|
}, []);
|
|
197
197
|
const minimized = !!active?.minimized;
|
|
198
198
|
const docked = !!active && !minimized;
|
|
199
|
-
const [mirrorSelf] =
|
|
199
|
+
const [mirrorSelf] = chunk7OPOPYV6_cjs.useMirrorSelfView();
|
|
200
200
|
const drag = usePipDrag(setCorner);
|
|
201
201
|
const { data: call, isError: callUnreadable } = react.useCall(active?.callExtId);
|
|
202
202
|
const callKnown = !!call || callUnreadable;
|
|
@@ -258,16 +258,16 @@ function ConnectedCallDock() {
|
|
|
258
258
|
...minimized ? drag.handlers : {},
|
|
259
259
|
children: [
|
|
260
260
|
active.phase !== "connected" && (minimized ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
261
|
-
|
|
261
|
+
chunk7OPOPYV6_cjs.MinimisedCall,
|
|
262
262
|
{
|
|
263
263
|
title,
|
|
264
264
|
onRestore: () => setCallMinimized(false),
|
|
265
265
|
onLeave: endActiveCall
|
|
266
266
|
}
|
|
267
267
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex size-full min-h-0 flex-col", children: [
|
|
268
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
269
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-1 overflow-y-auto p-4", children: active.phase === "prejoin" && (audience || !callKnown) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
270
|
-
|
|
268
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk7OPOPYV6_cjs.CallHeader, { title, onMinimise: () => setCallMinimized(true) }),
|
|
269
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-1 overflow-y-auto p-4", children: active.phase === "prejoin" && (audience || !callKnown) ? /* @__PURE__ */ jsxRuntime.jsx(chunk7OPOPYV6_cjs.CallStateMessage, { title: "Joining\u2026", testId: "call-joining" }) : active.phase === "prejoin" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
270
|
+
chunk7OPOPYV6_cjs.PreJoin,
|
|
271
271
|
{
|
|
272
272
|
initialChoices: react.DEFAULT_JOIN_CHOICES,
|
|
273
273
|
className: "my-auto",
|
|
@@ -292,7 +292,7 @@ function ConnectedCallDock() {
|
|
|
292
292
|
onLeave: endActiveCall
|
|
293
293
|
}
|
|
294
294
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
295
|
-
|
|
295
|
+
chunk7OPOPYV6_cjs.CallStateMessage,
|
|
296
296
|
{
|
|
297
297
|
title: "Waiting for the host to let you in\u2026",
|
|
298
298
|
description: "You will join as soon as someone in the call admits you.",
|
|
@@ -302,7 +302,7 @@ function ConnectedCallDock() {
|
|
|
302
302
|
) })
|
|
303
303
|
] })),
|
|
304
304
|
connected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
305
|
-
|
|
305
|
+
chunkCPR6EHG7_cjs.ConnectedCallRoom,
|
|
306
306
|
{
|
|
307
307
|
tokenResponse: connected,
|
|
308
308
|
e2eeKey: active.key,
|
|
@@ -327,5 +327,5 @@ function ConnectedCallDock() {
|
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
exports.ConnectedCallDock = ConnectedCallDock;
|
|
330
|
-
//# sourceMappingURL=ConnectedCallDock-
|
|
331
|
-
//# sourceMappingURL=ConnectedCallDock-
|
|
330
|
+
//# sourceMappingURL=ConnectedCallDock-WER7R222.cjs.map
|
|
331
|
+
//# sourceMappingURL=ConnectedCallDock-WER7R222.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/calls/connected/WebinarHolding.tsx","../src/calls/connected/ConnectedCallDock.tsx"],"names":["useArbi","useRef","useEffect","callSession","joinFromPreJoin","AUDIENCE_CHOICES","onCallEvent","jsx","WebinarWaiting","CallUserPill","useState","useLayoutEffect","nearestCorner","useArbiHost","useCallSession","useCallback","useMirrorSelfView","useCall","rejoinAsAudience","calls","callLink","Fragment","jsxs","cn","MinimisedCall","CallHeader","CallStateMessage","PreJoin","DEFAULT_JOIN_CHOICES","classifyMediaError","Button","ConnectedCallRoom"],"mappings":"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","file":"ConnectedCallDock-OZBTU3IT.cjs","sourcesContent":["/**\n * The audience's holding screens in the call dock: \"Starting soon\" before the host goes live —\n * reading the webinar every few seconds and listening to WS `call.webinar`, then joining by itself\n * — and \"This webinar has ended\" once the host ended it.\n */\n\nimport {\n useArbi,\n onCallEvent,\n callSession,\n joinFromPreJoin,\n AUDIENCE_CHOICES,\n} from '@arbidocs/react'\nimport { useEffect, useRef, type ReactElement } from 'react'\nimport { WebinarWaiting } from '../ui'\nimport { CallUserPill } from './CallUserPill'\n\n/** How often \"Starting soon\" reads the webinar (a link holder gets no WS event). */\nexport const WEBINAR_WAIT_POLL_MS = 5_000\n\n/** Wait for go-live, then join once. */\nfunction useJoinWhenLive(callExtId: string, linkVersion: number, enabled: boolean): void {\n const arbi = useArbi()\n const joined = useRef(false)\n useEffect(() => {\n if (!enabled) return\n joined.current = false\n let stopped = false\n const join = () => {\n if (stopped || joined.current) return\n joined.current = true\n const active = callSession.getState().active\n if (active?.callExtId !== callExtId) return\n void joinFromPreJoin(arbi, active.choices ?? AUDIENCE_CHOICES)\n }\n const poll = () =>\n arbi.calls.webinar\n .get(callExtId, linkVersion)\n .then((s) => s.live && join())\n .catch((err: unknown) => console.warn('[calls] could not read the webinar state', err))\n const id = setInterval(() => void poll(), WEBINAR_WAIT_POLL_MS)\n const off = onCallEvent('call.webinar', (m) => {\n if (m.call_ext_id === callExtId && m.live) join()\n })\n return () => {\n stopped = true\n clearInterval(id)\n off()\n }\n }, [arbi, callExtId, linkVersion, enabled])\n}\n\nexport function WebinarHolding({\n variant,\n callExtId,\n linkVersion,\n title,\n host,\n onLeave,\n}: {\n variant: 'waiting' | 'ended'\n callExtId: string\n linkVersion: number\n title?: string | null\n /** The host (the call's creator), named as a pill. */\n host?: { identity: string; name?: string | null } | null\n onLeave(): void\n}): ReactElement {\n useJoinWhenLive(callExtId, linkVersion, variant === 'waiting')\n return (\n <WebinarWaiting\n variant={variant}\n title={title}\n host={host?.identity ? <CallUserPill identity={host.identity} name={host.name} /> : undefined}\n onLeave={onLeave}\n leaveLabel={variant === 'waiting' ? 'Leave' : 'Close'}\n />\n )\n}\n","/**\n * ConnectedCallDock — where the active call lives. Mount it once (lazily: it pulls LiveKit) while\n * the call session has an active call. Placements of ONE element (so the room never remounts and\n * hangs up):\n * docked → the call panel in the host's right-hand dock, like the document viewer: the host's\n * slot (`calls.useSlot`) reserves the space and this element follows that box. The\n * main pane shows the call's conversation (`calls.showConversation`) — its chat and\n * live transcript.\n * main → a webinar's audience has no conversation beside the call: its viewer takes the\n * host's main slot the same way, the stage large with the Q&A / chat column beside\n * it. Without a host slot the call floats at the right edge (or fills the page).\n * minimised → a small card in a corner (drag it to another), so the user keeps working; another\n * panel taking the dock also minimises the call.\n * Phases: prejoin (device check), knocking (waiting for a host), connected (<CallRoom>). A\n * webinar's audience skips the device check (it cannot publish), waits on \"Starting soon\" before\n * go-live and sees \"This webinar has ended\" after; when the stage changes under someone (moved to\n * the audience, stepped down) the room drops them and they join again at once, with no screen.\n */\n\nimport {\n useArbi,\n callSession,\n classifyMediaError,\n useCall,\n useCallSession,\n callLink,\n joinFromPreJoin,\n rejoinAsAudience,\n AUDIENCE_CHOICES,\n useArbiHost,\n type CallSlotMode,\n DEFAULT_JOIN_CHOICES,\n} from '@arbidocs/react'\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState, type ReactElement } from 'react'\nimport { Button, cn } from '@arbidocs/react/ui'\nimport {\n CallHeader,\n CallStateMessage,\n MinimisedCall,\n PreJoin,\n nearestCorner,\n type PipCorner,\n} from '../ui'\nimport { calls } from '@arbidocs/sdk/browser'\nimport { ConnectedCallRoom } from './ConnectedCallRoom'\nimport { WebinarHolding } from './WebinarHolding'\nimport { useMirrorSelfView } from '../self-view'\n\nconst CORNER_KEY = 'arbi-call-pip-corner'\n\ninterface Rect {\n top: number\n left: number\n width: number\n height: number\n}\n\n/** An element's viewport rectangle, kept current; null while there is none. */\nfunction useRectOf(el: Element | null): Rect | null {\n const [rect, setRect] = useState<Rect | null>(null)\n useLayoutEffect(() => {\n if (!el) {\n setRect(null)\n return\n }\n const measure = () => {\n const r = el.getBoundingClientRect()\n const next =\n r.width > 0 && r.height > 0\n ? { top: r.top, left: r.left, width: r.width, height: r.height }\n : null\n setRect((prev) =>\n prev &&\n next &&\n prev.top === next.top &&\n prev.left === next.left &&\n prev.width === next.width &&\n prev.height === next.height\n ? prev\n : next\n )\n }\n measure()\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(measure) : null\n ro?.observe(el)\n window.addEventListener('resize', measure)\n // Banners, the sidebar and the dock's open animation move the box without resizing it.\n const id = setInterval(measure, 250)\n return () => {\n ro?.disconnect()\n window.removeEventListener('resize', measure)\n clearInterval(id)\n }\n }, [el])\n return rect\n}\n\nfunction readCorner(): PipCorner {\n try {\n const v = localStorage.getItem(CORNER_KEY)\n if (v === 'top-left' || v === 'top-right' || v === 'bottom-left' || v === 'bottom-right')\n return v\n } catch {\n // Storage blocked: the default corner.\n }\n return 'bottom-right'\n}\n\nconst CORNER_CLASS: Record<PipCorner, string> = {\n 'top-left': 'left-4 top-4',\n 'top-right': 'right-4 top-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-right': 'bottom-4 right-4',\n}\n\n/** Drag the minimised card; it settles in the nearest corner. */\nfunction usePipDrag(onCorner: (c: PipCorner) => void) {\n const [offset, setOffset] = useState<{ x: number; y: number } | null>(null)\n const start = useRef<{ x: number; y: number; moved: boolean } | null>(null)\n const onPointerDown = (e: React.PointerEvent<HTMLElement>) => {\n // Buttons keep their clicks; drag by the card's body.\n if (\n e.button !== 0 ||\n (e.target as HTMLElement).closest('button:not([data-testid=\"call-minimised-restore\"])')\n )\n return\n start.current = { x: e.clientX, y: e.clientY, moved: false }\n e.currentTarget.setPointerCapture?.(e.pointerId)\n }\n const onPointerMove = (e: React.PointerEvent<HTMLElement>) => {\n const s = start.current\n if (!s) return\n const dx = e.clientX - s.x\n const dy = e.clientY - s.y\n if (!s.moved && Math.hypot(dx, dy) < 6) return\n s.moved = true\n setOffset({ x: dx, y: dy })\n }\n const onPointerUp = (e: React.PointerEvent<HTMLElement>) => {\n const s = start.current\n start.current = null\n if (!s?.moved) return\n const r = e.currentTarget.getBoundingClientRect()\n onCorner(\n nearestCorner(\n r.left + r.width / 2,\n r.top + r.height / 2,\n window.innerWidth,\n window.innerHeight\n )\n )\n setOffset(null)\n // The drag ended on the card: do not let it count as \"back to the call\".\n const swallow = (ev: Event) => {\n ev.stopPropagation()\n ev.preventDefault()\n }\n window.addEventListener('click', swallow, { capture: true, once: true })\n setTimeout(() => window.removeEventListener('click', swallow, { capture: true }), 0)\n }\n return { offset, handlers: { onPointerDown, onPointerMove, onPointerUp } }\n}\n\n/** A host slot that renders nothing: the call floats. */\nconst noSlot = (): HTMLElement | null => null\n\nexport function ConnectedCallDock(): ReactElement | null {\n const arbi = useArbi()\n const host = useArbiHost().calls\n const useSlot = host?.useSlot ?? noSlot\n const showConversation = host?.showConversation\n const active = useCallSession((s) => s.active)\n const { endActiveCall, updateActiveCall, setCallMinimized } = callSession\n const [joining, setJoining] = useState(false)\n const [corner, setCornerState] = useState<PipCorner>(readCorner)\n const setCorner = useCallback((c: PipCorner) => {\n setCornerState(c)\n try {\n localStorage.setItem(CORNER_KEY, c)\n } catch {\n // Not remembered: fine.\n }\n }, [])\n const minimized = !!active?.minimized\n const docked = !!active && !minimized\n const [mirrorSelf] = useMirrorSelfView()\n const drag = usePipDrag(setCorner)\n\n // A webinar: my role decides the join (the audience skips the device check) and the UI.\n const { data: call, isError: callUnreadable } = useCall(active?.callExtId)\n const callKnown = !!call || callUnreadable\n const webinarRole = call?.mode === 'webinar' ? (call.webinar?.my_role ?? 'attendee') : null\n const audience = webinarRole === 'attendee'\n const phase = active?.phase\n const callExtId = active?.callExtId\n const autoJoined = useRef<string | null>(null)\n useEffect(() => {\n if (phase !== 'prejoin' || !audience || !callExtId || autoJoined.current === callExtId) return\n autoJoined.current = callExtId\n setJoining(true)\n void joinFromPreJoin(arbi, AUDIENCE_CHOICES).finally(() => setJoining(false))\n }, [arbi, phase, audience, callExtId])\n\n /** A room I was in has gone: leave the call, unless it dropped me to join again (webinar stage). */\n const onRoomLeft = useCallback(\n (token: calls.CallTokenResponse) => {\n const current = callSession.getState().active\n if (!current || current.tokenResponse !== token) return // a room already replaced\n if (current.rejoining) void rejoinAsAudience(arbi, current.callExtId)\n else endActiveCall()\n },\n [arbi, endActiveCall]\n )\n /** The host ended the webinar: the audience and panelists see it ended; moderators just close. */\n const onRoomClosed =\n webinarRole && !calls.WEBINAR_MODERATORS.has(webinarRole) && callExtId\n ? () => updateActiveCall(callExtId, { phase: 'webinar-ended', tokenResponse: null })\n : undefined\n\n // The slot: the dock, or the main area for a webinar's audience (the viewer, or its waiting /\n // ended screens). The host's slot is claimed while the call shows; another panel taking it\n // minimises the call; closing the call frees it.\n const [roomViewer, setRoomViewer] = useState(false)\n const slotMode: CallSlotMode = (phase === 'connected' ? roomViewer : audience) ? 'main' : 'docked'\n const minimise = useCallback(() => setCallMinimized(true), [setCallMinimized])\n const slot = useSlot(slotMode, docked, minimise)\n const rect = useRectOf(docked ? slot : null)\n\n // Once connected, the main pane shows the call's conversation (its chat and transcript).\n const shownFor = useRef<string | null>(null)\n // A webinar's audience is not in its meeting chat: nothing to show.\n useEffect(() => {\n // The viewer took the main area (a team member off stage): show it again once back on stage.\n if (roomViewer) shownFor.current = null\n if (active?.phase !== 'connected' || shownFor.current === active.callExtId) return\n if (!callKnown || audience || roomViewer || !showConversation) return\n shownFor.current = active.callExtId\n void showConversation(active)\n }, [active, callKnown, audience, roomViewer, showConversation])\n\n if (!active) return null\n const title = active.title ?? 'Call'\n const connected = active.phase === 'connected' ? active.tokenResponse : null\n const link = callLink(active.callExtId, active.key, active.linkVersion)\n\n return (\n <>\n <section\n aria-label=\"Active call\"\n data-testid=\"call-dock\"\n data-placement={minimized ? 'minimised' : slotMode}\n className={cn(\n 'fixed flex flex-col overflow-hidden bg-background text-foreground',\n minimized\n ? cn(\n 'z-50 w-80 max-w-[calc(100vw-2rem)] cursor-grab touch-none rounded-md border border-border shadow-xl active:cursor-grabbing',\n CORNER_CLASS[corner]\n )\n : cn(\n 'z-40',\n !rect &&\n (slotMode === 'main'\n ? 'inset-0'\n : 'inset-y-0 right-0 w-[min(480px,100vw)] border-l border-border')\n )\n )}\n style={\n minimized\n ? drag.offset\n ? { transform: `translate(${drag.offset.x}px, ${drag.offset.y}px)` }\n : undefined\n : rect\n ? { top: rect.top, left: rect.left, width: rect.width, height: rect.height }\n : undefined\n }\n {...(minimized ? drag.handlers : {})}\n >\n {active.phase !== 'connected' &&\n (minimized ? (\n <MinimisedCall\n title={title}\n onRestore={() => setCallMinimized(false)}\n onLeave={endActiveCall}\n />\n ) : (\n <div className=\"flex size-full min-h-0 flex-col\">\n <CallHeader title={title} onMinimise={() => setCallMinimized(true)} />\n <div className=\"flex min-h-0 flex-1 overflow-y-auto p-4\">\n {active.phase === 'prejoin' && (audience || !callKnown) ? (\n <CallStateMessage title=\"Joining…\" testId=\"call-joining\" />\n ) : active.phase === 'prejoin' ? (\n <PreJoin\n initialChoices={DEFAULT_JOIN_CHOICES}\n className=\"my-auto\"\n busy={joining}\n joinLabel={active.ringOnJoin ? 'Start call' : 'Join'}\n describeError={(err, kind) => classifyMediaError(err, kind)}\n mirror={mirrorSelf}\n onJoin={(choices) => {\n setJoining(true)\n void joinFromPreJoin(arbi, choices).finally(() => setJoining(false))\n }}\n onCancel={endActiveCall}\n />\n ) : active.phase === 'webinar-waiting' || active.phase === 'webinar-ended' ? (\n <WebinarHolding\n variant={active.phase === 'webinar-waiting' ? 'waiting' : 'ended'}\n callExtId={active.callExtId}\n linkVersion={active.linkVersion}\n title={active.title}\n host={\n call?.creator_ext_id\n ? { identity: call.creator_ext_id, name: call.creator_name }\n : null\n }\n onLeave={endActiveCall}\n />\n ) : (\n <CallStateMessage\n title=\"Waiting for the host to let you in…\"\n description=\"You will join as soon as someone in the call admits you.\"\n testId=\"call-knocking\"\n action={\n <Button type=\"button\" variant=\"outline\" onClick={endActiveCall}>\n Cancel\n </Button>\n }\n />\n )}\n </div>\n </div>\n ))}\n {connected && (\n <ConnectedCallRoom\n // A new token is a new room (a webinar rejoin): build it afresh.\n key={`${active.callExtId}:${connected.token}`}\n tokenResponse={connected}\n e2eeKey={active.key}\n choices={active.choices ?? undefined}\n isCreator={active.isCreator}\n lockedWorkspaceExtId={active.lockedWorkspaceExtId}\n title={title}\n startedAt={active.startedAt}\n link={link}\n minimized={minimized}\n onMinimizedChange={setCallMinimized}\n onLeave={() => onRoomLeft(connected)}\n webinarRole={webinarRole}\n onRoomClosed={onRoomClosed}\n onViewerChange={setRoomViewer}\n />\n )}\n </section>\n </>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/calls/connected/WebinarHolding.tsx","../src/calls/connected/ConnectedCallDock.tsx"],"names":["useArbi","useRef","useEffect","callSession","joinFromPreJoin","AUDIENCE_CHOICES","onCallEvent","jsx","WebinarWaiting","CallUserPill","useState","useLayoutEffect","nearestCorner","useArbiHost","useCallSession","useCallback","useMirrorSelfView","useCall","rejoinAsAudience","calls","callLink","Fragment","jsxs","cn","MinimisedCall","CallHeader","CallStateMessage","PreJoin","DEFAULT_JOIN_CHOICES","classifyMediaError","Button","ConnectedCallRoom"],"mappings":"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","file":"ConnectedCallDock-WER7R222.cjs","sourcesContent":["/**\n * The audience's holding screens in the call dock: \"Starting soon\" before the host goes live —\n * reading the webinar every few seconds and listening to WS `call.webinar`, then joining by itself\n * — and \"This webinar has ended\" once the host ended it.\n */\n\nimport {\n useArbi,\n onCallEvent,\n callSession,\n joinFromPreJoin,\n AUDIENCE_CHOICES,\n} from '@arbidocs/react'\nimport { useEffect, useRef, type ReactElement } from 'react'\nimport { WebinarWaiting } from '../ui'\nimport { CallUserPill } from './CallUserPill'\n\n/** How often \"Starting soon\" reads the webinar (a link holder gets no WS event). */\nexport const WEBINAR_WAIT_POLL_MS = 5_000\n\n/** Wait for go-live, then join once. */\nfunction useJoinWhenLive(callExtId: string, linkVersion: number, enabled: boolean): void {\n const arbi = useArbi()\n const joined = useRef(false)\n useEffect(() => {\n if (!enabled) return\n joined.current = false\n let stopped = false\n const join = () => {\n if (stopped || joined.current) return\n joined.current = true\n const active = callSession.getState().active\n if (active?.callExtId !== callExtId) return\n void joinFromPreJoin(arbi, active.choices ?? AUDIENCE_CHOICES)\n }\n const poll = () =>\n arbi.calls.webinar\n .get(callExtId, linkVersion)\n .then((s) => s.live && join())\n .catch((err: unknown) => console.warn('[calls] could not read the webinar state', err))\n const id = setInterval(() => void poll(), WEBINAR_WAIT_POLL_MS)\n const off = onCallEvent('call.webinar', (m) => {\n if (m.call_ext_id === callExtId && m.live) join()\n })\n return () => {\n stopped = true\n clearInterval(id)\n off()\n }\n }, [arbi, callExtId, linkVersion, enabled])\n}\n\nexport function WebinarHolding({\n variant,\n callExtId,\n linkVersion,\n title,\n host,\n onLeave,\n}: {\n variant: 'waiting' | 'ended'\n callExtId: string\n linkVersion: number\n title?: string | null\n /** The host (the call's creator), named as a pill. */\n host?: { identity: string; name?: string | null } | null\n onLeave(): void\n}): ReactElement {\n useJoinWhenLive(callExtId, linkVersion, variant === 'waiting')\n return (\n <WebinarWaiting\n variant={variant}\n title={title}\n host={host?.identity ? <CallUserPill identity={host.identity} name={host.name} /> : undefined}\n onLeave={onLeave}\n leaveLabel={variant === 'waiting' ? 'Leave' : 'Close'}\n />\n )\n}\n","/**\n * ConnectedCallDock — where the active call lives. Mount it once (lazily: it pulls LiveKit) while\n * the call session has an active call. Placements of ONE element (so the room never remounts and\n * hangs up):\n * docked → the call panel in the host's right-hand dock, like the document viewer: the host's\n * slot (`calls.useSlot`) reserves the space and this element follows that box. The\n * main pane shows the call's conversation (`calls.showConversation`) — its chat and\n * live transcript.\n * main → a webinar's audience has no conversation beside the call: its viewer takes the\n * host's main slot the same way, the stage large with the Q&A / chat column beside\n * it. Without a host slot the call floats at the right edge (or fills the page).\n * minimised → a small card in a corner (drag it to another), so the user keeps working; another\n * panel taking the dock also minimises the call.\n * Phases: prejoin (device check), knocking (waiting for a host), connected (<CallRoom>). A\n * webinar's audience skips the device check (it cannot publish), waits on \"Starting soon\" before\n * go-live and sees \"This webinar has ended\" after; when the stage changes under someone (moved to\n * the audience, stepped down) the room drops them and they join again at once, with no screen.\n */\n\nimport {\n useArbi,\n callSession,\n classifyMediaError,\n useCall,\n useCallSession,\n callLink,\n joinFromPreJoin,\n rejoinAsAudience,\n AUDIENCE_CHOICES,\n useArbiHost,\n type CallSlotMode,\n DEFAULT_JOIN_CHOICES,\n} from '@arbidocs/react'\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState, type ReactElement } from 'react'\nimport { Button, cn } from '@arbidocs/react/ui'\nimport {\n CallHeader,\n CallStateMessage,\n MinimisedCall,\n PreJoin,\n nearestCorner,\n type PipCorner,\n} from '../ui'\nimport { calls } from '@arbidocs/sdk/browser'\nimport { ConnectedCallRoom } from './ConnectedCallRoom'\nimport { WebinarHolding } from './WebinarHolding'\nimport { useMirrorSelfView } from '../self-view'\n\nconst CORNER_KEY = 'arbi-call-pip-corner'\n\ninterface Rect {\n top: number\n left: number\n width: number\n height: number\n}\n\n/** An element's viewport rectangle, kept current; null while there is none. */\nfunction useRectOf(el: Element | null): Rect | null {\n const [rect, setRect] = useState<Rect | null>(null)\n useLayoutEffect(() => {\n if (!el) {\n setRect(null)\n return\n }\n const measure = () => {\n const r = el.getBoundingClientRect()\n const next =\n r.width > 0 && r.height > 0\n ? { top: r.top, left: r.left, width: r.width, height: r.height }\n : null\n setRect((prev) =>\n prev &&\n next &&\n prev.top === next.top &&\n prev.left === next.left &&\n prev.width === next.width &&\n prev.height === next.height\n ? prev\n : next\n )\n }\n measure()\n const ro = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(measure) : null\n ro?.observe(el)\n window.addEventListener('resize', measure)\n // Banners, the sidebar and the dock's open animation move the box without resizing it.\n const id = setInterval(measure, 250)\n return () => {\n ro?.disconnect()\n window.removeEventListener('resize', measure)\n clearInterval(id)\n }\n }, [el])\n return rect\n}\n\nfunction readCorner(): PipCorner {\n try {\n const v = localStorage.getItem(CORNER_KEY)\n if (v === 'top-left' || v === 'top-right' || v === 'bottom-left' || v === 'bottom-right')\n return v\n } catch {\n // Storage blocked: the default corner.\n }\n return 'bottom-right'\n}\n\nconst CORNER_CLASS: Record<PipCorner, string> = {\n 'top-left': 'left-4 top-4',\n 'top-right': 'right-4 top-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-right': 'bottom-4 right-4',\n}\n\n/** Drag the minimised card; it settles in the nearest corner. */\nfunction usePipDrag(onCorner: (c: PipCorner) => void) {\n const [offset, setOffset] = useState<{ x: number; y: number } | null>(null)\n const start = useRef<{ x: number; y: number; moved: boolean } | null>(null)\n const onPointerDown = (e: React.PointerEvent<HTMLElement>) => {\n // Buttons keep their clicks; drag by the card's body.\n if (\n e.button !== 0 ||\n (e.target as HTMLElement).closest('button:not([data-testid=\"call-minimised-restore\"])')\n )\n return\n start.current = { x: e.clientX, y: e.clientY, moved: false }\n e.currentTarget.setPointerCapture?.(e.pointerId)\n }\n const onPointerMove = (e: React.PointerEvent<HTMLElement>) => {\n const s = start.current\n if (!s) return\n const dx = e.clientX - s.x\n const dy = e.clientY - s.y\n if (!s.moved && Math.hypot(dx, dy) < 6) return\n s.moved = true\n setOffset({ x: dx, y: dy })\n }\n const onPointerUp = (e: React.PointerEvent<HTMLElement>) => {\n const s = start.current\n start.current = null\n if (!s?.moved) return\n const r = e.currentTarget.getBoundingClientRect()\n onCorner(\n nearestCorner(\n r.left + r.width / 2,\n r.top + r.height / 2,\n window.innerWidth,\n window.innerHeight\n )\n )\n setOffset(null)\n // The drag ended on the card: do not let it count as \"back to the call\".\n const swallow = (ev: Event) => {\n ev.stopPropagation()\n ev.preventDefault()\n }\n window.addEventListener('click', swallow, { capture: true, once: true })\n setTimeout(() => window.removeEventListener('click', swallow, { capture: true }), 0)\n }\n return { offset, handlers: { onPointerDown, onPointerMove, onPointerUp } }\n}\n\n/** A host slot that renders nothing: the call floats. */\nconst noSlot = (): HTMLElement | null => null\n\nexport function ConnectedCallDock(): ReactElement | null {\n const arbi = useArbi()\n const host = useArbiHost().calls\n const useSlot = host?.useSlot ?? noSlot\n const showConversation = host?.showConversation\n const active = useCallSession((s) => s.active)\n const { endActiveCall, updateActiveCall, setCallMinimized } = callSession\n const [joining, setJoining] = useState(false)\n const [corner, setCornerState] = useState<PipCorner>(readCorner)\n const setCorner = useCallback((c: PipCorner) => {\n setCornerState(c)\n try {\n localStorage.setItem(CORNER_KEY, c)\n } catch {\n // Not remembered: fine.\n }\n }, [])\n const minimized = !!active?.minimized\n const docked = !!active && !minimized\n const [mirrorSelf] = useMirrorSelfView()\n const drag = usePipDrag(setCorner)\n\n // A webinar: my role decides the join (the audience skips the device check) and the UI.\n const { data: call, isError: callUnreadable } = useCall(active?.callExtId)\n const callKnown = !!call || callUnreadable\n const webinarRole = call?.mode === 'webinar' ? (call.webinar?.my_role ?? 'attendee') : null\n const audience = webinarRole === 'attendee'\n const phase = active?.phase\n const callExtId = active?.callExtId\n const autoJoined = useRef<string | null>(null)\n useEffect(() => {\n if (phase !== 'prejoin' || !audience || !callExtId || autoJoined.current === callExtId) return\n autoJoined.current = callExtId\n setJoining(true)\n void joinFromPreJoin(arbi, AUDIENCE_CHOICES).finally(() => setJoining(false))\n }, [arbi, phase, audience, callExtId])\n\n /** A room I was in has gone: leave the call, unless it dropped me to join again (webinar stage). */\n const onRoomLeft = useCallback(\n (token: calls.CallTokenResponse) => {\n const current = callSession.getState().active\n if (!current || current.tokenResponse !== token) return // a room already replaced\n if (current.rejoining) void rejoinAsAudience(arbi, current.callExtId)\n else endActiveCall()\n },\n [arbi, endActiveCall]\n )\n /** The host ended the webinar: the audience and panelists see it ended; moderators just close. */\n const onRoomClosed =\n webinarRole && !calls.WEBINAR_MODERATORS.has(webinarRole) && callExtId\n ? () => updateActiveCall(callExtId, { phase: 'webinar-ended', tokenResponse: null })\n : undefined\n\n // The slot: the dock, or the main area for a webinar's audience (the viewer, or its waiting /\n // ended screens). The host's slot is claimed while the call shows; another panel taking it\n // minimises the call; closing the call frees it.\n const [roomViewer, setRoomViewer] = useState(false)\n const slotMode: CallSlotMode = (phase === 'connected' ? roomViewer : audience) ? 'main' : 'docked'\n const minimise = useCallback(() => setCallMinimized(true), [setCallMinimized])\n const slot = useSlot(slotMode, docked, minimise)\n const rect = useRectOf(docked ? slot : null)\n\n // Once connected, the main pane shows the call's conversation (its chat and transcript).\n const shownFor = useRef<string | null>(null)\n // A webinar's audience is not in its meeting chat: nothing to show.\n useEffect(() => {\n // The viewer took the main area (a team member off stage): show it again once back on stage.\n if (roomViewer) shownFor.current = null\n if (active?.phase !== 'connected' || shownFor.current === active.callExtId) return\n if (!callKnown || audience || roomViewer || !showConversation) return\n shownFor.current = active.callExtId\n void showConversation(active)\n }, [active, callKnown, audience, roomViewer, showConversation])\n\n if (!active) return null\n const title = active.title ?? 'Call'\n const connected = active.phase === 'connected' ? active.tokenResponse : null\n const link = callLink(active.callExtId, active.key, active.linkVersion)\n\n return (\n <>\n <section\n aria-label=\"Active call\"\n data-testid=\"call-dock\"\n data-placement={minimized ? 'minimised' : slotMode}\n className={cn(\n 'fixed flex flex-col overflow-hidden bg-background text-foreground',\n minimized\n ? cn(\n 'z-50 w-80 max-w-[calc(100vw-2rem)] cursor-grab touch-none rounded-md border border-border shadow-xl active:cursor-grabbing',\n CORNER_CLASS[corner]\n )\n : cn(\n 'z-40',\n !rect &&\n (slotMode === 'main'\n ? 'inset-0'\n : 'inset-y-0 right-0 w-[min(480px,100vw)] border-l border-border')\n )\n )}\n style={\n minimized\n ? drag.offset\n ? { transform: `translate(${drag.offset.x}px, ${drag.offset.y}px)` }\n : undefined\n : rect\n ? { top: rect.top, left: rect.left, width: rect.width, height: rect.height }\n : undefined\n }\n {...(minimized ? drag.handlers : {})}\n >\n {active.phase !== 'connected' &&\n (minimized ? (\n <MinimisedCall\n title={title}\n onRestore={() => setCallMinimized(false)}\n onLeave={endActiveCall}\n />\n ) : (\n <div className=\"flex size-full min-h-0 flex-col\">\n <CallHeader title={title} onMinimise={() => setCallMinimized(true)} />\n <div className=\"flex min-h-0 flex-1 overflow-y-auto p-4\">\n {active.phase === 'prejoin' && (audience || !callKnown) ? (\n <CallStateMessage title=\"Joining…\" testId=\"call-joining\" />\n ) : active.phase === 'prejoin' ? (\n <PreJoin\n initialChoices={DEFAULT_JOIN_CHOICES}\n className=\"my-auto\"\n busy={joining}\n joinLabel={active.ringOnJoin ? 'Start call' : 'Join'}\n describeError={(err, kind) => classifyMediaError(err, kind)}\n mirror={mirrorSelf}\n onJoin={(choices) => {\n setJoining(true)\n void joinFromPreJoin(arbi, choices).finally(() => setJoining(false))\n }}\n onCancel={endActiveCall}\n />\n ) : active.phase === 'webinar-waiting' || active.phase === 'webinar-ended' ? (\n <WebinarHolding\n variant={active.phase === 'webinar-waiting' ? 'waiting' : 'ended'}\n callExtId={active.callExtId}\n linkVersion={active.linkVersion}\n title={active.title}\n host={\n call?.creator_ext_id\n ? { identity: call.creator_ext_id, name: call.creator_name }\n : null\n }\n onLeave={endActiveCall}\n />\n ) : (\n <CallStateMessage\n title=\"Waiting for the host to let you in…\"\n description=\"You will join as soon as someone in the call admits you.\"\n testId=\"call-knocking\"\n action={\n <Button type=\"button\" variant=\"outline\" onClick={endActiveCall}>\n Cancel\n </Button>\n }\n />\n )}\n </div>\n </div>\n ))}\n {connected && (\n <ConnectedCallRoom\n // A new token is a new room (a webinar rejoin): build it afresh.\n key={`${active.callExtId}:${connected.token}`}\n tokenResponse={connected}\n e2eeKey={active.key}\n choices={active.choices ?? undefined}\n isCreator={active.isCreator}\n lockedWorkspaceExtId={active.lockedWorkspaceExtId}\n title={title}\n startedAt={active.startedAt}\n link={link}\n minimized={minimized}\n onMinimizedChange={setCallMinimized}\n onLeave={() => onRoomLeft(connected)}\n webinarRole={webinarRole}\n onRoomClosed={onRoomClosed}\n onViewerChange={setRoomViewer}\n />\n )}\n </section>\n </>\n )\n}\n"]}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkCPR6EHG7_cjs = require('./chunk-CPR6EHG7.cjs');
|
|
5
|
+
require('./chunk-7OPOPYV6.cjs');
|
|
6
|
+
require('./chunk-OAIOOVFN.cjs');
|
|
7
|
+
require('./chunk-QMIHLJMH.cjs');
|
|
8
|
+
require('./chunk-JR2YSBD5.cjs');
|
|
9
|
+
require('./chunk-TMX7YFVM.cjs');
|
|
10
|
+
require('./chunk-3YZKDCWY.cjs');
|
|
11
|
+
require('./chunk-SJSGSHIT.cjs');
|
|
12
|
+
require('./chunk-ZT5MIFLC.cjs');
|
|
5
13
|
require('./chunk-CJYWHUZR.cjs');
|
|
6
14
|
require('./chunk-KLMNCBLY.cjs');
|
|
7
15
|
require('./chunk-PGJYD67F.cjs');
|
|
@@ -25,27 +33,19 @@ require('./chunk-QGVOT7E4.cjs');
|
|
|
25
33
|
require('./chunk-QRAQZTJE.cjs');
|
|
26
34
|
require('./chunk-UDSHVNU3.cjs');
|
|
27
35
|
require('./chunk-IPSHAMO2.cjs');
|
|
28
|
-
require('./chunk-H5OLHP2U.cjs');
|
|
29
|
-
require('./chunk-OAIOOVFN.cjs');
|
|
30
|
-
require('./chunk-QMIHLJMH.cjs');
|
|
31
|
-
require('./chunk-JR2YSBD5.cjs');
|
|
32
|
-
require('./chunk-TMX7YFVM.cjs');
|
|
33
36
|
require('./chunk-ZBP4ZSAJ.cjs');
|
|
34
|
-
require('./chunk-3YZKDCWY.cjs');
|
|
35
|
-
require('./chunk-SJSGSHIT.cjs');
|
|
36
37
|
require('./chunk-PPCATBOY.cjs');
|
|
37
|
-
require('./chunk-ZT5MIFLC.cjs');
|
|
38
|
-
require('./chunk-LJJJ6CYH.cjs');
|
|
39
38
|
require('./chunk-TKHCIHE2.cjs');
|
|
40
39
|
require('./chunk-JDFBEGQO.cjs');
|
|
41
40
|
require('./chunk-ULWRNGGE.cjs');
|
|
41
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
42
42
|
require('./chunk-PLIF5CUV.cjs');
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
Object.defineProperty(exports, "ConnectedCallRoom", {
|
|
47
47
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkCPR6EHG7_cjs.ConnectedCallRoom; }
|
|
49
49
|
});
|
|
50
|
-
//# sourceMappingURL=ConnectedCallRoom-
|
|
51
|
-
//# sourceMappingURL=ConnectedCallRoom-
|
|
50
|
+
//# sourceMappingURL=ConnectedCallRoom-T7OBQTYP.cjs.map
|
|
51
|
+
//# sourceMappingURL=ConnectedCallRoom-T7OBQTYP.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedCallRoom-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedCallRoom-T7OBQTYP.cjs"}
|
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkQHOHDNBU_cjs = require('./chunk-QHOHDNBU.cjs');
|
|
5
5
|
require('./chunk-COD5ENHK.cjs');
|
|
6
6
|
require('./chunk-2CSLFAGF.cjs');
|
|
7
7
|
require('./chunk-GA5ZO4YA.cjs');
|
|
8
8
|
require('./chunk-VG5XNE4H.cjs');
|
|
9
9
|
require('./chunk-DDWLMYRO.cjs');
|
|
10
|
-
require('./chunk-
|
|
11
|
-
require('./chunk-P5AQYC4D.cjs');
|
|
12
|
-
require('./chunk-GQXPNIRE.cjs');
|
|
10
|
+
require('./chunk-VGCTYTEW.cjs');
|
|
13
11
|
require('./chunk-4ONPEVTP.cjs');
|
|
14
12
|
require('./chunk-V3KLUWQQ.cjs');
|
|
13
|
+
require('./chunk-P5AQYC4D.cjs');
|
|
14
|
+
require('./chunk-WAV762GP.cjs');
|
|
15
15
|
require('./chunk-ZESMRGDV.cjs');
|
|
16
16
|
require('./chunk-UKOYN2WD.cjs');
|
|
17
17
|
require('./chunk-RC25WMVB.cjs');
|
|
18
18
|
require('./chunk-VKH3BEZE.cjs');
|
|
19
|
-
require('./chunk-
|
|
20
|
-
require('./chunk-LYTIQQQ2.cjs');
|
|
19
|
+
require('./chunk-R7CJEIA5.cjs');
|
|
21
20
|
require('./chunk-3YEXZX4H.cjs');
|
|
22
21
|
require('./chunk-4PA6VCCR.cjs');
|
|
23
|
-
require('./chunk-
|
|
22
|
+
require('./chunk-WXUU3COI.cjs');
|
|
24
23
|
require('./chunk-AHDJXIUB.cjs');
|
|
25
|
-
require('./chunk-YVCOQHCE.cjs');
|
|
26
24
|
require('./chunk-RL2HI6NP.cjs');
|
|
27
25
|
require('./chunk-6UZC4XVV.cjs');
|
|
28
|
-
require('./chunk-
|
|
29
|
-
require('./chunk-QRAQZTJE.cjs');
|
|
30
|
-
require('./chunk-UDSHVNU3.cjs');
|
|
26
|
+
require('./chunk-YVCOQHCE.cjs');
|
|
31
27
|
require('./chunk-JV5TVUOU.cjs');
|
|
32
|
-
require('./chunk-IPSHAMO2.cjs');
|
|
33
28
|
require('./chunk-E7TE2WVT.cjs');
|
|
34
29
|
require('./chunk-VZOOGA47.cjs');
|
|
35
30
|
require('./chunk-HQDR43JC.cjs');
|
|
36
31
|
require('./chunk-JR2YSBD5.cjs');
|
|
37
32
|
require('./chunk-3YZKDCWY.cjs');
|
|
38
33
|
require('./chunk-SJSGSHIT.cjs');
|
|
39
|
-
require('./chunk-PPCATBOY.cjs');
|
|
40
34
|
require('./chunk-ZW6FPIFC.cjs');
|
|
41
|
-
require('./chunk-
|
|
35
|
+
require('./chunk-75BNMCUX.cjs');
|
|
36
|
+
require('./chunk-QGVOT7E4.cjs');
|
|
37
|
+
require('./chunk-QRAQZTJE.cjs');
|
|
38
|
+
require('./chunk-UDSHVNU3.cjs');
|
|
39
|
+
require('./chunk-IPSHAMO2.cjs');
|
|
40
|
+
require('./chunk-PPCATBOY.cjs');
|
|
42
41
|
require('./chunk-TKHCIHE2.cjs');
|
|
43
42
|
require('./chunk-JDFBEGQO.cjs');
|
|
44
43
|
require('./chunk-ULWRNGGE.cjs');
|
|
44
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
45
45
|
require('./chunk-PLIF5CUV.cjs');
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
Object.defineProperty(exports, "ConnectedNativeDocxComparison", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkQHOHDNBU_cjs.ConnectedNativeDocxComparison; }
|
|
52
52
|
});
|
|
53
|
-
//# sourceMappingURL=ConnectedNativeDocxComparison-
|
|
54
|
-
//# sourceMappingURL=ConnectedNativeDocxComparison-
|
|
53
|
+
//# sourceMappingURL=ConnectedNativeDocxComparison-546ILGLW.cjs.map
|
|
54
|
+
//# sourceMappingURL=ConnectedNativeDocxComparison-546ILGLW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedNativeDocxComparison-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedNativeDocxComparison-546ILGLW.cjs"}
|
package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs}
RENAMED
|
@@ -7,10 +7,10 @@ var chunkJOUMBLGL_cjs = require('./chunk-JOUMBLGL.cjs');
|
|
|
7
7
|
require('./chunk-JR2YSBD5.cjs');
|
|
8
8
|
require('./chunk-3YZKDCWY.cjs');
|
|
9
9
|
require('./chunk-ZT5MIFLC.cjs');
|
|
10
|
-
require('./chunk-LJJJ6CYH.cjs');
|
|
11
10
|
var chunkTKHCIHE2_cjs = require('./chunk-TKHCIHE2.cjs');
|
|
12
11
|
require('./chunk-JDFBEGQO.cjs');
|
|
13
12
|
require('./chunk-ULWRNGGE.cjs');
|
|
13
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
14
14
|
require('./chunk-PLIF5CUV.cjs');
|
|
15
15
|
var react$1 = require('react');
|
|
16
16
|
var react = require('@arbidocs/react');
|
|
@@ -45,5 +45,5 @@ function ConnectedProductionSetDialog({
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
module.exports = ConnectedProductionSetDialog;
|
|
48
|
-
//# sourceMappingURL=ConnectedProductionSetDialog-
|
|
49
|
-
//# sourceMappingURL=ConnectedProductionSetDialog-
|
|
48
|
+
//# sourceMappingURL=ConnectedProductionSetDialog-LHB4VQWC.cjs.map
|
|
49
|
+
//# sourceMappingURL=ConnectedProductionSetDialog-LHB4VQWC.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/files/ConnectedProductionSetDialog.tsx"],"names":["useArbiSessionState","useDocuments","hrefFor","useBlocksEnvironment","useMemo","ConnectedDocumentToolsProvider","jsx","ProductionSetDialog"],"mappings":";;;;;;;;;;;;;;;;;AAiBe,SAAR,4BAAA,CAA8C;AAAA,EACnD,KAAA;AAAA,EACA;AACF,CAAA,EAAuC;AACrC,EAAA,MAAM,SAAS,KAAA,KAAU,IAAA;AACzB,EAAA,MAAM,mBAAA,GAAsBA,yBAAA,CAAoB,CAAC,CAAA,KAAM,EAAE,mBAAmB,CAAA;AAC5E,EAAA,MAAM,WAAA,GAAcA,yBAAA,CAAoB,CAAC,CAAA,KAAM,EAAE,WAAW,CAAA;AAC5D,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,GAAe,EAAC,KAAMC,kBAAA,EAAa;AACjD,EAAA,MAAM,EAAE,OAAA,EAAAC,QAAAA,EAAQ,GAAIC,sCAAA,EAAqB;AAGzC,EAAA,MAAM,QAAA,GAAWC,eAAA;AAAA,IACf,MAAM,aAAa,MAAA,CAAO,CAAC,QAAQ,mBAAA,CAAoB,QAAA,CAAS,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAChF,CAAC,cAAc,mBAAmB;AAAA,GACpC;AAEA,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,WAAA,EAAa,OAAO,IAAA;AAEpC,EAAA,sCACGC,gDAAA,EAAA,EACC,QAAA,kBAAAC,cAAA;AAAA,IAACC,qCAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS,CAAC,QAAQ,OAAA,EAAQ;AAAA,MACzC,SAAA,EAAW,QAAA;AAAA,MAGX,WAAA,EAAa,CAAC,EAAA,KAAO;AACnB,QAAA,MAAM,SAAS,EAAE,IAAA,EAAM,UAAA,EAAqB,WAAA,EAAa,YAAY,EAAA,EAAG;AACxE,QAAA,OAAO,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAGL,SAAQ,MAAM,CAAA,IAAKA,yBAAA,CAAU,MAAM,CAAC,CAAA,CAAA;AAAA,MACzE;AAAA;AAAA,GACF,EACF,CAAA;AAEJ","file":"ConnectedProductionSetDialog-
|
|
1
|
+
{"version":3,"sources":["../src/connection/files/ConnectedProductionSetDialog.tsx"],"names":["useArbiSessionState","useDocuments","hrefFor","useBlocksEnvironment","useMemo","ConnectedDocumentToolsProvider","jsx","ProductionSetDialog"],"mappings":";;;;;;;;;;;;;;;;;AAiBe,SAAR,4BAAA,CAA8C;AAAA,EACnD,KAAA;AAAA,EACA;AACF,CAAA,EAAuC;AACrC,EAAA,MAAM,SAAS,KAAA,KAAU,IAAA;AACzB,EAAA,MAAM,mBAAA,GAAsBA,yBAAA,CAAoB,CAAC,CAAA,KAAM,EAAE,mBAAmB,CAAA;AAC5E,EAAA,MAAM,WAAA,GAAcA,yBAAA,CAAoB,CAAC,CAAA,KAAM,EAAE,WAAW,CAAA;AAC5D,EAAA,MAAM,EAAE,IAAA,EAAM,YAAA,GAAe,EAAC,KAAMC,kBAAA,EAAa;AACjD,EAAA,MAAM,EAAE,OAAA,EAAAC,QAAAA,EAAQ,GAAIC,sCAAA,EAAqB;AAGzC,EAAA,MAAM,QAAA,GAAWC,eAAA;AAAA,IACf,MAAM,aAAa,MAAA,CAAO,CAAC,QAAQ,mBAAA,CAAoB,QAAA,CAAS,GAAA,CAAI,WAAW,CAAC,CAAA;AAAA,IAChF,CAAC,cAAc,mBAAmB;AAAA,GACpC;AAEA,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,WAAA,EAAa,OAAO,IAAA;AAEpC,EAAA,sCACGC,gDAAA,EAAA,EACC,QAAA,kBAAAC,cAAA;AAAA,IAACC,qCAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,CAAC,IAAA,KAAS,CAAC,QAAQ,OAAA,EAAQ;AAAA,MACzC,SAAA,EAAW,QAAA;AAAA,MAGX,WAAA,EAAa,CAAC,EAAA,KAAO;AACnB,QAAA,MAAM,SAAS,EAAE,IAAA,EAAM,UAAA,EAAqB,WAAA,EAAa,YAAY,EAAA,EAAG;AACxE,QAAA,OAAO,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAAGL,SAAQ,MAAM,CAAA,IAAKA,yBAAA,CAAU,MAAM,CAAC,CAAA,CAAA;AAAA,MACzE;AAAA;AAAA,GACF,EACF,CAAA;AAEJ","file":"ConnectedProductionSetDialog-LHB4VQWC.cjs","sourcesContent":["/**\n * The `productionSet` global dialog: the selected documents (the session's selection, in the order\n * of the documents list) numbered as a production set (`ProductionSetDialog`: Bates labels,\n * optional QR links back to each document, optional index page), downloaded and, unless turned off,\n * saved to the workspace as documents derived from their sources. The API client, uploads, toasts\n * and the list refresh are the connected document tools'; each QR code links to the document\n * through the host's `hrefFor`. Blocks loads it lazily (it brings in pdf-lib when it numbers).\n */\n\nimport { useMemo } from 'react'\nimport { useArbiSessionState, useDocuments } from '@arbidocs/react'\nimport { ProductionSetDialog } from '../../document-tools/production'\nimport { hrefFor as routeHref } from '../../lib/routes'\nimport { useBlocksEnvironment } from '../../provider/environment'\nimport { ConnectedDocumentToolsProvider } from '../viewer/ConnectedDocumentToolsProvider'\nimport type { GlobalDialogProps } from '../dialogs/ConnectedGlobalDialogs'\n\nexport default function ConnectedProductionSetDialog({\n props,\n onClose,\n}: GlobalDialogProps<'productionSet'>) {\n const isOpen = props !== null\n const selectedDocumentIds = useArbiSessionState((s) => s.selectedDocumentIds)\n const workspaceId = useArbiSessionState((s) => s.workspaceId)\n const { data: allDocuments = [] } = useDocuments()\n const { hrefFor } = useBlocksEnvironment()\n\n // Listed in the order of the documents list; the dialog lets the user reorder them.\n const selected = useMemo(\n () => allDocuments.filter((doc) => selectedDocumentIds.includes(doc.external_id)),\n [allDocuments, selectedDocumentIds]\n )\n\n if (!isOpen || !workspaceId) return null\n\n return (\n <ConnectedDocumentToolsProvider>\n <ProductionSetDialog\n open={isOpen}\n onOpenChange={(open) => !open && onClose()}\n documents={selected}\n // The QR code opens the document on this site: the host's link for it (`hrefFor`), else\n // the deep link of the default routes.\n documentUrl={(id) => {\n const target = { kind: 'document' as const, workspaceId, documentId: id }\n return `${window.location.origin}${hrefFor(target) ?? routeHref(target)}`\n }}\n />\n </ConnectedDocumentToolsProvider>\n )\n}\n"]}
|
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkHB2O4THB_cjs = require('./chunk-HB2O4THB.cjs');
|
|
5
5
|
require('./chunk-YGBHY67W.cjs');
|
|
6
6
|
require('./chunk-2CSLFAGF.cjs');
|
|
7
7
|
require('./chunk-GA5ZO4YA.cjs');
|
|
8
8
|
require('./chunk-VG5XNE4H.cjs');
|
|
9
9
|
require('./chunk-DDWLMYRO.cjs');
|
|
10
|
-
require('./chunk-
|
|
11
|
-
require('./chunk-P5AQYC4D.cjs');
|
|
12
|
-
require('./chunk-GQXPNIRE.cjs');
|
|
10
|
+
require('./chunk-VGCTYTEW.cjs');
|
|
13
11
|
require('./chunk-4ONPEVTP.cjs');
|
|
14
12
|
require('./chunk-V3KLUWQQ.cjs');
|
|
13
|
+
require('./chunk-P5AQYC4D.cjs');
|
|
14
|
+
require('./chunk-WAV762GP.cjs');
|
|
15
15
|
require('./chunk-ZESMRGDV.cjs');
|
|
16
16
|
require('./chunk-UKOYN2WD.cjs');
|
|
17
17
|
require('./chunk-RC25WMVB.cjs');
|
|
18
18
|
require('./chunk-VKH3BEZE.cjs');
|
|
19
|
-
require('./chunk-
|
|
20
|
-
require('./chunk-LYTIQQQ2.cjs');
|
|
19
|
+
require('./chunk-R7CJEIA5.cjs');
|
|
21
20
|
require('./chunk-3YEXZX4H.cjs');
|
|
22
21
|
require('./chunk-4PA6VCCR.cjs');
|
|
23
|
-
require('./chunk-
|
|
22
|
+
require('./chunk-WXUU3COI.cjs');
|
|
24
23
|
require('./chunk-AHDJXIUB.cjs');
|
|
25
|
-
require('./chunk-YVCOQHCE.cjs');
|
|
26
24
|
require('./chunk-RL2HI6NP.cjs');
|
|
27
25
|
require('./chunk-6UZC4XVV.cjs');
|
|
28
|
-
require('./chunk-
|
|
29
|
-
require('./chunk-QRAQZTJE.cjs');
|
|
30
|
-
require('./chunk-UDSHVNU3.cjs');
|
|
26
|
+
require('./chunk-YVCOQHCE.cjs');
|
|
31
27
|
require('./chunk-JV5TVUOU.cjs');
|
|
32
|
-
require('./chunk-IPSHAMO2.cjs');
|
|
33
28
|
require('./chunk-E7TE2WVT.cjs');
|
|
34
29
|
require('./chunk-VZOOGA47.cjs');
|
|
35
30
|
require('./chunk-HQDR43JC.cjs');
|
|
36
31
|
require('./chunk-JR2YSBD5.cjs');
|
|
37
32
|
require('./chunk-3YZKDCWY.cjs');
|
|
38
33
|
require('./chunk-SJSGSHIT.cjs');
|
|
39
|
-
require('./chunk-PPCATBOY.cjs');
|
|
40
34
|
require('./chunk-ZW6FPIFC.cjs');
|
|
41
|
-
require('./chunk-
|
|
35
|
+
require('./chunk-75BNMCUX.cjs');
|
|
36
|
+
require('./chunk-QGVOT7E4.cjs');
|
|
37
|
+
require('./chunk-QRAQZTJE.cjs');
|
|
38
|
+
require('./chunk-UDSHVNU3.cjs');
|
|
39
|
+
require('./chunk-IPSHAMO2.cjs');
|
|
40
|
+
require('./chunk-PPCATBOY.cjs');
|
|
42
41
|
require('./chunk-TKHCIHE2.cjs');
|
|
43
42
|
require('./chunk-JDFBEGQO.cjs');
|
|
44
43
|
require('./chunk-ULWRNGGE.cjs');
|
|
44
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
45
45
|
require('./chunk-PLIF5CUV.cjs');
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
Object.defineProperty(exports, "ConnectedStreamedWordArtifact", {
|
|
50
50
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
51
|
+
get: function () { return chunkHB2O4THB_cjs.ConnectedStreamedWordArtifact; }
|
|
52
52
|
});
|
|
53
|
-
//# sourceMappingURL=ConnectedStreamedWordArtifact-
|
|
54
|
-
//# sourceMappingURL=ConnectedStreamedWordArtifact-
|
|
53
|
+
//# sourceMappingURL=ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs.map
|
|
54
|
+
//# sourceMappingURL=ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedStreamedWordArtifact-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedStreamedWordArtifact-S2ZFZLZQ.cjs"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
require('./chunk-
|
|
4
|
+
var chunkCPG7II4E_cjs = require('./chunk-CPG7II4E.cjs');
|
|
5
|
+
require('./chunk-P77YTTJ3.cjs');
|
|
6
6
|
var chunkAEQT2QQX_cjs = require('./chunk-AEQT2QQX.cjs');
|
|
7
|
-
var
|
|
8
|
-
require('./chunk-
|
|
9
|
-
require('./chunk-
|
|
10
|
-
var
|
|
7
|
+
var chunkYGXOKB5Z_cjs = require('./chunk-YGXOKB5Z.cjs');
|
|
8
|
+
require('./chunk-TT4IF52H.cjs');
|
|
9
|
+
require('./chunk-NJCK6V6U.cjs');
|
|
10
|
+
var chunkNNUK5ZM7_cjs = require('./chunk-NNUK5ZM7.cjs');
|
|
11
11
|
require('./chunk-223D4727.cjs');
|
|
12
12
|
require('./chunk-SNUBQMIS.cjs');
|
|
13
13
|
require('./chunk-QQMMCXBP.cjs');
|
|
@@ -25,9 +25,7 @@ require('./chunk-II2OEXHW.cjs');
|
|
|
25
25
|
require('./chunk-4PA6VCCR.cjs');
|
|
26
26
|
require('./chunk-RL2HI6NP.cjs');
|
|
27
27
|
require('./chunk-6UZC4XVV.cjs');
|
|
28
|
-
require('./chunk-UDSHVNU3.cjs');
|
|
29
28
|
require('./chunk-JV5TVUOU.cjs');
|
|
30
|
-
require('./chunk-IPSHAMO2.cjs');
|
|
31
29
|
require('./chunk-E7TE2WVT.cjs');
|
|
32
30
|
require('./chunk-M74FWYNL.cjs');
|
|
33
31
|
require('./chunk-VZOOGA47.cjs');
|
|
@@ -35,6 +33,8 @@ var chunkJR2YSBD5_cjs = require('./chunk-JR2YSBD5.cjs');
|
|
|
35
33
|
require('./chunk-TMX7YFVM.cjs');
|
|
36
34
|
require('./chunk-3YZKDCWY.cjs');
|
|
37
35
|
require('./chunk-SJSGSHIT.cjs');
|
|
36
|
+
require('./chunk-UDSHVNU3.cjs');
|
|
37
|
+
require('./chunk-IPSHAMO2.cjs');
|
|
38
38
|
require('./chunk-PPCATBOY.cjs');
|
|
39
39
|
var chunkTKHCIHE2_cjs = require('./chunk-TKHCIHE2.cjs');
|
|
40
40
|
require('./chunk-JDFBEGQO.cjs');
|
|
@@ -145,7 +145,7 @@ function useReviewColumns({
|
|
|
145
145
|
const [activeId, setActiveId] = react$1.useState(null);
|
|
146
146
|
const [hiddenExpanded, setHiddenExpanded] = react$1.useState(false);
|
|
147
147
|
const sessionGrid = react.useArbiSessionState((state) => state.grid.states[gridId]);
|
|
148
|
-
const ownGrid =
|
|
148
|
+
const ownGrid = chunkYGXOKB5Z_cjs.useFilesGridStates((state) => state.gridStates[gridId]);
|
|
149
149
|
const gridState = sessionGrid ?? ownGrid ?? (gridApi && !gridApi.isDestroyed() ? gridApi.getState?.() : void 0);
|
|
150
150
|
const hiddenColIds = react$1.useMemo(
|
|
151
151
|
() => gridState?.columnVisibility?.hiddenColIds || [],
|
|
@@ -365,7 +365,7 @@ function DocumentReviewCard({
|
|
|
365
365
|
);
|
|
366
366
|
return workspaceUser?.user;
|
|
367
367
|
}, [currentDoc?.created_by_ext_id, workspaceUsers]);
|
|
368
|
-
const canEdit =
|
|
368
|
+
const canEdit = chunkNNUK5ZM7_cjs.canEditDocumentFields(currentDoc, currentUserExtId, workspaceRole ?? null);
|
|
369
369
|
const handleUpdateDocumentField = react$1.useCallback(
|
|
370
370
|
async (field, value) => {
|
|
371
371
|
if (!currentDoc) return;
|
|
@@ -466,7 +466,7 @@ function DocumentReviewCard({
|
|
|
466
466
|
onDragEnd: handleDragEnd,
|
|
467
467
|
children: [
|
|
468
468
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 overflow-y-auto overflow-x-hidden min-h-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 py-2", children: /* @__PURE__ */ jsxRuntime.jsx(chunkDVE6NNZ2_cjs.DroppableContainer, { id: "visible-container", className: "w-full space-y-0.5", children: /* @__PURE__ */ jsxRuntime.jsx(sortable.SortableContext, { items: visibleColumns, strategy: sortable.verticalListSortingStrategy, children: visibleColumnsList.map((col) => {
|
|
469
|
-
const fieldContent =
|
|
469
|
+
const fieldContent = chunkCPG7II4E_cjs.documentFieldContent({
|
|
470
470
|
columnId: col.id,
|
|
471
471
|
doc: currentDoc,
|
|
472
472
|
canEdit,
|
|
@@ -483,7 +483,7 @@ function DocumentReviewCard({
|
|
|
483
483
|
relatedDocs: relatedDocsMap.get(currentDoc.external_id),
|
|
484
484
|
onOpenDocument: onOpenDocumentViewer,
|
|
485
485
|
onDeleteDocument,
|
|
486
|
-
canDeleteRelatedDocument: (doc) =>
|
|
486
|
+
canDeleteRelatedDocument: (doc) => chunkNNUK5ZM7_cjs.canDeleteDocument(doc, currentUserExtId, workspaceRole ?? null),
|
|
487
487
|
onCompareDocuments
|
|
488
488
|
});
|
|
489
489
|
if (!fieldContent) return null;
|
|
@@ -493,7 +493,7 @@ function DocumentReviewCard({
|
|
|
493
493
|
sortableId: col.id,
|
|
494
494
|
label: fieldContent.label,
|
|
495
495
|
icon: fieldContent.icon,
|
|
496
|
-
labelSlot: fieldContent.tag ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
496
|
+
labelSlot: fieldContent.tag ? /* @__PURE__ */ jsxRuntime.jsx(chunkCPG7II4E_cjs.ConnectedTagEntity, { tag: fieldContent.tag, size: "md" }) : void 0,
|
|
497
497
|
"data-testid": `navigator-field-${col.id}`,
|
|
498
498
|
children: fieldContent.children
|
|
499
499
|
},
|
|
@@ -515,5 +515,5 @@ function DocumentReviewCard({
|
|
|
515
515
|
}
|
|
516
516
|
|
|
517
517
|
exports.DocumentReviewCard = DocumentReviewCard;
|
|
518
|
-
//# sourceMappingURL=DocumentReviewCard-
|
|
519
|
-
//# sourceMappingURL=DocumentReviewCard-
|
|
518
|
+
//# sourceMappingURL=DocumentReviewCard-ZSBZBGFK.cjs.map
|
|
519
|
+
//# sourceMappingURL=DocumentReviewCard-ZSBZBGFK.cjs.map
|