blob: d51fa1b695d05ff85f557b8e39e23a76d4fddde0 [file] [log] [blame]
Charliec2c012f2022-10-05 14:09:28 -04001/*
2 * Copyright (C) 2022 Savoir-faire Linux Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Affero General Public License as
6 * published by the Free Software Foundation; either version 3 of the
7 * License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Affero General Public License for more details.
13 *
14 * You should have received a copy of the GNU Affero General Public
15 * License along with this program. If not, see
16 * <https://www.gnu.org/licenses/>.
17 */
simon1170c322022-10-31 14:51:31 -040018import { Dispatch, ReactNode, SetStateAction } from 'react';
Charliec2c012f2022-10-05 14:09:28 -040019
20export type WithChildren = {
21 children: ReactNode;
22};
simon1170c322022-10-31 14:51:31 -040023
simon1e2bf342022-12-02 12:19:40 -050024type AsyncDispatch<A> = (value: A) => Promise<void>;
simon1170c322022-10-31 14:51:31 -040025export type SetState<T> = Dispatch<SetStateAction<T>>;
simon1e2bf342022-12-02 12:19:40 -050026export type AsyncSetState<T> = AsyncDispatch<SetStateAction<T>>;
simon571240f2022-11-29 23:59:27 -050027
28/**
29 * HTMLVideoElement with the `sinkId` and `setSinkId` optional properties.
30 *
31 * These properties are defined only on supported browsers
32 * https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId#browser_compatibility
33 */
34export interface VideoElementWithSinkId extends HTMLVideoElement {
35 sinkId?: string;
36 setSinkId?: (deviceId: string) => void;
37}