mirror of
https://github.com/vector-im/element-call.git
synced 2024-11-24 00:38:31 +08:00
Merge branch 'livekit' into test-call-vm
This commit is contained in:
commit
156f1e3a10
@ -1,17 +1,8 @@
|
|||||||
const COPYRIGHT_HEADER = `/*
|
const COPYRIGHT_HEADER = `/*
|
||||||
Copyright %%CURRENT_YEAR%% New Vector Ltd
|
Copyright %%CURRENT_YEAR%% New Vector Ltd.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
SPDX-License-Identifier: AGPL-3.0-only
|
||||||
you may not use this file except in compliance with the License.
|
Please see LICENSE in the repository root for full details.
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
2
.github/workflows/element-call.yaml
vendored
2
.github/workflows/element-call.yaml
vendored
@ -39,7 +39,7 @@ jobs:
|
|||||||
VITE_APP_VERSION: ${{ inputs.vite_app_version }}
|
VITE_APP_VERSION: ${{ inputs.vite_app_version }}
|
||||||
NODE_OPTIONS: "--max-old-space-size=4096"
|
NODE_OPTIONS: "--max-old-space-size=4096"
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4
|
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4
|
||||||
with:
|
with:
|
||||||
name: build-output
|
name: build-output
|
||||||
path: dist
|
path: dist
|
||||||
|
2
.github/workflows/translations-download.yaml
vendored
2
.github/workflows/translations-download.yaml
vendored
@ -39,7 +39,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Create Pull Request
|
- name: Create Pull Request
|
||||||
id: cpr
|
id: cpr
|
||||||
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
|
uses: peter-evans/create-pull-request@d121e62763d8cc35b5fb1710e887d6e69a52d3a4 # v7.0.2
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
token: ${{ secrets.ELEMENT_BOT_TOKEN }}
|
||||||
branch: actions/localazy-download
|
branch: actions/localazy-download
|
||||||
|
@ -83,7 +83,7 @@
|
|||||||
"livekit-client": "^2.0.2",
|
"livekit-client": "^2.0.2",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"loglevel": "^1.9.1",
|
"loglevel": "^1.9.1",
|
||||||
"matrix-js-sdk": "matrix-org/matrix-js-sdk#169e8f86139111574a3738f8557c6fa4b2a199db",
|
"matrix-js-sdk": "matrix-org/matrix-js-sdk#414ac9d8cc28330718236b90ad67a1507e146932",
|
||||||
"matrix-widget-api": "^1.8.2",
|
"matrix-widget-api": "^1.8.2",
|
||||||
"normalize.css": "^8.0.1",
|
"normalize.css": "^8.0.1",
|
||||||
"observable-hooks": "^4.2.3",
|
"observable-hooks": "^4.2.3",
|
||||||
@ -110,5 +110,8 @@
|
|||||||
"vite-plugin-svgr": "^4.0.0",
|
"vite-plugin-svgr": "^4.0.0",
|
||||||
"vitest": "^2.0.0",
|
"vitest": "^2.0.0",
|
||||||
"vitest-axe": "^1.0.0-pre.3"
|
"vitest-axe": "^1.0.0-pre.3"
|
||||||
|
},
|
||||||
|
"resolutions": {
|
||||||
|
"strip-ansi": "6.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,14 +8,20 @@ Please see LICENSE in the repository root for full details.
|
|||||||
import { FC } from "react";
|
import { FC } from "react";
|
||||||
import { Trans } from "react-i18next";
|
import { Trans } from "react-i18next";
|
||||||
|
|
||||||
import { Link } from "../typography/Typography";
|
import { ExternalLink } from "../button/Link";
|
||||||
|
|
||||||
export const AnalyticsNotice: FC = () => (
|
export const AnalyticsNotice: FC = () => (
|
||||||
<Trans i18nKey="analytics_notice">
|
<Trans i18nKey="analytics_notice">
|
||||||
By participating in this beta, you consent to the collection of anonymous
|
By participating in this beta, you consent to the collection of anonymous
|
||||||
data, which we use to improve the product. You can find more information
|
data, which we use to improve the product. You can find more information
|
||||||
about which data we track in our{" "}
|
about which data we track in our{" "}
|
||||||
<Link href="https://element.io/privacy">Privacy Policy</Link> and our{" "}
|
<ExternalLink href="https://element.io/privacy">
|
||||||
<Link href="https://element.io/cookie-policy">Cookie Policy</Link>.
|
Privacy Policy
|
||||||
|
</ExternalLink>{" "}
|
||||||
|
and our{" "}
|
||||||
|
<ExternalLink href="https://element.io/cookie-policy">
|
||||||
|
Cookie Policy
|
||||||
|
</ExternalLink>
|
||||||
|
.
|
||||||
</Trans>
|
</Trans>
|
||||||
);
|
);
|
||||||
|
@ -19,7 +19,7 @@ import { captureException } from "@sentry/react";
|
|||||||
import { sleep } from "matrix-js-sdk/src/utils";
|
import { sleep } from "matrix-js-sdk/src/utils";
|
||||||
import { Trans, useTranslation } from "react-i18next";
|
import { Trans, useTranslation } from "react-i18next";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button, Text } from "@vector-im/compound-web";
|
||||||
|
|
||||||
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
||||||
import { useClientLegacy } from "../ClientContext";
|
import { useClientLegacy } from "../ClientContext";
|
||||||
@ -28,10 +28,10 @@ import styles from "./LoginPage.module.css";
|
|||||||
import Logo from "../icons/LogoLarge.svg?react";
|
import Logo from "../icons/LogoLarge.svg?react";
|
||||||
import { LoadingView } from "../FullScreenView";
|
import { LoadingView } from "../FullScreenView";
|
||||||
import { useRecaptcha } from "./useRecaptcha";
|
import { useRecaptcha } from "./useRecaptcha";
|
||||||
import { Caption, Link } from "../typography/Typography";
|
|
||||||
import { usePageTitle } from "../usePageTitle";
|
import { usePageTitle } from "../usePageTitle";
|
||||||
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
|
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
|
||||||
import { Config } from "../config/Config";
|
import { Config } from "../config/Config";
|
||||||
|
import { ExternalLink, Link } from "../button/Link";
|
||||||
|
|
||||||
export const RegisterPage: FC = () => {
|
export const RegisterPage: FC = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
@ -201,24 +201,24 @@ export const RegisterPage: FC = () => {
|
|||||||
data-testid="register_confirm_password"
|
data-testid="register_confirm_password"
|
||||||
/>
|
/>
|
||||||
</FieldRow>
|
</FieldRow>
|
||||||
<Caption>
|
<Text size="sm">
|
||||||
<Trans i18nKey="recaptcha_caption">
|
<Trans i18nKey="recaptcha_caption">
|
||||||
This site is protected by ReCAPTCHA and the Google{" "}
|
This site is protected by ReCAPTCHA and the Google{" "}
|
||||||
<Link href="https://www.google.com/policies/privacy/">
|
<ExternalLink href="https://www.google.com/policies/privacy/">
|
||||||
Privacy Policy
|
Privacy Policy
|
||||||
</Link>{" "}
|
</ExternalLink>{" "}
|
||||||
and{" "}
|
and{" "}
|
||||||
<Link href="https://policies.google.com/terms">
|
<ExternalLink href="https://policies.google.com/terms">
|
||||||
Terms of Service
|
Terms of Service
|
||||||
</Link>{" "}
|
</ExternalLink>{" "}
|
||||||
apply.
|
apply.
|
||||||
<br />
|
<br />
|
||||||
By clicking "Register", you agree to our{" "}
|
By clicking "Register", you agree to our{" "}
|
||||||
<Link href={Config.get().eula}>
|
<ExternalLink href={Config.get().eula}>
|
||||||
End User Licensing Agreement (EULA)
|
End User Licensing Agreement (EULA)
|
||||||
</Link>
|
</ExternalLink>
|
||||||
</Trans>
|
</Trans>
|
||||||
</Caption>
|
</Text>
|
||||||
{error && (
|
{error && (
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<ErrorMessage error={error} />
|
<ErrorMessage error={error} />
|
||||||
|
13
src/button/Link.module.css
Normal file
13
src/button/Link.module.css
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2024 New Vector Ltd.
|
||||||
|
|
||||||
|
SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
Please see LICENSE in the repository root for full details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.external {
|
||||||
|
/* By default links will be blue/purple (or whatever the user agent does), but
|
||||||
|
in our designs we generally want external links to be the same color as the
|
||||||
|
surrounding text */
|
||||||
|
color: inherit;
|
||||||
|
}
|
@ -15,10 +15,16 @@ import {
|
|||||||
import { Link as CpdLink } from "@vector-im/compound-web";
|
import { Link as CpdLink } from "@vector-im/compound-web";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { createPath, LocationDescriptor, Path } from "history";
|
import { createPath, LocationDescriptor, Path } from "history";
|
||||||
|
import classNames from "classnames";
|
||||||
|
|
||||||
|
import { useLatest } from "../useLatest";
|
||||||
|
import styles from "./Link.module.css";
|
||||||
|
|
||||||
export function useLink(
|
export function useLink(
|
||||||
to: LocationDescriptor,
|
to: LocationDescriptor,
|
||||||
|
state?: unknown,
|
||||||
): [Path, (e: MouseEvent) => void] {
|
): [Path, (e: MouseEvent) => void] {
|
||||||
|
const latestState = useLatest(state);
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const path = useMemo(
|
const path = useMemo(
|
||||||
() => (typeof to === "string" ? to : createPath(to)),
|
() => (typeof to === "string" ? to : createPath(to)),
|
||||||
@ -27,9 +33,9 @@ export function useLink(
|
|||||||
const onClick = useCallback(
|
const onClick = useCallback(
|
||||||
(e: MouseEvent) => {
|
(e: MouseEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
history.push(to);
|
history.push(to, latestState.current);
|
||||||
},
|
},
|
||||||
[history, to],
|
[history, to, latestState],
|
||||||
);
|
);
|
||||||
|
|
||||||
return [path, onClick];
|
return [path, onClick];
|
||||||
@ -38,15 +44,37 @@ export function useLink(
|
|||||||
type Props = Omit<
|
type Props = Omit<
|
||||||
ComponentPropsWithoutRef<typeof CpdLink>,
|
ComponentPropsWithoutRef<typeof CpdLink>,
|
||||||
"href" | "onClick"
|
"href" | "onClick"
|
||||||
> & { to: LocationDescriptor };
|
> & { to: LocationDescriptor; state?: unknown };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A version of Compound's link component that integrates with our router setup.
|
* A version of Compound's link component that integrates with our router setup.
|
||||||
|
* This is only for app-internal links.
|
||||||
*/
|
*/
|
||||||
export const Link = forwardRef<HTMLAnchorElement, Props>(function Link(
|
export const Link = forwardRef<HTMLAnchorElement, Props>(function Link(
|
||||||
{ to, ...props },
|
{ to, state, ...props },
|
||||||
ref,
|
ref,
|
||||||
) {
|
) {
|
||||||
const [path, onClick] = useLink(to);
|
const [path, onClick] = useLink(to, state);
|
||||||
return <CpdLink ref={ref} {...props} href={path} onClick={onClick} />;
|
return <CpdLink ref={ref} {...props} href={path} onClick={onClick} />;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A link to an external web page, made to fit into blocks of text more subtly
|
||||||
|
* than the normal Compound link component.
|
||||||
|
*/
|
||||||
|
export const ExternalLink = forwardRef<
|
||||||
|
HTMLAnchorElement,
|
||||||
|
ComponentPropsWithoutRef<"a">
|
||||||
|
>(function ExternalLink({ className, children, ...props }, ref) {
|
||||||
|
return (
|
||||||
|
<a
|
||||||
|
ref={ref}
|
||||||
|
className={classNames(className, styles.external)}
|
||||||
|
target="_blank"
|
||||||
|
rel="noreferrer noopener"
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</a>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
@ -50,6 +50,12 @@ Please see LICENSE in the repository root for full details.
|
|||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.callName {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
.facePile {
|
.facePile {
|
||||||
margin-top: 8px;
|
margin-top: 8px;
|
||||||
}
|
}
|
||||||
@ -64,3 +70,8 @@ Please see LICENSE in the repository root for full details.
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.disabled {
|
||||||
|
cursor: not-allowed;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
@ -9,12 +9,15 @@ import { Link } from "react-router-dom";
|
|||||||
import { MatrixClient } from "matrix-js-sdk/src/client";
|
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||||
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
|
import { RoomMember } from "matrix-js-sdk/src/models/room-member";
|
||||||
import { Room } from "matrix-js-sdk/src/models/room";
|
import { Room } from "matrix-js-sdk/src/models/room";
|
||||||
import { FC } from "react";
|
import { FC, useCallback, MouseEvent, useState } from "react";
|
||||||
|
import { useTranslation } from "react-i18next";
|
||||||
|
import { IconButton, Text } from "@vector-im/compound-web";
|
||||||
|
import { CloseIcon } from "@vector-im/compound-design-tokens/assets/web/icons";
|
||||||
|
import classNames from "classnames";
|
||||||
|
|
||||||
import { Avatar, Size } from "../Avatar";
|
import { Avatar, Size } from "../Avatar";
|
||||||
import styles from "./CallList.module.css";
|
import styles from "./CallList.module.css";
|
||||||
import { getRelativeRoomUrl } from "../utils/matrix";
|
import { getRelativeRoomUrl } from "../utils/matrix";
|
||||||
import { Body } from "../typography/Typography";
|
|
||||||
import { GroupCallRoom } from "./useGroupCallRooms";
|
import { GroupCallRoom } from "./useGroupCallRooms";
|
||||||
import { useRoomEncryptionSystem } from "../e2ee/sharedKeyManagement";
|
import { useRoomEncryptionSystem } from "../e2ee/sharedKeyManagement";
|
||||||
|
|
||||||
@ -55,22 +58,53 @@ interface CallTileProps {
|
|||||||
client: MatrixClient;
|
client: MatrixClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
const CallTile: FC<CallTileProps> = ({ name, avatarUrl, room }) => {
|
const CallTile: FC<CallTileProps> = ({ name, avatarUrl, room, client }) => {
|
||||||
|
const { t } = useTranslation();
|
||||||
const roomEncryptionSystem = useRoomEncryptionSystem(room.roomId);
|
const roomEncryptionSystem = useRoomEncryptionSystem(room.roomId);
|
||||||
|
const [isLeaving, setIsLeaving] = useState(false);
|
||||||
|
|
||||||
|
const onRemove = useCallback(
|
||||||
|
(e: MouseEvent) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
setIsLeaving(true);
|
||||||
|
client.leave(room.roomId).catch(() => setIsLeaving(false));
|
||||||
|
},
|
||||||
|
[room, client],
|
||||||
|
);
|
||||||
|
|
||||||
|
const body = (
|
||||||
|
<>
|
||||||
|
<Avatar id={room.roomId} name={name} size={Size.LG} src={avatarUrl} />
|
||||||
|
<div className={styles.callInfo}>
|
||||||
|
<Text weight="semibold" className={styles.callName}>
|
||||||
|
{name}
|
||||||
|
</Text>
|
||||||
|
</div>
|
||||||
|
<IconButton
|
||||||
|
onClick={onRemove}
|
||||||
|
disabled={isLeaving}
|
||||||
|
aria-label={t("action.remove")}
|
||||||
|
>
|
||||||
|
<CloseIcon />
|
||||||
|
</IconButton>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.callTile}>
|
<div className={styles.callTile}>
|
||||||
<Link
|
{isLeaving ? (
|
||||||
to={getRelativeRoomUrl(room.roomId, roomEncryptionSystem, room.name)}
|
<span className={classNames(styles.callTileLink, styles.disabled)}>
|
||||||
className={styles.callTileLink}
|
{body}
|
||||||
>
|
</span>
|
||||||
<Avatar id={room.roomId} name={name} size={Size.LG} src={avatarUrl} />
|
) : (
|
||||||
<div className={styles.callInfo}>
|
<Link
|
||||||
<Body overflowEllipsis fontWeight="semiBold">
|
to={getRelativeRoomUrl(room.roomId, roomEncryptionSystem, room.name)}
|
||||||
{name}
|
className={styles.callTileLink}
|
||||||
</Body>
|
>
|
||||||
</div>
|
{body}
|
||||||
<div className={styles.copyButtonSpacer} />
|
</Link>
|
||||||
</Link>
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -9,7 +9,7 @@ import { useState, useCallback, FormEvent, FormEventHandler, FC } from "react";
|
|||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { MatrixClient } from "matrix-js-sdk/src/client";
|
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Heading } from "@vector-im/compound-web";
|
import { Heading, Text } from "@vector-im/compound-web";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button } from "@vector-im/compound-web";
|
||||||
|
|
||||||
@ -27,7 +27,6 @@ import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
|||||||
import { CallList } from "./CallList";
|
import { CallList } from "./CallList";
|
||||||
import { UserMenuContainer } from "../UserMenuContainer";
|
import { UserMenuContainer } from "../UserMenuContainer";
|
||||||
import { JoinExistingCallModal } from "./JoinExistingCallModal";
|
import { JoinExistingCallModal } from "./JoinExistingCallModal";
|
||||||
import { Caption } from "../typography/Typography";
|
|
||||||
import { Form } from "../form/Form";
|
import { Form } from "../form/Form";
|
||||||
import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
|
import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
|
||||||
import { E2eeType } from "../e2ee/e2eeType";
|
import { E2eeType } from "../e2ee/e2eeType";
|
||||||
@ -144,9 +143,9 @@ export const RegisteredView: FC<Props> = ({ client }) => {
|
|||||||
</Button>
|
</Button>
|
||||||
</FieldRow>
|
</FieldRow>
|
||||||
{optInAnalytics === null && (
|
{optInAnalytics === null && (
|
||||||
<Caption className={styles.notice}>
|
<Text size="sm" className={styles.notice}>
|
||||||
<AnalyticsNotice />
|
<AnalyticsNotice />
|
||||||
</Caption>
|
</Text>
|
||||||
)}
|
)}
|
||||||
{error && (
|
{error && (
|
||||||
<FieldRow className={styles.fieldRow}>
|
<FieldRow className={styles.fieldRow}>
|
||||||
|
@ -9,7 +9,7 @@ import { FC, useCallback, useState, FormEventHandler } from "react";
|
|||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { randomString } from "matrix-js-sdk/src/randomstring";
|
import { randomString } from "matrix-js-sdk/src/randomstring";
|
||||||
import { Trans, useTranslation } from "react-i18next";
|
import { Trans, useTranslation } from "react-i18next";
|
||||||
import { Button, Heading } from "@vector-im/compound-web";
|
import { Button, Heading, Text } from "@vector-im/compound-web";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
|
|
||||||
import { useClient } from "../ClientContext";
|
import { useClient } from "../ClientContext";
|
||||||
@ -25,7 +25,6 @@ import {
|
|||||||
import { useInteractiveRegistration } from "../auth/useInteractiveRegistration";
|
import { useInteractiveRegistration } from "../auth/useInteractiveRegistration";
|
||||||
import { JoinExistingCallModal } from "./JoinExistingCallModal";
|
import { JoinExistingCallModal } from "./JoinExistingCallModal";
|
||||||
import { useRecaptcha } from "../auth/useRecaptcha";
|
import { useRecaptcha } from "../auth/useRecaptcha";
|
||||||
import { Body, Caption, Link } from "../typography/Typography";
|
|
||||||
import { Form } from "../form/Form";
|
import { Form } from "../form/Form";
|
||||||
import styles from "./UnauthenticatedView.module.css";
|
import styles from "./UnauthenticatedView.module.css";
|
||||||
import commonStyles from "./common.module.css";
|
import commonStyles from "./common.module.css";
|
||||||
@ -34,6 +33,7 @@ import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
|
|||||||
import { Config } from "../config/Config";
|
import { Config } from "../config/Config";
|
||||||
import { E2eeType } from "../e2ee/e2eeType";
|
import { E2eeType } from "../e2ee/e2eeType";
|
||||||
import { useOptInAnalytics } from "../settings/settings";
|
import { useOptInAnalytics } from "../settings/settings";
|
||||||
|
import { ExternalLink, Link } from "../button/Link";
|
||||||
|
|
||||||
export const UnauthenticatedView: FC = () => {
|
export const UnauthenticatedView: FC = () => {
|
||||||
const { setClient } = useClient();
|
const { setClient } = useClient();
|
||||||
@ -178,18 +178,18 @@ export const UnauthenticatedView: FC = () => {
|
|||||||
/>
|
/>
|
||||||
</FieldRow>
|
</FieldRow>
|
||||||
{optInAnalytics === null && (
|
{optInAnalytics === null && (
|
||||||
<Caption className={styles.notice}>
|
<Text size="sm" className={styles.notice}>
|
||||||
<AnalyticsNotice />
|
<AnalyticsNotice />
|
||||||
</Caption>
|
</Text>
|
||||||
)}
|
)}
|
||||||
<Caption className={styles.notice}>
|
<Text size="sm" className={styles.notice}>
|
||||||
<Trans i18nKey="unauthenticated_view_eula_caption">
|
<Trans i18nKey="unauthenticated_view_eula_caption">
|
||||||
By clicking "Go", you agree to our{" "}
|
By clicking "Go", you agree to our{" "}
|
||||||
<Link href={Config.get().eula}>
|
<ExternalLink href={Config.get().eula}>
|
||||||
End User Licensing Agreement (EULA)
|
End User Licensing Agreement (EULA)
|
||||||
</Link>
|
</ExternalLink>
|
||||||
</Trans>
|
</Trans>
|
||||||
</Caption>
|
</Text>
|
||||||
{error && (
|
{error && (
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<ErrorMessage error={error} />
|
<ErrorMessage error={error} />
|
||||||
@ -207,19 +207,19 @@ export const UnauthenticatedView: FC = () => {
|
|||||||
</Form>
|
</Form>
|
||||||
</main>
|
</main>
|
||||||
<footer className={styles.footer}>
|
<footer className={styles.footer}>
|
||||||
<Body className={styles.mobileLoginLink}>
|
<Text className={styles.mobileLoginLink}>
|
||||||
<Link color="primary" to="/login" data-testid="home_login">
|
<Link to="/login" data-testid="home_login">
|
||||||
{t("unauthenticated_view_login_button")}
|
{t("unauthenticated_view_login_button")}
|
||||||
</Link>
|
</Link>
|
||||||
</Body>
|
</Text>
|
||||||
<Body>
|
<Text>
|
||||||
<Trans i18nKey="unauthenticated_view_body">
|
<Trans i18nKey="unauthenticated_view_body">
|
||||||
Not registered yet?{" "}
|
Not registered yet?{" "}
|
||||||
<Link color="primary" to="/register" data-testid="home_register">
|
<Link to="/register" data-testid="home_register">
|
||||||
Create an account
|
Create an account
|
||||||
</Link>
|
</Link>
|
||||||
</Trans>
|
</Trans>
|
||||||
</Body>
|
</Text>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
{onFinished && (
|
{onFinished && (
|
||||||
|
@ -237,16 +237,6 @@ body[data-platform="desktop"] {
|
|||||||
line-height: var(--font-size-title);
|
line-height: var(--font-size-title);
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
|
||||||
color: var(--cpd-color-text-action-accent);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover,
|
|
||||||
a:active {
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
width: calc(100% - 24px);
|
width: calc(100% - 24px);
|
||||||
border: none;
|
border: none;
|
||||||
|
10
src/main.tsx
10
src/main.tsx
@ -18,7 +18,7 @@ import "./index.css";
|
|||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
import {
|
import {
|
||||||
setLogExtension as setLKLogExtension,
|
setLogExtension as setLKLogExtension,
|
||||||
setLogLevel,
|
setLogLevel as setLKLogLevel,
|
||||||
} from "livekit-client";
|
} from "livekit-client";
|
||||||
|
|
||||||
import { App } from "./App";
|
import { App } from "./App";
|
||||||
@ -28,9 +28,11 @@ import { Initializer } from "./initializer";
|
|||||||
initRageshake().catch((e) => {
|
initRageshake().catch((e) => {
|
||||||
logger.error("Failed to initialize rageshake", e);
|
logger.error("Failed to initialize rageshake", e);
|
||||||
});
|
});
|
||||||
|
setLKLogLevel("debug");
|
||||||
setLogLevel("debug");
|
setLKLogExtension((level, msg, context) => {
|
||||||
setLKLogExtension(global.mx_rage_logger.log);
|
// we pass a synthetic logger name of "livekit" to the rageshake to make it easier to read
|
||||||
|
global.mx_rage_logger.log(level, "livekit", msg, context);
|
||||||
|
});
|
||||||
|
|
||||||
logger.info(`Element Call ${import.meta.env.VITE_APP_VERSION || "dev"}`);
|
logger.info(`Element Call ${import.meta.env.VITE_APP_VERSION || "dev"}`);
|
||||||
|
|
||||||
|
@ -9,12 +9,11 @@ import { FC, FormEventHandler, ReactNode, useCallback, useState } from "react";
|
|||||||
import { MatrixClient } from "matrix-js-sdk/src/client";
|
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||||
import { Trans, useTranslation } from "react-i18next";
|
import { Trans, useTranslation } from "react-i18next";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button, Heading, Text } from "@vector-im/compound-web";
|
||||||
|
|
||||||
import styles from "./CallEndedView.module.css";
|
import styles from "./CallEndedView.module.css";
|
||||||
import feedbackStyle from "../input/FeedbackInput.module.css";
|
import feedbackStyle from "../input/FeedbackInput.module.css";
|
||||||
import { useProfile } from "../profile/useProfile";
|
import { useProfile } from "../profile/useProfile";
|
||||||
import { Body, Headline } from "../typography/Typography";
|
|
||||||
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
|
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
|
||||||
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
|
import { PosthogAnalytics } from "../analytics/PosthogAnalytics";
|
||||||
import { FieldRow, InputField } from "../input/Input";
|
import { FieldRow, InputField } from "../input/Input";
|
||||||
@ -139,11 +138,11 @@ export const CallEndedView: FC<Props> = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<main className={styles.main}>
|
<main className={styles.main}>
|
||||||
<Headline className={styles.headline}>
|
<Heading size="xl" weight="semibold" className={styles.headline}>
|
||||||
<Trans i18nKey="call_ended_view.body">
|
<Trans i18nKey="call_ended_view.body">
|
||||||
You were disconnected from the call
|
You were disconnected from the call
|
||||||
</Trans>
|
</Trans>
|
||||||
</Headline>
|
</Heading>
|
||||||
<div className={styles.disconnectedButtons}>
|
<div className={styles.disconnectedButtons}>
|
||||||
<Button onClick={reconnect}>
|
<Button onClick={reconnect}>
|
||||||
{t("call_ended_view.reconnect_button")}
|
{t("call_ended_view.reconnect_button")}
|
||||||
@ -154,9 +153,9 @@ export const CallEndedView: FC<Props> = ({
|
|||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
{!confineToRoom && (
|
{!confineToRoom && (
|
||||||
<Body className={styles.footer}>
|
<Text className={styles.footer}>
|
||||||
<Link to="/"> {t("return_home_button")} </Link>
|
<Link to="/"> {t("return_home_button")} </Link>
|
||||||
</Body>
|
</Text>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@ -164,7 +163,7 @@ export const CallEndedView: FC<Props> = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<main className={styles.main}>
|
<main className={styles.main}>
|
||||||
<Headline className={styles.headline}>
|
<Heading size="xl" weight="semibold" className={styles.headline}>
|
||||||
{surveySubmitted
|
{surveySubmitted
|
||||||
? t("call_ended_view.headline", {
|
? t("call_ended_view.headline", {
|
||||||
displayName,
|
displayName,
|
||||||
@ -174,16 +173,16 @@ export const CallEndedView: FC<Props> = ({
|
|||||||
}) +
|
}) +
|
||||||
"\n" +
|
"\n" +
|
||||||
t("call_ended_view.survey_prompt")}
|
t("call_ended_view.survey_prompt")}
|
||||||
</Headline>
|
</Heading>
|
||||||
{(!surveySubmitted || confineToRoom) &&
|
{(!surveySubmitted || confineToRoom) &&
|
||||||
PosthogAnalytics.instance.isEnabled()
|
PosthogAnalytics.instance.isEnabled()
|
||||||
? qualitySurveyDialog
|
? qualitySurveyDialog
|
||||||
: createAccountDialog}
|
: createAccountDialog}
|
||||||
</main>
|
</main>
|
||||||
{!confineToRoom && (
|
{!confineToRoom && (
|
||||||
<Body className={styles.footer}>
|
<Text className={styles.footer}>
|
||||||
<Link to="/"> {t("call_ended_view.not_now_button")} </Link>
|
<Link to="/"> {t("call_ended_view.not_now_button")} </Link>
|
||||||
</Body>
|
</Text>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@ -5,13 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only
|
|||||||
Please see LICENSE in the repository root for full details.
|
Please see LICENSE in the repository root for full details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { useCallback } from "react";
|
|
||||||
import { MatrixClient } from "matrix-js-sdk/src/client";
|
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { MatrixError } from "matrix-js-sdk/src/matrix";
|
import { MatrixError } from "matrix-js-sdk/src/matrix";
|
||||||
import { useHistory } from "react-router-dom";
|
import { Heading, Text } from "@vector-im/compound-web";
|
||||||
import { Heading, Link, Text } from "@vector-im/compound-web";
|
|
||||||
|
|
||||||
|
import { Link } from "../button/Link";
|
||||||
import {
|
import {
|
||||||
useLoadGroupCall,
|
useLoadGroupCall,
|
||||||
GroupCallStatus,
|
GroupCallStatus,
|
||||||
@ -35,15 +34,6 @@ export function GroupCallLoader({
|
|||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const groupCallState = useLoadGroupCall(client, roomIdOrAlias, viaServers);
|
const groupCallState = useLoadGroupCall(client, roomIdOrAlias, viaServers);
|
||||||
|
|
||||||
const history = useHistory();
|
|
||||||
const onHomeClick = useCallback(
|
|
||||||
(ev: React.MouseEvent) => {
|
|
||||||
ev.preventDefault();
|
|
||||||
history.push("/");
|
|
||||||
},
|
|
||||||
[history],
|
|
||||||
);
|
|
||||||
|
|
||||||
switch (groupCallState.kind) {
|
switch (groupCallState.kind) {
|
||||||
case "loaded":
|
case "loaded":
|
||||||
case "waitForInvite":
|
case "waitForInvite":
|
||||||
@ -63,9 +53,7 @@ export function GroupCallLoader({
|
|||||||
<Text>{t("group_call_loader.failed_text")}</Text>
|
<Text>{t("group_call_loader.failed_text")}</Text>
|
||||||
{/* XXX: A 'create it for me' button would be the obvious UX here. Two screens already have
|
{/* XXX: A 'create it for me' button would be the obvious UX here. Two screens already have
|
||||||
dupes of this flow, let's make a common component and put it here. */}
|
dupes of this flow, let's make a common component and put it here. */}
|
||||||
<Link href="/" onClick={onHomeClick}>
|
<Link to="/">{t("common.home")}</Link>
|
||||||
{t("common.home")}
|
|
||||||
</Link>
|
|
||||||
</FullScreenView>
|
</FullScreenView>
|
||||||
);
|
);
|
||||||
} else if (groupCallState.error instanceof CallTerminatedMessage) {
|
} else if (groupCallState.error instanceof CallTerminatedMessage) {
|
||||||
@ -79,9 +67,7 @@ export function GroupCallLoader({
|
|||||||
<Text size="sm">"{groupCallState.error.reason}"</Text>
|
<Text size="sm">"{groupCallState.error.reason}"</Text>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
<Link href="/" onClick={onHomeClick}>
|
<Link to="/">{t("common.home")}</Link>
|
||||||
{t("common.home")}
|
|
||||||
</Link>
|
|
||||||
</FullScreenView>
|
</FullScreenView>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
|
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
|
||||||
import { JoinRule } from "matrix-js-sdk/src/matrix";
|
import { JoinRule } from "matrix-js-sdk/src/matrix";
|
||||||
import { Heading, Link, Text } from "@vector-im/compound-web";
|
import { Heading, Text } from "@vector-im/compound-web";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
import type { IWidgetApiRequest } from "matrix-widget-api";
|
import type { IWidgetApiRequest } from "matrix-widget-api";
|
||||||
@ -40,6 +40,7 @@ import { useJoinRule } from "./useJoinRule";
|
|||||||
import { InviteModal } from "./InviteModal";
|
import { InviteModal } from "./InviteModal";
|
||||||
import { useUrlParams } from "../UrlParams";
|
import { useUrlParams } from "../UrlParams";
|
||||||
import { E2eeType } from "../e2ee/e2eeType";
|
import { E2eeType } from "../e2ee/e2eeType";
|
||||||
|
import { Link } from "../button/Link";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
interface Window {
|
interface Window {
|
||||||
@ -85,6 +86,14 @@ export const GroupCallView: FC<Props> = ({
|
|||||||
};
|
};
|
||||||
}, [rtcSession]);
|
}, [rtcSession]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// Sanity check the room object
|
||||||
|
if (client.getRoom(rtcSession.room.roomId) !== rtcSession.room)
|
||||||
|
logger.warn(
|
||||||
|
`We've ended up with multiple rooms for the same ID (${rtcSession.room.roomId}). This indicates a bug in the group call loading code, and may lead to incomplete room state.`,
|
||||||
|
);
|
||||||
|
}, [client, rtcSession.room]);
|
||||||
|
|
||||||
const { displayName, avatarUrl } = useProfile(client);
|
const { displayName, avatarUrl } = useProfile(client);
|
||||||
const roomName = useRoomName(rtcSession.room);
|
const roomName = useRoomName(rtcSession.room);
|
||||||
const roomAvatar = useRoomAvatar(rtcSession.room);
|
const roomAvatar = useRoomAvatar(rtcSession.room);
|
||||||
@ -273,14 +282,6 @@ export const GroupCallView: FC<Props> = ({
|
|||||||
);
|
);
|
||||||
const onShareClick = joinRule === JoinRule.Public ? onShareClickFn : null;
|
const onShareClick = joinRule === JoinRule.Public ? onShareClickFn : null;
|
||||||
|
|
||||||
const onHomeClick = useCallback(
|
|
||||||
(ev: React.MouseEvent) => {
|
|
||||||
ev.preventDefault();
|
|
||||||
history.push("/");
|
|
||||||
},
|
|
||||||
[history],
|
|
||||||
);
|
|
||||||
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
if (!isE2EESupportedBrowser() && e2eeSystem.kind !== E2eeType.NONE) {
|
if (!isE2EESupportedBrowser() && e2eeSystem.kind !== E2eeType.NONE) {
|
||||||
@ -289,9 +290,7 @@ export const GroupCallView: FC<Props> = ({
|
|||||||
<FullScreenView>
|
<FullScreenView>
|
||||||
<Heading>{t("browser_media_e2ee_unsupported_heading")}</Heading>
|
<Heading>{t("browser_media_e2ee_unsupported_heading")}</Heading>
|
||||||
<Text>{t("browser_media_e2ee_unsupported")}</Text>
|
<Text>{t("browser_media_e2ee_unsupported")}</Text>
|
||||||
<Link href="/" onClick={onHomeClick}>
|
<Link to="/">{t("common.home")}</Link>
|
||||||
{t("common.home")}
|
|
||||||
</Link>
|
|
||||||
</FullScreenView>
|
</FullScreenView>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -7,12 +7,11 @@ Please see LICENSE in the repository root for full details.
|
|||||||
|
|
||||||
import { FC, useEffect } from "react";
|
import { FC, useEffect } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button, Text } from "@vector-im/compound-web";
|
||||||
|
|
||||||
import { Modal, Props as ModalProps } from "../Modal";
|
import { Modal, Props as ModalProps } from "../Modal";
|
||||||
import { FieldRow, ErrorMessage } from "../input/Input";
|
import { FieldRow, ErrorMessage } from "../input/Input";
|
||||||
import { useSubmitRageshake } from "../settings/submit-rageshake";
|
import { useSubmitRageshake } from "../settings/submit-rageshake";
|
||||||
import { Body } from "../typography/Typography";
|
|
||||||
|
|
||||||
interface Props extends Omit<ModalProps, "title" | "children"> {
|
interface Props extends Omit<ModalProps, "title" | "children"> {
|
||||||
rageshakeRequestId: string;
|
rageshakeRequestId: string;
|
||||||
@ -40,7 +39,7 @@ export const RageshakeRequestModal: FC<Props> = ({
|
|||||||
open={open}
|
open={open}
|
||||||
onDismiss={onDismiss}
|
onDismiss={onDismiss}
|
||||||
>
|
>
|
||||||
<Body>{t("rageshake_request_modal.body")}</Body>
|
<Text>{t("rageshake_request_modal.body")}</Text>
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<Button
|
<Button
|
||||||
onClick={(): void =>
|
onClick={(): void =>
|
||||||
|
@ -9,16 +9,16 @@ import { FC, useCallback, useState } from "react";
|
|||||||
import { useLocation } from "react-router-dom";
|
import { useLocation } from "react-router-dom";
|
||||||
import { Trans, useTranslation } from "react-i18next";
|
import { Trans, useTranslation } from "react-i18next";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button, Heading, Text } from "@vector-im/compound-web";
|
||||||
|
|
||||||
import styles from "./RoomAuthView.module.css";
|
import styles from "./RoomAuthView.module.css";
|
||||||
import { Body, Caption, Link, Headline } from "../typography/Typography";
|
|
||||||
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
|
import { Header, HeaderLogo, LeftNav, RightNav } from "../Header";
|
||||||
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
||||||
import { Form } from "../form/Form";
|
import { Form } from "../form/Form";
|
||||||
import { UserMenuContainer } from "../UserMenuContainer";
|
import { UserMenuContainer } from "../UserMenuContainer";
|
||||||
import { useRegisterPasswordlessUser } from "../auth/useRegisterPasswordlessUser";
|
import { useRegisterPasswordlessUser } from "../auth/useRegisterPasswordlessUser";
|
||||||
import { Config } from "../config/Config";
|
import { Config } from "../config/Config";
|
||||||
|
import { ExternalLink, Link } from "../button/Link";
|
||||||
|
|
||||||
export const RoomAuthView: FC = () => {
|
export const RoomAuthView: FC = () => {
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
@ -63,9 +63,9 @@ export const RoomAuthView: FC = () => {
|
|||||||
</Header>
|
</Header>
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
<main className={styles.main}>
|
<main className={styles.main}>
|
||||||
<Headline className={styles.headline}>
|
<Heading size="xl" weight="semibold" className={styles.headline}>
|
||||||
{t("lobby.join_button")}
|
{t("lobby.join_button")}
|
||||||
</Headline>
|
</Heading>
|
||||||
<Form className={styles.form} onSubmit={onSubmit}>
|
<Form className={styles.form} onSubmit={onSubmit}>
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<InputField
|
<InputField
|
||||||
@ -79,14 +79,14 @@ export const RoomAuthView: FC = () => {
|
|||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
/>
|
/>
|
||||||
</FieldRow>
|
</FieldRow>
|
||||||
<Caption>
|
<Text size="sm">
|
||||||
<Trans i18nKey="room_auth_view_eula_caption">
|
<Trans i18nKey="room_auth_view_eula_caption">
|
||||||
By clicking "Join call now", you agree to our{" "}
|
By clicking "Join call now", you agree to our{" "}
|
||||||
<Link href={Config.get().eula}>
|
<ExternalLink href={Config.get().eula}>
|
||||||
End User Licensing Agreement (EULA)
|
End User Licensing Agreement (EULA)
|
||||||
</Link>
|
</ExternalLink>
|
||||||
</Trans>
|
</Trans>
|
||||||
</Caption>
|
</Text>
|
||||||
{error && (
|
{error && (
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<ErrorMessage error={error} />
|
<ErrorMessage error={error} />
|
||||||
@ -103,17 +103,14 @@ export const RoomAuthView: FC = () => {
|
|||||||
<div id={recaptchaId} />
|
<div id={recaptchaId} />
|
||||||
</Form>
|
</Form>
|
||||||
</main>
|
</main>
|
||||||
<Body className={styles.footer}>
|
<Text className={styles.footer}>
|
||||||
<Trans i18nKey="unauthenticated_view_body">
|
<Trans i18nKey="unauthenticated_view_body">
|
||||||
Not registered yet?{" "}
|
Not registered yet?{" "}
|
||||||
<Link
|
<Link to="/register" state={{ from: location }}>
|
||||||
color="primary"
|
|
||||||
to={{ pathname: "/register", state: { from: location } }}
|
|
||||||
>
|
|
||||||
Create an account
|
Create an account
|
||||||
</Link>
|
</Link>
|
||||||
</Trans>
|
</Trans>
|
||||||
</Body>
|
</Text>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
@ -17,7 +17,7 @@ import { SyncState } from "matrix-js-sdk/src/sync";
|
|||||||
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
|
import { MatrixRTCSession } from "matrix-js-sdk/src/matrixrtc/MatrixRTCSession";
|
||||||
import { RoomEvent, Room } from "matrix-js-sdk/src/models/room";
|
import { RoomEvent, Room } from "matrix-js-sdk/src/models/room";
|
||||||
import { KnownMembership } from "matrix-js-sdk/src/types";
|
import { KnownMembership } from "matrix-js-sdk/src/types";
|
||||||
import { JoinRule } from "matrix-js-sdk/src/matrix";
|
import { JoinRule, MatrixError } from "matrix-js-sdk/src/matrix";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
import { widget } from "../widget";
|
import { widget } from "../widget";
|
||||||
@ -54,6 +54,42 @@ export type GroupCallStatus =
|
|||||||
| GroupCallWaitForInvite
|
| GroupCallWaitForInvite
|
||||||
| GroupCallCanKnock;
|
| GroupCallCanKnock;
|
||||||
|
|
||||||
|
const MAX_ATTEMPTS_FOR_INVITE_JOIN_FAILURE = 3;
|
||||||
|
const DELAY_MS_FOR_INVITE_JOIN_FAILURE = 3000;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Join a room, and retry on M_FORBIDDEN error in order to work
|
||||||
|
* around a potential race when joining rooms over federation.
|
||||||
|
*
|
||||||
|
* Will wait up to to `DELAY_MS_FOR_INVITE_JOIN_FAILURE` per attempt.
|
||||||
|
* Will try up to `MAX_ATTEMPTS_FOR_INVITE_JOIN_FAILURE` times.
|
||||||
|
*
|
||||||
|
* @see https://github.com/element-hq/element-call/issues/2634
|
||||||
|
* @param client The matrix client
|
||||||
|
* @param attempt Number of attempts made.
|
||||||
|
* @param params Parameters to pass to client.joinRoom
|
||||||
|
*/
|
||||||
|
async function joinRoomAfterInvite(
|
||||||
|
client: MatrixClient,
|
||||||
|
attempt = 0,
|
||||||
|
...params: Parameters<MatrixClient["joinRoom"]>
|
||||||
|
): ReturnType<MatrixClient["joinRoom"]> {
|
||||||
|
try {
|
||||||
|
return await client.joinRoom(...params);
|
||||||
|
} catch (ex) {
|
||||||
|
if (
|
||||||
|
ex instanceof MatrixError &&
|
||||||
|
ex.errcode === "M_FORBIDDEN" &&
|
||||||
|
attempt < MAX_ATTEMPTS_FOR_INVITE_JOIN_FAILURE
|
||||||
|
) {
|
||||||
|
// If we were invited and got a M_FORBIDDEN, it's highly likely the server hasn't caught up yet.
|
||||||
|
await new Promise((r) => setTimeout(r, DELAY_MS_FOR_INVITE_JOIN_FAILURE));
|
||||||
|
return joinRoomAfterInvite(client, attempt + 1, ...params);
|
||||||
|
}
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class CallTerminatedMessage extends Error {
|
export class CallTerminatedMessage extends Error {
|
||||||
/**
|
/**
|
||||||
* @param messageBody The message explaining the kind of termination (kick, ban, knock reject, etc.) (translated)
|
* @param messageBody The message explaining the kind of termination (kick, ban, knock reject, etc.) (translated)
|
||||||
@ -162,10 +198,13 @@ export const useLoadGroupCall = (
|
|||||||
membership === KnownMembership.Invite &&
|
membership === KnownMembership.Invite &&
|
||||||
prevMembership === KnownMembership.Knock
|
prevMembership === KnownMembership.Knock
|
||||||
) {
|
) {
|
||||||
client.joinRoom(room.roomId, { viaServers }).then((room) => {
|
joinRoomAfterInvite(client, 0, room.roomId, { viaServers }).then(
|
||||||
logger.log("Auto-joined %s", room.roomId);
|
(room) => {
|
||||||
resolve(room);
|
logger.log("Auto-joined %s", room.roomId);
|
||||||
}, reject);
|
resolve(room);
|
||||||
|
},
|
||||||
|
reject,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (membership === KnownMembership.Ban) reject(bannedError());
|
if (membership === KnownMembership.Ban) reject(bannedError());
|
||||||
if (membership === KnownMembership.Leave)
|
if (membership === KnownMembership.Leave)
|
||||||
|
@ -8,12 +8,11 @@ Please see LICENSE in the repository root for full details.
|
|||||||
import { FC, useCallback } from "react";
|
import { FC, useCallback } from "react";
|
||||||
import { randomString } from "matrix-js-sdk/src/randomstring";
|
import { randomString } from "matrix-js-sdk/src/randomstring";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { Button } from "@vector-im/compound-web";
|
import { Button, Text } from "@vector-im/compound-web";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { logger } from "matrix-js-sdk/src/logger";
|
||||||
|
|
||||||
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
import { FieldRow, InputField, ErrorMessage } from "../input/Input";
|
||||||
import { useSubmitRageshake, useRageshakeRequest } from "./submit-rageshake";
|
import { useSubmitRageshake, useRageshakeRequest } from "./submit-rageshake";
|
||||||
import { Body } from "../typography/Typography";
|
|
||||||
import feedbackStyles from "../input/FeedbackInput.module.css";
|
import feedbackStyles from "../input/FeedbackInput.module.css";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@ -56,7 +55,7 @@ export const FeedbackSettingsTab: FC<Props> = ({ roomId }) => {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<h4>{t("settings.feedback_tab_h4")}</h4>
|
<h4>{t("settings.feedback_tab_h4")}</h4>
|
||||||
<Body>{t("settings.feedback_tab_body")}</Body>
|
<Text>{t("settings.feedback_tab_body")}</Text>
|
||||||
<form onSubmit={onSubmitFeedback}>
|
<form onSubmit={onSubmitFeedback}>
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<InputField
|
<InputField
|
||||||
@ -69,9 +68,7 @@ export const FeedbackSettingsTab: FC<Props> = ({ roomId }) => {
|
|||||||
disabled={sending || sent}
|
disabled={sending || sent}
|
||||||
/>
|
/>
|
||||||
</FieldRow>
|
</FieldRow>
|
||||||
{sent ? (
|
{!sent && (
|
||||||
<Body> {t("settings.feedback_tab_thank_you")}</Body>
|
|
||||||
) : (
|
|
||||||
<FieldRow>
|
<FieldRow>
|
||||||
<InputField
|
<InputField
|
||||||
id="sendLogs"
|
id="sendLogs"
|
||||||
@ -80,16 +77,15 @@ export const FeedbackSettingsTab: FC<Props> = ({ roomId }) => {
|
|||||||
type="checkbox"
|
type="checkbox"
|
||||||
defaultChecked
|
defaultChecked
|
||||||
/>
|
/>
|
||||||
{error && (
|
|
||||||
<FieldRow>
|
|
||||||
<ErrorMessage error={error} />
|
|
||||||
</FieldRow>
|
|
||||||
)}
|
|
||||||
<Button type="submit" disabled={sending}>
|
<Button type="submit" disabled={sending}>
|
||||||
{sending ? t("submitting") : t("action.submit")}
|
{sending ? t("submitting") : t("action.submit")}
|
||||||
</Button>
|
</Button>
|
||||||
</FieldRow>
|
</FieldRow>
|
||||||
)}
|
)}
|
||||||
|
<FieldRow>
|
||||||
|
{error && <ErrorMessage error={error} />}
|
||||||
|
{sent && <Text>{t("settings.feedback_tab_thank_you")}</Text>}
|
||||||
|
</FieldRow>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
@ -8,13 +8,12 @@ Please see LICENSE in the repository root for full details.
|
|||||||
import { ChangeEvent, FC, ReactNode, useCallback } from "react";
|
import { ChangeEvent, FC, ReactNode, useCallback } from "react";
|
||||||
import { Trans, useTranslation } from "react-i18next";
|
import { Trans, useTranslation } from "react-i18next";
|
||||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||||
import { Dropdown } from "@vector-im/compound-web";
|
import { Dropdown, Text } from "@vector-im/compound-web";
|
||||||
|
|
||||||
import { Modal } from "../Modal";
|
import { Modal } from "../Modal";
|
||||||
import styles from "./SettingsModal.module.css";
|
import styles from "./SettingsModal.module.css";
|
||||||
import { Tab, TabContainer } from "../tabs/Tabs";
|
import { Tab, TabContainer } from "../tabs/Tabs";
|
||||||
import { FieldRow, InputField } from "../input/Input";
|
import { FieldRow, InputField } from "../input/Input";
|
||||||
import { Caption } from "../typography/Typography";
|
|
||||||
import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
|
import { AnalyticsNotice } from "../analytics/AnalyticsNotice";
|
||||||
import { ProfileSettingsTab } from "./ProfileSettingsTab";
|
import { ProfileSettingsTab } from "./ProfileSettingsTab";
|
||||||
import { FeedbackSettingsTab } from "./FeedbackSettingsTab";
|
import { FeedbackSettingsTab } from "./FeedbackSettingsTab";
|
||||||
@ -102,14 +101,14 @@ export const SettingsModal: FC<Props> = ({
|
|||||||
};
|
};
|
||||||
|
|
||||||
const optInDescription = (
|
const optInDescription = (
|
||||||
<Caption>
|
<Text size="sm">
|
||||||
<Trans i18nKey="settings.opt_in_description">
|
<Trans i18nKey="settings.opt_in_description">
|
||||||
<AnalyticsNotice />
|
<AnalyticsNotice />
|
||||||
<br />
|
<br />
|
||||||
You may withdraw consent by unchecking this box. If you are currently in
|
You may withdraw consent by unchecking this box. If you are currently in
|
||||||
a call, this setting will take effect at the end of the call.
|
a call, this setting will take effect at the end of the call.
|
||||||
</Trans>
|
</Trans>
|
||||||
</Caption>
|
</Text>
|
||||||
);
|
);
|
||||||
|
|
||||||
const devices = useMediaDevices();
|
const devices = useMediaDevices();
|
||||||
|
@ -29,9 +29,9 @@ Please see LICENSE in the repository root for full details.
|
|||||||
|
|
||||||
import EventEmitter from "events";
|
import EventEmitter from "events";
|
||||||
import { throttle } from "lodash";
|
import { throttle } from "lodash";
|
||||||
import { logger } from "matrix-js-sdk/src/logger";
|
import { Logger, logger } from "matrix-js-sdk/src/logger";
|
||||||
import { randomString } from "matrix-js-sdk/src/randomstring";
|
import { randomString } from "matrix-js-sdk/src/randomstring";
|
||||||
import { LoggingMethod } from "loglevel";
|
import loglevel, { LoggingMethod } from "loglevel";
|
||||||
|
|
||||||
// the length of log data we keep in indexeddb (and include in the reports)
|
// the length of log data we keep in indexeddb (and include in the reports)
|
||||||
const MAX_LOG_SIZE = 1024 * 1024 * 5; // 5 MB
|
const MAX_LOG_SIZE = 1024 * 1024 * 5; // 5 MB
|
||||||
@ -467,7 +467,12 @@ declare global {
|
|||||||
*/
|
*/
|
||||||
export async function init(): Promise<void> {
|
export async function init(): Promise<void> {
|
||||||
global.mx_rage_logger = new ConsoleLogger();
|
global.mx_rage_logger = new ConsoleLogger();
|
||||||
setLogExtension(global.mx_rage_logger.log);
|
setLogExtension(logger, global.mx_rage_logger.log);
|
||||||
|
// these are the child/prefixed loggers we want to capture from js-sdk
|
||||||
|
// there doesn't seem to be an easy way to capture all children
|
||||||
|
["MatrixRTCSession", "MatrixRTCSessionManager"].forEach((loggerName) => {
|
||||||
|
setLogExtension(logger.getChild(loggerName), global.mx_rage_logger.log);
|
||||||
|
});
|
||||||
|
|
||||||
return tryInitStorage();
|
return tryInitStorage();
|
||||||
}
|
}
|
||||||
@ -580,10 +585,14 @@ type LogLevelString = keyof typeof LogLevel;
|
|||||||
* took loglevel's example honouring log levels). Adds a loglevel logging extension
|
* took loglevel's example honouring log levels). Adds a loglevel logging extension
|
||||||
* in the recommended way.
|
* in the recommended way.
|
||||||
*/
|
*/
|
||||||
export function setLogExtension(extension: LogExtensionFunc): void {
|
function setLogExtension(
|
||||||
const originalFactory = logger.methodFactory;
|
_loggerToExtend: Logger,
|
||||||
|
extension: LogExtensionFunc,
|
||||||
|
): void {
|
||||||
|
const loggerToExtend = _loggerToExtend as unknown as loglevel.Logger;
|
||||||
|
const originalFactory = loggerToExtend.methodFactory;
|
||||||
|
|
||||||
logger.methodFactory = function (
|
loggerToExtend.methodFactory = function (
|
||||||
methodName,
|
methodName,
|
||||||
configLevel,
|
configLevel,
|
||||||
loggerName,
|
loggerName,
|
||||||
@ -594,11 +603,14 @@ export function setLogExtension(extension: LogExtensionFunc): void {
|
|||||||
const needLog = logLevel >= configLevel && logLevel < LogLevel.silent;
|
const needLog = logLevel >= configLevel && logLevel < LogLevel.silent;
|
||||||
|
|
||||||
return (...args) => {
|
return (...args) => {
|
||||||
|
// we don't send the logger name to the raw method as some of them are already outputting the prefix
|
||||||
rawMethod.apply(this, args);
|
rawMethod.apply(this, args);
|
||||||
if (needLog) {
|
if (needLog) {
|
||||||
extension(logLevel, ...args);
|
// we prefix the logger name to the extension
|
||||||
|
// this makes sure that the rageshake contains the logger name
|
||||||
|
extension(logLevel, loggerName?.toString(), ...args);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
logger.setLevel(logger.getLevel()); // Be sure to call setLevel method in order to apply plugin
|
loggerToExtend.setLevel(loggerToExtend.getLevel()); // Be sure to call setLevel method in order to apply plugin
|
||||||
}
|
}
|
||||||
|
@ -270,11 +270,17 @@ export function useSubmitRageshake(): {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
await fetch(Config.get().rageshake!.submit_url, {
|
const res = await fetch(Config.get().rageshake!.submit_url, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body,
|
body,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (res.status !== 200) {
|
||||||
|
throw new Error(
|
||||||
|
`Failed to submit feedback: receive HTTP ${res.status} ${res.statusText}`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
setState({ sending: false, sent: true, error: undefined });
|
setState({ sending: false, sent: true, error: undefined });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setState({ sending: false, sent: false, error: error as Error });
|
setState({ sending: false, sent: false, error: error as Error });
|
||||||
|
@ -16,7 +16,11 @@ import {
|
|||||||
ParticipantEvent,
|
ParticipantEvent,
|
||||||
RemoteParticipant,
|
RemoteParticipant,
|
||||||
} from "livekit-client";
|
} from "livekit-client";
|
||||||
import { Room as MatrixRoom, RoomMember } from "matrix-js-sdk/src/matrix";
|
import {
|
||||||
|
Room as MatrixRoom,
|
||||||
|
RoomMember,
|
||||||
|
RoomStateEvent,
|
||||||
|
} from "matrix-js-sdk/src/matrix";
|
||||||
import {
|
import {
|
||||||
EMPTY,
|
EMPTY,
|
||||||
Observable,
|
Observable,
|
||||||
@ -320,6 +324,8 @@ export class CallViewModel extends ViewModel {
|
|||||||
this.remoteParticipants,
|
this.remoteParticipants,
|
||||||
observeParticipantMedia(this.livekitRoom.localParticipant),
|
observeParticipantMedia(this.livekitRoom.localParticipant),
|
||||||
duplicateTiles.value,
|
duplicateTiles.value,
|
||||||
|
// Also react to changes in the list of members
|
||||||
|
fromEvent(this.matrixRoom, RoomStateEvent.Update).pipe(startWith(null)),
|
||||||
]).pipe(
|
]).pipe(
|
||||||
scan(
|
scan(
|
||||||
(
|
(
|
||||||
|
@ -1,47 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2022-2024 New Vector Ltd.
|
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.caption {
|
|
||||||
font-size: var(--font-size-caption);
|
|
||||||
line-height: var(--font-size-body);
|
|
||||||
}
|
|
||||||
|
|
||||||
.micro {
|
|
||||||
font-size: var(--font-size-micro);
|
|
||||||
line-height: var(--font-size-caption);
|
|
||||||
}
|
|
||||||
|
|
||||||
.regular {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.semiBold {
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bold {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link {
|
|
||||||
color: var(--cpd-color-text-link-external);
|
|
||||||
}
|
|
||||||
|
|
||||||
.link:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
opacity: initial;
|
|
||||||
}
|
|
||||||
|
|
||||||
.primary {
|
|
||||||
color: var(--cpd-color-text-action-accent);
|
|
||||||
}
|
|
||||||
|
|
||||||
.overflowEllipsis {
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
@ -1,262 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2022-2024 New Vector Ltd.
|
|
||||||
|
|
||||||
SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
Please see LICENSE in the repository root for full details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { createElement, forwardRef, ReactNode } from "react";
|
|
||||||
import classNames from "classnames";
|
|
||||||
import { Link as RouterLink } from "react-router-dom";
|
|
||||||
import * as H from "history";
|
|
||||||
|
|
||||||
import styles from "./Typography.module.css";
|
|
||||||
|
|
||||||
interface TypographyProps {
|
|
||||||
children: ReactNode;
|
|
||||||
fontWeight?: string;
|
|
||||||
className?: string;
|
|
||||||
overflowEllipsis?: boolean;
|
|
||||||
as?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Headline = forwardRef<HTMLHeadingElement, TypographyProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as: Component = "h1",
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
...rest,
|
|
||||||
className: classNames(
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Headline.displayName = "Headline";
|
|
||||||
|
|
||||||
export const Title = forwardRef<HTMLHeadingElement, TypographyProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as: Component = "h2",
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
...rest,
|
|
||||||
className: classNames(
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Title.displayName = "Title";
|
|
||||||
|
|
||||||
export const Subtitle = forwardRef<HTMLParagraphElement, TypographyProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as: Component = "h3",
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
...rest,
|
|
||||||
className: classNames(
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Subtitle.displayName = "Subtitle";
|
|
||||||
|
|
||||||
export const Body = forwardRef<HTMLParagraphElement, TypographyProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as: Component = "p",
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
...rest,
|
|
||||||
className: classNames(
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Body.displayName = "Body";
|
|
||||||
|
|
||||||
export const Caption = forwardRef<HTMLParagraphElement, TypographyProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as: Component = "p",
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
...rest,
|
|
||||||
className: classNames(
|
|
||||||
styles.caption,
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Caption.displayName = "Caption";
|
|
||||||
|
|
||||||
export const Micro = forwardRef<HTMLParagraphElement, TypographyProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as: Component = "p",
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
...rest,
|
|
||||||
className: classNames(
|
|
||||||
styles.micro,
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Micro.displayName = "Micro";
|
|
||||||
|
|
||||||
interface LinkProps extends TypographyProps {
|
|
||||||
to?: H.LocationDescriptor<unknown>;
|
|
||||||
color?: string;
|
|
||||||
href?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const Link = forwardRef<HTMLAnchorElement, LinkProps>(
|
|
||||||
(
|
|
||||||
{
|
|
||||||
as,
|
|
||||||
children,
|
|
||||||
className,
|
|
||||||
color = "link",
|
|
||||||
href,
|
|
||||||
to,
|
|
||||||
fontWeight,
|
|
||||||
overflowEllipsis,
|
|
||||||
...rest
|
|
||||||
},
|
|
||||||
ref,
|
|
||||||
) => {
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore
|
|
||||||
const Component: string | RouterLink = as || (to ? RouterLink : "a");
|
|
||||||
let externalLinkProps: { href: string; target: string; rel: string };
|
|
||||||
|
|
||||||
if (href) {
|
|
||||||
externalLinkProps = {
|
|
||||||
href,
|
|
||||||
target: "_blank",
|
|
||||||
rel: "noreferrer noopener",
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return createElement(
|
|
||||||
Component,
|
|
||||||
{
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore
|
|
||||||
...externalLinkProps,
|
|
||||||
...rest,
|
|
||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
||||||
// @ts-ignore
|
|
||||||
to: to,
|
|
||||||
className: classNames(
|
|
||||||
styles[color],
|
|
||||||
styles[fontWeight ?? ""],
|
|
||||||
{ [styles.overflowEllipsis]: overflowEllipsis },
|
|
||||||
className,
|
|
||||||
),
|
|
||||||
ref: ref,
|
|
||||||
},
|
|
||||||
children,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
Link.displayName = "Link";
|
|
314
yarn.lock
314
yarn.lock
@ -1746,48 +1746,40 @@
|
|||||||
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
|
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
|
||||||
|
|
||||||
"@floating-ui/core@^1.6.0":
|
"@floating-ui/core@^1.6.0":
|
||||||
version "1.6.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12"
|
|
||||||
integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==
|
|
||||||
dependencies:
|
|
||||||
"@floating-ui/utils" "^0.2.7"
|
|
||||||
|
|
||||||
"@floating-ui/dom@1.6.8":
|
|
||||||
version "1.6.8"
|
version "1.6.8"
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.8.tgz#45e20532b6d8a061b356a4fb336022cf2609754d"
|
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12"
|
||||||
integrity sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==
|
integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==
|
||||||
|
dependencies:
|
||||||
|
"@floating-ui/utils" "^0.2.8"
|
||||||
|
|
||||||
|
"@floating-ui/dom@1.6.11", "@floating-ui/dom@^1.0.0":
|
||||||
|
version "1.6.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723"
|
||||||
|
integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@floating-ui/core" "^1.6.0"
|
"@floating-ui/core" "^1.6.0"
|
||||||
"@floating-ui/utils" "^0.2.5"
|
"@floating-ui/utils" "^0.2.8"
|
||||||
|
|
||||||
"@floating-ui/dom@^1.0.0":
|
"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.2":
|
||||||
version "1.6.10"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f"
|
resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
|
||||||
integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==
|
integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
|
||||||
dependencies:
|
|
||||||
"@floating-ui/core" "^1.6.0"
|
|
||||||
"@floating-ui/utils" "^0.2.7"
|
|
||||||
|
|
||||||
"@floating-ui/react-dom@^2.0.0", "@floating-ui/react-dom@^2.1.1":
|
|
||||||
version "2.1.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.1.tgz#cca58b6b04fc92b4c39288252e285e0422291fb0"
|
|
||||||
integrity sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==
|
|
||||||
dependencies:
|
dependencies:
|
||||||
"@floating-ui/dom" "^1.0.0"
|
"@floating-ui/dom" "^1.0.0"
|
||||||
|
|
||||||
"@floating-ui/react@^0.26.9":
|
"@floating-ui/react@^0.26.9":
|
||||||
version "0.26.23"
|
version "0.26.24"
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.23.tgz#28985e5ce482c34f347f28076f11267e47a933bd"
|
resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.24.tgz#072b9dfeca4e79ef4e3000ef1c28e0ffc86f4ed4"
|
||||||
integrity sha512-9u3i62fV0CFF3nIegiWiRDwOs7OW/KhSUJDNx2MkQM3LbE5zQOY01sL3nelcVBXvX7Ovvo3A49I8ql+20Wg/Hw==
|
integrity sha512-2ly0pCkZIGEQUq5H8bBK0XJmc1xIK/RM3tvVzY3GBER7IOD1UgmC2Y2tjj4AuS+TC+vTE1KJv2053290jua0Sw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@floating-ui/react-dom" "^2.1.1"
|
"@floating-ui/react-dom" "^2.1.2"
|
||||||
"@floating-ui/utils" "^0.2.7"
|
"@floating-ui/utils" "^0.2.8"
|
||||||
tabbable "^6.0.0"
|
tabbable "^6.0.0"
|
||||||
|
|
||||||
"@floating-ui/utils@^0.2.5", "@floating-ui/utils@^0.2.7":
|
"@floating-ui/utils@^0.2.8":
|
||||||
version "0.2.7"
|
version "0.2.8"
|
||||||
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e"
|
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
|
||||||
integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==
|
integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
|
||||||
|
|
||||||
"@gulpjs/to-absolute-glob@^4.0.0":
|
"@gulpjs/to-absolute-glob@^4.0.0":
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
@ -1864,21 +1856,21 @@
|
|||||||
"@jridgewell/resolve-uri" "^3.1.0"
|
"@jridgewell/resolve-uri" "^3.1.0"
|
||||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||||
|
|
||||||
"@livekit/components-core@0.11.2", "@livekit/components-core@^0.11.0":
|
"@livekit/components-core@0.11.5", "@livekit/components-core@^0.11.0":
|
||||||
version "0.11.2"
|
version "0.11.5"
|
||||||
resolved "https://registry.yarnpkg.com/@livekit/components-core/-/components-core-0.11.2.tgz#fded2e207155e4737ed52830d48b75ae2eaaf449"
|
resolved "https://registry.yarnpkg.com/@livekit/components-core/-/components-core-0.11.5.tgz#6c61910f6cecd51a88a195ccbd9300832fdf1c22"
|
||||||
integrity sha512-rXQ1OvyGe9gY8BCpH5FTr4Il17/sS/ecJQbG3PoOXAkQVl5JP965eqUPyKXZTdxNKlVLef00AygrO2pPArwOTA==
|
integrity sha512-aaWPQJEfbY5tUND+diB7sW/6dRWN/H9lwqVy7L3nt15MszN1lX7ZlM9gA4ODquv+wUyFhxYfjRm7jVuV/g234g==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@floating-ui/dom" "1.6.8"
|
"@floating-ui/dom" "1.6.11"
|
||||||
loglevel "1.9.1"
|
loglevel "1.9.1"
|
||||||
rxjs "7.8.1"
|
rxjs "7.8.1"
|
||||||
|
|
||||||
"@livekit/components-react@^2.0.0":
|
"@livekit/components-react@^2.0.0":
|
||||||
version "2.4.3"
|
version "2.5.4"
|
||||||
resolved "https://registry.yarnpkg.com/@livekit/components-react/-/components-react-2.4.3.tgz#634b507be2dfede2267f304fc5922d1b69e2be56"
|
resolved "https://registry.yarnpkg.com/@livekit/components-react/-/components-react-2.5.4.tgz#43181f3a7718f58e4a77b0fdd45d96e99777ffa4"
|
||||||
integrity sha512-XhCvwFvNjhBJcoQHIY4Hk6MBp7mM9q0n0i7sN/xK3fB1DSjkxIkpc7lh/+Pjqdu6F6OJT3MjwNFYnftqy6kcmw==
|
integrity sha512-uog/fZMOABFNX2HS8R4zYr2F+m14vS4mifAnRWDux+4wjMvBminX57pRqf/YN9wHc0cmiPlq0Nd8JLWnqJd2fg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@livekit/components-core" "0.11.2"
|
"@livekit/components-core" "0.11.5"
|
||||||
clsx "2.1.1"
|
clsx "2.1.1"
|
||||||
usehooks-ts "3.1.0"
|
usehooks-ts "3.1.0"
|
||||||
|
|
||||||
@ -1889,10 +1881,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@bufbuild/protobuf" "^1.7.2"
|
"@bufbuild/protobuf" "^1.7.2"
|
||||||
|
|
||||||
"@matrix-org/matrix-sdk-crypto-wasm@^7.0.0":
|
"@matrix-org/matrix-sdk-crypto-wasm@^8.0.0":
|
||||||
version "7.0.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-7.0.0.tgz#8d6abdb9ded8656cc9e2a7909913a34bf3fc9b3a"
|
resolved "https://registry.yarnpkg.com/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-8.0.0.tgz#6ddc0e63538e821a2efbc5c1a2f0fa0f71d489ff"
|
||||||
integrity sha512-MOencXiW/gI5MuTtCNsuojjwT5DXCrjMqv9xOslJC9h2tPdLFFFMGr58dY5Lis4DRd9MRWcgrGowUIHOqieWTA==
|
integrity sha512-s0q3O2dK8b6hOJ+SZFz+s/IiMabmVsNue6r17sTwbrRD8liBkCrpjYnxoMYvtC01GggJ9TZLQbeqpt8hQSPHAg==
|
||||||
|
|
||||||
"@matrix-org/olm@3.2.15":
|
"@matrix-org/olm@3.2.15":
|
||||||
version "3.2.15"
|
version "3.2.15"
|
||||||
@ -2441,85 +2433,85 @@
|
|||||||
estree-walker "^2.0.2"
|
estree-walker "^2.0.2"
|
||||||
picomatch "^2.3.1"
|
picomatch "^2.3.1"
|
||||||
|
|
||||||
"@rollup/rollup-android-arm-eabi@4.21.2":
|
"@rollup/rollup-android-arm-eabi@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz#0412834dc423d1ff7be4cb1fc13a86a0cd262c11"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.3.tgz#155c7d82c1b36c3ad84d9adf9b3cd520cba81a0f"
|
||||||
integrity sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==
|
integrity sha512-MmKSfaB9GX+zXl6E8z4koOr/xU63AMVleLEa64v7R0QF/ZloMs5vcD1sHgM64GXXS1csaJutG+ddtzcueI/BLg==
|
||||||
|
|
||||||
"@rollup/rollup-android-arm64@4.21.2":
|
"@rollup/rollup-android-arm64@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz#baf1a014b13654f3b9e835388df9caf8c35389cb"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.3.tgz#b94b6fa002bd94a9cbd8f9e47e23b25e5bd113ba"
|
||||||
integrity sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==
|
integrity sha512-zrt8ecH07PE3sB4jPOggweBjJMzI1JG5xI2DIsUbkA+7K+Gkjys6eV7i9pOenNSDJH3eOr/jLb/PzqtmdwDq5g==
|
||||||
|
|
||||||
"@rollup/rollup-darwin-arm64@4.21.2":
|
"@rollup/rollup-darwin-arm64@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz#0a2c364e775acdf1172fe3327662eec7c46e55b1"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.3.tgz#0934126cf9cbeadfe0eb7471ab5d1517e8cd8dcc"
|
||||||
integrity sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==
|
integrity sha512-P0UxIOrKNBFTQaXTxOH4RxuEBVCgEA5UTNV6Yz7z9QHnUJ7eLX9reOd/NYMO3+XZO2cco19mXTxDMXxit4R/eQ==
|
||||||
|
|
||||||
"@rollup/rollup-darwin-x64@4.21.2":
|
"@rollup/rollup-darwin-x64@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz#a972db75890dfab8df0da228c28993220a468c42"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.3.tgz#0ce8e1e0f349778938c7c90e4bdc730640e0a13e"
|
||||||
integrity sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==
|
integrity sha512-L1M0vKGO5ASKntqtsFEjTq/fD91vAqnzeaF6sfNAy55aD+Hi2pBI5DKwCO+UNDQHWsDViJLqshxOahXyLSh3EA==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm-gnueabihf@4.21.2":
|
"@rollup/rollup-linux-arm-gnueabihf@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz#1609d0630ef61109dd19a278353e5176d92e30a1"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.3.tgz#5669d34775ad5d71e4f29ade99d0ff4df523afb6"
|
||||||
integrity sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==
|
integrity sha512-btVgIsCjuYFKUjopPoWiDqmoUXQDiW2A4C3Mtmp5vACm7/GnyuprqIDPNczeyR5W8rTXEbkmrJux7cJmD99D2g==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm-musleabihf@4.21.2":
|
"@rollup/rollup-linux-arm-musleabihf@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz#3c1dca5f160aa2e79e4b20ff6395eab21804f266"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.3.tgz#f6d1a0e1da4061370cb2f4244fbdd727c806dd88"
|
||||||
integrity sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==
|
integrity sha512-zmjbSphplZlau6ZTkxd3+NMtE4UKVy7U4aVFMmHcgO5CUbw17ZP6QCgyxhzGaU/wFFdTfiojjbLG3/0p9HhAqA==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm64-gnu@4.21.2":
|
"@rollup/rollup-linux-arm64-gnu@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz#c2fe376e8b04eafb52a286668a8df7c761470ac7"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.3.tgz#ed96a05e99743dee4d23cc4913fc6e01a0089c88"
|
||||||
integrity sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==
|
integrity sha512-nSZfcZtAnQPRZmUkUQwZq2OjQciR6tEoJaZVFvLHsj0MF6QhNMg0fQ6mUOsiCUpTqxTx0/O6gX0V/nYc7LrgPw==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm64-musl@4.21.2":
|
"@rollup/rollup-linux-arm64-musl@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz#e62a4235f01e0f66dbba587c087ca6db8008ec80"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.3.tgz#057ea26eaa7e537a06ded617d23d57eab3cecb58"
|
||||||
integrity sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==
|
integrity sha512-MnvSPGO8KJXIMGlQDYfvYS3IosFN2rKsvxRpPO2l2cum+Z3exiExLwVU+GExL96pn8IP+GdH8Tz70EpBhO0sIQ==
|
||||||
|
|
||||||
"@rollup/rollup-linux-powerpc64le-gnu@4.21.2":
|
"@rollup/rollup-linux-powerpc64le-gnu@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz#24b3457e75ee9ae5b1c198bd39eea53222a74e54"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.3.tgz#6e6e1f9404c9bf3fbd7d51cd11cd288a9a2843aa"
|
||||||
integrity sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==
|
integrity sha512-+W+p/9QNDr2vE2AXU0qIy0qQE75E8RTwTwgqS2G5CRQ11vzq0tbnfBd6brWhS9bCRjAjepJe2fvvkvS3dno+iw==
|
||||||
|
|
||||||
"@rollup/rollup-linux-riscv64-gnu@4.21.2":
|
"@rollup/rollup-linux-riscv64-gnu@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz#38edfba9620fe2ca8116c97e02bd9f2d606bde09"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.3.tgz#eef1536a53f6e6658a2a778130e6b1a4a41cb439"
|
||||||
integrity sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==
|
integrity sha512-yXH6K6KfqGXaxHrtr+Uoy+JpNlUlI46BKVyonGiaD74ravdnF9BUNC+vV+SIuB96hUMGShhKV693rF9QDfO6nQ==
|
||||||
|
|
||||||
"@rollup/rollup-linux-s390x-gnu@4.21.2":
|
"@rollup/rollup-linux-s390x-gnu@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz#a3bfb8bc5f1e802f8c76cff4a4be2e9f9ac36a18"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.3.tgz#2b28fb89ca084efaf8086f435025d96b4a966957"
|
||||||
integrity sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==
|
integrity sha512-R8cwY9wcnApN/KDYWTH4gV/ypvy9yZUHlbJvfaiXSB48JO3KpwSpjOGqO4jnGkLDSk1hgjYkTbTt6Q7uvPf8eg==
|
||||||
|
|
||||||
"@rollup/rollup-linux-x64-gnu@4.21.2":
|
"@rollup/rollup-linux-x64-gnu@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz#0dadf34be9199fcdda44b5985a086326344f30ad"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.3.tgz#5226cde6c6b495b04a3392c1d2c572844e42f06b"
|
||||||
integrity sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==
|
integrity sha512-kZPbX/NOPh0vhS5sI+dR8L1bU2cSO9FgxwM8r7wHzGydzfSjLRCFAT87GR5U9scj2rhzN3JPYVC7NoBbl4FZ0g==
|
||||||
|
|
||||||
"@rollup/rollup-linux-x64-musl@4.21.2":
|
"@rollup/rollup-linux-x64-musl@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz#7b7deddce240400eb87f2406a445061b4fed99a8"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.3.tgz#2c2412982e6c2a00a2ecac6d548ebb02f0aa6ca4"
|
||||||
integrity sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==
|
integrity sha512-S0Yq+xA1VEH66uiMNhijsWAafffydd2X5b77eLHfRmfLsRSpbiAWiRHV6DEpz6aOToPsgid7TI9rGd6zB1rhbg==
|
||||||
|
|
||||||
"@rollup/rollup-win32-arm64-msvc@4.21.2":
|
"@rollup/rollup-win32-arm64-msvc@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz#a0ca0c5149c2cfb26fab32e6ba3f16996fbdb504"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.3.tgz#fbb6ef5379199e2ec0103ef32877b0985c773a55"
|
||||||
integrity sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==
|
integrity sha512-9isNzeL34yquCPyerog+IMCNxKR8XYmGd0tHSV+OVx0TmE0aJOo9uw4fZfUuk2qxobP5sug6vNdZR6u7Mw7Q+Q==
|
||||||
|
|
||||||
"@rollup/rollup-win32-ia32-msvc@4.21.2":
|
"@rollup/rollup-win32-ia32-msvc@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz#aae2886beec3024203dbb5569db3a137bc385f8e"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.3.tgz#d50e2082e147e24d87fe34abbf6246525ec3845a"
|
||||||
integrity sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==
|
integrity sha512-nMIdKnfZfzn1Vsk+RuOvl43ONTZXoAPUUxgcU0tXooqg4YrAqzfKzVenqqk2g5efWh46/D28cKFrOzDSW28gTA==
|
||||||
|
|
||||||
"@rollup/rollup-win32-x64-msvc@4.21.2":
|
"@rollup/rollup-win32-x64-msvc@4.21.3":
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz#e4291e3c1bc637083f87936c333cdbcad22af63b"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.3.tgz#4115233aa1bd5a2060214f96d8511f6247093212"
|
||||||
integrity sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==
|
integrity sha512-fOvu7PCQjAj4eWDEuD8Xz5gpzFqXzGlxHZozHP4b9Jxv9APtdxL6STqztDzMLuRXEc4UpXGGhx029Xgm91QBeA==
|
||||||
|
|
||||||
"@rtsao/scc@^1.1.0":
|
"@rtsao/scc@^1.1.0":
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
@ -3093,9 +3085,9 @@
|
|||||||
integrity sha512-PtQMG7kDzwtjw/fLKD63uWP5rJ8cgWc/aXarfEzxYUf9ceWxBajnYOBI2jDqtE3WIUe9uTVBzNEvmOBG/VIgTA==
|
integrity sha512-PtQMG7kDzwtjw/fLKD63uWP5rJ8cgWc/aXarfEzxYUf9ceWxBajnYOBI2jDqtE3WIUe9uTVBzNEvmOBG/VIgTA==
|
||||||
|
|
||||||
"@vector-im/compound-web@^6.0.0":
|
"@vector-im/compound-web@^6.0.0":
|
||||||
version "6.1.2"
|
version "6.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@vector-im/compound-web/-/compound-web-6.1.2.tgz#3f8bbd69f2b06a2b8dd12c68df813356e5486074"
|
resolved "https://registry.yarnpkg.com/@vector-im/compound-web/-/compound-web-6.2.0.tgz#ae38f04be524b87b2b655858e603f60677d9a973"
|
||||||
integrity sha512-kWOcprUsGGrGPRT9lPE3tnyGYWzNEIQSZ57BT/vMx9NX4QqT/Dpq0VhkBKm8W583NoYtxDOgSWWkvFQhyHVkWw==
|
integrity sha512-oRoRDyKzlgPwjhZcn/Ll9zTccr/61ky3g7JUfQtvbe03H2Gyd887J8KJ/Q6RuUvVyUYTjHh2yi+eKp3UK1ylCw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@floating-ui/react" "^0.26.9"
|
"@floating-ui/react" "^0.26.9"
|
||||||
"@radix-ui/react-context-menu" "^2.1.5"
|
"@radix-ui/react-context-menu" "^2.1.5"
|
||||||
@ -3250,11 +3242,6 @@ ansi-regex@^5.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||||
|
|
||||||
ansi-regex@^6.0.1:
|
|
||||||
version "6.0.1"
|
|
||||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
|
|
||||||
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
|
||||||
|
|
||||||
ansi-styles@^3.2.1:
|
ansi-styles@^3.2.1:
|
||||||
version "3.2.1"
|
version "3.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
|
||||||
@ -5811,16 +5798,16 @@ lines-and-columns@^1.1.6:
|
|||||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||||
|
|
||||||
livekit-client@^2.0.2:
|
livekit-client@^2.0.2:
|
||||||
version "2.5.1"
|
version "2.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/livekit-client/-/livekit-client-2.5.1.tgz#c5a6bcc7069133e71ed1f3dd3e397a7480cf24b3"
|
resolved "https://registry.yarnpkg.com/livekit-client/-/livekit-client-2.5.2.tgz#3c8fcc67a0eb4a990822603e3f016d18b400a1a1"
|
||||||
integrity sha512-D7BzGoO3nc7/H2pEP9hseTjpzfgUoQ1AdeUNdlM7XNEywvorY1UR6RhOWH9UvycM/D5tIIRx7OvhxzpVfHE3TA==
|
integrity sha512-rzWFH02UznHxpnbj+WEEoHxL1ZSo9BdFK+7ltSZWniTt2llnNckdqeXNsjkBH6k+C9agHTF4XikmxKcpWa4YrQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@livekit/protocol" "1.20.1"
|
"@livekit/protocol" "1.20.1"
|
||||||
events "^3.3.0"
|
events "^3.3.0"
|
||||||
loglevel "^1.8.0"
|
loglevel "^1.8.0"
|
||||||
sdp-transform "^2.14.1"
|
sdp-transform "^2.14.1"
|
||||||
ts-debounce "^4.0.0"
|
ts-debounce "^4.0.0"
|
||||||
tslib "2.6.3"
|
tslib "2.7.0"
|
||||||
typed-emitter "^2.1.0"
|
typed-emitter "^2.1.0"
|
||||||
webrtc-adapter "^9.0.0"
|
webrtc-adapter "^9.0.0"
|
||||||
|
|
||||||
@ -5858,7 +5845,7 @@ lodash@^4.17.21:
|
|||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
|
||||||
loglevel@1.9.1, loglevel@^1.8.0:
|
loglevel@1.9.1:
|
||||||
version "1.9.1"
|
version "1.9.1"
|
||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.1.tgz#d63976ac9bcd03c7c873116d41c2a85bafff1be7"
|
||||||
integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==
|
integrity sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==
|
||||||
@ -5868,7 +5855,7 @@ loglevel@^1.7.1:
|
|||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.8.1.tgz#5c621f83d5b48c54ae93b6156353f555963377b4"
|
||||||
integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==
|
integrity sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==
|
||||||
|
|
||||||
loglevel@^1.9.1:
|
loglevel@^1.8.0, loglevel@^1.9.1:
|
||||||
version "1.9.2"
|
version "1.9.2"
|
||||||
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08"
|
resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08"
|
||||||
integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==
|
integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==
|
||||||
@ -5959,12 +5946,12 @@ matrix-events-sdk@0.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd"
|
resolved "https://registry.yarnpkg.com/matrix-events-sdk/-/matrix-events-sdk-0.0.1.tgz#c8c38911e2cb29023b0bbac8d6f32e0de2c957dd"
|
||||||
integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==
|
integrity sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==
|
||||||
|
|
||||||
matrix-js-sdk@matrix-org/matrix-js-sdk#169e8f86139111574a3738f8557c6fa4b2a199db:
|
matrix-js-sdk@matrix-org/matrix-js-sdk#414ac9d8cc28330718236b90ad67a1507e146932:
|
||||||
version "34.4.0"
|
version "34.5.0"
|
||||||
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/169e8f86139111574a3738f8557c6fa4b2a199db"
|
resolved "https://codeload.github.com/matrix-org/matrix-js-sdk/tar.gz/414ac9d8cc28330718236b90ad67a1507e146932"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.12.5"
|
"@babel/runtime" "^7.12.5"
|
||||||
"@matrix-org/matrix-sdk-crypto-wasm" "^7.0.0"
|
"@matrix-org/matrix-sdk-crypto-wasm" "^8.0.0"
|
||||||
"@matrix-org/olm" "3.2.15"
|
"@matrix-org/olm" "3.2.15"
|
||||||
another-json "^0.2.0"
|
another-json "^0.2.0"
|
||||||
bs58 "^6.0.0"
|
bs58 "^6.0.0"
|
||||||
@ -6434,7 +6421,7 @@ pathval@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
|
resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
|
||||||
integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==
|
integrity sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==
|
||||||
|
|
||||||
picocolors@^1.0.0, picocolors@^1.0.1:
|
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
|
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
|
||||||
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
|
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
|
||||||
@ -6734,7 +6721,7 @@ postcss-value-parser@^4.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||||
|
|
||||||
postcss@^8.4.41, postcss@^8.4.43:
|
postcss@^8.4.41:
|
||||||
version "8.4.45"
|
version "8.4.45"
|
||||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603"
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603"
|
||||||
integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==
|
integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==
|
||||||
@ -6743,6 +6730,15 @@ postcss@^8.4.41, postcss@^8.4.43:
|
|||||||
picocolors "^1.0.1"
|
picocolors "^1.0.1"
|
||||||
source-map-js "^1.2.0"
|
source-map-js "^1.2.0"
|
||||||
|
|
||||||
|
postcss@^8.4.43:
|
||||||
|
version "8.4.47"
|
||||||
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
|
||||||
|
integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
|
||||||
|
dependencies:
|
||||||
|
nanoid "^3.3.7"
|
||||||
|
picocolors "^1.1.0"
|
||||||
|
source-map-js "^1.2.1"
|
||||||
|
|
||||||
posthog-js@^1.29.0:
|
posthog-js@^1.29.0:
|
||||||
version "1.160.3"
|
version "1.160.3"
|
||||||
resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.160.3.tgz#17c8af4c9ffa2d795d925ca1e7146e61cd5ccabd"
|
resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.160.3.tgz#17c8af4c9ffa2d795d925ca1e7146e61cd5ccabd"
|
||||||
@ -7204,28 +7200,28 @@ rimraf@^3.0.2:
|
|||||||
glob "^7.1.3"
|
glob "^7.1.3"
|
||||||
|
|
||||||
rollup@^4.20.0:
|
rollup@^4.20.0:
|
||||||
version "4.21.2"
|
version "4.21.3"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.2.tgz#f41f277a448d6264e923dd1ea179f0a926aaf9b7"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.3.tgz#c64ba119e6aeb913798a6f7eef2780a0df5a0821"
|
||||||
integrity sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==
|
integrity sha512-7sqRtBNnEbcBtMeRVc6VRsJMmpI+JU1z9VTvW8D4gXIYQFz0aLcsE6rRkyghZkLfEgUZgVvOG7A5CVz/VW5GIA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/estree" "1.0.5"
|
"@types/estree" "1.0.5"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@rollup/rollup-android-arm-eabi" "4.21.2"
|
"@rollup/rollup-android-arm-eabi" "4.21.3"
|
||||||
"@rollup/rollup-android-arm64" "4.21.2"
|
"@rollup/rollup-android-arm64" "4.21.3"
|
||||||
"@rollup/rollup-darwin-arm64" "4.21.2"
|
"@rollup/rollup-darwin-arm64" "4.21.3"
|
||||||
"@rollup/rollup-darwin-x64" "4.21.2"
|
"@rollup/rollup-darwin-x64" "4.21.3"
|
||||||
"@rollup/rollup-linux-arm-gnueabihf" "4.21.2"
|
"@rollup/rollup-linux-arm-gnueabihf" "4.21.3"
|
||||||
"@rollup/rollup-linux-arm-musleabihf" "4.21.2"
|
"@rollup/rollup-linux-arm-musleabihf" "4.21.3"
|
||||||
"@rollup/rollup-linux-arm64-gnu" "4.21.2"
|
"@rollup/rollup-linux-arm64-gnu" "4.21.3"
|
||||||
"@rollup/rollup-linux-arm64-musl" "4.21.2"
|
"@rollup/rollup-linux-arm64-musl" "4.21.3"
|
||||||
"@rollup/rollup-linux-powerpc64le-gnu" "4.21.2"
|
"@rollup/rollup-linux-powerpc64le-gnu" "4.21.3"
|
||||||
"@rollup/rollup-linux-riscv64-gnu" "4.21.2"
|
"@rollup/rollup-linux-riscv64-gnu" "4.21.3"
|
||||||
"@rollup/rollup-linux-s390x-gnu" "4.21.2"
|
"@rollup/rollup-linux-s390x-gnu" "4.21.3"
|
||||||
"@rollup/rollup-linux-x64-gnu" "4.21.2"
|
"@rollup/rollup-linux-x64-gnu" "4.21.3"
|
||||||
"@rollup/rollup-linux-x64-musl" "4.21.2"
|
"@rollup/rollup-linux-x64-musl" "4.21.3"
|
||||||
"@rollup/rollup-win32-arm64-msvc" "4.21.2"
|
"@rollup/rollup-win32-arm64-msvc" "4.21.3"
|
||||||
"@rollup/rollup-win32-ia32-msvc" "4.21.2"
|
"@rollup/rollup-win32-ia32-msvc" "4.21.3"
|
||||||
"@rollup/rollup-win32-x64-msvc" "4.21.2"
|
"@rollup/rollup-win32-x64-msvc" "4.21.3"
|
||||||
fsevents "~2.3.2"
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
rrweb-cssom@^0.6.0:
|
rrweb-cssom@^0.6.0:
|
||||||
@ -7437,7 +7433,7 @@ sort-keys@^5.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-plain-obj "^4.0.0"
|
is-plain-obj "^4.0.0"
|
||||||
|
|
||||||
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
|
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0, source-map-js@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||||
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||||
@ -7618,20 +7614,13 @@ string_decoder@~1.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^5.0.1"
|
ansi-regex "^5.0.1"
|
||||||
|
|
||||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1:
|
||||||
version "6.0.1"
|
version "6.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||||
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
||||||
dependencies:
|
dependencies:
|
||||||
ansi-regex "^5.0.1"
|
ansi-regex "^5.0.1"
|
||||||
|
|
||||||
strip-ansi@^7.0.1:
|
|
||||||
version "7.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45"
|
|
||||||
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
|
||||||
dependencies:
|
|
||||||
ansi-regex "^6.0.1"
|
|
||||||
|
|
||||||
strip-bom@^3.0.0:
|
strip-bom@^3.0.0:
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
|
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
|
||||||
@ -7845,12 +7834,7 @@ tsconfig-paths@^3.15.0:
|
|||||||
minimist "^1.2.6"
|
minimist "^1.2.6"
|
||||||
strip-bom "^3.0.0"
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
tslib@2.6.3:
|
tslib@2.7.0, tslib@^2.0.0, tslib@^2.1.0:
|
||||||
version "2.6.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
|
|
||||||
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
|
|
||||||
|
|
||||||
tslib@^2.0.0, tslib@^2.1.0:
|
|
||||||
version "2.7.0"
|
version "2.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
|
||||||
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
|
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
|
||||||
@ -8193,9 +8177,9 @@ vite-plugin-svgr@^4.0.0:
|
|||||||
"@svgr/plugin-jsx" "^8.1.0"
|
"@svgr/plugin-jsx" "^8.1.0"
|
||||||
|
|
||||||
vite@^5.0.0:
|
vite@^5.0.0:
|
||||||
version "5.4.3"
|
version "5.4.6"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.3.tgz#771c470e808cb6732f204e1ee96c2ed65b97a0eb"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.6.tgz#85a93a1228a7fb5a723ca1743e337a2588ed008f"
|
||||||
integrity sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==
|
integrity sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.21.3"
|
esbuild "^0.21.3"
|
||||||
postcss "^8.4.43"
|
postcss "^8.4.43"
|
||||||
|
Loading…
Reference in New Issue
Block a user