Merge remote-tracking branch 'origin/main' into dbkr/postmessage_ptt_2

This commit is contained in:
David Baker
2022-07-08 10:00:25 +01:00
10 changed files with 223 additions and 67 deletions

View File

@@ -38,7 +38,7 @@
"classnames": "^2.3.1", "classnames": "^2.3.1",
"color-hash": "^2.0.1", "color-hash": "^2.0.1",
"events": "^3.3.0", "events": "^3.3.0",
"matrix-js-sdk": "github:matrix-org/matrix-js-sdk#9a15094374f52053ca9f833269d2b1c6c7f964d2", "matrix-js-sdk": "github:matrix-org/matrix-js-sdk#984dd26a138411ef73903ff4e635f2752e0829f2",
"mermaid": "^8.13.8", "mermaid": "^8.13.8",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"pako": "^2.0.4", "pako": "^2.0.4",

View File

@@ -24,7 +24,11 @@ export function Facepile({
<div <div
className={classNames(styles.facepile, styles[size], className)} className={classNames(styles.facepile, styles[size], className)}
title={participants.map((member) => member.name).join(", ")} title={participants.map((member) => member.name).join(", ")}
style={{ width: participants.length * (_size - _overlap) + _overlap }} style={{
width:
Math.min(participants.length, max + 1) * (_size - _overlap) +
_overlap,
}}
{...rest} {...rest}
> >
{participants.slice(0, max).map((member, i) => { {participants.slice(0, max).map((member, i) => {

View File

@@ -13,9 +13,12 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
import React, { forwardRef } from "react"; import React, { forwardRef } from "react";
import { PressEvent } from "@react-types/shared";
import classNames from "classnames"; import classNames from "classnames";
import { useButton } from "@react-aria/button";
import { mergeProps, useObjectRef } from "@react-aria/utils";
import styles from "./Button.module.css"; import styles from "./Button.module.css";
import { ReactComponent as MicIcon } from "../icons/Mic.svg"; import { ReactComponent as MicIcon } from "../icons/Mic.svg";
import { ReactComponent as MuteMicIcon } from "../icons/MuteMic.svg"; import { ReactComponent as MuteMicIcon } from "../icons/MuteMic.svg";
@@ -26,10 +29,21 @@ import { ReactComponent as ScreenshareIcon } from "../icons/Screenshare.svg";
import { ReactComponent as SettingsIcon } from "../icons/Settings.svg"; import { ReactComponent as SettingsIcon } from "../icons/Settings.svg";
import { ReactComponent as AddUserIcon } from "../icons/AddUser.svg"; import { ReactComponent as AddUserIcon } from "../icons/AddUser.svg";
import { ReactComponent as ArrowDownIcon } from "../icons/ArrowDown.svg"; import { ReactComponent as ArrowDownIcon } from "../icons/ArrowDown.svg";
import { useButton } from "@react-aria/button";
import { mergeProps, useObjectRef } from "@react-aria/utils";
import { TooltipTrigger } from "../Tooltip"; import { TooltipTrigger } from "../Tooltip";
export type ButtonVariant =
| "default"
| "toolbar"
| "toolbarSecondary"
| "icon"
| "secondary"
| "copy"
| "secondaryCopy"
| "iconCopy"
| "secondaryHangup"
| "dropdown"
| "link";
export const variantToClassName = { export const variantToClassName = {
default: [styles.button], default: [styles.button],
toolbar: [styles.toolbarButton], toolbar: [styles.toolbarButton],
@@ -44,11 +58,24 @@ export const variantToClassName = {
link: [styles.linkButton], link: [styles.linkButton],
}; };
export const sizeToClassName = { export type ButtonSize = "lg";
export const sizeToClassName: { lg: string[] } = {
lg: [styles.lg], lg: [styles.lg],
}; };
interface Props {
export const Button = forwardRef( variant: ButtonVariant;
size: ButtonSize;
on: () => void;
off: () => void;
iconStyle: string;
className: string;
children: Element[];
onPress: (e: PressEvent) => void;
onPressStart: (e: PressEvent) => void;
[index: string]: unknown;
}
export const Button = forwardRef<HTMLButtonElement, Props>(
( (
{ {
variant = "default", variant = "default",
@@ -64,7 +91,7 @@ export const Button = forwardRef(
}, },
ref ref
) => { ) => {
const buttonRef = useObjectRef(ref); const buttonRef = useObjectRef<HTMLButtonElement>(ref);
const { buttonProps } = useButton( const { buttonProps } = useButton(
{ onPress, onPressStart, ...rest }, { onPress, onPressStart, ...rest },
buttonRef buttonRef
@@ -75,7 +102,7 @@ export const Button = forwardRef(
let filteredButtonProps = buttonProps; let filteredButtonProps = buttonProps;
if (rest.type === "submit" && !rest.onPress) { if (rest.type === "submit" && !rest.onPress) {
const { onKeyDown, onKeyUp, ...filtered } = buttonProps; const { ...filtered } = buttonProps;
filteredButtonProps = filtered; filteredButtonProps = filtered;
} }
@@ -101,7 +128,13 @@ export const Button = forwardRef(
} }
); );
export function MicButton({ muted, ...rest }) { export function MicButton({
muted,
...rest
}: {
muted: boolean;
[index: string]: unknown;
}) {
return ( return (
<TooltipTrigger> <TooltipTrigger>
<Button variant="toolbar" {...rest} off={muted}> <Button variant="toolbar" {...rest} off={muted}>
@@ -112,7 +145,13 @@ export function MicButton({ muted, ...rest }) {
); );
} }
export function VideoButton({ muted, ...rest }) { export function VideoButton({
muted,
...rest
}: {
muted: boolean;
[index: string]: unknown;
}) {
return ( return (
<TooltipTrigger> <TooltipTrigger>
<Button variant="toolbar" {...rest} off={muted}> <Button variant="toolbar" {...rest} off={muted}>
@@ -123,7 +162,15 @@ export function VideoButton({ muted, ...rest }) {
); );
} }
export function ScreenshareButton({ enabled, className, ...rest }) { export function ScreenshareButton({
enabled,
className,
...rest
}: {
enabled: boolean;
className?: string;
[index: string]: unknown;
}) {
return ( return (
<TooltipTrigger> <TooltipTrigger>
<Button variant="toolbarSecondary" {...rest} on={enabled}> <Button variant="toolbarSecondary" {...rest} on={enabled}>
@@ -134,7 +181,13 @@ export function ScreenshareButton({ enabled, className, ...rest }) {
); );
} }
export function HangupButton({ className, ...rest }) { export function HangupButton({
className,
...rest
}: {
className?: string;
[index: string]: unknown;
}) {
return ( return (
<TooltipTrigger> <TooltipTrigger>
<Button <Button
@@ -149,7 +202,13 @@ export function HangupButton({ className, ...rest }) {
); );
} }
export function SettingsButton({ className, ...rest }) { export function SettingsButton({
className,
...rest
}: {
className?: string;
[index: string]: unknown;
}) {
return ( return (
<TooltipTrigger> <TooltipTrigger>
<Button variant="toolbar" {...rest}> <Button variant="toolbar" {...rest}>
@@ -160,7 +219,13 @@ export function SettingsButton({ className, ...rest }) {
); );
} }
export function InviteButton({ className, ...rest }) { export function InviteButton({
className,
...rest
}: {
className?: string;
[index: string]: unknown;
}) {
return ( return (
<TooltipTrigger> <TooltipTrigger>
<Button variant="toolbar" {...rest}> <Button variant="toolbar" {...rest}>

View File

@@ -16,10 +16,18 @@ limitations under the License.
import React from "react"; import React from "react";
import useClipboard from "react-use-clipboard"; import useClipboard from "react-use-clipboard";
import { ReactComponent as CheckIcon } from "../icons/Check.svg"; import { ReactComponent as CheckIcon } from "../icons/Check.svg";
import { ReactComponent as CopyIcon } from "../icons/Copy.svg"; import { ReactComponent as CopyIcon } from "../icons/Copy.svg";
import { Button } from "./Button"; import { Button, ButtonVariant } from "./Button";
interface Props {
value: string;
children: JSX.Element;
className: string;
variant: ButtonVariant;
copiedMessage: string;
}
export function CopyButton({ export function CopyButton({
value, value,
children, children,
@@ -27,7 +35,7 @@ export function CopyButton({
variant, variant,
copiedMessage, copiedMessage,
...rest ...rest
}) { }: Props) {
const [isCopied, setCopied] = useClipboard(value, { successDuration: 3000 }); const [isCopied, setCopied] = useClipboard(value, { successDuration: 3000 });
return ( return (

View File

@@ -17,9 +17,28 @@ limitations under the License.
import React from "react"; import React from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import classNames from "classnames"; import classNames from "classnames";
import { variantToClassName, sizeToClassName } from "./Button";
export function LinkButton({ className, variant, size, children, ...rest }) { import {
variantToClassName,
sizeToClassName,
ButtonVariant,
ButtonSize,
} from "./Button";
interface Props {
className: string;
variant: ButtonVariant;
size: ButtonSize;
children: JSX.Element;
[index: string]: unknown;
}
export function LinkButton({
className,
variant,
size,
children,
...rest
}: Props) {
return ( return (
<Link <Link
className={classNames( className={classNames(

View File

@@ -53,8 +53,12 @@ export function AudioPreview({
onSelectionChange={setAudioInput} onSelectionChange={setAudioInput}
className={styles.inputField} className={styles.inputField}
> >
{audioInputs.map(({ deviceId, label }) => ( {audioInputs.map(({ deviceId, label }, index) => (
<Item key={deviceId}>{label}</Item> <Item key={deviceId}>
{!!label && label.trim().length > 0
? label
: `Microphone ${index + 1}`}
</Item>
))} ))}
</SelectInput> </SelectInput>
{audioOutputs.length > 0 && ( {audioOutputs.length > 0 && (
@@ -64,8 +68,12 @@ export function AudioPreview({
onSelectionChange={setAudioOutput} onSelectionChange={setAudioOutput}
className={styles.inputField} className={styles.inputField}
> >
{audioOutputs.map(({ deviceId, label }) => ( {audioOutputs.map(({ deviceId, label }, index) => (
<Item key={deviceId}>{label}</Item> <Item key={deviceId}>
{!!label && label.trim().length > 0
? label
: `Speaker ${index + 1}`}
</Item>
))} ))}
</SelectInput> </SelectInput>
)} )}

View File

@@ -28,6 +28,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin: 20px; margin: 20px;
text-align: center;
} }
.participants > p { .participants > p {

View File

@@ -130,7 +130,7 @@ export const usePTT = (
const onMuteStateChanged = useCallback(() => { const onMuteStateChanged = useCallback(() => {
const activeSpeakerFeed = getActiveSpeakerFeed(userMediaFeeds, groupCall); const activeSpeakerFeed = getActiveSpeakerFeed(userMediaFeeds, groupCall);
let blocked = false; let blocked = transmitBlocked;
if (activeSpeakerUserId === null && activeSpeakerFeed !== null) { if (activeSpeakerUserId === null && activeSpeakerFeed !== null) {
if (activeSpeakerFeed.userId === client.getUserId()) { if (activeSpeakerFeed.userId === client.getUserId()) {
playClip(PTTClipID.START_TALKING_LOCAL); playClip(PTTClipID.START_TALKING_LOCAL);
@@ -141,8 +141,8 @@ export const usePTT = (
playClip(PTTClipID.END_TALKING); playClip(PTTClipID.END_TALKING);
} else if ( } else if (
pttButtonHeld && pttButtonHeld &&
activeSpeakerUserId === client.getUserId() && activeSpeakerFeed?.userId !== client.getUserId() &&
activeSpeakerFeed?.userId !== client.getUserId() !transmitBlocked
) { ) {
// We were talking but we've been cut off: mute our own mic // We were talking but we've been cut off: mute our own mic
// (this is the easier way of cutting other speakers off if an // (this is the easier way of cutting other speakers off if an
@@ -167,6 +167,7 @@ export const usePTT = (
client, client,
userMediaFeeds, userMediaFeeds,
setMicMuteWrapper, setMicMuteWrapper,
transmitBlocked,
]); ]);
useEffect(() => { useEffect(() => {

130
yarn.lock
View File

@@ -1082,7 +1082,7 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4": "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.8", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4":
version "7.16.7" version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
@@ -1096,6 +1096,13 @@
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.6.2":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580"
integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.12.7", "@babel/template@^7.16.7": "@babel/template@^7.12.7", "@babel/template@^7.16.7":
version "7.16.7" version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
@@ -1469,16 +1476,16 @@
integrity sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA== integrity sha512-92FRmppjjqz29VMJ2dn+xdyXZBrMlE42AV6Kq6BwjWV7CNUW1hs2FtxSNLQE+gJhaZ6AAmYuO9y8dshhcBl7vA==
"@react-aria/button@^3.3.4": "@react-aria/button@^3.3.4":
version "3.3.4" version "3.5.1"
resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.3.4.tgz#3af6eb4e0a479a76ba7386d541051d1273cd68fa" resolved "https://registry.yarnpkg.com/@react-aria/button/-/button-3.5.1.tgz#8084a50d4f7daa34dfd7b6d41b90f40dcf15e15e"
integrity sha512-vebTcf9YpwaKCvsca2VWhn6eYPa15OJtMENwaGop72UrL35Oa7xDgU0RG22RAjRjt8HRVlAfLpHkJQW6GBGU3g== integrity sha512-M0AaDeJoM4wu2xkv1FvbhuvWB78yF8yNE91KkyEW+TMBiEjSaij61jyov95m08DT2EXSxuXnch3BoP8s3XHj4g==
dependencies: dependencies:
"@babel/runtime" "^7.6.2" "@babel/runtime" "^7.6.2"
"@react-aria/focus" "^3.5.0" "@react-aria/focus" "^3.6.1"
"@react-aria/interactions" "^3.6.0" "@react-aria/interactions" "^3.9.1"
"@react-aria/utils" "^3.9.0" "@react-aria/utils" "^3.13.1"
"@react-stately/toggle" "^3.2.3" "@react-stately/toggle" "^3.3.1"
"@react-types/button" "^3.4.1" "@react-types/button" "^3.5.1"
"@react-aria/dialog@^3.1.4": "@react-aria/dialog@^3.1.4":
version "3.1.4" version "3.1.4"
@@ -1502,6 +1509,17 @@
"@react-types/shared" "^3.9.0" "@react-types/shared" "^3.9.0"
clsx "^1.1.1" clsx "^1.1.1"
"@react-aria/focus@^3.6.1":
version "3.6.1"
resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.6.1.tgz#46478d0919bdc4fedfa1ea115b36f93c055ce8d8"
integrity sha512-4IHAu+826jC3SjWwuaYhCr0qhWg4XwmJIUEhcL1wbw3fq2dsjIBwEJ5HoayhluiVCfjGbcQcJNf1L4Vj3VTp4w==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/interactions" "^3.9.1"
"@react-aria/utils" "^3.13.1"
"@react-types/shared" "^3.13.1"
clsx "^1.1.1"
"@react-aria/i18n@^3.3.3": "@react-aria/i18n@^3.3.3":
version "3.3.4" version "3.3.4"
resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.3.4.tgz#172b8bcff0273410e67af31f7d84e49dd3ada463" resolved "https://registry.yarnpkg.com/@react-aria/i18n/-/i18n-3.3.4.tgz#172b8bcff0273410e67af31f7d84e49dd3ada463"
@@ -1515,7 +1533,7 @@
"@react-aria/utils" "^3.10.0" "@react-aria/utils" "^3.10.0"
"@react-types/shared" "^3.10.0" "@react-types/shared" "^3.10.0"
"@react-aria/interactions@^3.5.1", "@react-aria/interactions@^3.6.0", "@react-aria/interactions@^3.7.0": "@react-aria/interactions@^3.5.1", "@react-aria/interactions@^3.7.0":
version "3.7.0" version "3.7.0"
resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.7.0.tgz#eb19c1068b557a6b6df1e1c4abef07de719e9f25" resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.7.0.tgz#eb19c1068b557a6b6df1e1c4abef07de719e9f25"
integrity sha512-Xomchjb9bqvh3ocil+QCEYFSxsTy8PHEz43mNP6z2yuu3UqTpl2FsWfyKgF/Yy0WKVkyV2dO2uz758KJTCLZhw== integrity sha512-Xomchjb9bqvh3ocil+QCEYFSxsTy8PHEz43mNP6z2yuu3UqTpl2FsWfyKgF/Yy0WKVkyV2dO2uz758KJTCLZhw==
@@ -1524,6 +1542,15 @@
"@react-aria/utils" "^3.10.0" "@react-aria/utils" "^3.10.0"
"@react-types/shared" "^3.10.0" "@react-types/shared" "^3.10.0"
"@react-aria/interactions@^3.6.0", "@react-aria/interactions@^3.9.1":
version "3.9.1"
resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.9.1.tgz#1860b905d9a0b17ed74dd7fe769370e017cb3015"
integrity sha512-qPTJpUwIiis2OwpVzDd3I8dBjBkelDnvAW+dJkX+8B840JP5a7E1zVoAuR7OOAXqKa95R7miwK+5la1aSeWoDg==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/utils" "^3.13.1"
"@react-types/shared" "^3.13.1"
"@react-aria/label@^3.2.1": "@react-aria/label@^3.2.1":
version "3.2.1" version "3.2.1"
resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.2.1.tgz#e6562259e6b17e3856c4c3e0060903cf705d094b" resolved "https://registry.yarnpkg.com/@react-aria/label/-/label-3.2.1.tgz#e6562259e6b17e3856c4c3e0060903cf705d094b"
@@ -1615,13 +1642,20 @@
"@react-stately/selection" "^3.8.0" "@react-stately/selection" "^3.8.0"
"@react-types/shared" "^3.10.0" "@react-types/shared" "^3.10.0"
"@react-aria/ssr@^3.0.3", "@react-aria/ssr@^3.1.0": "@react-aria/ssr@^3.0.3":
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.1.0.tgz#b7163e6224725c30121932a8d1422ef91d1fab22" resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.1.0.tgz#b7163e6224725c30121932a8d1422ef91d1fab22"
integrity sha512-RxqQKmE8sO7TGdrcSlHTcVzMP450hqowtBSd2bBS9oPlcokVkaGq28c3Rwa8ty5ctw4EBCjXqjP7xdcKMGDzug== integrity sha512-RxqQKmE8sO7TGdrcSlHTcVzMP450hqowtBSd2bBS9oPlcokVkaGq28c3Rwa8ty5ctw4EBCjXqjP7xdcKMGDzug==
dependencies: dependencies:
"@babel/runtime" "^7.6.2" "@babel/runtime" "^7.6.2"
"@react-aria/ssr@^3.1.0", "@react-aria/ssr@^3.2.0":
version "3.2.0"
resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.2.0.tgz#88460384b43204f91c972d5b0de24ee44d6a2984"
integrity sha512-wwJFdkl+Q8NU5yJ4NvdAOqx5LM3QtUVoSjuK7Ey8jZ4WS4bB0EqT3Kr3IInBs257HzZ5nXCiKXKE4NGXXuIRWA==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/tabs@^3.1.0": "@react-aria/tabs@^3.1.0":
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.1.0.tgz#e64b17a592610195466026d7866bde0b32784e69" resolved "https://registry.yarnpkg.com/@react-aria/tabs/-/tabs-3.1.0.tgz#e64b17a592610195466026d7866bde0b32784e69"
@@ -1662,7 +1696,18 @@
"@react-types/shared" "^3.10.1" "@react-types/shared" "^3.10.1"
clsx "^1.1.1" clsx "^1.1.1"
"@react-aria/utils@^3.8.2", "@react-aria/utils@^3.9.0": "@react-aria/utils@^3.13.1", "@react-aria/utils@^3.9.0":
version "3.13.1"
resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.13.1.tgz#45557fdc7ae9de057a83014013bf09e54d074c96"
integrity sha512-usW6RoLKil4ylgDbRcaQ5YblNGv5ZihI4I9NB8pdazhw53cSRyLaygLdmHO33xgpPnAhb6Nb/tv8d5p6cAde+A==
dependencies:
"@babel/runtime" "^7.6.2"
"@react-aria/ssr" "^3.2.0"
"@react-stately/utils" "^3.5.0"
"@react-types/shared" "^3.13.1"
clsx "^1.1.1"
"@react-aria/utils@^3.8.2":
version "3.10.0" version "3.10.0"
resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.10.0.tgz#2f6f0b0ccede17241fca1cbd76978e1bf8f5a2b0" resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.10.0.tgz#2f6f0b0ccede17241fca1cbd76978e1bf8f5a2b0"
integrity sha512-he/1pV8gsTVwmYqbKI6DPtRUkWjzz/4icgemVVNjWNsiKEJSBj8Cr4I+0i3vIgXEPLnn1t+/LUsJMGFbKnqc9w== integrity sha512-he/1pV8gsTVwmYqbKI6DPtRUkWjzz/4icgemVVNjWNsiKEJSBj8Cr4I+0i3vIgXEPLnn1t+/LUsJMGFbKnqc9w==
@@ -1802,15 +1847,15 @@
"@react-stately/utils" "^3.2.2" "@react-stately/utils" "^3.2.2"
"@react-types/tabs" "^3.0.1" "@react-types/tabs" "^3.0.1"
"@react-stately/toggle@^3.2.3": "@react-stately/toggle@^3.3.1":
version "3.2.3" version "3.3.1"
resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.2.3.tgz#a4de6edc16982990492c6c557e5194f46dacc809" resolved "https://registry.yarnpkg.com/@react-stately/toggle/-/toggle-3.3.1.tgz#ad09ff0886c8c14ac479047423b01932f4ea04b2"
integrity sha512-p5eVjXwNo4y4CeybxfjYmbTzNMNiI67uspbRAJnawWBVWw8X+yIvRfpjYAsqmvsJ+DsvwybSTlQDT6taGoWEsA== integrity sha512-JIOPfeZ46vfQqfBygCmyIRL0KJwdHdVQ5PSii5YM0qs/kzaHm3SLGf/iiGjwcRCOsnL50zN9U5YNDtRAEbsncg==
dependencies: dependencies:
"@babel/runtime" "^7.6.2" "@babel/runtime" "^7.6.2"
"@react-stately/utils" "^3.2.2" "@react-stately/utils" "^3.5.0"
"@react-types/checkbox" "^3.2.3" "@react-types/checkbox" "^3.3.1"
"@react-types/shared" "^3.8.0" "@react-types/shared" "^3.13.1"
"@react-stately/tooltip@^3.0.5": "@react-stately/tooltip@^3.0.5":
version "3.0.5" version "3.0.5"
@@ -1833,26 +1878,26 @@
"@react-stately/utils" "^3.2.2" "@react-stately/utils" "^3.2.2"
"@react-types/shared" "^3.8.0" "@react-types/shared" "^3.8.0"
"@react-stately/utils@^3.2.2", "@react-stately/utils@^3.3.0": "@react-stately/utils@^3.2.2", "@react-stately/utils@^3.3.0", "@react-stately/utils@^3.5.0":
version "3.3.0" version "3.5.0"
resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.3.0.tgz#99866c5788539268a06035acd5925b25bb4cedde" resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.5.0.tgz#e76231cfc93042814dcc5d96436e50c807c1d905"
integrity sha512-f//Y8q0+FFcS04xvCNvbba7WWRLHzj2AegLgdgwTxsnk9Gb+AyuasdRrRY7bGQhdHuEJ7OIiQZ9EQWndDbrTcg== integrity sha512-WzzwlQtJrf7egaN+lt02/f/wkFKbcscsbinmXs9pL7QyYm+BCQ9xXj01w0juzt93piZgB/kfIYJqInEdpudh1A==
dependencies: dependencies:
"@babel/runtime" "^7.6.2" "@babel/runtime" "^7.6.2"
"@react-types/button@^3.4.1": "@react-types/button@^3.4.1", "@react-types/button@^3.5.1":
version "3.4.1" version "3.5.1"
resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.4.1.tgz#715ac9d4997c79233be4d9020b58f85936b8252b" resolved "https://registry.yarnpkg.com/@react-types/button/-/button-3.5.1.tgz#152113ea1ca0f4dadf16130dcb7043385e8a29c9"
integrity sha512-B54M84LxdEppwjXNlkBEJyMfe9fd+bvFV7R6+NJvupGrZm/LuFNYjFcHk7yjMKWTdWm6DbpIuQz54n5qTW7Vlg== integrity sha512-GxTikDKfuztu1r0LWHmqG1AD5yM9F6WFzwAYgLltn8B7RshzpJcYSfpYsh1e64z84YJpEoj+DD8XGGSc0p/rvw==
dependencies: dependencies:
"@react-types/shared" "^3.8.0" "@react-types/shared" "^3.13.1"
"@react-types/checkbox@^3.2.3": "@react-types/checkbox@^3.3.1":
version "3.2.3" version "3.3.1"
resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.2.3.tgz#2b9d529c55c9884519c7f626f0fe8be7d0f18be1" resolved "https://registry.yarnpkg.com/@react-types/checkbox/-/checkbox-3.3.1.tgz#2d088fa84e89ef47ad7c80c1f990517d3b24db7c"
integrity sha512-YqeAFyrpaxI/eW6zQ7tVkKIASgzpywRrc6C/rV6Mw0zzGGSSvmYvdOBx9yHOEvpts7dLgaGlmLK6CeG7s4yGKg== integrity sha512-6PlyvfqisuObrltmJdBx88t143NaQ/ibkvuDdsEaiMlJbHKU4m0dbxaYNhGNQ0Jm4AK/x9Rig0tbpMeXjBXaDA==
dependencies: dependencies:
"@react-types/shared" "^3.8.0" "@react-types/shared" "^3.13.1"
"@react-types/dialog@^3.3.1": "@react-types/dialog@^3.3.1":
version "3.3.1" version "3.3.1"
@@ -1898,12 +1943,17 @@
dependencies: dependencies:
"@react-types/shared" "^3.10.0" "@react-types/shared" "^3.10.0"
"@react-types/shared@^3.10.0", "@react-types/shared@^3.10.1": "@react-types/shared@^3.10.0", "@react-types/shared@^3.13.1", "@react-types/shared@^3.8.0":
version "3.13.1"
resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.13.1.tgz#eda5e3744971606f753baf7879136bf8e3f707ab"
integrity sha512-EHQqILDJeDvnloy5VV9lnnEjpCMwH1ghptCfa/lz9Ht9nwco3qGCvUABkWyND7yU1Adt3A/1oJxhpRUu3eTlyg==
"@react-types/shared@^3.10.1":
version "3.10.1" version "3.10.1"
resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.10.1.tgz#16cd3038361dee63f351fa4d0fd25d90480a149b" resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.10.1.tgz#16cd3038361dee63f351fa4d0fd25d90480a149b"
integrity sha512-U3dLJtstvOiZ8XLrWdNv9WXuruoDyfIfSXguTs9N0naDdO+M0MIbt/1Hg7Toe43ueAe56GM14IFL+S0/jhv8ow== integrity sha512-U3dLJtstvOiZ8XLrWdNv9WXuruoDyfIfSXguTs9N0naDdO+M0MIbt/1Hg7Toe43ueAe56GM14IFL+S0/jhv8ow==
"@react-types/shared@^3.8.0", "@react-types/shared@^3.9.0": "@react-types/shared@^3.9.0":
version "3.10.0" version "3.10.0"
resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.10.0.tgz#bdafed2ebcd31149c178312252dda0babde316d0" resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.10.0.tgz#bdafed2ebcd31149c178312252dda0babde316d0"
integrity sha512-B1gTRpE5qkSpfGxw8BHeOwvBPP3gnfKnzPHV0FJQHtgJ46oJS64WyloDAp1D9cLVsFHaI6s/HviXL51kVce2ww== integrity sha512-B1gTRpE5qkSpfGxw8BHeOwvBPP3gnfKnzPHV0FJQHtgJ46oJS64WyloDAp1D9cLVsFHaI6s/HviXL51kVce2ww==
@@ -4611,9 +4661,9 @@ clone-deep@^4.0.1:
shallow-clone "^3.0.0" shallow-clone "^3.0.0"
clsx@^1.1.1: clsx@^1.1.1:
version "1.1.1" version "1.2.0"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.0.tgz#b0e415ea7537dbac01b169c5cec1caeb11d86566"
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== integrity sha512-EPRP7XJsM1y0iCU3Z7C7jFKdQboXSeHgEfzQUTlz7m5NP3hDrlz48aUsmNGp4pC+JOW9WA3vIRqlYuo/bl4Drw==
collapse-white-space@^1.0.2: collapse-white-space@^1.0.2:
version "1.0.6" version "1.0.6"
@@ -8602,9 +8652,9 @@ matrix-events-sdk@^0.0.1-beta.7:
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz#5ffe45eba1f67cc8d7c2377736c728b322524934" resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1-beta.7.tgz#5ffe45eba1f67cc8d7c2377736c728b322524934"
integrity sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA== integrity sha512-9jl4wtWanUFSy2sr2lCjErN/oC8KTAtaeaozJtrgot1JiQcEI4Rda9OLgQ7nLKaqb4Z/QUx/fR3XpDzm5Jy1JA==
"matrix-js-sdk@github:matrix-org/matrix-js-sdk#9a15094374f52053ca9f833269d2b1c6c7f964d2": "matrix-js-sdk@github:matrix-org/matrix-js-sdk#984dd26a138411ef73903ff4e635f2752e0829f2":
version "18.1.0" version "18.1.0"
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/9a15094374f52053ca9f833269d2b1c6c7f964d2" resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/984dd26a138411ef73903ff4e635f2752e0829f2"
dependencies: dependencies:
"@babel/runtime" "^7.12.5" "@babel/runtime" "^7.12.5"
"@types/sdp-transform" "^2.4.5" "@types/sdp-transform" "^2.4.5"