@arbidocs/blocks 0.5.121 → 0.5.122
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/{ClippingMediaViewer-B6WG7Q64.cjs → ClippingMediaViewer-IEIBT74X.cjs} +8 -8
- package/dist/{ClippingMediaViewer-B6WG7Q64.cjs.map → ClippingMediaViewer-IEIBT74X.cjs.map} +1 -1
- package/dist/{ClippingPdfViewer-6GCVTV3V.cjs → ClippingPdfViewer-OGYLMVCE.cjs} +5 -5
- package/dist/{ClippingPdfViewer-6GCVTV3V.cjs.map → ClippingPdfViewer-OGYLMVCE.cjs.map} +1 -1
- package/dist/{ConnectedCallDock-DC5V5OUJ.cjs → ConnectedCallDock-XJOYVVAH.cjs} +21 -21
- package/dist/{ConnectedCallDock-DC5V5OUJ.cjs.map → ConnectedCallDock-XJOYVVAH.cjs.map} +1 -1
- package/dist/{ConnectedCallRoom-FQLXWTFB.cjs → ConnectedCallRoom-CUDYAPQK.cjs} +14 -14
- package/dist/{ConnectedCallRoom-FQLXWTFB.cjs.map → ConnectedCallRoom-CUDYAPQK.cjs.map} +1 -1
- package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs → ConnectedNativeDocxComparison-QKHCYD6W.cjs} +16 -16
- package/dist/{ConnectedNativeDocxComparison-4Q5S7VLD.cjs.map → ConnectedNativeDocxComparison-QKHCYD6W.cjs.map} +1 -1
- package/dist/ConnectedPresentation-AU25OW25.cjs +321 -0
- package/dist/ConnectedPresentation-AU25OW25.cjs.map +1 -0
- package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs → ConnectedProductionSetDialog-LHB4VQWC.cjs} +3 -3
- package/dist/{ConnectedProductionSetDialog-4EAY6KAZ.cjs.map → ConnectedProductionSetDialog-LHB4VQWC.cjs.map} +1 -1
- package/dist/{ConnectedSlidesTab-7QDE2CZD.cjs → ConnectedSlidesTab-I75LKKN7.cjs} +40 -38
- package/dist/ConnectedSlidesTab-I75LKKN7.cjs.map +1 -0
- package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs → ConnectedStreamedWordArtifact-AG62232A.cjs} +16 -16
- package/dist/{ConnectedStreamedWordArtifact-FFOQJBOI.cjs.map → ConnectedStreamedWordArtifact-AG62232A.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-SNWVEZ7S.cjs → DocumentReviewCard-M53XFLI2.cjs} +15 -15
- package/dist/{DocumentReviewCard-SNWVEZ7S.cjs.map → DocumentReviewCard-M53XFLI2.cjs.map} +1 -1
- package/dist/{FilesViewerDialog-IZI63FOV.cjs → FilesViewerDialog-4352KIOG.cjs} +50 -49
- package/dist/FilesViewerDialog-4352KIOG.cjs.map +1 -0
- package/dist/{WorkspaceTableView-TEIRB6VJ.cjs → WorkspaceTableView-3XYAV4BV.cjs} +8 -8
- package/dist/{WorkspaceTableView-TEIRB6VJ.cjs.map → WorkspaceTableView-3XYAV4BV.cjs.map} +1 -1
- package/dist/agents/index.cjs +297 -297
- package/dist/{ai-KBYNRNZ6.cjs → ai-IEIR7SC2.cjs} +25 -25
- package/dist/ai-IEIR7SC2.cjs.map +1 -0
- package/dist/calls/index.cjs +121 -121
- package/dist/chat/index.cjs +1 -1
- package/dist/{chunk-NLOETJCB.cjs → chunk-2F57IO7S.cjs} +12 -12
- package/dist/{chunk-NLOETJCB.cjs.map → chunk-2F57IO7S.cjs.map} +1 -1
- package/dist/chunk-2RLA6QO2.cjs +174 -0
- package/dist/chunk-2RLA6QO2.cjs.map +1 -0
- 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-XTR26TNE.cjs → chunk-4TTX6ZNS.cjs} +20 -4
- package/dist/chunk-4TTX6ZNS.cjs.map +1 -0
- package/dist/{chunk-BVAT4EVC.cjs → chunk-5QERK4PK.cjs} +35 -35
- package/dist/{chunk-BVAT4EVC.cjs.map → chunk-5QERK4PK.cjs.map} +1 -1
- package/dist/{chunk-GX2EBMJW.cjs → chunk-6OK7ESTL.cjs} +7 -6
- package/dist/chunk-6OK7ESTL.cjs.map +1 -0
- package/dist/{chunk-C2OICDMI.cjs → chunk-7557LDAN.cjs} +10 -10
- package/dist/{chunk-C2OICDMI.cjs.map → chunk-7557LDAN.cjs.map} +1 -1
- package/dist/{chunk-474GPLCM.cjs → chunk-7L4X6QN2.cjs} +6 -6
- package/dist/{chunk-474GPLCM.cjs.map → chunk-7L4X6QN2.cjs.map} +1 -1
- package/dist/{chunk-52KGMAO5.cjs → chunk-7NLO7ASW.cjs} +15 -15
- package/dist/{chunk-52KGMAO5.cjs.map → chunk-7NLO7ASW.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-W6B3RYTX.cjs → chunk-7PN3YENO.cjs} +4 -4
- package/dist/{chunk-W6B3RYTX.cjs.map → chunk-7PN3YENO.cjs.map} +1 -1
- package/dist/{chunk-734NPQNR.cjs → chunk-ADDQKZ5I.cjs} +4 -4
- package/dist/{chunk-734NPQNR.cjs.map → chunk-ADDQKZ5I.cjs.map} +1 -1
- package/dist/{chunk-JQLWKNJO.cjs → chunk-ALK3PUUB.cjs} +4 -4
- package/dist/{chunk-JQLWKNJO.cjs.map → chunk-ALK3PUUB.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-ENGL7P3I.cjs → chunk-CQQQIZU4.cjs} +27 -27
- package/dist/{chunk-ENGL7P3I.cjs.map → chunk-CQQQIZU4.cjs.map} +1 -1
- package/dist/{chunk-3SCNXNHI.cjs → chunk-E3L5DB5F.cjs} +5 -5
- package/dist/{chunk-3SCNXNHI.cjs.map → chunk-E3L5DB5F.cjs.map} +1 -1
- package/dist/{chunk-VJ5ZLRBD.cjs → chunk-GFUOCGY6.cjs} +8 -3
- package/dist/chunk-GFUOCGY6.cjs.map +1 -0
- package/dist/{chunk-RYVZDFVO.cjs → chunk-JJZOL5MG.cjs} +3 -3
- package/dist/{chunk-RYVZDFVO.cjs.map → chunk-JJZOL5MG.cjs.map} +1 -1
- package/dist/{chunk-QFXILJMJ.cjs → chunk-K4763GD5.cjs} +17 -174
- package/dist/chunk-K4763GD5.cjs.map +1 -0
- package/dist/{chunk-EHP6OH5D.cjs → chunk-KA3F6TIH.cjs} +11 -11
- package/dist/{chunk-EHP6OH5D.cjs.map → chunk-KA3F6TIH.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-4RBQ44RY.cjs → chunk-MLA2BJ2Y.cjs} +28 -28
- package/dist/{chunk-4RBQ44RY.cjs.map → chunk-MLA2BJ2Y.cjs.map} +1 -1
- package/dist/{chunk-DR2AH7JL.cjs → chunk-NG2EE7HR.cjs} +48 -48
- package/dist/{chunk-DR2AH7JL.cjs.map → chunk-NG2EE7HR.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-JZEYHDWJ.cjs → chunk-OHHKBURG.cjs} +76 -76
- package/dist/chunk-OHHKBURG.cjs.map +1 -0
- package/dist/{chunk-AY6EZSZB.cjs → chunk-QG2U2JGX.cjs} +4 -4
- package/dist/{chunk-AY6EZSZB.cjs.map → chunk-QG2U2JGX.cjs.map} +1 -1
- package/dist/{chunk-5534FYXP.cjs → chunk-SDRYSLOX.cjs} +4 -4
- package/dist/{chunk-5534FYXP.cjs.map → chunk-SDRYSLOX.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-EATIFPKP.cjs → chunk-T73BHNQX.cjs} +4 -4
- package/dist/{chunk-EATIFPKP.cjs.map → chunk-T73BHNQX.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-GKVE5JGB.cjs → chunk-UFT22LAB.cjs} +3 -3
- package/dist/{chunk-GKVE5JGB.cjs.map → chunk-UFT22LAB.cjs.map} +1 -1
- package/dist/{chunk-Q3XJUXID.cjs → chunk-USNTRL22.cjs} +215 -199
- package/dist/chunk-USNTRL22.cjs.map +1 -0
- package/dist/{chunk-7VUJGHMY.cjs → chunk-UTJ223TI.cjs} +178 -82
- package/dist/chunk-UTJ223TI.cjs.map +1 -0
- package/dist/{chunk-FKFQCK3C.cjs → chunk-V6MW7B4B.cjs} +4 -4
- package/dist/{chunk-FKFQCK3C.cjs.map → chunk-V6MW7B4B.cjs.map} +1 -1
- package/dist/{chunk-2PZT3J34.cjs → chunk-VWBYE3XY.cjs} +6 -6
- package/dist/{chunk-2PZT3J34.cjs.map → chunk-VWBYE3XY.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-5LTIZ44D.cjs → chunk-WFMWKPGY.cjs} +14 -7
- package/dist/chunk-WFMWKPGY.cjs.map +1 -0
- package/dist/{chunk-KP5AITQ4.cjs → chunk-WRLGLZIA.cjs} +7 -7
- package/dist/{chunk-KP5AITQ4.cjs.map → chunk-WRLGLZIA.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-NAJN32MF.cjs → chunk-XF355M7O.cjs} +13 -13
- package/dist/{chunk-NAJN32MF.cjs.map → chunk-XF355M7O.cjs.map} +1 -1
- package/dist/{chunk-GPX5VC57.cjs → chunk-XGM4VVNV.cjs} +50 -50
- package/dist/{chunk-GPX5VC57.cjs.map → chunk-XGM4VVNV.cjs.map} +1 -1
- package/dist/connect/docx.cjs +19 -19
- package/dist/connect/index.cjs +996 -995
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/viewer.cjs +38 -37
- package/dist/connection/conversation/ConnectedMessage.js +1 -1
- package/dist/connection/conversation/ConnectedMessage.js.map +2 -2
- package/dist/connection/presentation/ConnectedSlidesTab.js +5 -3
- package/dist/connection/presentation/ConnectedSlidesTab.js.map +2 -2
- package/dist/connection/presentation/PresentationPill.js +3 -8
- package/dist/connection/presentation/PresentationPill.js.map +2 -2
- package/dist/connection/presentation/requests.d.ts +5 -0
- package/dist/connection/presentation/requests.js +8 -1
- package/dist/connection/presentation/requests.js.map +2 -2
- package/dist/connection/viewer/ViewerPdfPane.js +4 -1
- package/dist/connection/viewer/ViewerPdfPane.js.map +2 -2
- package/dist/connection/viewer/documentPlace.d.ts +5 -4
- package/dist/connection/viewer/documentPlace.js +2 -2
- package/dist/connection/viewer/documentPlace.js.map +2 -2
- package/dist/connection/viewer/pdf/PdfClipOutlines.d.ts +11 -0
- package/dist/connection/viewer/pdf/PdfClipOutlines.js +42 -0
- package/dist/connection/viewer/pdf/PdfClipOutlines.js.map +7 -0
- package/dist/connection/viewer/pdf/clipOutlines.d.ts +17 -0
- package/dist/connection/viewer/pdf/clipOutlines.js +24 -0
- package/dist/connection/viewer/pdf/clipOutlines.js.map +7 -0
- package/dist/connection/viewer/pdf/passageHighlights.d.ts +2 -0
- package/dist/connection/viewer/pdf/passageHighlights.js +12 -1
- package/dist/connection/viewer/pdf/passageHighlights.js.map +2 -2
- package/dist/connection/viewer/pdf/usePdfClipOutlines.d.ts +7 -0
- package/dist/connection/viewer/pdf/usePdfClipOutlines.js +36 -0
- package/dist/connection/viewer/pdf/usePdfClipOutlines.js.map +7 -0
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.js +11 -2
- package/dist/connection/viewer/pdf/usePdfPassageHighlights.js.map +2 -2
- package/dist/dashboards/index.cjs +1 -1
- package/dist/embed/index.cjs +39 -39
- package/dist/files/index.cjs +224 -224
- package/dist/index.cjs +1597 -1596
- package/dist/index.cjs.map +1 -1
- package/dist/presentation/PresentControls.d.ts +11 -0
- package/dist/presentation/PresentControls.js +117 -0
- package/dist/presentation/PresentControls.js.map +7 -0
- package/dist/presentation/PresenterView.js +36 -5
- package/dist/presentation/PresenterView.js.map +2 -2
- package/dist/presentation/SlidesEditor.js +17 -1
- package/dist/presentation/SlidesEditor.js.map +2 -2
- package/dist/presentation/panel-id.d.ts +12 -2
- package/dist/presentation/panel-id.js +6 -1
- package/dist/presentation/panel-id.js.map +2 -2
- package/dist/presentation/slide-layout.d.ts +5 -1
- package/dist/presentation/slide-layout.js +16 -0
- package/dist/presentation/slide-layout.js.map +2 -2
- package/dist/settings/index.cjs +146 -146
- package/dist/shell/PanelPortal.js +13 -4
- package/dist/shell/PanelPortal.js.map +2 -2
- package/dist/shell/index.cjs +92 -91
- package/dist/shell/panel-windows.js +1 -0
- package/dist/shell/panel-windows.js.map +2 -2
- package/dist/studio/index.cjs +28 -28
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +53 -53
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/ConnectedPresentation-4HLDZDWV.cjs +0 -183
- package/dist/ConnectedPresentation-4HLDZDWV.cjs.map +0 -1
- package/dist/ConnectedSlidesTab-7QDE2CZD.cjs.map +0 -1
- package/dist/FilesViewerDialog-IZI63FOV.cjs.map +0 -1
- package/dist/ai-KBYNRNZ6.cjs.map +0 -1
- package/dist/chunk-5LTIZ44D.cjs.map +0 -1
- package/dist/chunk-7VUJGHMY.cjs.map +0 -1
- package/dist/chunk-GX2EBMJW.cjs.map +0 -1
- package/dist/chunk-JZEYHDWJ.cjs.map +0 -1
- package/dist/chunk-Q3XJUXID.cjs.map +0 -1
- package/dist/chunk-QFXILJMJ.cjs.map +0 -1
- package/dist/chunk-VJ5ZLRBD.cjs.map +0 -1
- package/dist/chunk-XTR26TNE.cjs.map +0 -1
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
var chunkWOOOMTTA_cjs = require('./chunk-WOOOMTTA.cjs');
|
|
5
5
|
var chunkXK4TVJKD_cjs = require('./chunk-XK4TVJKD.cjs');
|
|
6
|
-
var
|
|
7
|
-
require('./chunk-
|
|
6
|
+
var chunk4TTX6ZNS_cjs = require('./chunk-4TTX6ZNS.cjs');
|
|
7
|
+
require('./chunk-GFUOCGY6.cjs');
|
|
8
8
|
var react = require('react');
|
|
9
9
|
var lucideReact = require('lucide-react');
|
|
10
10
|
var ui = require('@arbidocs/react/ui');
|
|
@@ -41,7 +41,7 @@ function ClippingMediaViewer({
|
|
|
41
41
|
const capture = react.useCallback(
|
|
42
42
|
({ rect, aspect }) => {
|
|
43
43
|
const start = kind === "video" ? videoRef.current?.currentTime ?? 0 : void 0;
|
|
44
|
-
|
|
44
|
+
chunk4TTX6ZNS_cjs.usePresentation.getState().addClip({
|
|
45
45
|
kind,
|
|
46
46
|
documentId,
|
|
47
47
|
fileName,
|
|
@@ -51,7 +51,7 @@ function ClippingMediaViewer({
|
|
|
51
51
|
masks: [],
|
|
52
52
|
source: file,
|
|
53
53
|
start,
|
|
54
|
-
caption:
|
|
54
|
+
caption: chunk4TTX6ZNS_cjs.mediaCaption(fileName, start)
|
|
55
55
|
});
|
|
56
56
|
},
|
|
57
57
|
[kind, documentId, fileName, file]
|
|
@@ -128,9 +128,9 @@ function ClippingMediaViewer({
|
|
|
128
128
|
}
|
|
129
129
|
),
|
|
130
130
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-xs tabular-nums text-muted-foreground", children: [
|
|
131
|
-
|
|
131
|
+
chunk4TTX6ZNS_cjs.formatTime(time),
|
|
132
132
|
" / ",
|
|
133
|
-
|
|
133
|
+
chunk4TTX6ZNS_cjs.formatTime(duration)
|
|
134
134
|
] }),
|
|
135
135
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
136
136
|
ui.Button,
|
|
@@ -152,5 +152,5 @@ function ClippingMediaViewer({
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
exports.ClippingMediaViewer = ClippingMediaViewer;
|
|
155
|
-
//# sourceMappingURL=ClippingMediaViewer-
|
|
156
|
-
//# sourceMappingURL=ClippingMediaViewer-
|
|
155
|
+
//# sourceMappingURL=ClippingMediaViewer-IEIBT74X.cjs.map
|
|
156
|
+
//# sourceMappingURL=ClippingMediaViewer-IEIBT74X.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/presentation/ClippingMediaViewer.tsx"],"names":["useObjectUrl","useRef","useState","useEffect","useCallback","usePresentation","mediaCaption","jsxs","jsx","ClipCaptureOverlay","Button","Pause","Play","formatTime","Plus"],"mappings":"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","file":"ClippingMediaViewer-B6WG7Q64.cjs","sourcesContent":["/**\n * An image or a video while clipping for a presentation: drag over it and that area becomes a clip\n * (of a video: from the moment on screen). A video has its own small bar (play / pause, scrub, and\n * \"Add whole frame\"), since the drag area covers the picture.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { Pause, Play, Plus } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\nimport { ClipCaptureOverlay } from '../../presentation/ClipCaptureOverlay'\nimport { formatTime, mediaCaption, type Rect } from '../../presentation/model'\nimport { usePresentation } from '../../presentation/store'\nimport { useObjectUrl } from '../../presentation/useObjectUrl'\n\nexport interface ClippingMediaViewerProps {\n file: Blob\n kind: 'image' | 'video'\n documentId: string\n fileName: string\n}\n\nconst WHOLE: Rect = { x: 0, y: 0, w: 1, h: 1 }\n\nexport function ClippingMediaViewer({\n file,\n kind,\n documentId,\n fileName,\n}: ClippingMediaViewerProps) {\n const url = useObjectUrl(file)\n const videoRef = useRef<HTMLVideoElement>(null)\n const imageRef = useRef<HTMLImageElement>(null)\n // The picture's own width / height, once known.\n const [natural, setNatural] = useState<number | null>(null)\n const [time, setTime] = useState(0)\n const [duration, setDuration] = useState(0)\n const [playing, setPlaying] = useState(false)\n\n // Its size, read as soon as it is known: at once if it already loaded (a cached file can load\n // before any handler is attached), else when it does.\n useEffect(() => {\n const media = videoRef.current ?? imageRef.current\n if (!media || !url) return\n const read = () => {\n const width = media instanceof HTMLVideoElement ? media.videoWidth : media.naturalWidth\n const height = media instanceof HTMLVideoElement ? media.videoHeight : media.naturalHeight\n if (width && height) setNatural(width / height)\n if (media instanceof HTMLVideoElement) setDuration(media.duration || 0)\n }\n read()\n const event = media instanceof HTMLVideoElement ? 'loadedmetadata' : 'load'\n media.addEventListener(event, read)\n return () => media.removeEventListener(event, read)\n }, [url])\n\n const capture = useCallback(\n ({ rect, aspect }: { rect: Rect; aspect: number }) => {\n const start = kind === 'video' ? (videoRef.current?.currentTime ?? 0) : undefined\n usePresentation.getState().addClip({\n kind,\n documentId,\n fileName,\n page: 1,\n rect,\n aspect,\n masks: [],\n source: file,\n start,\n caption: mediaCaption(fileName, start),\n })\n },\n [kind, documentId, fileName, file]\n )\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"clipping-media-viewer\">\n <div className=\"border-b border-border bg-muted px-3 py-1.5 text-xs text-muted-foreground\">\n {kind === 'video'\n ? 'Drag over the video to clip that area from this moment, or add the whole frame.'\n : 'Drag over the part of the image to show it in the presentation.'}\n </div>\n <div className=\"relative min-h-0 flex-1 bg-black\" style={{ containerType: 'size' }}>\n {/* The picture as large as fits, aspect kept; the drag area covers exactly it. */}\n <div\n className=\"absolute inset-0 m-auto\"\n style={\n natural\n ? {\n width: `min(100cqw, calc(100cqh * ${natural}))`,\n height: `min(100cqh, calc(100cqw / ${natural}))`,\n }\n : { width: '100%', height: '100%' }\n }\n >\n {kind === 'video' ? (\n <video\n ref={videoRef}\n src={url}\n playsInline\n preload=\"auto\"\n className=\"block h-full w-full\"\n onTimeUpdate={(event) => setTime(event.currentTarget.currentTime)}\n onPlay={() => setPlaying(true)}\n onPause={() => setPlaying(false)}\n />\n ) : (\n <img\n ref={imageRef}\n src={url}\n alt={fileName}\n draggable={false}\n className=\"block h-full w-full select-none\"\n />\n )}\n {natural && <ClipCaptureOverlay page={1} onCapture={capture} />}\n </div>\n </div>\n {kind === 'video' && (\n <div className=\"flex items-center gap-2 border-t border-border px-3 py-1.5\">\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n className=\"size-8\"\n onClick={() => {\n const v = videoRef.current\n if (!v) return\n if (v.paused) void v.play()\n else v.pause()\n }}\n aria-label={playing ? 'Pause' : 'Play'}\n >\n {playing ? <Pause className=\"size-4\" /> : <Play className=\"size-4\" />}\n </Button>\n <input\n type=\"range\"\n min={0}\n max={duration || 0}\n step={0.1}\n value={time}\n onChange={(event) => {\n const v = videoRef.current\n if (v) v.currentTime = Number(event.target.value)\n }}\n className=\"min-w-0 flex-1\"\n aria-label=\"Position in the video\"\n />\n <span className=\"text-xs tabular-nums text-muted-foreground\">\n {formatTime(time)} / {formatTime(duration)}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={!natural}\n onClick={() => natural && capture({ rect: WHOLE, aspect: natural })}\n data-testid=\"clip-whole-frame\"\n >\n <Plus className=\"mr-1 size-4\" />\n Add whole frame\n </Button>\n </div>\n )}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/connection/presentation/ClippingMediaViewer.tsx"],"names":["useObjectUrl","useRef","useState","useEffect","useCallback","usePresentation","mediaCaption","jsxs","jsx","ClipCaptureOverlay","Button","Pause","Play","formatTime","Plus"],"mappings":"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","file":"ClippingMediaViewer-IEIBT74X.cjs","sourcesContent":["/**\n * An image or a video while clipping for a presentation: drag over it and that area becomes a clip\n * (of a video: from the moment on screen). A video has its own small bar (play / pause, scrub, and\n * \"Add whole frame\"), since the drag area covers the picture.\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { Pause, Play, Plus } from 'lucide-react'\nimport { Button } from '@arbidocs/react/ui'\nimport { ClipCaptureOverlay } from '../../presentation/ClipCaptureOverlay'\nimport { formatTime, mediaCaption, type Rect } from '../../presentation/model'\nimport { usePresentation } from '../../presentation/store'\nimport { useObjectUrl } from '../../presentation/useObjectUrl'\n\nexport interface ClippingMediaViewerProps {\n file: Blob\n kind: 'image' | 'video'\n documentId: string\n fileName: string\n}\n\nconst WHOLE: Rect = { x: 0, y: 0, w: 1, h: 1 }\n\nexport function ClippingMediaViewer({\n file,\n kind,\n documentId,\n fileName,\n}: ClippingMediaViewerProps) {\n const url = useObjectUrl(file)\n const videoRef = useRef<HTMLVideoElement>(null)\n const imageRef = useRef<HTMLImageElement>(null)\n // The picture's own width / height, once known.\n const [natural, setNatural] = useState<number | null>(null)\n const [time, setTime] = useState(0)\n const [duration, setDuration] = useState(0)\n const [playing, setPlaying] = useState(false)\n\n // Its size, read as soon as it is known: at once if it already loaded (a cached file can load\n // before any handler is attached), else when it does.\n useEffect(() => {\n const media = videoRef.current ?? imageRef.current\n if (!media || !url) return\n const read = () => {\n const width = media instanceof HTMLVideoElement ? media.videoWidth : media.naturalWidth\n const height = media instanceof HTMLVideoElement ? media.videoHeight : media.naturalHeight\n if (width && height) setNatural(width / height)\n if (media instanceof HTMLVideoElement) setDuration(media.duration || 0)\n }\n read()\n const event = media instanceof HTMLVideoElement ? 'loadedmetadata' : 'load'\n media.addEventListener(event, read)\n return () => media.removeEventListener(event, read)\n }, [url])\n\n const capture = useCallback(\n ({ rect, aspect }: { rect: Rect; aspect: number }) => {\n const start = kind === 'video' ? (videoRef.current?.currentTime ?? 0) : undefined\n usePresentation.getState().addClip({\n kind,\n documentId,\n fileName,\n page: 1,\n rect,\n aspect,\n masks: [],\n source: file,\n start,\n caption: mediaCaption(fileName, start),\n })\n },\n [kind, documentId, fileName, file]\n )\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"clipping-media-viewer\">\n <div className=\"border-b border-border bg-muted px-3 py-1.5 text-xs text-muted-foreground\">\n {kind === 'video'\n ? 'Drag over the video to clip that area from this moment, or add the whole frame.'\n : 'Drag over the part of the image to show it in the presentation.'}\n </div>\n <div className=\"relative min-h-0 flex-1 bg-black\" style={{ containerType: 'size' }}>\n {/* The picture as large as fits, aspect kept; the drag area covers exactly it. */}\n <div\n className=\"absolute inset-0 m-auto\"\n style={\n natural\n ? {\n width: `min(100cqw, calc(100cqh * ${natural}))`,\n height: `min(100cqh, calc(100cqw / ${natural}))`,\n }\n : { width: '100%', height: '100%' }\n }\n >\n {kind === 'video' ? (\n <video\n ref={videoRef}\n src={url}\n playsInline\n preload=\"auto\"\n className=\"block h-full w-full\"\n onTimeUpdate={(event) => setTime(event.currentTarget.currentTime)}\n onPlay={() => setPlaying(true)}\n onPause={() => setPlaying(false)}\n />\n ) : (\n <img\n ref={imageRef}\n src={url}\n alt={fileName}\n draggable={false}\n className=\"block h-full w-full select-none\"\n />\n )}\n {natural && <ClipCaptureOverlay page={1} onCapture={capture} />}\n </div>\n </div>\n {kind === 'video' && (\n <div className=\"flex items-center gap-2 border-t border-border px-3 py-1.5\">\n <Button\n type=\"button\"\n size=\"icon\"\n variant=\"ghost\"\n className=\"size-8\"\n onClick={() => {\n const v = videoRef.current\n if (!v) return\n if (v.paused) void v.play()\n else v.pause()\n }}\n aria-label={playing ? 'Pause' : 'Play'}\n >\n {playing ? <Pause className=\"size-4\" /> : <Play className=\"size-4\" />}\n </Button>\n <input\n type=\"range\"\n min={0}\n max={duration || 0}\n step={0.1}\n value={time}\n onChange={(event) => {\n const v = videoRef.current\n if (v) v.currentTime = Number(event.target.value)\n }}\n className=\"min-w-0 flex-1\"\n aria-label=\"Position in the video\"\n />\n <span className=\"text-xs tabular-nums text-muted-foreground\">\n {formatTime(time)} / {formatTime(duration)}\n </span>\n <Button\n type=\"button\"\n size=\"sm\"\n variant=\"outline\"\n disabled={!natural}\n onClick={() => natural && capture({ rect: WHOLE, aspect: natural })}\n data-testid=\"clip-whole-frame\"\n >\n <Plus className=\"mr-1 size-4\" />\n Add whole frame\n </Button>\n </div>\n )}\n </div>\n )\n}\n"]}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
var chunkXK4TVJKD_cjs = require('./chunk-XK4TVJKD.cjs');
|
|
5
|
-
var
|
|
6
|
-
require('./chunk-
|
|
5
|
+
var chunk4TTX6ZNS_cjs = require('./chunk-4TTX6ZNS.cjs');
|
|
6
|
+
require('./chunk-GFUOCGY6.cjs');
|
|
7
7
|
var react = require('react');
|
|
8
8
|
var documentTools = require('@arbidocs/react/document-tools');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -50,7 +50,7 @@ function ClippingPdfViewer({
|
|
|
50
50
|
const capture = react.useCallback(
|
|
51
51
|
({ page, rect, aspect }) => {
|
|
52
52
|
if (masks.status !== "ready") return;
|
|
53
|
-
|
|
53
|
+
chunk4TTX6ZNS_cjs.usePresentation.getState().addClip({
|
|
54
54
|
kind: "pdf",
|
|
55
55
|
documentId,
|
|
56
56
|
version,
|
|
@@ -75,5 +75,5 @@ function ClippingPdfViewer({
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
exports.ClippingPdfViewer = ClippingPdfViewer;
|
|
78
|
-
//# sourceMappingURL=ClippingPdfViewer-
|
|
79
|
-
//# sourceMappingURL=ClippingPdfViewer-
|
|
78
|
+
//# sourceMappingURL=ClippingPdfViewer-OGYLMVCE.cjs.map
|
|
79
|
+
//# sourceMappingURL=ClippingPdfViewer-OGYLMVCE.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/presentation/ClippingPdfViewer.tsx"],"names":["useDocumentTools","useState","useEffect","createMarkupStore","jsx","useCallback","usePresentation","ClipCaptureOverlay","jsxs"],"mappings":"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","file":"ClippingPdfViewer-
|
|
1
|
+
{"version":3,"sources":["../src/connection/presentation/ClippingPdfViewer.tsx"],"names":["useDocumentTools","useState","useEffect","createMarkupStore","jsx","useCallback","usePresentation","ClipCaptureOverlay","jsxs"],"mappings":"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","file":"ClippingPdfViewer-OGYLMVCE.cjs","sourcesContent":["/**\n * The PDF while clipping for a presentation: drag over a page and the area becomes a clip in the\n * presentation (and goes on the current slide while that has fewer than two).\n *\n * Redactions are honoured: when the version has markup, its redaction marks (all but rejected\n * ones) are read first and every clip carries those over its area as black masks, so a redacted\n * passage never reaches a shared screen. Clipping waits for them, and stays off if they cannot be\n * read.\n */\n\nimport { useCallback, useEffect, useState, type ComponentType, type ReactNode } from 'react'\nimport { createMarkupStore, useDocumentTools } from '@arbidocs/react/document-tools'\nimport type { PdfViewerProps } from '@arbidocs/react/viewers'\nimport { ClipCaptureOverlay } from '../../presentation/ClipCaptureOverlay'\nimport type { Rect } from '../../presentation/model'\nimport { usePresentation } from '../../presentation/store'\n\ntype MaskState =\n | { status: 'loading' }\n | { status: 'error' }\n | { status: 'ready'; masks: ReadonlyMap<number, Rect[]> }\n\nconst NO_MASKS: MaskState = { status: 'ready', masks: new Map() }\n\n/** The version's redaction rectangles by page; none to read when it has no markup. */\nfunction useRedactionMasks(documentId: string, version: number | undefined, hasMarkup: boolean) {\n const { client } = useDocumentTools()\n const [state, setState] = useState<MaskState>(hasMarkup ? { status: 'loading' } : NO_MASKS)\n useEffect(() => {\n if (!hasMarkup) {\n setState(NO_MASKS)\n return\n }\n let cancelled = false\n setState({ status: 'loading' })\n createMarkupStore({ version, client })\n .load(documentId)\n .then((layer) => {\n if (cancelled) return\n const masks = new Map<number, Rect[]>()\n for (const mark of layer.annotations) {\n if (mark.kind !== 'redaction' || mark.status === 'rejected') continue\n masks.set(mark.page, [...(masks.get(mark.page) ?? []), ...mark.rects])\n }\n setState({ status: 'ready', masks })\n })\n .catch(() => !cancelled && setState({ status: 'error' }))\n return () => {\n cancelled = true\n }\n }, [client, documentId, version, hasMarkup])\n return state\n}\n\nexport interface ClippingPdfViewerProps extends Omit<PdfViewerProps, 'renderPageOverlay'> {\n file: Blob\n documentId: string\n /** The version on screen when it is an older one. */\n version?: number\n fileName: string\n /** The version has markup, which may hold redactions. */\n hasMarkup: boolean\n viewer: ComponentType<PdfViewerProps>\n}\n\nfunction Notice({ children }: { children: ReactNode }) {\n return (\n <div className=\"border-b border-border bg-muted px-3 py-1.5 text-xs text-muted-foreground\">\n {children}\n </div>\n )\n}\n\nexport function ClippingPdfViewer({\n documentId,\n version,\n fileName,\n hasMarkup,\n viewer: Viewer,\n ...viewerProps\n}: ClippingPdfViewerProps) {\n const masks = useRedactionMasks(documentId, version, hasMarkup)\n const file = viewerProps.file\n\n const capture = useCallback(\n ({ page, rect, aspect }: { page: number; rect: Rect; aspect: number }) => {\n if (masks.status !== 'ready') return\n usePresentation.getState().addClip({\n kind: 'pdf',\n documentId,\n version,\n fileName,\n page,\n rect,\n aspect,\n masks: masks.masks.get(page) ?? [],\n source: file,\n })\n // It joins the presentation's tray (the viewer's Presentation pill counts it).\n },\n [masks, documentId, version, fileName, file]\n )\n\n const renderPageOverlay = useCallback(\n ({ pageNumber }: { pageNumber: number }) =>\n masks.status === 'ready' ? (\n <ClipCaptureOverlay page={pageNumber} onCapture={capture} />\n ) : null,\n [masks.status, capture]\n )\n\n return (\n <div className=\"flex h-full min-h-0 flex-col\" data-testid=\"clipping-pdf-viewer\">\n <Notice>\n {masks.status === 'loading'\n ? 'Reading the redactions before clipping…'\n : masks.status === 'error'\n ? \"Couldn't read this document's redactions, so it can't be clipped.\"\n : 'Drag over the part of a page to show it in the presentation.'}\n </Notice>\n <div className=\"min-h-0 flex-1\">\n <Viewer {...viewerProps} renderPageOverlay={renderPageOverlay} />\n </div>\n </div>\n )\n}\n"]}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkNG2EE7HR_cjs = require('./chunk-NG2EE7HR.cjs');
|
|
5
|
+
require('./chunk-VZOOGA47.cjs');
|
|
6
|
+
var chunk7OPOPYV6_cjs = require('./chunk-7OPOPYV6.cjs');
|
|
7
|
+
require('./chunk-OAIOOVFN.cjs');
|
|
8
|
+
var chunkQMIHLJMH_cjs = require('./chunk-QMIHLJMH.cjs');
|
|
9
|
+
require('./chunk-JR2YSBD5.cjs');
|
|
10
|
+
require('./chunk-TMX7YFVM.cjs');
|
|
11
|
+
require('./chunk-3YZKDCWY.cjs');
|
|
12
|
+
require('./chunk-SJSGSHIT.cjs');
|
|
13
|
+
require('./chunk-ZT5MIFLC.cjs');
|
|
5
14
|
require('./chunk-XCKHOXRP.cjs');
|
|
6
15
|
require('./chunk-KLMNCBLY.cjs');
|
|
7
16
|
require('./chunk-KNGZZC4O.cjs');
|
|
@@ -26,21 +35,12 @@ require('./chunk-QGVOT7E4.cjs');
|
|
|
26
35
|
require('./chunk-QRAQZTJE.cjs');
|
|
27
36
|
require('./chunk-UDSHVNU3.cjs');
|
|
28
37
|
require('./chunk-IPSHAMO2.cjs');
|
|
29
|
-
require('./chunk-VZOOGA47.cjs');
|
|
30
|
-
var chunkH5OLHP2U_cjs = require('./chunk-H5OLHP2U.cjs');
|
|
31
|
-
require('./chunk-OAIOOVFN.cjs');
|
|
32
|
-
var chunkQMIHLJMH_cjs = require('./chunk-QMIHLJMH.cjs');
|
|
33
|
-
require('./chunk-JR2YSBD5.cjs');
|
|
34
|
-
require('./chunk-TMX7YFVM.cjs');
|
|
35
38
|
var chunkZBP4ZSAJ_cjs = require('./chunk-ZBP4ZSAJ.cjs');
|
|
36
|
-
require('./chunk-3YZKDCWY.cjs');
|
|
37
|
-
require('./chunk-SJSGSHIT.cjs');
|
|
38
39
|
require('./chunk-PPCATBOY.cjs');
|
|
39
|
-
require('./chunk-ZT5MIFLC.cjs');
|
|
40
|
-
require('./chunk-LJJJ6CYH.cjs');
|
|
41
40
|
require('./chunk-TKHCIHE2.cjs');
|
|
42
41
|
require('./chunk-JDFBEGQO.cjs');
|
|
43
42
|
require('./chunk-ULWRNGGE.cjs');
|
|
43
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
44
44
|
require('./chunk-PLIF5CUV.cjs');
|
|
45
45
|
var react = require('@arbidocs/react');
|
|
46
46
|
var react$1 = require('react');
|
|
@@ -85,7 +85,7 @@ function WebinarHolding({
|
|
|
85
85
|
}) {
|
|
86
86
|
useJoinWhenLive(callExtId, linkVersion, variant === "waiting");
|
|
87
87
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
88
|
-
|
|
88
|
+
chunk7OPOPYV6_cjs.WebinarWaiting,
|
|
89
89
|
{
|
|
90
90
|
variant,
|
|
91
91
|
title,
|
|
@@ -198,7 +198,7 @@ function ConnectedCallDock() {
|
|
|
198
198
|
}, []);
|
|
199
199
|
const minimized = !!active?.minimized;
|
|
200
200
|
const docked = !!active && !minimized;
|
|
201
|
-
const [mirrorSelf] =
|
|
201
|
+
const [mirrorSelf] = chunk7OPOPYV6_cjs.useMirrorSelfView();
|
|
202
202
|
const drag = usePipDrag(setCorner);
|
|
203
203
|
const { data: call, isError: callUnreadable } = react.useCall(active?.callExtId);
|
|
204
204
|
const callKnown = !!call || callUnreadable;
|
|
@@ -260,16 +260,16 @@ function ConnectedCallDock() {
|
|
|
260
260
|
...minimized ? drag.handlers : {},
|
|
261
261
|
children: [
|
|
262
262
|
active.phase !== "connected" && (minimized ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
263
|
-
|
|
263
|
+
chunk7OPOPYV6_cjs.MinimisedCall,
|
|
264
264
|
{
|
|
265
265
|
title,
|
|
266
266
|
onRestore: () => setCallMinimized(false),
|
|
267
267
|
onLeave: endActiveCall
|
|
268
268
|
}
|
|
269
269
|
) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex size-full min-h-0 flex-col", children: [
|
|
270
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
271
|
-
/* @__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(
|
|
272
|
-
|
|
270
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk7OPOPYV6_cjs.CallHeader, { title, onMinimise: () => setCallMinimized(true) }),
|
|
271
|
+
/* @__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(
|
|
272
|
+
chunk7OPOPYV6_cjs.PreJoin,
|
|
273
273
|
{
|
|
274
274
|
initialChoices: react.DEFAULT_JOIN_CHOICES,
|
|
275
275
|
className: "my-auto",
|
|
@@ -294,7 +294,7 @@ function ConnectedCallDock() {
|
|
|
294
294
|
onLeave: endActiveCall
|
|
295
295
|
}
|
|
296
296
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
297
|
-
|
|
297
|
+
chunk7OPOPYV6_cjs.CallStateMessage,
|
|
298
298
|
{
|
|
299
299
|
title: "Waiting for the host to let you in\u2026",
|
|
300
300
|
description: "You will join as soon as someone in the call admits you.",
|
|
@@ -304,7 +304,7 @@ function ConnectedCallDock() {
|
|
|
304
304
|
) })
|
|
305
305
|
] })),
|
|
306
306
|
connected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
307
|
-
|
|
307
|
+
chunkNG2EE7HR_cjs.ConnectedCallRoom,
|
|
308
308
|
{
|
|
309
309
|
tokenResponse: connected,
|
|
310
310
|
e2eeKey: active.key,
|
|
@@ -329,5 +329,5 @@ function ConnectedCallDock() {
|
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
exports.ConnectedCallDock = ConnectedCallDock;
|
|
332
|
-
//# sourceMappingURL=ConnectedCallDock-
|
|
333
|
-
//# sourceMappingURL=ConnectedCallDock-
|
|
332
|
+
//# sourceMappingURL=ConnectedCallDock-XJOYVVAH.cjs.map
|
|
333
|
+
//# sourceMappingURL=ConnectedCallDock-XJOYVVAH.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-DC5V5OUJ.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-XJOYVVAH.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,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkNG2EE7HR_cjs = require('./chunk-NG2EE7HR.cjs');
|
|
5
|
+
require('./chunk-VZOOGA47.cjs');
|
|
6
|
+
require('./chunk-7OPOPYV6.cjs');
|
|
7
|
+
require('./chunk-OAIOOVFN.cjs');
|
|
8
|
+
require('./chunk-QMIHLJMH.cjs');
|
|
9
|
+
require('./chunk-JR2YSBD5.cjs');
|
|
10
|
+
require('./chunk-TMX7YFVM.cjs');
|
|
11
|
+
require('./chunk-3YZKDCWY.cjs');
|
|
12
|
+
require('./chunk-SJSGSHIT.cjs');
|
|
13
|
+
require('./chunk-ZT5MIFLC.cjs');
|
|
5
14
|
require('./chunk-XCKHOXRP.cjs');
|
|
6
15
|
require('./chunk-KLMNCBLY.cjs');
|
|
7
16
|
require('./chunk-KNGZZC4O.cjs');
|
|
@@ -26,28 +35,19 @@ require('./chunk-QGVOT7E4.cjs');
|
|
|
26
35
|
require('./chunk-QRAQZTJE.cjs');
|
|
27
36
|
require('./chunk-UDSHVNU3.cjs');
|
|
28
37
|
require('./chunk-IPSHAMO2.cjs');
|
|
29
|
-
require('./chunk-VZOOGA47.cjs');
|
|
30
|
-
require('./chunk-H5OLHP2U.cjs');
|
|
31
|
-
require('./chunk-OAIOOVFN.cjs');
|
|
32
|
-
require('./chunk-QMIHLJMH.cjs');
|
|
33
|
-
require('./chunk-JR2YSBD5.cjs');
|
|
34
|
-
require('./chunk-TMX7YFVM.cjs');
|
|
35
38
|
require('./chunk-ZBP4ZSAJ.cjs');
|
|
36
|
-
require('./chunk-3YZKDCWY.cjs');
|
|
37
|
-
require('./chunk-SJSGSHIT.cjs');
|
|
38
39
|
require('./chunk-PPCATBOY.cjs');
|
|
39
|
-
require('./chunk-ZT5MIFLC.cjs');
|
|
40
|
-
require('./chunk-LJJJ6CYH.cjs');
|
|
41
40
|
require('./chunk-TKHCIHE2.cjs');
|
|
42
41
|
require('./chunk-JDFBEGQO.cjs');
|
|
43
42
|
require('./chunk-ULWRNGGE.cjs');
|
|
43
|
+
require('./chunk-LJJJ6CYH.cjs');
|
|
44
44
|
require('./chunk-PLIF5CUV.cjs');
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
Object.defineProperty(exports, "ConnectedCallRoom", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunkNG2EE7HR_cjs.ConnectedCallRoom; }
|
|
51
51
|
});
|
|
52
|
-
//# sourceMappingURL=ConnectedCallRoom-
|
|
53
|
-
//# sourceMappingURL=ConnectedCallRoom-
|
|
52
|
+
//# sourceMappingURL=ConnectedCallRoom-CUDYAPQK.cjs.map
|
|
53
|
+
//# sourceMappingURL=ConnectedCallRoom-CUDYAPQK.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedCallRoom-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedCallRoom-CUDYAPQK.cjs"}
|
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkV6MW7B4B_cjs = require('./chunk-V6MW7B4B.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-
|
|
10
|
+
require('./chunk-7557LDAN.cjs');
|
|
11
11
|
require('./chunk-4ONPEVTP.cjs');
|
|
12
12
|
require('./chunk-V3KLUWQQ.cjs');
|
|
13
13
|
require('./chunk-P5AQYC4D.cjs');
|
|
14
|
-
require('./chunk-
|
|
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-RYVZDFVO.cjs');
|
|
19
|
+
require('./chunk-JJZOL5MG.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-ZVEW3JBT.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 chunkV6MW7B4B_cjs.ConnectedNativeDocxComparison; }
|
|
52
52
|
});
|
|
53
|
-
//# sourceMappingURL=ConnectedNativeDocxComparison-
|
|
54
|
-
//# sourceMappingURL=ConnectedNativeDocxComparison-
|
|
53
|
+
//# sourceMappingURL=ConnectedNativeDocxComparison-QKHCYD6W.cjs.map
|
|
54
|
+
//# sourceMappingURL=ConnectedNativeDocxComparison-QKHCYD6W.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedNativeDocxComparison-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ConnectedNativeDocxComparison-QKHCYD6W.cjs"}
|