@q9labsai/chalk-react 4.1.14 → 4.1.16
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/README.md +23 -1
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/dist/bindings/hooks.d.ts +4 -1
- package/dist/bindings/hooks.d.ts.map +1 -1
- package/dist/{chunk-4X3NFZGL.js → chunk-C7PNVYDZ.js} +9679 -10020
- package/dist/chunk-FFPNO2MY.js +131 -0
- package/dist/chunk-HZ43I4OS.js +138 -0
- package/dist/chunk-RMOJ5DLX.js +1421 -0
- package/dist/chunk-S6OVGZD5.js +3164 -0
- package/dist/chunk-VLAZKVNN.js +182 -0
- package/dist/components/atomic/Avatar.d.ts +4 -0
- package/dist/components/atomic/Avatar.d.ts.map +1 -1
- package/dist/components/atomic/ClassicAvatar.d.ts +1 -1
- package/dist/components/atomic/ClassicAvatar.d.ts.map +1 -1
- package/dist/components/atomic/ClassicReactionBubble.d.ts +2 -1
- package/dist/components/atomic/ClassicReactionBubble.d.ts.map +1 -1
- package/dist/components/atomic/ReactionBubble.d.ts +5 -2
- package/dist/components/atomic/ReactionBubble.d.ts.map +1 -1
- package/dist/components/audio-output/AudioOutput.d.ts +3 -1
- package/dist/components/audio-output/AudioOutput.d.ts.map +1 -1
- package/dist/components/chalk/Chalk.d.ts +3 -1
- package/dist/components/chalk/Chalk.d.ts.map +1 -1
- package/dist/components/composite/ChatPanel.d.ts +24 -1
- package/dist/components/composite/ChatPanel.d.ts.map +1 -1
- package/dist/components/composite/ClassicChatPanel.d.ts +23 -0
- package/dist/components/composite/ClassicChatPanel.d.ts.map +1 -1
- package/dist/components/composite/ClassicMessageBubble.d.ts.map +1 -1
- package/dist/components/composite/ClassicSettingsDialog.d.ts +1 -35
- package/dist/components/composite/ClassicSettingsDialog.d.ts.map +1 -1
- package/dist/components/composite/MessageBubble.d.ts +7 -1
- package/dist/components/composite/MessageBubble.d.ts.map +1 -1
- package/dist/components/composite/ReactionsOverlay.d.ts +13 -0
- package/dist/components/composite/ReactionsOverlay.d.ts.map +1 -1
- package/dist/components/composite/ScreenShareView.d.ts +8 -0
- package/dist/components/composite/ScreenShareView.d.ts.map +1 -1
- package/dist/components/composite/SettingsDialog.d.ts +2 -84
- package/dist/components/composite/SettingsDialog.d.ts.map +1 -1
- package/dist/components/composite/chat-panel-model.d.ts +17 -0
- package/dist/components/composite/chat-panel-model.d.ts.map +1 -1
- package/dist/components/composite/chat-upload-file.d.ts +8 -0
- package/dist/components/composite/chat-upload-file.d.ts.map +1 -0
- package/dist/components/composite/reaction-float.d.ts +2 -0
- package/dist/components/composite/reaction-float.d.ts.map +1 -1
- package/dist/components/composite/settings-dialog-behavior.d.ts +645 -0
- package/dist/components/composite/settings-dialog-behavior.d.ts.map +1 -0
- package/dist/components/composite/use-chat-attachment-previews.d.ts +10 -0
- package/dist/components/composite/use-chat-attachment-previews.d.ts.map +1 -0
- package/dist/components/control-bar/ClassicControlBar.d.ts +2 -1
- package/dist/components/control-bar/ClassicControlBar.d.ts.map +1 -1
- package/dist/components/control-bar/ControlBar.d.ts +8 -26
- package/dist/components/control-bar/ControlBar.d.ts.map +1 -1
- package/dist/components/control-bar/control-bar-behavior.d.ts +123 -0
- package/dist/components/control-bar/control-bar-behavior.d.ts.map +1 -0
- package/dist/components/device-popover/ClassicDevicePopover.d.ts +1 -1
- package/dist/components/device-popover/ClassicDevicePopover.d.ts.map +1 -1
- package/dist/components/device-popover/DevicePopover.d.ts +1 -0
- package/dist/components/device-popover/DevicePopover.d.ts.map +1 -1
- package/dist/components/entrance/Entrance.d.ts +2 -1
- package/dist/components/entrance/Entrance.d.ts.map +1 -1
- package/dist/components/entrance/EntranceDeviceControls.d.ts.map +1 -1
- package/dist/components/feedback/FeedbackDialog.d.ts +12 -0
- package/dist/components/feedback/FeedbackDialog.d.ts.map +1 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +31 -6
- package/dist/components/invite-dialog/ClassicInviteDialog.d.ts.map +1 -1
- package/dist/components/invite-dialog/InviteDialog.d.ts.map +1 -1
- package/dist/components/lazy.d.ts +2 -2
- package/dist/components/lazy.d.ts.map +1 -1
- package/dist/components/offline-actions/OfflineActions.d.ts +17 -0
- package/dist/components/offline-actions/OfflineActions.d.ts.map +1 -0
- package/dist/components/offline-actions/OfflineActionsSetting.d.ts +4 -0
- package/dist/components/offline-actions/OfflineActionsSetting.d.ts.map +1 -0
- package/dist/components/offline-actions/offline-actions-policy.d.ts +4 -0
- package/dist/components/offline-actions/offline-actions-policy.d.ts.map +1 -0
- package/dist/components/participant-tile/ParticipantTile.d.ts +7 -1
- package/dist/components/participant-tile/ParticipantTile.d.ts.map +1 -1
- package/dist/components/participant-tile/TileShell.d.ts +3 -1
- package/dist/components/participant-tile/TileShell.d.ts.map +1 -1
- package/dist/components/participants-panel/ParticipantsPanel.d.ts.map +1 -1
- package/dist/components/reconnecting-overlay/ClassicReconnectingOverlay.d.ts.map +1 -1
- package/dist/components/reconnecting-overlay/ReconnectingNotice.d.ts +6 -0
- package/dist/components/reconnecting-overlay/ReconnectingNotice.d.ts.map +1 -0
- package/dist/components/reconnecting-overlay/ReconnectingOverlay.d.ts +3 -0
- package/dist/components/reconnecting-overlay/ReconnectingOverlay.d.ts.map +1 -1
- package/dist/components/recording-history/RecordingHistoryPanel.d.ts +62 -0
- package/dist/components/recording-history/RecordingHistoryPanel.d.ts.map +1 -0
- package/dist/components/space-header/LayoutMenu.d.ts +1 -499
- package/dist/components/space-header/LayoutMenu.d.ts.map +1 -1
- package/dist/components/space-info-dialog/SpaceInfoContent.d.ts.map +1 -1
- package/dist/components/space-view/ClassicSpaceView.d.ts +1 -1
- package/dist/components/space-view/ClassicSpaceView.d.ts.map +1 -1
- package/dist/components/space-view/RecordingSpaceView.d.ts +26 -0
- package/dist/components/space-view/RecordingSpaceView.d.ts.map +1 -0
- package/dist/components/space-view/SpaceDrawer.d.ts +3 -2
- package/dist/components/space-view/SpaceDrawer.d.ts.map +1 -1
- package/dist/components/space-view/SpacePresentation.d.ts +27 -0
- package/dist/components/space-view/SpacePresentation.d.ts.map +1 -0
- package/dist/components/space-view/SpaceStage.d.ts.map +1 -1
- package/dist/components/space-view/SpaceView.d.ts +2 -0
- package/dist/components/space-view/SpaceView.d.ts.map +1 -1
- package/dist/components/stage/Stage.d.ts +22 -2
- package/dist/components/stage/Stage.d.ts.map +1 -1
- package/dist/components/stage/StageContentTile.d.ts +5 -0
- package/dist/components/stage/StageContentTile.d.ts.map +1 -1
- package/dist/components/stage/StagePager.d.ts +2 -1
- package/dist/components/stage/StagePager.d.ts.map +1 -1
- package/dist/components/stage/stage-items.d.ts +0 -1
- package/dist/components/stage/stage-items.d.ts.map +1 -1
- package/dist/components/transcript-panel/ClassicTranscriptPanel.d.ts +1 -1
- package/dist/components/transcript-panel/ClassicTranscriptPanel.d.ts.map +1 -1
- package/dist/components/transcript-panel/TranscriptPanel.d.ts +2 -25
- package/dist/components/transcript-panel/TranscriptPanel.d.ts.map +1 -1
- package/dist/components/transcript-panel/transcript-panel-behavior.d.ts +84 -0
- package/dist/components/transcript-panel/transcript-panel-behavior.d.ts.map +1 -0
- package/dist/components/whiteboard-view/RecordingWhiteboardView.d.ts +23 -0
- package/dist/components/whiteboard-view/RecordingWhiteboardView.d.ts.map +1 -0
- package/dist/components/whiteboard-view/recording-whiteboard-state.d.ts +31 -0
- package/dist/components/whiteboard-view/recording-whiteboard-state.d.ts.map +1 -0
- package/dist/headless.d.ts +8 -0
- package/dist/headless.d.ts.map +1 -0
- package/dist/headless.js +28 -0
- package/dist/index.d.ts +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -4
- package/dist/internal/useWhiteboardSceneSubscription.d.ts.map +1 -1
- package/dist/public-surface.contract.d.ts +2 -2
- package/dist/public-surface.contract.d.ts.map +1 -1
- package/dist/selectors/space-selectors.d.ts.map +1 -1
- package/dist/test-support/index.d.ts +20 -0
- package/dist/test-support/index.d.ts.map +1 -0
- package/dist/test-support/index.js +508 -0
- package/dist/test-support/preview-client.d.ts +5 -0
- package/dist/test-support/preview-client.d.ts.map +1 -1
- package/dist/test-support/preview-feedback.d.ts +3 -0
- package/dist/test-support/preview-feedback.d.ts.map +1 -0
- package/dist/utils/animated-icon-renderer.d.ts +6 -0
- package/dist/utils/animated-icon-renderer.d.ts.map +1 -0
- package/dist/utils/animated-icon-runtime.d.ts +19 -0
- package/dist/utils/animated-icon-runtime.d.ts.map +1 -0
- package/dist/utils/animated-icons/arrow-left-02.d.ts +11 -0
- package/dist/utils/animated-icons/arrow-left-02.d.ts.map +1 -0
- package/dist/utils/animated-icons/cancel-01.d.ts +11 -0
- package/dist/utils/animated-icons/cancel-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/clock-01.d.ts +11 -0
- package/dist/utils/animated-icons/clock-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/copy-01.d.ts +13 -0
- package/dist/utils/animated-icons/copy-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/crown.d.ts +11 -0
- package/dist/utils/animated-icons/crown.d.ts.map +1 -0
- package/dist/utils/animated-icons/download-01.d.ts +11 -0
- package/dist/utils/animated-icons/download-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/edit-02.d.ts +11 -0
- package/dist/utils/animated-icons/edit-02.d.ts.map +1 -0
- package/dist/utils/animated-icons/home-01.d.ts +11 -0
- package/dist/utils/animated-icons/home-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/image-01.d.ts +13 -0
- package/dist/utils/animated-icons/image-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/index.d.ts +85 -0
- package/dist/utils/animated-icons/index.d.ts.map +1 -0
- package/dist/utils/animated-icons/information-circle.d.ts +11 -0
- package/dist/utils/animated-icons/information-circle.d.ts.map +1 -0
- package/dist/utils/animated-icons/link-01.d.ts +11 -0
- package/dist/utils/animated-icons/link-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/mail-01.d.ts +11 -0
- package/dist/utils/animated-icons/mail-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/maximize-screen.d.ts +11 -0
- package/dist/utils/animated-icons/maximize-screen.d.ts.map +1 -0
- package/dist/utils/animated-icons/message-01.d.ts +11 -0
- package/dist/utils/animated-icons/message-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/mic-01.d.ts +11 -0
- package/dist/utils/animated-icons/mic-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/moon-02.d.ts +11 -0
- package/dist/utils/animated-icons/moon-02.d.ts.map +1 -0
- package/dist/utils/animated-icons/more-horizontal.d.ts +11 -0
- package/dist/utils/animated-icons/more-horizontal.d.ts.map +1 -0
- package/dist/utils/animated-icons/more-vertical.d.ts +11 -0
- package/dist/utils/animated-icons/more-vertical.d.ts.map +1 -0
- package/dist/utils/animated-icons/pause.d.ts +11 -0
- package/dist/utils/animated-icons/pause.d.ts.map +1 -0
- package/dist/utils/animated-icons/pin.d.ts +11 -0
- package/dist/utils/animated-icons/pin.d.ts.map +1 -0
- package/dist/utils/animated-icons/play.d.ts +11 -0
- package/dist/utils/animated-icons/play.d.ts.map +1 -0
- package/dist/utils/animated-icons/plus-sign.d.ts +11 -0
- package/dist/utils/animated-icons/plus-sign.d.ts.map +1 -0
- package/dist/utils/animated-icons/qr-code-01.d.ts +11 -0
- package/dist/utils/animated-icons/qr-code-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/refresh.d.ts +11 -0
- package/dist/utils/animated-icons/refresh.d.ts.map +1 -0
- package/dist/utils/animated-icons/search-01.d.ts +11 -0
- package/dist/utils/animated-icons/search-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/sent.d.ts +11 -0
- package/dist/utils/animated-icons/sent.d.ts.map +1 -0
- package/dist/utils/animated-icons/settings-01.d.ts +11 -0
- package/dist/utils/animated-icons/settings-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/share-08.d.ts +11 -0
- package/dist/utils/animated-icons/share-08.d.ts.map +1 -0
- package/dist/utils/animated-icons/shield-02.d.ts +11 -0
- package/dist/utils/animated-icons/shield-02.d.ts.map +1 -0
- package/dist/utils/animated-icons/smile.d.ts +11 -0
- package/dist/utils/animated-icons/smile.d.ts.map +1 -0
- package/dist/utils/animated-icons/sparkles.d.ts +11 -0
- package/dist/utils/animated-icons/sparkles.d.ts.map +1 -0
- package/dist/utils/animated-icons/star.d.ts +11 -0
- package/dist/utils/animated-icons/star.d.ts.map +1 -0
- package/dist/utils/animated-icons/thumbs-up.d.ts +11 -0
- package/dist/utils/animated-icons/thumbs-up.d.ts.map +1 -0
- package/dist/utils/animated-icons/upload-01.d.ts +11 -0
- package/dist/utils/animated-icons/upload-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/user-add-01.d.ts +11 -0
- package/dist/utils/animated-icons/user-add-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/user-group.d.ts +11 -0
- package/dist/utils/animated-icons/user-group.d.ts.map +1 -0
- package/dist/utils/animated-icons/user-remove-01.d.ts +11 -0
- package/dist/utils/animated-icons/user-remove-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/video-01.d.ts +11 -0
- package/dist/utils/animated-icons/video-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/volume-high.d.ts +11 -0
- package/dist/utils/animated-icons/volume-high.d.ts.map +1 -0
- package/dist/utils/animated-icons/volume-mute-01.d.ts +11 -0
- package/dist/utils/animated-icons/volume-mute-01.d.ts.map +1 -0
- package/dist/utils/animated-icons/zoom-in-area.d.ts +11 -0
- package/dist/utils/animated-icons/zoom-in-area.d.ts.map +1 -0
- package/dist/utils/animated-icons/zoom-out-area.d.ts +11 -0
- package/dist/utils/animated-icons/zoom-out-area.d.ts.map +1 -0
- package/dist/utils/feedback.d.ts +5 -0
- package/dist/utils/feedback.d.ts.map +1 -0
- package/dist/utils/icons.d.ts +42 -42
- package/dist/utils/icons.d.ts.map +1 -1
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +297 -1
- package/package.json +25 -8
- package/dist/chunk-A3L7BOCE.js +0 -210
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
// src/components/stage/stage-layout.ts
|
|
2
|
+
var WIDESCREEN = 16 / 9;
|
|
3
|
+
var CLAMPED_AREA_WEIGHT = 0.85;
|
|
4
|
+
var DEFAULT_GRID_OPTIONS = { gap: 12, minTileWidth: 160, minTileHeight: 120, maxPerPage: 25, minAspect: 3 / 4, maxAspect: 21 / 9 };
|
|
5
|
+
var DEFAULT_SPOTLIGHT_OPTIONS = { gap: 12, stripRatio: 0.18, minStripHeight: 88, maxStripHeight: 168, stripAspect: WIDESCREEN };
|
|
6
|
+
var EMPTY_GEOMETRY = { frames: [], pageCount: 0, perPage: 0 };
|
|
7
|
+
function bestArrangement(box, count, options) {
|
|
8
|
+
let best = { cols: 1, rows: count, tileWidth: 0, tileHeight: 0 };
|
|
9
|
+
let bestScore = 0;
|
|
10
|
+
for (let cols = 1; cols <= count; cols += 1) {
|
|
11
|
+
const rows = Math.ceil(count / cols);
|
|
12
|
+
const cellWidth = (box.width - options.gap * (cols - 1)) / cols;
|
|
13
|
+
const cellHeight = (box.height - options.gap * (rows - 1)) / rows;
|
|
14
|
+
if (cellWidth <= 0 || cellHeight <= 0) continue;
|
|
15
|
+
const cellAspect = cellWidth / cellHeight;
|
|
16
|
+
const clamped = cellAspect > options.maxAspect || cellAspect < options.minAspect;
|
|
17
|
+
const tileWidth = cellAspect > options.maxAspect ? cellHeight * options.maxAspect : cellWidth;
|
|
18
|
+
const tileHeight = cellAspect < options.minAspect ? cellWidth / options.minAspect : cellHeight;
|
|
19
|
+
const score = tileWidth * tileHeight * (clamped ? CLAMPED_AREA_WEIGHT : 1);
|
|
20
|
+
if (score > bestScore) {
|
|
21
|
+
best = { cols, rows, tileWidth, tileHeight };
|
|
22
|
+
bestScore = score;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return best;
|
|
26
|
+
}
|
|
27
|
+
function tilesPerPage(box, count, options) {
|
|
28
|
+
const upper = Math.min(count, Math.max(1, options.maxPerPage));
|
|
29
|
+
for (let size = upper; size > 1; size -= 1) {
|
|
30
|
+
const { tileWidth, tileHeight } = bestArrangement(box, size, options);
|
|
31
|
+
if (tileWidth >= options.minTileWidth && tileHeight >= options.minTileHeight) return size;
|
|
32
|
+
}
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
function round(value) {
|
|
36
|
+
return Math.round(value * 100) / 100;
|
|
37
|
+
}
|
|
38
|
+
function fitGrid(box, ids, options) {
|
|
39
|
+
const count = ids.length;
|
|
40
|
+
if (count === 0) return EMPTY_GEOMETRY;
|
|
41
|
+
if (count === 1) {
|
|
42
|
+
return { frames: [{ id: ids[0], role: "grid", page: 0, x: 0, y: 0, width: box.width, height: box.height }], pageCount: 1, perPage: 1 };
|
|
43
|
+
}
|
|
44
|
+
const perPage = tilesPerPage(box, count, options);
|
|
45
|
+
const pageCount = Math.ceil(count / perPage);
|
|
46
|
+
const arrangement = bestArrangement(box, Math.min(count, perPage), options);
|
|
47
|
+
const { cols, tileWidth, tileHeight } = arrangement;
|
|
48
|
+
const pageStride = box.width + options.gap;
|
|
49
|
+
const frames = [];
|
|
50
|
+
for (let page = 0; page < pageCount; page += 1) {
|
|
51
|
+
const pageIds = ids.slice(page * perPage, (page + 1) * perPage);
|
|
52
|
+
const rows = Math.ceil(pageIds.length / cols);
|
|
53
|
+
const gridHeight = rows * tileHeight + (rows - 1) * options.gap;
|
|
54
|
+
const offsetY = Math.max(0, (box.height - gridHeight) / 2);
|
|
55
|
+
for (let row = 0; row < rows; row += 1) {
|
|
56
|
+
const rowIds = pageIds.slice(row * cols, (row + 1) * cols);
|
|
57
|
+
const rowWidth = rowIds.length * tileWidth + (rowIds.length - 1) * options.gap;
|
|
58
|
+
const offsetX = Math.max(0, (box.width - rowWidth) / 2);
|
|
59
|
+
rowIds.forEach((id, column) => {
|
|
60
|
+
frames.push({
|
|
61
|
+
id,
|
|
62
|
+
role: "grid",
|
|
63
|
+
page,
|
|
64
|
+
x: round(page * pageStride + offsetX + column * (tileWidth + options.gap)),
|
|
65
|
+
y: round(offsetY + row * (tileHeight + options.gap)),
|
|
66
|
+
width: round(tileWidth),
|
|
67
|
+
height: round(tileHeight)
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return { frames, pageCount, perPage };
|
|
73
|
+
}
|
|
74
|
+
function fitSpotlight(box, primaryId, stripIds, options) {
|
|
75
|
+
if (stripIds.length === 0) {
|
|
76
|
+
return { frames: [{ id: primaryId, role: "primary", page: 0, x: 0, y: 0, width: box.width, height: box.height }], pageCount: 1, perPage: 0 };
|
|
77
|
+
}
|
|
78
|
+
const stripHeight = Math.min(options.maxStripHeight, Math.max(options.minStripHeight, box.height * options.stripRatio));
|
|
79
|
+
const tileWidth = stripHeight * options.stripAspect;
|
|
80
|
+
const perPage = Math.max(1, Math.floor((box.width + options.gap) / (tileWidth + options.gap)));
|
|
81
|
+
const pageCount = Math.ceil(stripIds.length / perPage);
|
|
82
|
+
const primaryHeight = Math.max(0, box.height - stripHeight - options.gap);
|
|
83
|
+
const pageStride = box.width + options.gap;
|
|
84
|
+
const stripY = primaryHeight + options.gap;
|
|
85
|
+
const frames = [{ id: primaryId, role: "primary", page: 0, x: 0, y: 0, width: box.width, height: round(primaryHeight) }];
|
|
86
|
+
for (let page = 0; page < pageCount; page += 1) {
|
|
87
|
+
const pageIds = stripIds.slice(page * perPage, (page + 1) * perPage);
|
|
88
|
+
const rowWidth = pageIds.length * tileWidth + (pageIds.length - 1) * options.gap;
|
|
89
|
+
const offsetX = Math.max(0, (box.width - rowWidth) / 2);
|
|
90
|
+
pageIds.forEach((id, column) => {
|
|
91
|
+
frames.push({
|
|
92
|
+
id,
|
|
93
|
+
role: "strip",
|
|
94
|
+
page,
|
|
95
|
+
x: round(page * pageStride + offsetX + column * (tileWidth + options.gap)),
|
|
96
|
+
y: round(stripY),
|
|
97
|
+
width: round(tileWidth),
|
|
98
|
+
height: round(stripHeight)
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return { frames, pageCount, perPage };
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// src/components/stage/stage-items.ts
|
|
106
|
+
var WHITEBOARD_ITEM_ID = "whiteboard";
|
|
107
|
+
var screenShareItemId = (participantId) => `screen-share:${participantId}`;
|
|
108
|
+
function buildStageItems(participants, whiteboardOpen) {
|
|
109
|
+
const items = participants.map((participant) => ({ kind: "participant", id: participant.id, participant }));
|
|
110
|
+
for (const participant of participants) {
|
|
111
|
+
if (participant.isScreenSharing && participant.screenShareTrack) {
|
|
112
|
+
items.push({ kind: "screen-share", id: screenShareItemId(participant.id), participant });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (whiteboardOpen) items.push({ kind: "whiteboard", id: WHITEBOARD_ITEM_ID });
|
|
116
|
+
return items;
|
|
117
|
+
}
|
|
118
|
+
function stabilizeOrder(previousIds, items) {
|
|
119
|
+
const byId = new Map(items.map((item) => [item.id, item]));
|
|
120
|
+
const ordered = [];
|
|
121
|
+
const placed = /* @__PURE__ */ new Set();
|
|
122
|
+
for (const id of previousIds) {
|
|
123
|
+
const item = byId.get(id);
|
|
124
|
+
if (!item || placed.has(id)) continue;
|
|
125
|
+
ordered.push(item);
|
|
126
|
+
placed.add(id);
|
|
127
|
+
}
|
|
128
|
+
for (const item of items) {
|
|
129
|
+
if (placed.has(item.id)) continue;
|
|
130
|
+
ordered.push(item);
|
|
131
|
+
placed.add(item.id);
|
|
132
|
+
}
|
|
133
|
+
return ordered;
|
|
134
|
+
}
|
|
135
|
+
function newestScreenShare(items, seenAt) {
|
|
136
|
+
let newest;
|
|
137
|
+
let newestSeen = -1;
|
|
138
|
+
for (const item of items) {
|
|
139
|
+
if (item.kind !== "screen-share") continue;
|
|
140
|
+
const seen = seenAt.get(item.id) ?? -1;
|
|
141
|
+
if (seen >= newestSeen) {
|
|
142
|
+
newest = item;
|
|
143
|
+
newestSeen = seen;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return newest;
|
|
147
|
+
}
|
|
148
|
+
function participantWhere(items, predicate) {
|
|
149
|
+
return items.find((item) => item.kind === "participant" && predicate(item.participant));
|
|
150
|
+
}
|
|
151
|
+
function choosePrimary(items, context) {
|
|
152
|
+
if (items.length === 0) return null;
|
|
153
|
+
const pinned = context.pinnedId ? items.find((item) => item.id === context.pinnedId) : void 0;
|
|
154
|
+
if (pinned) return pinned;
|
|
155
|
+
const content = () => newestScreenShare(items, context.seenAt) ?? items.find((item) => item.kind === "whiteboard");
|
|
156
|
+
const speaker = () => participantWhere(items, (participant) => participant.isActiveSpeaker === true) ?? participantWhere(items, (participant) => participant.isSpeaking === true) ?? (context.lastSpeakerId ? items.find((item) => item.kind === "participant" && item.id === context.lastSpeakerId) : void 0);
|
|
157
|
+
const ordered = context.layout === "presentation" ? [content, speaker] : [speaker, content];
|
|
158
|
+
for (const pick of ordered) {
|
|
159
|
+
const item = pick();
|
|
160
|
+
if (item) return item;
|
|
161
|
+
}
|
|
162
|
+
return participantWhere(items, (participant) => !participant.isLocal) ?? participantWhere(items, () => true) ?? items[0] ?? null;
|
|
163
|
+
}
|
|
164
|
+
function gridOrder(items, pinnedId) {
|
|
165
|
+
if (!pinnedId) return [...items];
|
|
166
|
+
const pinned = items.find((item) => item.id === pinnedId);
|
|
167
|
+
return pinned ? [pinned, ...items.filter((item) => item.id !== pinnedId)] : [...items];
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
export {
|
|
171
|
+
DEFAULT_GRID_OPTIONS,
|
|
172
|
+
DEFAULT_SPOTLIGHT_OPTIONS,
|
|
173
|
+
EMPTY_GEOMETRY,
|
|
174
|
+
fitGrid,
|
|
175
|
+
fitSpotlight,
|
|
176
|
+
WHITEBOARD_ITEM_ID,
|
|
177
|
+
screenShareItemId,
|
|
178
|
+
buildStageItems,
|
|
179
|
+
stabilizeOrder,
|
|
180
|
+
choosePrimary,
|
|
181
|
+
gridOrder
|
|
182
|
+
};
|
|
@@ -9,6 +9,10 @@ export interface AvatarProps {
|
|
|
9
9
|
style?: React.CSSProperties;
|
|
10
10
|
gradientPreference?: ParticipantGradientPreference;
|
|
11
11
|
generated?: boolean;
|
|
12
|
+
/** Disable autonomous avatar motion for deterministic presentation captures. */
|
|
13
|
+
animated?: boolean;
|
|
14
|
+
/** Stable identity for deterministic Chalk chrome across projection seeks. */
|
|
15
|
+
seed?: number | string;
|
|
12
16
|
}
|
|
13
17
|
export declare const Avatar: React.MemoExoticComponent<(props: AvatarProps) => React.JSX.Element>;
|
|
14
18
|
//# sourceMappingURL=Avatar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,EAA8B,KAAK,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAiB5G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAG5D,OAAO,EAA8B,KAAK,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAiB5G,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,kBAAkB,CAAC,EAAE,6BAA6B,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB;AAkBD,eAAO,MAAM,MAAM,oCAAsB,WAAW,uBAIlD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import type { AvatarProps } from "./Avatar";
|
|
3
|
-
export declare const ClassicAvatar: React.MemoExoticComponent<({ name, src, size, status, className, style, gradientPreference, generated }: AvatarProps) => React.JSX.Element>;
|
|
3
|
+
export declare const ClassicAvatar: React.MemoExoticComponent<({ name, src, size, status, className, style, gradientPreference, generated, animated }: AvatarProps) => React.JSX.Element>;
|
|
4
4
|
//# sourceMappingURL=ClassicAvatar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/ClassicAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAI5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA8B5C,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"ClassicAvatar.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/ClassicAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAI5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AA8B5C,eAAO,MAAM,aAAa,qHAA4H,WAAW,uBAqC/J,CAAC"}
|
|
@@ -4,8 +4,9 @@ interface ReactionBubbleProps {
|
|
|
4
4
|
participantName?: string;
|
|
5
5
|
onComplete?: () => void;
|
|
6
6
|
duration?: number;
|
|
7
|
+
animated?: boolean;
|
|
7
8
|
className?: string;
|
|
8
9
|
}
|
|
9
|
-
export declare const ClassicReactionBubble: React.MemoExoticComponent<({ emoji, participantName, onComplete, duration: baseDuration, className }: ReactionBubbleProps) => React.JSX.Element | null>;
|
|
10
|
+
export declare const ClassicReactionBubble: React.MemoExoticComponent<({ emoji, participantName, onComplete, duration: baseDuration, animated, className }: ReactionBubbleProps) => React.JSX.Element | null>;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=ClassicReactionBubble.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicReactionBubble.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/ClassicReactionBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ClassicReactionBubble.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/ClassicReactionBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAM5D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD,eAAO,MAAM,qBAAqB,kHAAkH,mBAAmB,8BAmDrK,CAAC"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
interface ReactionBubbleProps {
|
|
2
|
+
export interface ReactionBubbleProps {
|
|
3
3
|
emoji: string;
|
|
4
4
|
participantName?: string;
|
|
5
5
|
onComplete?: () => void;
|
|
6
6
|
duration?: number;
|
|
7
|
+
/** Disable timers and motion for deterministic presentation frames. */
|
|
8
|
+
animated?: boolean;
|
|
9
|
+
/** Stable reaction identity for deterministic Chalk chrome across projection seeks. */
|
|
10
|
+
seed?: number | string;
|
|
7
11
|
className?: string;
|
|
8
12
|
}
|
|
9
13
|
export declare const ReactionBubble: React.MemoExoticComponent<(props: ReactionBubbleProps) => React.JSX.Element>;
|
|
10
|
-
export {};
|
|
11
14
|
//# sourceMappingURL=ReactionBubble.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionBubble.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/ReactionBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAS5D,
|
|
1
|
+
{"version":3,"file":"ReactionBubble.d.ts","sourceRoot":"","sources":["../../../src/components/atomic/ReactionBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAS5D,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiCD,eAAO,MAAM,cAAc,oCAAsB,mBAAmB,uBAIlE,CAAC"}
|
|
@@ -21,8 +21,10 @@ export interface AudioOutputProps {
|
|
|
21
21
|
audioOutputDeviceId?: string;
|
|
22
22
|
/** Per-participant volume override (0-1). Takes precedence over volume prop. */
|
|
23
23
|
getParticipantVolume?: (participantId: string) => number;
|
|
24
|
+
/** Label for the single prompt shown when the browser blocks playback. */
|
|
25
|
+
resumeAudioLabel?: string;
|
|
24
26
|
}
|
|
25
|
-
export declare function AudioOutput({ participants, volume, audioOutputDeviceId, getParticipantVolume }: AudioOutputProps): null;
|
|
27
|
+
export declare function AudioOutput({ participants, volume, audioOutputDeviceId, getParticipantVolume, resumeAudioLabel }: AudioOutputProps): import("react").JSX.Element | null;
|
|
26
28
|
export declare namespace AudioOutput {
|
|
27
29
|
var displayName: string;
|
|
28
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AudioOutput.d.ts","sourceRoot":"","sources":["../../../src/components/audio-output/AudioOutput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AudioOutput.d.ts","sourceRoot":"","sources":["../../../src/components/audio-output/AudioOutput.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACrC,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,8EAA8E;IAC9E,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,oBAAoB,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAWD,wBAAgB,WAAW,CAAC,EAAE,YAAY,EAAE,MAAU,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAiC,EAAE,EAAE,gBAAgB,sCAyUvJ;yBAzUe,WAAW"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ChatUploadFile, type ClientEventMap, type GetAccess, type SpaceClient } from "@q9labsai/chalk-client";
|
|
1
|
+
import { type ChatUploadFile, type ClientEventMap, type FeedbackSource, type GetAccess, type SpaceClient } from "@q9labsai/chalk-client";
|
|
2
2
|
import type React from "react";
|
|
3
3
|
import { type ChalkTheme } from "../../theme";
|
|
4
4
|
export type SpaceLayout = "focus" | "grid" | "presentation";
|
|
@@ -7,6 +7,7 @@ export type ChalkFeatures = {
|
|
|
7
7
|
readonly participants?: boolean;
|
|
8
8
|
readonly admission?: boolean;
|
|
9
9
|
readonly screenShare?: boolean;
|
|
10
|
+
readonly recording?: boolean;
|
|
10
11
|
readonly whiteboard?: boolean;
|
|
11
12
|
readonly reactions?: boolean;
|
|
12
13
|
readonly handRaise?: boolean;
|
|
@@ -55,6 +56,7 @@ export type ChalkProps = SpaceIntegration & SpaceEventCallbacks & {
|
|
|
55
56
|
readonly layout?: SpaceLayout;
|
|
56
57
|
readonly onLayoutChange?: (layout: SpaceLayout) => void;
|
|
57
58
|
readonly onOpenDiagnostics?: () => void;
|
|
59
|
+
readonly feedbackSource?: FeedbackSource;
|
|
58
60
|
};
|
|
59
61
|
export declare function Chalk(props: ChalkProps): React.JSX.Element;
|
|
60
62
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chalk.d.ts","sourceRoot":"","sources":["../../../src/components/chalk/Chalk.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAsD,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAoB,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chalk.d.ts","sourceRoot":"","sources":["../../../src/components/chalk/Chalk.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChatUploadFile } from "@q9labsai/chalk-client";
|
|
1
|
+
import type { ChatAttachment, ChatMessage, ChatReadReceipt, ChatSendInput, ChatUploadFile, SpaceSnapshot } from "@q9labsai/chalk-client";
|
|
2
2
|
import React from "react";
|
|
3
3
|
export type { ChatMessage } from "./chat-types";
|
|
4
4
|
export interface ChatPanelProps {
|
|
@@ -12,5 +12,28 @@ export interface ChatPanelProps {
|
|
|
12
12
|
readonly variant?: "sidebar" | "mobile";
|
|
13
13
|
readonly generatedAvatars?: boolean;
|
|
14
14
|
}
|
|
15
|
+
export interface ChatPanelSurfaceProps extends ChatPanelProps {
|
|
16
|
+
readonly messages: readonly ChatMessage[];
|
|
17
|
+
readonly pendingMessages?: SpaceSnapshot["chat"]["pendingSends"];
|
|
18
|
+
readonly readReceipts?: readonly ChatReadReceipt[];
|
|
19
|
+
readonly localReadThroughSequence?: string | null;
|
|
20
|
+
readonly participantNames?: Readonly<Record<string, string>>;
|
|
21
|
+
readonly onSendMessage?: (input: Pick<ChatSendInput, "text" | "attachments">) => Promise<void>;
|
|
22
|
+
readonly onUploadAttachment?: (file: ChatUploadFile) => Promise<ChatAttachment>;
|
|
23
|
+
readonly onResolveAttachmentUrl?: (attachmentId: string) => Promise<string>;
|
|
24
|
+
readonly onMarkRead?: (throughSequence: string) => void | Promise<unknown>;
|
|
25
|
+
readonly onLoadOlder?: () => Promise<void>;
|
|
26
|
+
readonly hasOlder?: boolean;
|
|
27
|
+
readonly loadingOlder?: boolean;
|
|
28
|
+
readonly localParticipantId?: string;
|
|
29
|
+
readonly error?: string | null;
|
|
30
|
+
readonly messageDisplayTime?: (message: ChatMessage) => string;
|
|
31
|
+
readonly autoScrollBehavior?: ScrollBehavior;
|
|
32
|
+
/** Use a solid message surface instead of filter-generated texture for deterministic raster output. */
|
|
33
|
+
readonly stableTexture?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare const ChatPanelSurface: React.MemoExoticComponent<({ messages, pendingMessages, readReceipts, localReadThroughSequence, participantNames, onSendMessage, onUploadAttachment, pickChatFiles, onResolveAttachmentUrl, onMarkRead, onRetryMessage, onLoadOlder, hasOlder, loadingOlder, localParticipantId, onClose, disabled, placeholder, title, variant, generatedAvatars, error, messageDisplayTime, autoScrollBehavior, stableTexture, className, }: ChatPanelSurfaceProps) => React.JSX.Element>;
|
|
15
36
|
export declare const ChatPanel: React.MemoExoticComponent<(props: ChatPanelProps) => React.JSX.Element>;
|
|
37
|
+
/** Data-driven chat presentation without a Space client or bindings provider. */
|
|
38
|
+
export declare const ChatPanelPresentation: React.MemoExoticComponent<(props: ChatPanelSurfaceProps) => React.JSX.Element>;
|
|
16
39
|
//# sourceMappingURL=ChatPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ChatPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ChatPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACzI,OAAO,KAAgE,MAAM,OAAO,CAAC;AAcrF,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IAC/D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAAC;IAC7C,uGAAuG;IACvG,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,gBAAgB,iaA4BxB,qBAAqB,uBA+SzB,CAAC;AAoCF,eAAO,MAAM,SAAS,oCAAsB,cAAc,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAG5E,CAAC;AAEH,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,oCAAsB,qBAAqB,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAG/F,CAAC"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
|
+
import type { ChatAttachment, ChatReadReceipt, ChatSendInput, ChatUploadFile, SpaceSnapshot } from "@q9labsai/chalk-client";
|
|
1
2
|
import React from "react";
|
|
3
|
+
import type { ChatMessage } from "./chat-types";
|
|
2
4
|
import type { ChatPanelProps } from "./ChatPanel";
|
|
5
|
+
export interface ClassicChatPanelSurfaceProps extends ChatPanelProps {
|
|
6
|
+
readonly messages: readonly ChatMessage[];
|
|
7
|
+
readonly pendingMessages?: SpaceSnapshot["chat"]["pendingSends"];
|
|
8
|
+
readonly readReceipts?: readonly ChatReadReceipt[];
|
|
9
|
+
readonly localReadThroughSequence?: string | null;
|
|
10
|
+
readonly participantNames?: Readonly<Record<string, string>>;
|
|
11
|
+
readonly onSendMessage?: (input: Pick<ChatSendInput, "text" | "attachments">) => Promise<void>;
|
|
12
|
+
readonly onUploadAttachment?: (file: ChatUploadFile) => Promise<ChatAttachment>;
|
|
13
|
+
readonly onResolveAttachmentUrl?: (attachmentId: string) => Promise<string>;
|
|
14
|
+
readonly onMarkRead?: (throughSequence: string) => void | Promise<unknown>;
|
|
15
|
+
readonly onLoadOlder?: () => Promise<void>;
|
|
16
|
+
readonly hasOlder?: boolean;
|
|
17
|
+
readonly loadingOlder?: boolean;
|
|
18
|
+
readonly localParticipantId?: string;
|
|
19
|
+
readonly error?: string | null;
|
|
20
|
+
readonly messageDisplayTime?: (message: ChatMessage) => string;
|
|
21
|
+
readonly autoScrollBehavior?: ScrollBehavior;
|
|
22
|
+
/** Use a solid message surface instead of filter-generated texture for deterministic raster output. */
|
|
23
|
+
readonly stableTexture?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare const ClassicChatPanelSurface: React.MemoExoticComponent<({ messages, pendingMessages, readReceipts, localReadThroughSequence, participantNames, onSendMessage, onUploadAttachment, pickChatFiles, onResolveAttachmentUrl, onMarkRead, onRetryMessage, onLoadOlder, hasOlder, loadingOlder, localParticipantId, onClose, disabled, placeholder, title, variant, generatedAvatars, error, messageDisplayTime, autoScrollBehavior, stableTexture, className, }: ClassicChatPanelSurfaceProps) => React.JSX.Element>;
|
|
3
26
|
export declare const ClassicChatPanel: React.MemoExoticComponent<(props: ChatPanelProps) => React.JSX.Element>;
|
|
4
27
|
//# sourceMappingURL=ClassicChatPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ClassicChatPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClassicChatPanel.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ClassicChatPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5H,OAAO,KAAgE,MAAM,OAAO,CAAC;AAWrF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,WAAW,4BAA6B,SAAQ,cAAc;IAClE,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACnD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAChF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;IAC/D,QAAQ,CAAC,kBAAkB,CAAC,EAAE,cAAc,CAAC;IAC7C,uGAAuG;IACvG,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,uBAAuB,iaA4B/B,4BAA4B,uBAqShC,CAAC;AAEF,eAAO,MAAM,gBAAgB,oCAAsB,cAAc,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgCnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicMessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ClassicMessageBubble.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"ClassicMessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ClassicMessageBubble.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAa1D,eAAO,MAAM,oBAAoB,gDAuLhC,CAAC"}
|
|
@@ -1,38 +1,4 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type
|
|
3
|
-
import type { SettingsDialogValue } from "./SettingsDialog";
|
|
4
|
-
type SectionId = "audio-video" | "audio" | "video" | "appearance" | "experience";
|
|
5
|
-
interface SettingsDialogProps {
|
|
6
|
-
isOpen: boolean;
|
|
7
|
-
onClose: () => void;
|
|
8
|
-
settings: SettingsDialogValue;
|
|
9
|
-
onUpdateIdentity: (updates: Partial<SettingsDialogValue["identity"]>) => void;
|
|
10
|
-
onUpdateJoin: (updates: Partial<SettingsDialogValue["join"]>) => void;
|
|
11
|
-
onUpdateAudio: (updates: Partial<SettingsDialogValue["audio"]>) => void;
|
|
12
|
-
onUpdateVideo: (updates: Partial<SettingsDialogValue["video"]>) => void;
|
|
13
|
-
onUpdateAppearance: (updates: Partial<SettingsDialogValue["appearance"]>) => void;
|
|
14
|
-
onUpdateExperience: (updates: Partial<SettingsDialogValue["experience"]>) => void;
|
|
15
|
-
enablePictureInPicture?: boolean;
|
|
16
|
-
isPictureInPictureSupported?: boolean;
|
|
17
|
-
isPictureInPictureActive?: boolean;
|
|
18
|
-
onOpenPictureInPicture?: () => Promise<void> | void;
|
|
19
|
-
enableBackgroundEffects?: boolean;
|
|
20
|
-
isBackgroundEffectsSupported?: boolean;
|
|
21
|
-
isApplyingBackgroundEffect?: boolean;
|
|
22
|
-
backgroundEffects?: readonly BackgroundEffect[];
|
|
23
|
-
selectedBackgroundEffectId?: string;
|
|
24
|
-
onSelectBackgroundEffect?: (effectId: string) => void;
|
|
25
|
-
onUploadBackgroundEffect?: (file: File) => void;
|
|
26
|
-
audioInputDevices?: readonly Pick<MediaDeviceInfo, "deviceId" | "kind" | "label">[];
|
|
27
|
-
audioOutputDevices?: readonly Pick<MediaDeviceInfo, "deviceId" | "kind" | "label">[];
|
|
28
|
-
videoInputDevices?: readonly Pick<MediaDeviceInfo, "deviceId" | "kind" | "label">[];
|
|
29
|
-
audioLevel?: number;
|
|
30
|
-
videoTrack?: MediaStreamTrack | null;
|
|
31
|
-
reducedMotion?: boolean;
|
|
32
|
-
participantColorSeed?: string;
|
|
33
|
-
isDarkMode?: boolean;
|
|
34
|
-
initialSection?: SectionId;
|
|
35
|
-
}
|
|
2
|
+
import { type SettingsDialogProps } from "./settings-dialog-behavior";
|
|
36
3
|
export declare const ClassicSettingsDialog: React.MemoExoticComponent<({ isOpen, onClose, settings, onUpdateIdentity, onUpdateJoin, onUpdateAudio, onUpdateVideo, onUpdateAppearance, onUpdateExperience, enablePictureInPicture, isPictureInPictureSupported, isPictureInPictureActive, onOpenPictureInPicture, enableBackgroundEffects, isBackgroundEffectsSupported, isApplyingBackgroundEffect, backgroundEffects, selectedBackgroundEffectId, onSelectBackgroundEffect, onUploadBackgroundEffect, audioInputDevices, audioOutputDevices, videoInputDevices, audioLevel, videoTrack, reducedMotion, participantColorSeed, isDarkMode, initialSection, }: SettingsDialogProps) => React.JSX.Element>;
|
|
37
|
-
export {};
|
|
38
4
|
//# sourceMappingURL=ClassicSettingsDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClassicSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ClassicSettingsDialog.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"ClassicSettingsDialog.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ClassicSettingsDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,EAAgD,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AA8BpH,eAAO,MAAM,qBAAqB,mlBA+B7B,mBAAmB,uBAoavB,CAAC"}
|
|
@@ -5,6 +5,12 @@ export interface MessageBubbleProps {
|
|
|
5
5
|
senderName: string;
|
|
6
6
|
senderAvatar?: string;
|
|
7
7
|
timestamp: string;
|
|
8
|
+
/** Frozen display text for deterministic projections; live views format timestamp locally. */
|
|
9
|
+
displayTime?: string;
|
|
10
|
+
/** Stable message identity for deterministic Chalk chrome across projection seeks. */
|
|
11
|
+
seed?: number | string;
|
|
12
|
+
/** Stable participant identity for the sender avatar's Chalk chrome. */
|
|
13
|
+
avatarSeed?: number | string;
|
|
8
14
|
isLocal?: boolean;
|
|
9
15
|
isSystem?: boolean;
|
|
10
16
|
showSender?: boolean;
|
|
@@ -13,7 +19,7 @@ export interface MessageBubbleProps {
|
|
|
13
19
|
generatedAvatars?: boolean;
|
|
14
20
|
isFirstInGroup?: boolean;
|
|
15
21
|
isLastInGroup?: boolean;
|
|
16
|
-
status?: "pending" | "sent" | "read";
|
|
22
|
+
status?: "queued" | "pending" | "sent" | "read";
|
|
17
23
|
attachments?: readonly ChatAttachment[];
|
|
18
24
|
readBy?: readonly ChatReadReceipt[];
|
|
19
25
|
participantNames?: Readonly<Record<string, string>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/composite/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/composite/MessageBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAkB,MAAM,OAAO,CAAC;AAUvC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,WAAW,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,sBAAsB,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoND,eAAO,MAAM,aAAa,gDAGxB,CAAC"}
|
|
@@ -3,5 +3,18 @@ export interface ReactionsOverlayProps {
|
|
|
3
3
|
readonly maxVisible?: number;
|
|
4
4
|
readonly className?: string;
|
|
5
5
|
}
|
|
6
|
+
export interface ReactionsOverlayPresentationReaction {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly displayName: string;
|
|
9
|
+
readonly value: string;
|
|
10
|
+
readonly occurredAtMs: number;
|
|
11
|
+
readonly expiresAtMs: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ReactionsOverlayPresentationProps extends ReactionsOverlayProps {
|
|
14
|
+
readonly reactions: readonly ReactionsOverlayPresentationReaction[];
|
|
15
|
+
readonly elapsedMs: number;
|
|
16
|
+
}
|
|
6
17
|
export declare function ReactionsOverlay(props: ReactionsOverlayProps): React.JSX.Element;
|
|
18
|
+
/** Recording-relative reaction rendering that does not depend on mount time. */
|
|
19
|
+
export declare function ReactionsOverlayPresentation({ reactions, elapsedMs, maxVisible, className }: ReactionsOverlayPresentationProps): React.JSX.Element;
|
|
7
20
|
//# sourceMappingURL=ReactionsOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactionsOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ReactionsOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"ReactionsOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ReactionsOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,iCAAkC,SAAQ,qBAAqB;IAC9E,QAAQ,CAAC,SAAS,EAAE,SAAS,oCAAoC,EAAE,CAAC;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAsBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAGhF;AAED,gFAAgF;AAChF,wBAAgB,4BAA4B,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,UAAc,EAAE,SAAS,EAAE,EAAE,iCAAiC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CActJ"}
|
|
@@ -12,6 +12,14 @@ export interface ScreenShareViewSurfaceProps extends ScreenShareViewProps {
|
|
|
12
12
|
readonly sharedByName: string;
|
|
13
13
|
readonly participants: Participant[];
|
|
14
14
|
}
|
|
15
|
+
export interface ScreenSharePresentationProps {
|
|
16
|
+
readonly sharedByName: string;
|
|
17
|
+
readonly media: React.ReactNode;
|
|
18
|
+
readonly mediaVisible: boolean;
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
}
|
|
21
|
+
/** Shared-content viewport for data-driven rendering without MediaStreamTrack effects. */
|
|
22
|
+
export declare function ScreenSharePresentation({ sharedByName, media, mediaVisible, className }: ScreenSharePresentationProps): React.JSX.Element;
|
|
15
23
|
export declare const ScreenShareViewSurface: React.MemoExoticComponent<({ screenShareTrack, sharedByName, participants, onStopShare, showThumbnails, thumbnailPosition, enableZoom, className }: ScreenShareViewSurfaceProps) => React.JSX.Element>;
|
|
16
24
|
export declare function ScreenShareView(props: ScreenShareViewProps): React.JSX.Element;
|
|
17
25
|
export declare namespace ScreenShareView {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenShareView.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ScreenShareView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAQjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAIvE,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;CACtC;AA8BD,eAAO,MAAM,sBAAsB,sJAAiK,2BAA2B,uBA2S7N,CAAC;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAG9E;yBAHe,eAAe"}
|
|
1
|
+
{"version":3,"file":"ScreenShareView.d.ts","sourceRoot":"","sources":["../../../src/components/composite/ScreenShareView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAQjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAIvE,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA4B,SAAQ,oBAAoB;IACvE,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,0FAA0F;AAC1F,wBAAgB,uBAAuB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,EAAE,4BAA4B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAsBzI;AA8BD,eAAO,MAAM,sBAAsB,sJAAiK,2BAA2B,uBA2S7N,CAAC;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAG9E;yBAHe,eAAe"}
|
|
@@ -1,87 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { type
|
|
3
|
-
|
|
4
|
-
type SectionId = "audio-video" | "audio" | "video" | "appearance" | "experience";
|
|
5
|
-
export interface SettingsDialogValue {
|
|
6
|
-
identity: {
|
|
7
|
-
displayName: string;
|
|
8
|
-
};
|
|
9
|
-
join: {
|
|
10
|
-
videoEnabled: boolean;
|
|
11
|
-
audioEnabled: boolean;
|
|
12
|
-
};
|
|
13
|
-
audio: {
|
|
14
|
-
selectedInput?: string;
|
|
15
|
-
selectedOutput?: string;
|
|
16
|
-
outputVolume: number;
|
|
17
|
-
noiseSuppression: boolean;
|
|
18
|
-
echoCancellation: boolean;
|
|
19
|
-
autoGainControl: boolean;
|
|
20
|
-
};
|
|
21
|
-
video: {
|
|
22
|
-
selectedInput?: string;
|
|
23
|
-
quality: string;
|
|
24
|
-
};
|
|
25
|
-
appearance: {
|
|
26
|
-
layout: string;
|
|
27
|
-
theme: "light" | "dark" | "system";
|
|
28
|
-
skin?: ThemeSkin;
|
|
29
|
-
palette?: ThemePalette;
|
|
30
|
-
texture?: ThemeTexture;
|
|
31
|
-
gradient: "default" | "darker";
|
|
32
|
-
showFilmstrip: boolean;
|
|
33
|
-
reducedMotion: boolean;
|
|
34
|
-
generatedAvatars: boolean;
|
|
35
|
-
profileGradient: {
|
|
36
|
-
mode: "auto" | "custom";
|
|
37
|
-
from?: string;
|
|
38
|
-
to?: string;
|
|
39
|
-
};
|
|
40
|
-
ambientBackground: boolean;
|
|
41
|
-
};
|
|
42
|
-
experience: {
|
|
43
|
-
captions: boolean;
|
|
44
|
-
compactMode: boolean;
|
|
45
|
-
showInviteToast: boolean;
|
|
46
|
-
defaultOpenChat: boolean;
|
|
47
|
-
defaultOpenParticipants: boolean;
|
|
48
|
-
defaultOpenTranscription: boolean;
|
|
49
|
-
autoOpenPictureInPicture: boolean;
|
|
50
|
-
/** Join, leave, message, hand-raise and reaction cues. */
|
|
51
|
-
sounds: boolean;
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
interface SettingsDialogProps {
|
|
55
|
-
isOpen: boolean;
|
|
56
|
-
onClose: () => void;
|
|
57
|
-
settings: SettingsDialogValue;
|
|
58
|
-
onUpdateIdentity: (updates: Partial<SettingsDialogValue["identity"]>) => void;
|
|
59
|
-
onUpdateJoin: (updates: Partial<SettingsDialogValue["join"]>) => void;
|
|
60
|
-
onUpdateAudio: (updates: Partial<SettingsDialogValue["audio"]>) => void;
|
|
61
|
-
onUpdateVideo: (updates: Partial<SettingsDialogValue["video"]>) => void;
|
|
62
|
-
onUpdateAppearance: (updates: Partial<SettingsDialogValue["appearance"]>) => void;
|
|
63
|
-
onUpdateExperience: (updates: Partial<SettingsDialogValue["experience"]>) => void;
|
|
64
|
-
enablePictureInPicture?: boolean;
|
|
65
|
-
isPictureInPictureSupported?: boolean;
|
|
66
|
-
isPictureInPictureActive?: boolean;
|
|
67
|
-
onOpenPictureInPicture?: () => Promise<void> | void;
|
|
68
|
-
enableBackgroundEffects?: boolean;
|
|
69
|
-
isBackgroundEffectsSupported?: boolean;
|
|
70
|
-
isApplyingBackgroundEffect?: boolean;
|
|
71
|
-
backgroundEffects?: readonly BackgroundEffect[];
|
|
72
|
-
selectedBackgroundEffectId?: string;
|
|
73
|
-
onSelectBackgroundEffect?: (effectId: string) => void;
|
|
74
|
-
onUploadBackgroundEffect?: (file: File) => void;
|
|
75
|
-
audioInputDevices?: readonly Pick<MediaDeviceInfo, "deviceId" | "kind" | "label">[];
|
|
76
|
-
audioOutputDevices?: readonly Pick<MediaDeviceInfo, "deviceId" | "kind" | "label">[];
|
|
77
|
-
videoInputDevices?: readonly Pick<MediaDeviceInfo, "deviceId" | "kind" | "label">[];
|
|
78
|
-
audioLevel?: number;
|
|
79
|
-
videoTrack?: MediaStreamTrack | null;
|
|
80
|
-
reducedMotion?: boolean;
|
|
81
|
-
participantColorSeed?: string;
|
|
82
|
-
isDarkMode?: boolean;
|
|
83
|
-
initialSection?: SectionId;
|
|
84
|
-
}
|
|
2
|
+
import { type SettingsDialogProps } from "./settings-dialog-behavior";
|
|
3
|
+
export type { SettingsDialogValue } from "./settings-dialog-behavior";
|
|
85
4
|
export declare const SettingsDialog: React.MemoExoticComponent<(props: SettingsDialogProps) => React.JSX.Element>;
|
|
86
|
-
export {};
|
|
87
5
|
//# sourceMappingURL=SettingsDialog.d.ts.map
|