@q9labsai/chalk-react-native 5.0.0 → 5.1.0
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/CHANGELOG.md +25 -0
- package/android/build.gradle +38 -0
- package/android/compatibility/ModuleApiCompatibility.java +215 -0
- package/android/src/main/kotlin/ai/q9labs/chalk/reactnative/ChalkAudioRouteModule.kt +5 -6
- package/android/src/main/kotlin/ai/q9labs/chalk/reactnative/CommunicationDeviceListener.kt +23 -0
- package/dist/android/call-service.d.ts +0 -1
- package/dist/android/connection-service.d.ts +0 -1
- package/dist/avatar/FaceAvatar.d.ts +0 -1
- package/dist/avatar/tile-avatar-size.d.ts +0 -1
- package/dist/callkit/callkit.d.ts +0 -1
- package/dist/callkit/resolve-space-callkit-options.d.ts +0 -1
- package/dist/{chunk-OIBT2FNM.js → chunk-MBZRE4US.js} +2 -3
- package/dist/client.d.ts +0 -1
- package/dist/client.js +8 -5
- package/dist/clipboard-store.d.ts +0 -1
- package/dist/clipboard.d.ts +0 -1
- package/dist/components/EmbeddedWhiteboard.d.ts +0 -1
- package/dist/components/RtcVideoView.d.ts +0 -1
- package/dist/components/android-connection-service-controller.d.ts +0 -1
- package/dist/components/native-media-visibility.d.ts +0 -1
- package/dist/components/native-space-callkit-controller.d.ts +0 -1
- package/dist/components/native-space-view/screen-share-availability.d.ts +0 -1
- package/dist/components/rtc-video-view-availability.d.ts +0 -1
- package/dist/components/space-lifecycle.d.ts +0 -1
- package/dist/components/useAndroidCallService.d.ts +0 -1
- package/dist/components/useAndroidConnectionService.d.ts +0 -1
- package/dist/context/space-client-context.d.ts +0 -1
- package/dist/dev.d.ts +0 -1
- package/dist/diagnostics.d.ts +0 -1
- package/dist/dock/Dock.d.ts +0 -1
- package/dist/dock/LeaveMenu.d.ts +0 -1
- package/dist/dock/MoreSheet.d.ts +0 -1
- package/dist/dock/ReactionBurst.d.ts +0 -1
- package/dist/dock/RoutePicker.d.ts +0 -1
- package/dist/dock/audio-route.d.ts +0 -1
- package/dist/frame/CallFrame.d.ts +0 -1
- package/dist/frame/Chalk.d.ts +0 -1
- package/dist/frame/back-handler.d.ts +0 -1
- package/dist/frame/dev-scenario.d.ts +0 -1
- package/dist/frame/device-layout.d.ts +0 -1
- package/dist/frame/measurement.d.ts +0 -1
- package/dist/frame/portal.d.ts +0 -1
- package/dist/frame/preferences.d.ts +0 -1
- package/dist/frame/regions.d.ts +0 -1
- package/dist/haptics/haptics.d.ts +0 -1
- package/dist/header/CallDetailsSheet.d.ts +0 -1
- package/dist/header/Header.d.ts +0 -1
- package/dist/header/QrCode.d.ts +0 -1
- package/dist/hooks/external-store.d.ts +0 -1
- package/dist/hooks/space-hooks.d.ts +0 -1
- package/dist/icons/Icon.d.ts +0 -1
- package/dist/icons/icon-element.d.ts +0 -1
- package/dist/icons/icon-paths.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +45 -17
- package/dist/invites.d.ts +0 -1
- package/dist/limbo/Limbo.d.ts +0 -1
- package/dist/limbo/Veil.d.ts +0 -1
- package/dist/media/native-capture-error.d.ts +0 -1
- package/dist/media/native-webrtc.d.ts +0 -1
- package/dist/motion/MovingFrame.d.ts +0 -1
- package/dist/motion/motion.d.ts +0 -1
- package/dist/motion/presence.d.ts +0 -1
- package/dist/motion/press.d.ts +0 -1
- package/dist/platform/platform.d.ts +0 -1
- package/dist/primitives/BottomSheet.d.ts +0 -1
- package/dist/primitives/ChalkText.d.ts +0 -1
- package/dist/primitives/CopyButton.d.ts +0 -1
- package/dist/primitives/IconButton.d.ts +0 -1
- package/dist/primitives/Menu.d.ts +0 -1
- package/dist/primitives/NameTag.d.ts +0 -1
- package/dist/primitives/PillButton.d.ts +0 -1
- package/dist/primitives/SegmentedControl.d.ts +0 -1
- package/dist/primitives/SheetGroup.d.ts +0 -1
- package/dist/primitives/Switch.d.ts +0 -1
- package/dist/primitives/TileShell.d.ts +0 -1
- package/dist/primitives/announce.d.ts +0 -1
- package/dist/primitives/menu-placement.d.ts +0 -1
- package/dist/primitives/toast/Toast.d.ts +0 -1
- package/dist/primitives/toast/ToastStack.d.ts +0 -1
- package/dist/primitives/toast/toast-store.d.ts +0 -1
- package/dist/runtime.d.ts +0 -1
- package/dist/sheets/people-chat/ChatNotices.d.ts +0 -1
- package/dist/sheets/people-chat/ChatTab.d.ts +0 -1
- package/dist/sheets/people-chat/Composer.d.ts +0 -1
- package/dist/sheets/people-chat/PeopleChatSheet.d.ts +0 -1
- package/dist/sheets/people-chat/PeopleTab.d.ts +0 -1
- package/dist/sheets/people-chat/PhotoViewer.d.ts +0 -1
- package/dist/sheets/people-chat/TextField.d.ts +0 -1
- package/dist/sheets/people-chat/attachments.d.ts +0 -1
- package/dist/sheets/people-chat/chat-model.d.ts +0 -1
- package/dist/sheets/people-chat/people-model.d.ts +0 -1
- package/dist/sounds/sounds.d.ts +0 -1
- package/dist/space-client/create-native-space-client.d.ts +0 -1
- package/dist/space-client/random-uuid.d.ts +0 -1
- package/dist/stage/ContentTile.d.ts +0 -1
- package/dist/stage/ParticipantTile.d.ts +0 -1
- package/dist/stage/Stage.d.ts +0 -1
- package/dist/stage/TileSheet.d.ts +0 -1
- package/dist/stage/camera.d.ts +0 -1
- package/dist/stage/layout.d.ts +0 -1
- package/dist/stage/space-selector.d.ts +0 -1
- package/dist/stage/stage-view.d.ts +0 -1
- package/dist/status/CallOverlays.d.ts +1 -2
- package/dist/status/ChalkArrival.d.ts +0 -1
- package/dist/status/StatusPage.d.ts +0 -1
- package/dist/status/call-screen.d.ts +0 -1
- package/dist/theme/theme.d.ts +0 -1
- package/dist/theme/tokens.d.ts +0 -1
- package/dist/toasts/CallEventToasts.d.ts +1 -2
- package/dist/toasts/media-failure-copy.d.ts +2 -0
- package/dist/toasts/notices.d.ts +0 -1
- package/dist/ui/ChalkUI.d.ts +0 -1
- package/dist/ui.d.ts +0 -1
- package/dist/ui.js +1 -1
- package/dist/utils/build-chalk-invite-link.d.ts +0 -1
- package/dist/utils/ios-simulator.d.ts +0 -1
- package/dist/whiteboard/embedded-whiteboard-assets.d.ts +0 -1
- package/dist/whiteboard/embedded-whiteboard-viewport.d.ts +0 -1
- package/embedded/chalk-whiteboard/asset-manifest.json +2 -2
- package/embedded/chalk-whiteboard/renderer.js +579 -579
- package/package.json +8 -4
- package/src/components/rtc-video-view-availability.ts +1 -1
- package/src/dock/Dock.tsx +4 -2
- package/src/dock/MoreSheet.tsx +3 -2
- package/src/frame/CallFrame.tsx +4 -4
- package/src/frame/device-layout.tsx +2 -3
- package/src/space-client/create-native-space-client.ts +8 -5
- package/src/stage/TileSheet.tsx +5 -1
- package/src/status/CallOverlays.tsx +18 -3
- package/src/toasts/CallEventToasts.tsx +16 -7
- package/src/toasts/media-failure-copy.ts +10 -0
- package/dist/android/call-service.d.ts.map +0 -1
- package/dist/android/connection-service.d.ts.map +0 -1
- package/dist/avatar/FaceAvatar.d.ts.map +0 -1
- package/dist/avatar/tile-avatar-size.d.ts.map +0 -1
- package/dist/callkit/callkit.d.ts.map +0 -1
- package/dist/callkit/resolve-space-callkit-options.d.ts.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/clipboard-store.d.ts.map +0 -1
- package/dist/clipboard.d.ts.map +0 -1
- package/dist/components/EmbeddedWhiteboard.d.ts.map +0 -1
- package/dist/components/RtcVideoView.d.ts.map +0 -1
- package/dist/components/android-connection-service-controller.d.ts.map +0 -1
- package/dist/components/native-media-visibility.d.ts.map +0 -1
- package/dist/components/native-space-callkit-controller.d.ts.map +0 -1
- package/dist/components/native-space-view/screen-share-availability.d.ts.map +0 -1
- package/dist/components/rtc-video-view-availability.d.ts.map +0 -1
- package/dist/components/space-lifecycle.d.ts.map +0 -1
- package/dist/components/useAndroidCallService.d.ts.map +0 -1
- package/dist/components/useAndroidConnectionService.d.ts.map +0 -1
- package/dist/context/space-client-context.d.ts.map +0 -1
- package/dist/dev.d.ts.map +0 -1
- package/dist/diagnostics.d.ts.map +0 -1
- package/dist/dock/Dock.d.ts.map +0 -1
- package/dist/dock/LeaveMenu.d.ts.map +0 -1
- package/dist/dock/MoreSheet.d.ts.map +0 -1
- package/dist/dock/ReactionBurst.d.ts.map +0 -1
- package/dist/dock/RoutePicker.d.ts.map +0 -1
- package/dist/dock/audio-route.d.ts.map +0 -1
- package/dist/frame/CallFrame.d.ts.map +0 -1
- package/dist/frame/Chalk.d.ts.map +0 -1
- package/dist/frame/back-handler.d.ts.map +0 -1
- package/dist/frame/dev-scenario.d.ts.map +0 -1
- package/dist/frame/device-layout.d.ts.map +0 -1
- package/dist/frame/measurement.d.ts.map +0 -1
- package/dist/frame/portal.d.ts.map +0 -1
- package/dist/frame/preferences.d.ts.map +0 -1
- package/dist/frame/regions.d.ts.map +0 -1
- package/dist/haptics/haptics.d.ts.map +0 -1
- package/dist/header/CallDetailsSheet.d.ts.map +0 -1
- package/dist/header/Header.d.ts.map +0 -1
- package/dist/header/QrCode.d.ts.map +0 -1
- package/dist/hooks/external-store.d.ts.map +0 -1
- package/dist/hooks/space-hooks.d.ts.map +0 -1
- package/dist/icons/Icon.d.ts.map +0 -1
- package/dist/icons/icon-element.d.ts.map +0 -1
- package/dist/icons/icon-paths.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/invites.d.ts.map +0 -1
- package/dist/limbo/Limbo.d.ts.map +0 -1
- package/dist/limbo/Veil.d.ts.map +0 -1
- package/dist/media/native-capture-error.d.ts.map +0 -1
- package/dist/media/native-webrtc.d.ts.map +0 -1
- package/dist/motion/MovingFrame.d.ts.map +0 -1
- package/dist/motion/motion.d.ts.map +0 -1
- package/dist/motion/presence.d.ts.map +0 -1
- package/dist/motion/press.d.ts.map +0 -1
- package/dist/platform/platform.d.ts.map +0 -1
- package/dist/primitives/BottomSheet.d.ts.map +0 -1
- package/dist/primitives/ChalkText.d.ts.map +0 -1
- package/dist/primitives/CopyButton.d.ts.map +0 -1
- package/dist/primitives/IconButton.d.ts.map +0 -1
- package/dist/primitives/Menu.d.ts.map +0 -1
- package/dist/primitives/NameTag.d.ts.map +0 -1
- package/dist/primitives/PillButton.d.ts.map +0 -1
- package/dist/primitives/SegmentedControl.d.ts.map +0 -1
- package/dist/primitives/SheetGroup.d.ts.map +0 -1
- package/dist/primitives/Switch.d.ts.map +0 -1
- package/dist/primitives/TileShell.d.ts.map +0 -1
- package/dist/primitives/announce.d.ts.map +0 -1
- package/dist/primitives/menu-placement.d.ts.map +0 -1
- package/dist/primitives/toast/Toast.d.ts.map +0 -1
- package/dist/primitives/toast/ToastStack.d.ts.map +0 -1
- package/dist/primitives/toast/toast-store.d.ts.map +0 -1
- package/dist/runtime.d.ts.map +0 -1
- package/dist/sheets/people-chat/ChatNotices.d.ts.map +0 -1
- package/dist/sheets/people-chat/ChatTab.d.ts.map +0 -1
- package/dist/sheets/people-chat/Composer.d.ts.map +0 -1
- package/dist/sheets/people-chat/PeopleChatSheet.d.ts.map +0 -1
- package/dist/sheets/people-chat/PeopleTab.d.ts.map +0 -1
- package/dist/sheets/people-chat/PhotoViewer.d.ts.map +0 -1
- package/dist/sheets/people-chat/TextField.d.ts.map +0 -1
- package/dist/sheets/people-chat/attachments.d.ts.map +0 -1
- package/dist/sheets/people-chat/chat-model.d.ts.map +0 -1
- package/dist/sheets/people-chat/people-model.d.ts.map +0 -1
- package/dist/sounds/sounds.d.ts.map +0 -1
- package/dist/space-client/create-native-space-client.d.ts.map +0 -1
- package/dist/space-client/random-uuid.d.ts.map +0 -1
- package/dist/stage/ContentTile.d.ts.map +0 -1
- package/dist/stage/ParticipantTile.d.ts.map +0 -1
- package/dist/stage/Stage.d.ts.map +0 -1
- package/dist/stage/TileSheet.d.ts.map +0 -1
- package/dist/stage/camera.d.ts.map +0 -1
- package/dist/stage/layout.d.ts.map +0 -1
- package/dist/stage/space-selector.d.ts.map +0 -1
- package/dist/stage/stage-view.d.ts.map +0 -1
- package/dist/status/CallOverlays.d.ts.map +0 -1
- package/dist/status/ChalkArrival.d.ts.map +0 -1
- package/dist/status/StatusPage.d.ts.map +0 -1
- package/dist/status/call-screen.d.ts.map +0 -1
- package/dist/theme/theme.d.ts.map +0 -1
- package/dist/theme/tokens.d.ts.map +0 -1
- package/dist/toasts/CallEventToasts.d.ts.map +0 -1
- package/dist/toasts/notices.d.ts.map +0 -1
- package/dist/ui/ChalkUI.d.ts.map +0 -1
- package/dist/ui.d.ts.map +0 -1
- package/dist/utils/build-chalk-invite-link.d.ts.map +0 -1
- package/dist/utils/ios-simulator.d.ts.map +0 -1
- package/dist/whiteboard/embedded-whiteboard-assets.d.ts.map +0 -1
- package/dist/whiteboard/embedded-whiteboard-viewport.d.ts.map +0 -1
- package/src/callkit/callkit.test.ts +0 -97
- package/src/components/native-space-view/screen-share-availability.test.ts +0 -16
- package/src/frame/regions.test.ts +0 -38
- package/src/media/native-capture-error.test.ts +0 -19
- package/src/primitives/menu-placement.test.ts +0 -50
- package/src/sheets/people-chat/people-chat-model.test.ts +0 -98
- package/src/space-client/whiteboard-watchdog.test.ts +0 -23
- package/src/stage/layout.test.ts +0 -77
- package/src/status/call-screen.test.ts +0 -42
- package/src/toasts/notices.test.ts +0 -92
- package/src/whiteboard/embedded-whiteboard-viewport.test.ts +0 -13
package/dist/frame/portal.d.ts
CHANGED
|
@@ -18,4 +18,3 @@ type ProviderProps = {
|
|
|
18
18
|
export declare function PreferencesProvider({ colorScheme, onColorSchemeChange, soundsEnabled, onSoundsEnabledChange, children }: ProviderProps): React.JSX.Element;
|
|
19
19
|
export declare function usePreferences(): CallPreferences;
|
|
20
20
|
export {};
|
|
21
|
-
//# sourceMappingURL=preferences.d.ts.map
|
package/dist/frame/regions.d.ts
CHANGED
|
@@ -22,4 +22,3 @@ export declare const STAGE_GAP = 8;
|
|
|
22
22
|
* `cardOpen` is the iPad side card, which takes 352 pt from the stage.
|
|
23
23
|
*/
|
|
24
24
|
export declare function frameRegions(arrangement: Arrangement, width: number, height: number, insets: EdgeInsets, cardOpen?: boolean): FrameRegions;
|
|
25
|
-
//# sourceMappingURL=regions.d.ts.map
|
|
@@ -15,4 +15,3 @@ export type CallDetailsSheetProps = {
|
|
|
15
15
|
export declare function CallDetailsSheet({ open, onClose, callName, inviteLink, returnFocusRef }: CallDetailsSheetProps): React.JSX.Element;
|
|
16
16
|
/** The link as people read it, `chalkmeet.com/q9-team`, without the scheme or the invite token. */
|
|
17
17
|
export declare function displayLink(link: string): string;
|
|
18
|
-
//# sourceMappingURL=CallDetailsSheet.d.ts.map
|
package/dist/header/Header.d.ts
CHANGED
package/dist/header/QrCode.d.ts
CHANGED
|
@@ -8,4 +8,3 @@ export declare function useReactions(): SpaceSnapshot["reactions"];
|
|
|
8
8
|
export declare function useRecording(): SpaceSnapshot["recording"];
|
|
9
9
|
export declare function useWhiteboard(): SpaceSnapshot["whiteboard"];
|
|
10
10
|
export declare function useCan(capability: Capability): boolean;
|
|
11
|
-
//# sourceMappingURL=space-hooks.d.ts.map
|
package/dist/icons/Icon.d.ts
CHANGED
|
@@ -9,4 +9,3 @@ export type IconProps = {
|
|
|
9
9
|
};
|
|
10
10
|
/** One icon from the mockup's 24-unit, 1.75-stroke line set. Icons are decorative; label the control that holds them. */
|
|
11
11
|
export declare const Icon: import("react").MemoExoticComponent<({ name, color, size, strokeWidth }: IconProps) => React.JSX.Element>;
|
|
12
|
-
//# sourceMappingURL=Icon.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -10,4 +10,3 @@ export { useCan, useChat, useConnection, useMedia, useParticipants, useReactions
|
|
|
10
10
|
export { extractSpaceInviteFromLink, getClipboardInviteSuggestion, parseSpaceInviteLink } from "./invites";
|
|
11
11
|
export type { SpaceInviteLink } from "./invites";
|
|
12
12
|
export { buildChalkInviteLink } from "./utils/build-chalk-invite-link";
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -53,7 +53,7 @@ import {
|
|
|
53
53
|
useTheme,
|
|
54
54
|
useToasts,
|
|
55
55
|
viewer
|
|
56
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-MBZRE4US.js";
|
|
57
57
|
import {
|
|
58
58
|
useMeasuredRef
|
|
59
59
|
} from "./chunk-GYVZSOGQ.js";
|
|
@@ -294,13 +294,14 @@ function RoutePicker({ open, onClose, onSelect, output, anchorRef }) {
|
|
|
294
294
|
// src/dock/Dock.tsx
|
|
295
295
|
import { Fragment, jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
296
296
|
var Dock = memo(function Dock2({ arrangement, microphoneOn, cameraOn, onToggleMicrophone, onToggleCamera, onOpenMore, onLeave, moreOpen, leaveOpen, moreRef, leaveRef }) {
|
|
297
|
+
const live = useConnection().status === "live";
|
|
297
298
|
const size = arrangement === "pad" ? 44 : 52;
|
|
298
299
|
const dockStyle = [styles.dock, arrangement === "pad" ? styles.pad : arrangement === "landscape" ? styles.landscape : styles.portrait];
|
|
299
300
|
const dockRef = useMeasuredRef("frame.dock", dockStyle);
|
|
300
301
|
const output = useAudioOutput();
|
|
301
302
|
return /* @__PURE__ */ jsxs(View, { accessibilityLabel: "Call controls", accessibilityRole: "toolbar", pointerEvents: "box-none", ref: dockRef, style: dockStyle, testID: "frame.dock", children: [
|
|
302
|
-
/* @__PURE__ */ jsx4(IconButton, { accessibilityLabel: microphoneOn ? "Mute microphone" : "Unmute microphone", icon: microphoneOn ? "mic" : "micOff", off: !microphoneOn, onCanvas: true, onPress: onToggleMicrophone, size, testID: "dock.microphone" }),
|
|
303
|
-
/* @__PURE__ */ jsx4(IconButton, { accessibilityLabel: cameraOn ? "Turn off camera" : "Turn on camera", icon: cameraOn ? "cam" : "camOff", off: !cameraOn, onCanvas: true, onPress: onToggleCamera, size, testID: "dock.camera" }),
|
|
303
|
+
/* @__PURE__ */ jsx4(IconButton, { accessibilityLabel: microphoneOn ? "Mute microphone" : "Unmute microphone", icon: microphoneOn ? "mic" : "micOff", off: !microphoneOn, disabled: !live && !microphoneOn, onCanvas: true, onPress: onToggleMicrophone, size, testID: "dock.microphone" }),
|
|
304
|
+
/* @__PURE__ */ jsx4(IconButton, { accessibilityLabel: cameraOn ? "Turn off camera" : "Turn on camera", icon: cameraOn ? "cam" : "camOff", off: !cameraOn, disabled: !live && !cameraOn, onCanvas: true, onPress: onToggleCamera, size, testID: "dock.camera" }),
|
|
304
305
|
output ? /* @__PURE__ */ jsx4(AudioOutputButton, { captioned: arrangement === "portrait", output, size }) : null,
|
|
305
306
|
/* @__PURE__ */ jsx4(IconButton, { accessibilityLabel: "More options", expanded: moreOpen, icon: "more", onCanvas: true, onPress: onOpenMore, ref: moreRef, size, testID: "dock.more" }),
|
|
306
307
|
arrangement === "pad" ? /* @__PURE__ */ jsx4(View, { style: styles.gap }) : null,
|
|
@@ -406,7 +407,8 @@ function MoreSheet({ open, onClose, onOpenPeople, onOpenChat, inviteLink, return
|
|
|
406
407
|
const toasts = useToasts();
|
|
407
408
|
const { soundsEnabled } = usePreferences();
|
|
408
409
|
const canRaiseHand = useCan("raiseHand");
|
|
409
|
-
const
|
|
410
|
+
const live = useConnection().status === "live";
|
|
411
|
+
const canReact = useCan("sendReaction") && live;
|
|
410
412
|
const fail = useCallback5((message2) => () => toasts.show({ kind: "error", dismissible: true, message: message2 }), [toasts]);
|
|
411
413
|
const toggleHand = useCallback5(() => {
|
|
412
414
|
onClose();
|
|
@@ -1913,7 +1915,7 @@ function createNativeMediaStream(track) {
|
|
|
1913
1915
|
|
|
1914
1916
|
// src/components/rtc-video-view-availability.ts
|
|
1915
1917
|
function canRenderRtcVideoView(component) {
|
|
1916
|
-
return typeof component === "function" || typeof component === "object" && component !== null;
|
|
1918
|
+
return typeof component === "string" && component.length > 0 || typeof component === "function" || typeof component === "object" && component !== null;
|
|
1917
1919
|
}
|
|
1918
1920
|
|
|
1919
1921
|
// src/components/RtcVideoView.tsx
|
|
@@ -2365,7 +2367,11 @@ function TileSheet({ participantId, open, onClose }) {
|
|
|
2365
2367
|
icon: "flip",
|
|
2366
2368
|
label: `Switch to the ${person.back ? "front" : "back"} camera`,
|
|
2367
2369
|
onPress: run(() => {
|
|
2368
|
-
|
|
2370
|
+
const otherCamera2 = person.otherCamera;
|
|
2371
|
+
if (otherCamera2)
|
|
2372
|
+
client.media.selectCamera(otherCamera2).then(() => {
|
|
2373
|
+
announce(`Switched to the ${person.back ? "front" : "back"} camera`);
|
|
2374
|
+
}, failed("Couldn't switch the camera."));
|
|
2369
2375
|
}),
|
|
2370
2376
|
testID: "tile-sheet.flip"
|
|
2371
2377
|
}
|
|
@@ -2564,6 +2570,10 @@ var styles19 = StyleSheet20.create({
|
|
|
2564
2570
|
// src/status/CallOverlays.tsx
|
|
2565
2571
|
import { jsx as jsx30, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
2566
2572
|
function CallOverlays({ screen, callName, rejoining, onHold, onRejoin, onHome }) {
|
|
2573
|
+
const { colors } = useTheme();
|
|
2574
|
+
const layout = useDeviceLayout();
|
|
2575
|
+
const { header } = frameRegions(layout.arrangement, layout.width, layout.height, layout.insets);
|
|
2576
|
+
const connection = useConnection();
|
|
2567
2577
|
const recording2 = useRecording().current?.status === "recording";
|
|
2568
2578
|
const queuedMessages = useChat().pendingSends.filter((send) => send.status === "queued").length;
|
|
2569
2579
|
useBackHandler(screen.kind === "status", onHome);
|
|
@@ -2572,10 +2582,11 @@ function CallOverlays({ screen, callName, rejoining, onHold, onRejoin, onHome })
|
|
|
2572
2582
|
useEffect17(() => {
|
|
2573
2583
|
if (clearsNotices) clear();
|
|
2574
2584
|
}, [clear, clearsNotices]);
|
|
2575
|
-
const limbo = screen.kind === "joining" ? { kind: "joining", rejoining } : screen.kind === "
|
|
2585
|
+
const limbo = screen.kind === "joining" ? { kind: "joining", rejoining } : screen.kind === "call" && onHold ? { kind: "hold" } : null;
|
|
2576
2586
|
const veil = limbo === null ? "none" : limbo.kind === "joining" ? "limbo" : "paused";
|
|
2577
2587
|
return /* @__PURE__ */ jsxs21(View20, { pointerEvents: "box-none", style: StyleSheet21.absoluteFill, children: [
|
|
2578
2588
|
/* @__PURE__ */ jsx30(Veil, { level: screen.kind === "status" ? "none" : veil }),
|
|
2589
|
+
screen.kind === "reconnecting" || screen.kind === "call" && connection.syncHealth === "degraded" ? /* @__PURE__ */ jsx30(View20, { pointerEvents: "none", style: { position: "absolute", top: header.y + header.height + 4, left: layout.insets.left + 16, right: layout.insets.right + 16, alignItems: "center" }, testID: "connection.notice", children: /* @__PURE__ */ jsx30(ChalkText, { accessibilityLiveRegion: "polite", variant: "caption", style: { backgroundColor: colors.surface, borderRadius: 12, paddingHorizontal: 12, paddingVertical: 6 }, children: screen.kind === "reconnecting" ? `Reconnecting\u2026${queuedMessages ? ` ${queuedMessages} messages waiting to send.` : ""}` : "Connection is slow" }) }) : null,
|
|
2579
2590
|
limbo ? /* @__PURE__ */ jsx30(Limbo, { callName, recording: recording2, state: limbo }) : null,
|
|
2580
2591
|
screen.kind === "status" ? /* @__PURE__ */ jsx30(StatusPage, { callName, onHome, onRejoin, outcome: screen.outcome }) : null
|
|
2581
2592
|
] });
|
|
@@ -2622,6 +2633,15 @@ import { SpaceClientError } from "@q9labsai/chalk-client";
|
|
|
2622
2633
|
import { useCallback as useCallback14, useEffect as useEffect18, useRef as useRef12 } from "react";
|
|
2623
2634
|
import { Linking as Linking2, Platform as Platform7 } from "react-native";
|
|
2624
2635
|
|
|
2636
|
+
// src/toasts/media-failure-copy.ts
|
|
2637
|
+
var MEDIA_FAILURE_DETAILS = {
|
|
2638
|
+
"connection.invalid_state": "Still connecting. Try again in a moment.",
|
|
2639
|
+
"media.timeout": "The call did not respond. Try again."
|
|
2640
|
+
};
|
|
2641
|
+
function mediaFailureMessage(permission, code) {
|
|
2642
|
+
return code && MEDIA_FAILURE_DETAILS[code] || `Couldn\u2019t turn on your ${permission}. Try again.`;
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2625
2645
|
// src/toasts/notices.ts
|
|
2626
2646
|
function callNotices(previous, next, ownMicrophoneChange) {
|
|
2627
2647
|
if (previous.connection.status !== "live" || next.connection.status !== "live") return [];
|
|
@@ -2689,7 +2709,7 @@ function useCallEventToasts({ onOpenSettings, resumedAfterSettings }) {
|
|
|
2689
2709
|
ownMicrophoneChange.current = true;
|
|
2690
2710
|
}, []);
|
|
2691
2711
|
const reportMediaFailure = useCallback14(
|
|
2692
|
-
(permission, cause, retry)
|
|
2712
|
+
function reportMediaFailure2(permission, cause, retry) {
|
|
2693
2713
|
const code = cause instanceof SpaceClientError ? cause.code : null;
|
|
2694
2714
|
const icon = permission === "microphone" ? "micOff" : "camOff";
|
|
2695
2715
|
const leading = /* @__PURE__ */ jsx32(Icon, { color: latest.current.colors.dangerText, name: icon });
|
|
@@ -2729,15 +2749,21 @@ function useCallEventToasts({ onOpenSettings, resumedAfterSettings }) {
|
|
|
2729
2749
|
label: "Try again",
|
|
2730
2750
|
testID: "toast.try-again",
|
|
2731
2751
|
onPress: () => {
|
|
2732
|
-
|
|
2733
|
-
|
|
2752
|
+
void retry().then(
|
|
2753
|
+
() => toasts.dismiss(id),
|
|
2754
|
+
(cause2) => {
|
|
2755
|
+
if (cause2 instanceof SpaceClientError && cause2.code === "connection.invalid_state") return;
|
|
2756
|
+
toasts.dismiss(id);
|
|
2757
|
+
reportMediaFailure2(permission, cause2, retry);
|
|
2758
|
+
}
|
|
2759
|
+
);
|
|
2734
2760
|
}
|
|
2735
2761
|
}
|
|
2736
2762
|
]
|
|
2737
2763
|
});
|
|
2738
2764
|
return;
|
|
2739
2765
|
}
|
|
2740
|
-
toasts.show({ kind: "error", leading, dismissible: true, wrap: true, message:
|
|
2766
|
+
toasts.show({ kind: "error", leading, dismissible: true, wrap: true, message: mediaFailureMessage(permission, code) });
|
|
2741
2767
|
},
|
|
2742
2768
|
[onOpenSettings, toasts]
|
|
2743
2769
|
);
|
|
@@ -2776,8 +2802,10 @@ function noticeToast(notice, { client, toasts, colors, dismiss }) {
|
|
|
2776
2802
|
const who = request.actorDisplayName ? firstName2(request.actorDisplayName) : "The host";
|
|
2777
2803
|
const unmute2 = request.kind === "unmute";
|
|
2778
2804
|
const accept = () => {
|
|
2779
|
-
dismiss()
|
|
2780
|
-
|
|
2805
|
+
void client.media.acceptRequest(request.requestId).then(dismiss, (cause) => {
|
|
2806
|
+
if (cause instanceof SpaceClientError && cause.code === "connection.invalid_state") return;
|
|
2807
|
+
toasts.show({ kind: "error", dismissible: true, message: unmute2 ? "Couldn\u2019t unmute you." : "Couldn\u2019t turn on your camera." });
|
|
2808
|
+
});
|
|
2781
2809
|
};
|
|
2782
2810
|
return {
|
|
2783
2811
|
input: {
|
|
@@ -2838,14 +2866,14 @@ function CallFrame({ displayName, callName = "Call", inviteLink, onLeave, onOpen
|
|
|
2838
2866
|
haptics.mute();
|
|
2839
2867
|
playSound(microphoneOn ? "mute" : "unmute", soundsEnabled);
|
|
2840
2868
|
if (microphoneOn) noteOwnMicrophoneChange();
|
|
2841
|
-
const turnOn = () => client.media.setMicrophoneEnabled(true)
|
|
2869
|
+
const turnOn = () => client.media.setMicrophoneEnabled(true);
|
|
2842
2870
|
if (microphoneOn) client.media.setMicrophoneEnabled(false).catch(() => toasts.show({ kind: "error", dismissible: true, message: "Couldn\u2019t mute your microphone." }));
|
|
2843
|
-
else void turnOn();
|
|
2871
|
+
else void turnOn().catch((cause) => reportMediaFailure("microphone", cause, turnOn));
|
|
2844
2872
|
}, [client, microphoneOn, noteOwnMicrophoneChange, reportMediaFailure, soundsEnabled, toasts]);
|
|
2845
2873
|
const toggleCamera = useCallback15(() => {
|
|
2846
|
-
const turnOn = () => client.media.setCameraEnabled(true)
|
|
2874
|
+
const turnOn = () => client.media.setCameraEnabled(true);
|
|
2847
2875
|
if (cameraOn) client.media.setCameraEnabled(false).catch(() => toasts.show({ kind: "error", dismissible: true, message: "Couldn\u2019t turn off your camera." }));
|
|
2848
|
-
else void turnOn();
|
|
2876
|
+
else void turnOn().catch((cause) => reportMediaFailure("camera", cause, turnOn));
|
|
2849
2877
|
}, [cameraOn, client, reportMediaFailure, toasts]);
|
|
2850
2878
|
const exit = useCallback15(
|
|
2851
2879
|
(how) => {
|
package/dist/invites.d.ts
CHANGED
|
@@ -5,4 +5,3 @@ export type SpaceInviteLink = {
|
|
|
5
5
|
export declare function parseSpaceInviteLink(input: string): SpaceInviteLink | null;
|
|
6
6
|
export declare function extractSpaceInviteFromLink(input: string): SpaceInviteLink | null;
|
|
7
7
|
export declare function getClipboardInviteSuggestion(clipboardText: string | null | undefined, currentInput?: string): string | null;
|
|
8
|
-
//# sourceMappingURL=invites.d.ts.map
|
package/dist/limbo/Limbo.d.ts
CHANGED
|
@@ -22,4 +22,3 @@ export type LimboProps = {
|
|
|
22
22
|
};
|
|
23
23
|
/** The limbo card (`.lmsg`) centred over the veiled call, with the mockup's copy for each state. */
|
|
24
24
|
export declare function Limbo({ state, callName, recording }: LimboProps): React.JSX.Element;
|
|
25
|
-
//# sourceMappingURL=Limbo.d.ts.map
|
package/dist/limbo/Veil.d.ts
CHANGED
|
@@ -3,4 +3,3 @@ import type { MediaStream as NativeMediaStream, MediaStreamTrack as NativeMediaS
|
|
|
3
3
|
export { MediaStream, RTCView, mediaDevices };
|
|
4
4
|
export type { NativeMediaStream, NativeMediaStreamTrack };
|
|
5
5
|
export declare function createNativeMediaStream(track: MediaStreamTrack | NativeMediaStreamTrack): NativeMediaStream;
|
|
6
|
-
//# sourceMappingURL=native-webrtc.d.ts.map
|
package/dist/motion/motion.d.ts
CHANGED
|
@@ -79,4 +79,3 @@ export declare const timings: {
|
|
|
79
79
|
export type TimingName = keyof typeof timings;
|
|
80
80
|
/** `withTiming` with one of the named timings. Call it from a worklet or from JS. */
|
|
81
81
|
export declare function animateTo(value: number, timing: TimingName): number;
|
|
82
|
-
//# sourceMappingURL=motion.d.ts.map
|
|
@@ -3,4 +3,3 @@ import { type EntryExitAnimationFunction } from "react-native-reanimated";
|
|
|
3
3
|
export declare const tileEntering: EntryExitAnimationFunction;
|
|
4
4
|
/** A leaving tile fades out over 160 ms. Pass as `exiting` on an Animated.View. */
|
|
5
5
|
export declare const tileLeaving: EntryExitAnimationFunction;
|
|
6
|
-
//# sourceMappingURL=presence.d.ts.map
|
package/dist/motion/press.d.ts
CHANGED
|
@@ -10,4 +10,3 @@ export type ChalkTextProps = TextProps & {
|
|
|
10
10
|
};
|
|
11
11
|
/** Figtree text in one of the call's type styles. */
|
|
12
12
|
export declare function ChalkText({ variant, tone, color, tabular, style, ...rest }: ChalkTextProps): React.JSX.Element;
|
|
13
|
-
//# sourceMappingURL=ChalkText.d.ts.map
|
|
@@ -8,4 +8,3 @@ export type CopyButtonProps = {
|
|
|
8
8
|
};
|
|
9
9
|
/** The mockup's copy button (`.cp`): the copy icon turns into a green check for two seconds. */
|
|
10
10
|
export declare const CopyButton: import("react").MemoExoticComponent<({ onCopy, accessibilityLabel, announcement, testID }: CopyButtonProps) => React.JSX.Element>;
|
|
11
|
-
//# sourceMappingURL=CopyButton.d.ts.map
|
|
@@ -23,4 +23,3 @@ export type IconButtonProps = {
|
|
|
23
23
|
};
|
|
24
24
|
/** The mockup's round button (`.rb`): press scale 0.94 over 150 ms, background switches at once. */
|
|
25
25
|
export declare const IconButton: import("react").NamedExoticComponent<IconButtonProps & import("react").RefAttributes<View>>;
|
|
26
|
-
//# sourceMappingURL=IconButton.d.ts.map
|
|
@@ -16,4 +16,3 @@ export type NameTagProps = {
|
|
|
16
16
|
export declare const NameTag: import("react").MemoExoticComponent<({ name, muted, pinned, icon, you, handRaised, handOrder, testID }: NameTagProps) => React.JSX.Element>;
|
|
17
17
|
/** The strip at the bottom of a tile that the name tag can cover, so tile content can keep clear of it. */
|
|
18
18
|
export declare const nameTagZone: number;
|
|
19
|
-
//# sourceMappingURL=NameTag.d.ts.map
|
|
@@ -16,4 +16,3 @@ export type PillButtonProps = {
|
|
|
16
16
|
};
|
|
17
17
|
/** The mockup's pill button (`.pb`, `.big`): primary inverts, secondary is raised, danger is red. */
|
|
18
18
|
export declare const PillButton: import("react").NamedExoticComponent<PillButtonProps & import("react").RefAttributes<ViewType>>;
|
|
19
|
-
//# sourceMappingURL=PillButton.d.ts.map
|
|
@@ -14,4 +14,3 @@ export type SegmentedControlProps<TValue extends string> = {
|
|
|
14
14
|
};
|
|
15
15
|
/** The mockup's segmented control (`.seg2`). The selected segment lifts onto a brighter surface. */
|
|
16
16
|
export declare function SegmentedControl<TValue extends string>({ options, value, onChange, accessibilityLabel, size, testID }: SegmentedControlProps<TValue>): React.JSX.Element;
|
|
17
|
-
//# sourceMappingURL=SegmentedControl.d.ts.map
|
|
@@ -21,4 +21,3 @@ export type SheetRowProps = {
|
|
|
21
21
|
};
|
|
22
22
|
/** A phone sheet row (`.srow`): 52 pt high, 16 pt text, an optional icon in front and a control at the end. */
|
|
23
23
|
export declare function SheetRow({ label, icon, end, badge, accessibilityLabel, onPress, danger, testID }: SheetRowProps): React.JSX.Element;
|
|
24
|
-
//# sourceMappingURL=SheetGroup.d.ts.map
|
|
@@ -6,4 +6,3 @@ export type SwitchProps = {
|
|
|
6
6
|
};
|
|
7
7
|
/** The mockup's switch (`.sw`): a 36 by 22 track, green when on, with a knob that slides 14 pt in 150 ms. */
|
|
8
8
|
export declare const Switch: import("react").MemoExoticComponent<({ value, onValueChange, accessibilityLabel, testID }: SwitchProps) => React.JSX.Element>;
|
|
9
|
-
//# sourceMappingURL=Switch.d.ts.map
|
|
@@ -15,4 +15,3 @@ export declare function useToastClearance(): (bottom: number | null) => void;
|
|
|
15
15
|
* the top of the screen with the newest notice nearest the top edge, as in the mockup.
|
|
16
16
|
*/
|
|
17
17
|
export declare function ToastStack(): React.JSX.Element;
|
|
18
|
-
//# sourceMappingURL=ToastStack.d.ts.map
|
package/dist/runtime.d.ts
CHANGED
|
@@ -14,4 +14,3 @@ export type PeopleChatSheetProps = {
|
|
|
14
14
|
* the call and the call's chat. The tab row drags the sheet like the grabber does.
|
|
15
15
|
*/
|
|
16
16
|
export declare function PeopleChatSheet({ open, tab, onTabChange, onClose, returnFocusRef }: PeopleChatSheetProps): React.JSX.Element;
|
|
17
|
-
//# sourceMappingURL=PeopleChatSheet.d.ts.map
|
|
@@ -1,4 +1,3 @@
|
|
|
1
1
|
import { TextInput, type TextInputProps } from "react-native";
|
|
2
2
|
/** The text input inside a field (`input` in the mockup): the body type, no chrome of its own. */
|
|
3
3
|
export declare const TextField: import("react").ForwardRefExoticComponent<TextInputProps & import("react").RefAttributes<TextInput>>;
|
|
4
|
-
//# sourceMappingURL=TextField.d.ts.map
|
|
@@ -40,4 +40,3 @@ export declare function peopleRows({ roster, waiting, handOrder, query }: People
|
|
|
40
40
|
* the lists saw hands go up in; people who join with a hand already raised count from when they appear.
|
|
41
41
|
*/
|
|
42
42
|
export declare function nextHandOrder(previous: readonly string[], roster: readonly Participant[]): readonly string[];
|
|
43
|
-
//# sourceMappingURL=people-model.d.ts.map
|
package/dist/sounds/sounds.d.ts
CHANGED
|
@@ -15,4 +15,3 @@ export type ContentTileProps = {
|
|
|
15
15
|
};
|
|
16
16
|
/** The shared screen or board as one stage tile (`.tile.content`), kept mounted while it moves. */
|
|
17
17
|
export declare const ContentTile: import("react").MemoExoticComponent<({ content, inner, mini, onShowInSpotlight }: ContentTileProps) => React.JSX.Element>;
|
|
18
|
-
//# sourceMappingURL=ContentTile.d.ts.map
|
|
@@ -15,4 +15,3 @@ export type ParticipantTileProps = {
|
|
|
15
15
|
* it, and the stage keeps it mounted across every move so the video view keeps its surface.
|
|
16
16
|
*/
|
|
17
17
|
export declare const ParticipantTile: import("react").MemoExoticComponent<({ id, width, height, float, pinned, mirror, onOpen }: ParticipantTileProps) => React.JSX.Element>;
|
|
18
|
-
//# sourceMappingURL=ParticipantTile.d.ts.map
|
package/dist/stage/Stage.d.ts
CHANGED
|
@@ -11,4 +11,3 @@ export type StageProps = {
|
|
|
11
11
|
* remounted by a move, a layout switch or a sheet; only tiles on the stage subscribe to video.
|
|
12
12
|
*/
|
|
13
13
|
export declare const Stage: import("react").MemoExoticComponent<({ frame, onOpenPeople }: StageProps) => React.JSX.Element>;
|
|
14
|
-
//# sourceMappingURL=Stage.d.ts.map
|
package/dist/stage/camera.d.ts
CHANGED
|
@@ -4,4 +4,3 @@ export type CameraFacing = "front" | "back";
|
|
|
4
4
|
export declare function cameraFacing(media: MediaSlice): CameraFacing;
|
|
5
5
|
/** The camera facing the other way, or null when the phone has only one. */
|
|
6
6
|
export declare function otherCamera(media: MediaSlice): MediaDevice | null;
|
|
7
|
-
//# sourceMappingURL=camera.d.ts.map
|
package/dist/stage/layout.d.ts
CHANGED
|
@@ -54,4 +54,3 @@ export type StageOrder = {
|
|
|
54
54
|
* speaking they swap places with the person in the spotlight, so only those two tiles move.
|
|
55
55
|
*/
|
|
56
56
|
export declare function nextStageOrder(previous: StageOrder, present: readonly string[], selfId: string | null, speaker: string | null): StageOrder;
|
|
57
|
-
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -7,4 +7,3 @@ import type { SpaceSnapshot } from "@q9labsai/chalk-client";
|
|
|
7
7
|
export declare function useSpaceSelector<T>(select: (snapshot: SpaceSnapshot) => T, isEqual?: (a: T, b: T) => boolean): T;
|
|
8
8
|
/** Equal when both objects hold the same values under the same keys, compared with `Object.is`. */
|
|
9
9
|
export declare function shallowEqual<T extends object>(a: T, b: T): boolean;
|
|
10
|
-
//# sourceMappingURL=space-selector.d.ts.map
|
|
@@ -10,8 +10,7 @@ export type CallOverlaysProps = {
|
|
|
10
10
|
readonly onHome: () => void;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
|
-
* The overlays layer:
|
|
13
|
+
* The overlays layer: a non-blocking connection notice, or a veil while the call joins or waits on a phone
|
|
14
14
|
* call, and the status page once it's over. Android back on a status page goes Home.
|
|
15
15
|
*/
|
|
16
16
|
export declare function CallOverlays({ screen, callName, rejoining, onHold, onRejoin, onHome }: CallOverlaysProps): React.JSX.Element;
|
|
17
|
-
//# sourceMappingURL=CallOverlays.d.ts.map
|
|
@@ -21,4 +21,3 @@ export type ChalkArrivalProps = {
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function ChalkArrival({ colorScheme, ...props }: ChalkArrivalProps): React.JSX.Element;
|
|
23
23
|
export declare function ArrivalScreen({ state, callName, onCancel, onRetry, recording }: Omit<ChalkArrivalProps, "colorScheme">): React.JSX.Element;
|
|
24
|
-
//# sourceMappingURL=ChalkArrival.d.ts.map
|
|
@@ -17,4 +17,3 @@ export type CallScreen = {
|
|
|
17
17
|
* Only the server's own removal signal shows "removed"; any other exit nobody chose is `exited`.
|
|
18
18
|
*/
|
|
19
19
|
export declare function callScreen(connection: ConnectionSlice, leftByChoice: boolean): CallScreen;
|
|
20
|
-
//# sourceMappingURL=call-screen.d.ts.map
|
package/dist/theme/theme.d.ts
CHANGED
package/dist/theme/tokens.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type CallEventToasts = {
|
|
|
4
4
|
/** Call before the person turns their own microphone off, so it isn't reported as a host mute. */
|
|
5
5
|
readonly noteOwnMicrophoneChange: () => void;
|
|
6
6
|
/** Says why turning on the microphone or camera failed, with the way forward (F1, K1, K2). */
|
|
7
|
-
readonly reportMediaFailure: (permission: Permission, cause: unknown, retry: () => void) => void;
|
|
7
|
+
readonly reportMediaFailure: (permission: Permission, cause: unknown, retry: () => Promise<void>) => void;
|
|
8
8
|
};
|
|
9
9
|
export type CallEventToastsOptions = {
|
|
10
10
|
/** Called just before Open Settings leaves the app, so the app can rejoin after iOS restarts it. */
|
|
@@ -18,4 +18,3 @@ export type CallEventToastsOptions = {
|
|
|
18
18
|
* ending (F11), recording starting and stopping, and failed microphone or camera changes.
|
|
19
19
|
*/
|
|
20
20
|
export declare function useCallEventToasts({ onOpenSettings, resumedAfterSettings }: CallEventToastsOptions): CallEventToasts;
|
|
21
|
-
//# sourceMappingURL=CallEventToasts.d.ts.map
|