feat: force prejoin page instead of profile and av settings (#690)

The settings and the prejoin page which is forced on many instances
including meet.jit.si did conflict, as you could set values in the
settings, then try to override them in den prejoin page only to notice
that it would not work. Clean this up by only having the prejoin page
where all settings can be done before joining the conference.

Closes: #687
This commit is contained in:
Christoph Settgast 2021-12-21 07:34:16 +01:00 committed by GitHub
parent 7ef12df188
commit d970d210da
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 34 additions and 1122 deletions

View File

@ -9,7 +9,7 @@ import { push } from 'react-router-redux';
import i18n from '../../../i18n';
import config from '../../config';
import { getSetting, setEmail, setName } from '../../settings';
import { getSetting } from '../../settings';
import { conferenceEnded, conferenceJoined } from '../actions';
import JitsiMeetExternalAPI from '../external_api';
@ -39,16 +39,6 @@ type Props = {
*/
_disableAGC: boolean;
/**
* Email of user.
*/
_email: string;
/**
* Name of user.
*/
_name: string;
/**
* Default Jitsi Server URL.
*/
@ -58,16 +48,6 @@ type Props = {
* Default Jitsi Server Timeout.
*/
_serverTimeout: number;
/**
* Start with Audio Muted.
*/
_startWithAudioMuted: boolean;
/**
* Start with Video Muted.
*/
_startWithVideoMuted: boolean;
};
type State = {
@ -154,23 +134,6 @@ class Conference extends Component<Props, State> {
}, serverTimeout * 1000);
}
/**
* Keep profile settings in sync with Conference.
*
* @param {Props} prevProps - Component's prop values before update.
* @returns {void}
*/
componentDidUpdate(prevProps) {
const { props } = this;
if (props._email !== prevProps._email) {
this._setEmail(props._email);
}
if (props._name !== prevProps._name) {
this._setName(props._name);
}
}
/**
* Remove conference on unmounting.
*
@ -224,10 +187,16 @@ class Conference extends Component<Props, State> {
...locale
};
// override both old and new prejoin config options,
// old one for servers that do not understand the new option yet
// and new one for newly setup servers where the new option overrides
// the old if set.
const configOverwrite = {
disableAGC: this.props._disableAGC,
startWithAudioMuted: this.props._startWithAudioMuted,
startWithVideoMuted: this.props._startWithVideoMuted
prejoinPageEnabled: true,
prejoinConfig: {
enabled: true
}
};
Object.entries(hashParameters).forEach(([ key, value ]) => {
@ -254,9 +223,8 @@ class Conference extends Component<Props, State> {
this._api.on('suspendDetected', this._onVideoConferenceEnded);
this._api.on('readyToClose', this._onVideoConferenceEnded);
this._api.on('videoConferenceJoined',
(conferenceInfo: Object) => {
() => {
this.props.dispatch(conferenceJoined(this._conference));
this._onVideoConferenceJoined(conferenceInfo);
}
);
@ -336,32 +304,6 @@ class Conference extends Component<Props, State> {
this._navigateToHome(event);
}
/**
* Updates redux state's user name from conference.
*
* @param {Object} params - Returned object from event.
* @param {string} id - Local Participant ID.
* @returns {void}
*/
_onDisplayNameChange(params: Object, id: string) {
if (params.id === id) {
this.props.dispatch(setName(params.displayname));
}
}
/**
* Updates redux state's email from conference.
*
* @param {Object} params - Returned object from event.
* @param {string} id - Local Participant ID.
* @returns {void}
*/
_onEmailChange(params: Object, id: string) {
if (params.id === id) {
this.props.dispatch(setEmail(params.email));
}
}
_onIframeLoad: (*) => void;
/**
@ -379,46 +321,6 @@ class Conference extends Component<Props, State> {
isLoading: false
});
}
/**
* Saves conference info on joining it.
*
* @param {Object} conferenceInfo - Contains information about the current
* conference.
* @returns {void}
*/
_onVideoConferenceJoined(conferenceInfo: Object) {
this._setEmail(this.props._email);
this._setName(this.props._name);
const { id } = conferenceInfo;
this._api.on('displayNameChange',
(params: Object) => this._onDisplayNameChange(params, id));
this._api.on('emailChange',
(params: Object) => this._onEmailChange(params, id));
}
/**
* Set email from settings to conference.
*
* @param {string} email - Email of user.
* @returns {void}
*/
_setEmail(email: string) {
this._api.executeCommand('email', email);
}
/**
* Set name from settings to conference.
*
* @param {string} name - Name of user.
* @returns {void}
*/
_setName(name: string) {
this._api.executeCommand('displayName', name);
}
}
/**
@ -431,12 +333,8 @@ function _mapStateToProps(state: Object) {
return {
_alwaysOnTopWindowEnabled: getSetting(state, 'alwaysOnTopWindowEnabled', true),
_disableAGC: state.settings.disableAGC,
_email: state.settings.email,
_name: state.settings.name,
_serverURL: state.settings.serverURL,
_serverTimeout: state.settings.serverTimeout,
_startWithAudioMuted: state.settings.startWithAudioMuted,
_startWithVideoMuted: state.settings.startWithVideoMuted
_serverTimeout: state.settings.serverTimeout
};
}

View File

@ -3,12 +3,6 @@ import { OnboardingModal, OnboardingSpotlight } from './components';
import { openDrawer, closeDrawer } from '../navbar';
import { SettingsDrawer } from '../settings';
export const advenaceSettingsSteps = [
'server-setting',
'server-timeout',
'always-on-top-window'
];
export const onboardingSteps = {
'welcome-page': [
'onboarding-modal',
@ -16,10 +10,9 @@ export const onboardingSteps = {
'settings-drawer-button'
],
'settings-drawer': [
'name-setting',
'email-setting',
'start-muted-toggles',
...advenaceSettingsSteps
'server-setting',
'server-timeout',
'always-on-top-window'
]
};
@ -38,24 +31,6 @@ export const onboardingComponents = {
text: 'onboarding.settingsDrawerButton',
onNext: (props: OnboardingSpotlight.props) => props.dispatch(openDrawer(SettingsDrawer))
},
'name-setting': {
type: OnboardingSpotlight,
dialogPlacement: 'top right',
target: 'name-setting',
text: 'onboarding.nameSetting'
},
'email-setting': {
type: OnboardingSpotlight,
dialogPlacement: 'top right',
target: 'email-setting',
text: 'onboarding.emailSetting'
},
'start-muted-toggles': {
type: OnboardingSpotlight,
dialogPlacement: 'top right',
target: 'start-muted-toggles',
text: 'onboarding.startMutedToggles'
},
'server-setting': {
type: OnboardingSpotlight,
dialogPlacement: 'top right',

View File

@ -9,16 +9,6 @@
export const SET_ALWAYS_ON_TOP_WINDOW_ENABLED
= Symbol('SET_ALWAYS_ON_TOP_WINDOW_ENABLED');
/**
* The type of (redux) action that sets Start with Audio Muted.
*
* @type {
* type: SET_AUDIO_MUTED,
* startWithAudioMuted: boolean
* }
*/
export const SET_AUDIO_MUTED = Symbol('SET_AUDIO_MUTED');
/**
* The type of (redux) action that sets disable AGC.
*
@ -29,26 +19,6 @@ export const SET_AUDIO_MUTED = Symbol('SET_AUDIO_MUTED');
*/
export const SET_DISABLE_AGC = Symbol('SET_DISABLE_AGC');
/**
* The type of (redux) action that sets the email of the user.
*
* @type {
* type: SET_EMAIL,
* email: string
* }
*/
export const SET_EMAIL = Symbol('SET_EMAIL');
/**
* The type of (redux) action that sets the name of the user.
*
* @type {
* type: SET_NAME,
* name: string
* }
*/
export const SET_NAME = Symbol('SET_NAME');
/**
* The type of (redux) action that sets the Server URL.
*
@ -68,13 +38,3 @@ export const SET_SERVER_URL = Symbol('SET_SERVER_URL');
* }
*/
export const SET_SERVER_TIMEOUT = Symbol('SET_SERVER_TIMEOUT');
/**
* The type of (redux) action that sets Start with Video Muted.
*
* @type {
* type: SET_VIDEO_MUTED,
* startWithVideoMuted: boolean
* }
*/
export const SET_VIDEO_MUTED = Symbol('SET_VIDEO_MUTED');

View File

@ -2,49 +2,13 @@
import {
SET_ALWAYS_ON_TOP_WINDOW_ENABLED,
SET_AUDIO_MUTED,
SET_DISABLE_AGC,
SET_EMAIL,
SET_NAME,
SET_SERVER_URL,
SET_SERVER_TIMEOUT,
SET_VIDEO_MUTED
SET_SERVER_TIMEOUT
} from './actionTypes';
import { normalizeServerURL } from '../utils';
/**
* Set the email of the user.
*
* @param {string} email - Email of the user.
* @returns {{
* type: SET_EMAIL,
* email: string
* }}
*/
export function setEmail(email: string) {
return {
type: SET_EMAIL,
email
};
}
/**
* Set the name of the user.
*
* @param {string} name - Name of the user.
* @returns {{
* type: SET_NAME,
* name: string
* }}
*/
export function setName(name: string) {
return {
type: SET_NAME,
name
};
}
/**
* Set Server URL.
*
@ -77,38 +41,6 @@ export function setServerTimeout(serverTimeout: number) {
};
}
/**
* Set start with audio muted.
*
* @param {boolean} startWithAudioMuted - Whether to start with audio muted.
* @returns {{
* type: SET_AUDIO_MUTED,
* startWithAudioMuted: boolean
* }}
*/
export function setStartWithAudioMuted(startWithAudioMuted: boolean) {
return {
type: SET_AUDIO_MUTED,
startWithAudioMuted
};
}
/**
* Set start with video muted.
*
* @param {boolean} startWithVideoMuted - Whether to start with video muted.
* @returns {{
* type: SET_VIDEO_MUTED,
* startWithVideoMuted: boolean
* }}
*/
export function setStartWithVideoMuted(startWithVideoMuted: boolean) {
return {
type: SET_VIDEO_MUTED,
startWithVideoMuted
};
}
/**
* Set disable AGC.
*

View File

@ -1,10 +1,8 @@
// @flow
import FieldText from '@atlaskit/field-text';
import ArrowLeft from '@atlaskit/icon/glyph/arrow-left';
import { AkCustomDrawer } from '@atlaskit/navigation';
import { SpotlightTarget } from '@atlaskit/onboarding';
import Panel from '@atlaskit/panel';
import React, { Component } from 'react';
import { withTranslation } from 'react-i18next';
@ -13,11 +11,10 @@ import type { Dispatch } from 'redux';
import { compose } from 'redux';
import { closeDrawer, DrawerContainer, Logo } from '../../navbar';
import { Onboarding, advenaceSettingsSteps, startOnboarding } from '../../onboarding';
import { Form, SettingsContainer, TogglesContainer } from '../styled';
import { Onboarding, startOnboarding } from '../../onboarding';
import { SettingsContainer, TogglesContainer } from '../styled';
import {
setEmail, setName, setWindowAlwaysOnTop,
setStartWithAudioMuted, setStartWithVideoMuted, setDisableAGC
setWindowAlwaysOnTop, setDisableAGC
} from '../actions';
import SettingToggle from './SettingToggle';
@ -36,21 +33,6 @@ type Props = {
*/
isOpen: boolean;
/**
* Email of the user.
*/
_email: string;
/**
* Whether onboarding is active or not.
*/
_isOnboardingAdvancedSettings: boolean,
/**
* Name of the user.
*/
_name: string;
/**
* I18next translation function.
*/
@ -70,10 +52,6 @@ class SettingsDrawer extends Component<Props, *> {
super(props);
this._onBackButton = this._onBackButton.bind(this);
this._onEmailBlur = this._onEmailBlur.bind(this);
this._onEmailFormSubmit = this._onEmailFormSubmit.bind(this);
this._onNameBlur = this._onNameBlur.bind(this);
this._onNameFormSubmit = this._onNameFormSubmit.bind(this);
}
/**
@ -111,64 +89,25 @@ class SettingsDrawer extends Component<Props, *> {
primaryIcon = { <Logo /> } >
<DrawerContainer>
<SettingsContainer>
<SpotlightTarget
name = 'name-setting'>
<Form onSubmit = { this._onNameFormSubmit }>
<FieldText
label = { t('settings.name') }
onBlur = { this._onNameBlur }
shouldFitContainer = { true }
type = 'text'
value = { this.props._name } />
</Form>
<SpotlightTarget name = 'server-setting'>
<ServerURLField />
</SpotlightTarget>
<SpotlightTarget
name = 'email-setting'>
<Form onSubmit = { this._onEmailFormSubmit }>
<FieldText
label = { t('settings.email') }
onBlur = { this._onEmailBlur }
shouldFitContainer = { true }
type = 'text'
value = { this.props._email } />
</Form>
<SpotlightTarget name = 'server-timeout'>
<ServerTimeoutField />
</SpotlightTarget>
<TogglesContainer>
<SpotlightTarget
name = 'start-muted-toggles'>
name = 'always-on-top-window'>
<SettingToggle
label = { t('settings.startWithAudioMuted') }
settingChangeEvent = { setStartWithAudioMuted }
settingName = 'startWithAudioMuted' />
<SettingToggle
label = { t('settings.startWithVideoMuted') }
settingChangeEvent = { setStartWithVideoMuted }
settingName = 'startWithVideoMuted' />
label = { t('settings.alwaysOnTopWindow') }
settingChangeEvent = { setWindowAlwaysOnTop }
settingName = 'alwaysOnTopWindowEnabled' />
</SpotlightTarget>
<SettingToggle
label = { t('settings.disableAGC') }
settingChangeEvent = { setDisableAGC }
settingName = 'disableAGC' />
</TogglesContainer>
<Panel
header = { t('settings.advancedSettings') }
isDefaultExpanded = { this.props._isOnboardingAdvancedSettings }>
<SpotlightTarget name = 'server-setting'>
<ServerURLField />
</SpotlightTarget>
<SpotlightTarget name = 'server-timeout'>
<ServerTimeoutField />
</SpotlightTarget>
<TogglesContainer>
<SpotlightTarget
name = 'always-on-top-window'>
<SettingToggle
label = { t('settings.alwaysOnTopWindow') }
settingChangeEvent = { setWindowAlwaysOnTop }
settingName = 'alwaysOnTopWindowEnabled' />
</SpotlightTarget>
<SettingToggle
label = { t('settings.disableAGC') }
settingChangeEvent = { setDisableAGC }
settingName = 'disableAGC' />
</TogglesContainer>
</Panel>
<Onboarding section = 'settings-drawer' />
</SettingsContainer>
</DrawerContainer>
@ -187,78 +126,6 @@ class SettingsDrawer extends Component<Props, *> {
_onBackButton() {
this.props.dispatch(closeDrawer());
}
_onEmailBlur: (*) => void;
/**
* Updates email in (redux) state when email is updated.
*
* @param {SyntheticInputEvent<HTMLInputElement>} event - Event by which
* this function is called.
* @returns {void}
*/
_onEmailBlur(event: SyntheticInputEvent<HTMLInputElement>) {
this.props.dispatch(setEmail(event.currentTarget.value));
}
_onEmailFormSubmit: (*) => void;
/**
* Prevents submission of the form and updates email.
*
* @param {SyntheticEvent<HTMLFormElement>} event - Event by which
* this function is called.
* @returns {void}
*/
_onEmailFormSubmit(event: SyntheticEvent<HTMLFormElement>) {
event.preventDefault();
// $FlowFixMe
this.props.dispatch(setEmail(event.currentTarget.elements[0].value));
}
_onNameBlur: (*) => void;
/**
* Updates name in (redux) state when name is updated.
*
* @param {SyntheticInputEvent<HTMLInputElement>} event - Event by which
* this function is called.
* @returns {void}
*/
_onNameBlur(event: SyntheticInputEvent<HTMLInputElement>) {
this.props.dispatch(setName(event.currentTarget.value));
}
_onNameFormSubmit: (*) => void;
/**
* Prevents submission of the form and updates name.
*
* @param {SyntheticEvent<HTMLFormElement>} event - Event by which
* this function is called.
* @returns {void}
*/
_onNameFormSubmit(event: SyntheticEvent<HTMLFormElement>) {
event.preventDefault();
// $FlowFixMe
this.props.dispatch(setName(event.currentTarget.elements[0].value));
}
}
/**
* Maps (parts of) the redux state to the React props.
*
* @param {Object} state - The redux state.
* @returns {Props}
*/
function _mapStateToProps(state: Object) {
return {
_email: state.settings.email,
_isOnboardingAdvancedSettings: !advenaceSettingsSteps.every(i => state.onboarding.onboardingShown.includes(i)),
_name: state.settings.name
};
}
export default compose(connect(_mapStateToProps), withTranslation())(SettingsDrawer);
export default compose(connect(), withTranslation())(SettingsDrawer);

View File

@ -2,37 +2,23 @@
import {
SET_ALWAYS_ON_TOP_WINDOW_ENABLED,
SET_AUDIO_MUTED,
SET_DISABLE_AGC,
SET_EMAIL,
SET_NAME,
SET_SERVER_URL,
SET_SERVER_TIMEOUT,
SET_VIDEO_MUTED
SET_SERVER_TIMEOUT
} from './actionTypes';
type State = {
alwaysOnTopWindowEnabled: boolean,
disableAGC: boolean,
email: string,
name: string,
serverURL: ?string,
serverTimeout: ?number,
startWithAudioMuted: boolean,
startWithVideoMuted: boolean
serverTimeout: ?number
};
const username = window.jitsiNodeAPI.osUserInfo().username;
const DEFAULT_STATE = {
alwaysOnTopWindowEnabled: true,
disableAGC: false,
email: '',
name: username,
serverURL: undefined,
serverTimeout: undefined,
startWithAudioMuted: false,
startWithVideoMuted: false
serverTimeout: undefined
};
/**
@ -50,30 +36,12 @@ export default (state: State = DEFAULT_STATE, action: Object) => {
alwaysOnTopWindowEnabled: action.alwaysOnTopWindowEnabled
};
case SET_AUDIO_MUTED:
return {
...state,
startWithAudioMuted: action.startWithAudioMuted
};
case SET_DISABLE_AGC:
return {
...state,
disableAGC: action.disableAGC
};
case SET_EMAIL:
return {
...state,
email: action.email
};
case SET_NAME:
return {
...state,
name: action.name
};
case SET_SERVER_URL:
return {
...state,
@ -86,12 +54,6 @@ export default (state: State = DEFAULT_STATE, action: Object) => {
serverTimeout: action.serverTimeout
};
case SET_VIDEO_MUTED:
return {
...state,
startWithVideoMuted: action.startWithVideoMuted
};
default:
return state;
}

View File

@ -17,21 +17,13 @@
"next": "Weiter",
"conferenceUrl": "Bitte den Namen (oder die vollständige Adresse) des Raumes eingeben, dem beigetreten werden soll. Es kann ein Name ausgedacht werden, diesen bitte anderen mitteilen, damit sie denselben Namen eingeben.",
"settingsDrawerButton": "Hier klicken, um zu den Einstellungen zu gelangen.",
"nameSetting": "Das ist der Anzeigename, andere werden Sie unter diesem Namen sehen.",
"emailSetting": "Die hier eingegebene E-Mail ist Teil des Benutzerprofils.",
"startMutedToggles": "Hier kann eingestellt werden, ob mit stummgeschaltetem Audio oder Video gestartet wird. Das wird auf alle Konferenzen angewendet.",
"serverSetting": "Das ist der Server, auf dem die Konferenzen stattfinden werden. Es kann ein eigener verwendet werden, muss aber nicht!",
"serverTimeout": "Zeitüberschreitung für den Beitritt zu einer Konferenz. Wenn nicht rechtzeitig beigetreten wurde, wird die Konferenz abgebrochen.",
"alwaysOnTop": "Hier kann eingestellt werden, ob das Fenster »Immer im Vordergrund« aktiviert wird. Dieses wird angezeigt, wenn das Hauptfenster den Fokus verliert. Das wird bei allen Konferenzen angewendet."
},
"settings": {
"back": "Zurück",
"name": "Name",
"email": "E-Mail",
"advancedSettings": "Erweiterte Einstellungen",
"alwaysOnTopWindow": "Immer im Vordergrund",
"startWithAudioMuted": "Ohne Audio starten",
"startWithVideoMuted": "Ohne Video starten",
"invalidServer": "Falsche Server-Adresse",
"invalidServerTimeout": "Ungültiger Wert für die Server-Wartezeit",
"serverUrl": "Server-Adresse",

View File

@ -17,21 +17,13 @@
"next": "Next",
"conferenceUrl": "Enter the name (or full URL) of the room you want to join. You may make a name up, just let others know so they enter the same name.",
"settingsDrawerButton": "Click here to open the settings drawer.",
"nameSetting": "This will be your display name, others will see you with this name.",
"emailSetting": "The email you enter here will be part of your user profile.",
"startMutedToggles": "You can toggle if you want to start with your audio or video muted here. This will be applied to all conferences.",
"serverSetting": "This will be the server where your conferences will take place. You can use your own, but you don't need to!",
"serverTimeout": "Timeout to join a meeting, if the meeting hasn't been joined before the timeout hits, it's cancelled.",
"alwaysOnTop": "You can toggle whether you want to enable the \"always-on-top\" window, which is displayed when the main window loses focus. This will be applied to all conferences."
},
"settings": {
"back": "Back",
"name": "Name",
"email": "Email",
"advancedSettings": "Advanced Settings",
"alwaysOnTopWindow": "Always on Top Window",
"startWithAudioMuted": "Start with Audio muted",
"startWithVideoMuted": "Start with Video muted",
"invalidServer": "Invalid Server URL",
"invalidServerTimeout": "Invalid value for Server Timeout",
"serverUrl": "Server URL",

View File

@ -16,21 +16,13 @@
"next": "Siguiente",
"conferenceUrl": "Ingrese el nombre (o URL completo) de la sala a que se quiera unir. Puede inventar el nombre, solo informe a otros para que ellos usen el mismo nombre.",
"settingsDrawerButton": "Click aquí para abrir la opción de configuración.",
"nameSetting": "Este será su nombre mostrado, otros lo verán con este nombre.",
"emailSetting": "El correo electrónico que ingrese será parte de su perfil.",
"startMutedToggles": "Puede seleccionar aquí si desea iniciar con audio o video desactivado. Esto será aplicado a todas las conferencias.",
"serverSetting": "Este será el servidor donde sus conferencias tomarán lugar. Puede usar el suyo, ¡pero no necesita!",
"serverTimeout": "Tiempo de desconexión, si nadie se une a la reunión antes del tiempo de desconexión termina, esta se cancela.",
"alwaysOnTop": "Puede seleccionar si desea activar la ventana \"siempre-encima\", la que se muestra cuando la ventana principal pierde enfoque. Esto será aplicado a todas las conferencias."
},
"settings": {
"back": "Atrás",
"name": "Nombre",
"email": "Correo",
"advancedSettings": "Configuración avanzada",
"alwaysOnTopWindow": "Ventana siempre encima",
"startWithAudioMuted": "Iniciar con audio desactivado",
"startWithVideoMuted": "Iniciar con video desactivado",
"invalidServer": "URL del servidor inválida",
"serverUrl": "URL del servidor",
"serverTimeout": "Tiempo de desconexión del servidor (en segundos)"

View File

@ -16,21 +16,13 @@
"next": "Suivant",
"conferenceUrl": "Entrez le nom (ou l'URL complète) de la conférence que vous souhaitez rejoindre. Vous pouvez choisir ce que vous voulez, dites simplement à vos contacts d'utiliser le même nom.",
"settingsDrawerButton": "Cliquez içi pour ouvrir le panneau de configuration.",
"nameSetting": "Ceçi est votre nom, les participants vous verrons avec celui çi.",
"emailSetting": "L'email que vous entrez içi fera partie de votre profil utilisateur.",
"startMutedToggles": "Vous pouvez choisir de démarrer vos conférences avec l'audio et la vidéo désactivés. Ceci sera appliqué à toutes les conférences.",
"serverSetting": "Ceçi est le serveur utilisé pour vos conférences. Vous pouvez utiliser le votre, mais vous n'êtes pas obligés!",
"serverTimeout": "Delai pour rejoindre la conférence. Si la conférence ne s'est pas ouverte avant ce delai, elle sera abandonnée.",
"alwaysOnTop": "Vous pouvez activer la fenêtre \"Toujours au Dessus\", qui sera affichée quand la fenêtre principale n'est plus en premier plan. Ceci sera appliqué à toutes les conférences.."
},
"settings": {
"back": "Retour",
"name": "Nom",
"email": "Email",
"advancedSettings": "Paramètres avancés",
"alwaysOnTopWindow": "Fenêtre Toujours au Dessus",
"startWithAudioMuted": "Démarrer avec le micro coupé",
"startWithVideoMuted": "Démarrer avec la caméra coupée",
"invalidServer": "URL invalide",
"serverUrl": "URL du serveur",
"serverTimeout": "Délai de connexion au server (en secondes)"

View File

@ -16,21 +16,13 @@
"next": "Seguinte",
"conferenceUrl": "Introduza o nome (ou URL completo) da sala á que desexa sumarse. Pode dar de alta un nome e permitir que a xente coa que se reúne o saiba para que introduzan o mesmo nome.",
"settingsDrawerButton": "Prema aquí para abrir a gabeta de configuración.",
"nameSetting": "Este será o seu nome e será con el que apareza diante das demais persoas.",
"emailSetting": "O correo electrónico que apareza aquí será parte do seu perfil de usuario.",
"startMutedToggles": "Aquí pode alternar entre comezar co son ou co vídeo desactivados. Isto será aplicábel a todas as conferencias.",
"serverSetting": "Este será o servidor no que se leven a cabo as súas conferencias. Pode usar unha propia, mais non ten por que o facer!",
"serverTimeout": "Tempo de agarda para se sumar a unha reunión; se non se sumou antes de que remate, cancélase.",
"alwaysOnTop": "Pode alternar entre activar e desactivar a xanela «sempre por riba», que se mostra cando a xanela principal perde o foco. Isto é aplicábel a todas as conferencias."
},
"settings": {
"back": "Atrás",
"name": "Nome",
"email": "Correo electrónico",
"advancedSettings": "Configuración avanzada",
"alwaysOnTopWindow": "Xanela sempre por riba",
"startWithAudioMuted": "Comezar co son desactivado",
"startWithVideoMuted": "Comezar co vídeo desactivado",
"invalidServer": "O URL do servidor é incorrecto",
"invalidServerTimeout": "O tempo de agarda do servidor é incorrecto",
"serverUrl": "URL do servidor",

View File

@ -17,21 +17,13 @@
"next": "Következő",
"conferenceUrl": "Írja be a csatlakozni kívánt szoba nevét (vagy teljes URL-címét). Megadhat egy nevet, csak tudassa másokkal, hogy ugyanazt a nevet írják be.",
"settingsDrawerButton": "Kattintson ide a beállítások fiókjának megnyitásához.",
"nameSetting": "Ez lesz a megjelenítendő neve, mások ezzel a névvel fognak látni.",
"emailSetting": "Az itt megadott e-mail része lesz a felhasználói profilnak.",
"startMutedToggles": "Hang elnémítva és videó nélkül kezd be-/kikapcsolással. Minden konferenciára vonatkozik.",
"serverSetting": "Kiszolgáló, ahol a konferenciákat tartják. Használja saját kiszolgálóját; ez azonban nem szükséges.",
"serverTimeout": "Ha a résztvevők nem csatlakoztak az időkorlát bekövetkezése előtt, akkor a találkozót visszavonják.",
"alwaysOnTop": "A „Mindig látható” ablak lehetővé teszi a be-/kikapcsolást. Akkor jelenik meg, amikor a főablak elveszíti a fókuszt. Ezt minden konferenciára alkalmazni kell."
},
"settings": {
"back": "Vissza",
"name": "Név",
"email": "E-mail-cím",
"advancedSettings": "Haladó beállítások",
"alwaysOnTopWindow": "Mindig látható",
"startWithAudioMuted": "Elnémítva kezd",
"startWithVideoMuted": "Videó nélkül kezd",
"invalidServer": "Érvénytelen kiszolgáló URL-címe",
"invalidServerTimeout": "A kiszolgáló időkorlátja érvénytelen",
"serverUrl": "Kiszolgáló URL-címe",

View File

@ -16,21 +16,13 @@
"next": "Avanti",
"conferenceUrl": "Insecisci il nome (oppure l'url intero) della stanza in cui vuoi accedere.",
"settingsDrawerButton": "Premi qua per arrivare alle impostazioni.",
"nameSetting": "Questo non è un username.",
"emailSetting": "Il campo E-Mail fa parte del tuo profile, questo campo può restare vuoto.",
"startMutedToggles": "Qua puoi impostare se vui accedere a tutte le conferenze con audio/video disabilitato al accesso..",
"serverSetting": "Questo è il server dove si svolgeranno tutte le conferenze, qua si può anche inserire il proprio server!",
"serverTimeout": "Questo è il tempo massimo che un server può metterci per rispondere ad una richiesta di accesso a un meeting.",
"alwaysOnTop": "Qua puoi attivare una piccola finestra che ti farà vedere i partecipanti del meeting anche se hai minimizzato la finestra principale."
},
"settings": {
"back": "Indietro",
"name": "Nome",
"email": "Email",
"advancedSettings": "Impostazioni avanzate",
"alwaysOnTopWindow": "Finestra sempre in primo piano",
"startWithAudioMuted": "Inizia senza audio",
"startWithVideoMuted": "Inizio senza video",
"invalidServer": "URL del server errato",
"serverUrl": "URL Server",
"serverTimeout": "Timeout del server (in secondi)"

View File

@ -16,21 +16,13 @@
"next": "Volgende",
"conferenceUrl": "Voer de naam of URL in van de ruimte die u wilt betreden. U kunt een naam verzinnen, maar laat deze wel weten aan de andere deelnemers, zodat zij dezelfde naam invoeren.",
"settingsDrawerButton": "Klik hier om het instellingenscherm te tonen.",
"nameSetting": "Voer hier uw naam in, andere deelnemers zullen deze naam zien.",
"emailSetting": "Voer hier uw e-mailadres in, dit wordt onderdeel van uw gebruikersprofiel.",
"startMutedToggles": "Hier kunt u kiezen om te starten met microfoon gedempt en/of camera uitgeschakeld. Dit geldt voor alle vergaderingen.",
"serverSetting": "Voer hier de naam van de server in waar de vergaderingen plaatsvinden. U kunt uw eigen server gebruiken, maar dat hoeft niet!",
"serverTimeout": "Voer hier de tijdslimiet in om de ruimte te betreden. Als de ruimte niet voor deze limiet betreden wordt, wordt de vergadering geannuleerd.",
"alwaysOnTop": "Hiermee kunt u het altijd zichtbare venster aan- of uitzetten. Dit venster wordt getoond wanneer een andere applicatie actief wordt. Dit geldt voor alle vergaderingen."
},
"settings": {
"back": "Terug",
"name": "Naam",
"email": "E-mail",
"advancedSettings": "Geavanceerde instellingen",
"alwaysOnTopWindow": "Altijd zichtbare venster",
"startWithAudioMuted": "Met audio gedempt starten",
"startWithVideoMuted": "Met camera uitgeschakeld starten",
"invalidServer": "Ongeldige server-URL",
"invalidServerTimeout": "Ongeldige waarde voor server-tijdslimiet",
"serverUrl": "Server-URL",

View File

@ -16,21 +16,13 @@
"next": "Avançar",
"conferenceUrl": "Digite o nome (ou URL completo) da sala em que deseja entrar. Você pode inventar um nome, apenas avise os outros para que insiram o mesmo nome.",
"settingsDrawerButton": "Clique aqui para abrir a barra de configurações.",
"nameSetting": "Este será o seu nome de exibição, outras pessoas verão você com este nome.",
"emailSetting": "O e-mail que você inserir aqui fará parte do seu perfil de usuário.",
"startMutedToggles": "Você pode alternar se quiser começar com o áudio ou vídeo sem som aqui. Isso será aplicado a todas as conferências.",
"serverSetting": "Este será o servidor onde suas conferências acontecerão. Você pode usar o seu próprio, mas não precisa!",
"serverTimeout": "Tempo limite para entrar em uma reunião, se a reunião não tiver começado antes de atingir o tempo limite, ela será cancelada.",
"alwaysOnTop": "Você pode alternar se deseja habilitar a janela \"sempre visível \", que é exibida quando a janela principal perde o foco. Isso será aplicado a todas as conferências."
},
"settings": {
"back": "Voltar",
"name": "Nome",
"email": "Email",
"advancedSettings": "Configurações Avançadas",
"alwaysOnTopWindow": "Janela Sempre Visível",
"startWithAudioMuted": "Iniciar sem áudio",
"startWithVideoMuted": "Iniciar sem vídeo",
"invalidServer": "URL do Servidor Inválida",
"invalidServerTimeout": "Valor inválido para tempo limite do servidor",
"serverUrl": "URL do servidor",

View File

@ -16,21 +16,13 @@
"next": "Далее",
"conferenceUrl": "Введите название (или полный URL-адрес) комнаты, к которой вы хотите присоединиться.",
"settingsDrawerButton": "Нажмите здесь, чтобы перейти к настройкам.",
"nameSetting": "Это ваше имя, которое будут видеть другие.",
"emailSetting": "Эл. адрес, который вы введете здесь, будет частью вашего профиля пользователя.",
"startMutedToggles": "Здесь вы можете настроить, присоединяться ли вы ко всем конференциям без включенного аудио/видео.",
"serverSetting": "Это сервер, на котором будут проходить все ваши конференции. Вы можете использовать свой собственный, но вам это не нужно!",
"serverTimeout": "Timeout to join a meeting, if the meeting hasn't been joined before the timeout hits, it's cancelled.",
"alwaysOnTop": "Здесь вы можете включить небольшое окно, которое показывает участников, даже если вы только что свернули основное приложение."
},
"settings": {
"back": "Назад",
"name": "Имя",
"email": "Эл. адрес",
"advancedSettings": "Расширенные настройки",
"alwaysOnTopWindow": "Поверх всех окон",
"startWithAudioMuted": "Начать без звука",
"startWithVideoMuted": "Начать без видео",
"invalidServer": "Неверный URL-адрес сервера",
"serverUrl": "URL-адрес сервера",
"serverTimeout": "Тайм-аут сервера (в секундах)"

View File

@ -16,21 +16,13 @@
"next": "Pasuesi",
"conferenceUrl": "Jepni emrin (ose URL-në) e plotë të dhomës ku doni të hyni. Një emër mund ta sajoni, thjesht bëjuani të ditur të tjerëve, që të japin të njëjtin emër.",
"settingsDrawerButton": "Klikoni këtu që të hapet sirtari i rregullimeve.",
"nameSetting": "Ky do të jetë emri në ekran për ju, të tjerë do tju shohin me këtë emër.",
"emailSetting": "Email-i që jepni këtu do të jetë pjesë e profilit tuaj të përdoruesit.",
"startMutedToggles": "Mund ta klikoni, nëse doni të fillohet me audio ose videon tuaj të mbyllur. Kjo do të zbatohet për krejt konferencat.",
"serverSetting": "Ky do të jetë shërbyesi ku do të zhvillohen konferencat tuaja. Mund të përdorni tuajën, por jo domosdoshmërisht!",
"serverTimeout": "Mbarim kohe për provë hyrjeje në një takim, nëse te takimi shyhet para se të skadojë kjo kohë, hyrja anulohet.",
"alwaysOnTop": "Me këtë mund të zgjidhni nëse doni apo jo aktivizimin e dritares \"përherë-sipër\", që shfaqet kur fokusi, nga dritarja kryesore, kalon gjetkë. Kjo do të zbatohet për krejt konferencat."
},
"settings": {
"back": "Mbrapsht",
"name": "Emër",
"email": "Email",
"advancedSettings": "Rregullime të Mëtejshme",
"alwaysOnTopWindow": "Dritare Përherë Sipër",
"startWithAudioMuted": "Nise pa Audio",
"startWithVideoMuted": "Nis pa Video",
"invalidServer": "URL e Pavlefshme Shërbyesi",
"invalidServerTimeout": "Vlerë e pavlefshme për Mbarim Kohe Shërbyesi",
"serverUrl": "URL Shërbyesi",

View File

@ -1,7 +1,6 @@
/* global process */
const { ipcRenderer } = require('electron');
const os = require('os');
const jitsiMeetElectronUtils = require('@jitsi/electron-sdk');
const { openExternalLink } = require('../features/utils/openExternalLink');
@ -9,7 +8,6 @@ const { openExternalLink } = require('../features/utils/openExternalLink');
const whitelistedIpcChannels = [ 'protocol-data-msg', 'renderer-ready' ];
window.jitsiNodeAPI = {
osUserInfo: os.userInfo,
openExternalLink,
platform: process.platform,
jitsiMeetElectronUtils,

591
package-lock.json generated
View File

@ -23,7 +23,6 @@
"@atlaskit/navigation": "^33.3.10",
"@atlaskit/onboarding": "^6.2.0",
"@atlaskit/page": "^8.0.12",
"@atlaskit/panel": "^0.3.5",
"@atlaskit/spinner": "^9.0.13",
"@atlaskit/theme": "^7.0.5",
"@atlaskit/toggle": "^5.0.15",
@ -872,107 +871,6 @@
"styled-components": "^3.2.6"
}
},
"node_modules/@atlaskit/panel": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@atlaskit/panel/-/panel-0.3.5.tgz",
"integrity": "sha512-yNqI+2FessLZuPri+0Kgbck/nQl8F+k2cFPbkfyIedvazw3lItMyF0oG7JNM6sg9dRo147hKMvggpdVPbDDXhg==",
"dev": true,
"dependencies": {
"@atlaskit/button": "^13.3.10",
"@atlaskit/icon": "^20.0.1",
"@atlaskit/theme": "^9.5.3",
"react-animate-height": "^2.0.5",
"react-focus-within": "^2.0.1",
"tslib": "^1.9.3"
},
"peerDependencies": {
"react": "^16.8.0",
"styled-components": "^3.2.6"
}
},
"node_modules/@atlaskit/panel/node_modules/@atlaskit/analytics-next": {
"version": "6.3.6",
"resolved": "https://registry.npmjs.org/@atlaskit/analytics-next/-/analytics-next-6.3.6.tgz",
"integrity": "sha512-LeByMgFN19rU8Awl+OG+9iERwxv2bg/nPLYV6anvPkL4H9IGgDu9+hLgJZ2muCQXN5AfamNMcxtU4LPGcDKRdQ==",
"deprecated": "The version you are trying to install has a critical bug. Please opt for 6.3.7 or >=7.0.2",
"dev": true,
"dependencies": {
"prop-types": "^15.5.10",
"tslib": "^1.9.3",
"use-memo-one": "^1.1.1"
},
"peerDependencies": {
"react": "^16.8.0"
}
},
"node_modules/@atlaskit/panel/node_modules/@atlaskit/button": {
"version": "13.3.12",
"resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-13.3.12.tgz",
"integrity": "sha512-kKvX99fxpuPPGBdk6v/saynNC7sTnpcMLDOWxd7fE1gFPsT29IH4rsNxGO3EhA8aOb/HbwflVvLxeS5MxKTUFg==",
"dev": true,
"dependencies": {
"@atlaskit/analytics-next": "^6.3.6",
"@atlaskit/spinner": "^12.1.7",
"@atlaskit/theme": "^9.5.3",
"@emotion/core": "^10.0.9",
"memoize-one": "^5.1.0",
"tslib": "^1.9.3"
},
"peerDependencies": {
"react": "^16.8.0"
}
},
"node_modules/@atlaskit/panel/node_modules/@atlaskit/icon": {
"version": "20.1.2",
"resolved": "https://registry.npmjs.org/@atlaskit/icon/-/icon-20.1.2.tgz",
"integrity": "sha512-cDpE6kfiCxv4VNY4LKtRUPAdXTcx4t2eEU1K5Htm/5i6/rmJMHMITIvpZaRqF2R7XdBH5kE2MLxSfexBHC0DjQ==",
"dev": true,
"dependencies": {
"@atlaskit/theme": "^9.5.1",
"tslib": "^1.9.3",
"uuid": "^3.1.0"
},
"peerDependencies": {
"react": "^16.8.0",
"styled-components": "^3.2.6"
}
},
"node_modules/@atlaskit/panel/node_modules/@atlaskit/spinner": {
"version": "12.1.7",
"resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-12.1.7.tgz",
"integrity": "sha512-fGnD6fcBW13RiS1DzGTvrm+M5Ld9Jhlw+Tx3PMs9naFpZvpTqoI5oVyTz+VDoyXhdQGKJAcfk0SntyONFZmDBg==",
"dev": true,
"dependencies": {
"@atlaskit/theme": "^9.5.1",
"react-transition-group": "^2.2.1",
"tslib": "^1.9.3"
},
"peerDependencies": {
"react": "^16.8.0",
"styled-components": "^3.2.6"
}
},
"node_modules/@atlaskit/panel/node_modules/@atlaskit/theme": {
"version": "9.5.3",
"resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-9.5.3.tgz",
"integrity": "sha512-GA8zpyDZHO81vPcSJbObQuRt3ajQxOHY+Qz6Zi1yIepr4Y6xz/fXIiFzamP/VJB/TvHQEhyNE0yeQIYVHGuhyg==",
"dev": true,
"dependencies": {
"exenv": "^1.2.2",
"prop-types": "^15.5.10",
"tslib": "^1.9.3"
},
"peerDependencies": {
"react": "^16.8.0",
"styled-components": "^3.2.6"
}
},
"node_modules/@atlaskit/panel/node_modules/memoize-one": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
"integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==",
"dev": true
},
"node_modules/@atlaskit/polyfills": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@atlaskit/polyfills/-/polyfills-3.0.5.tgz",
@ -4152,150 +4050,6 @@
"node": ">= 8"
}
},
"node_modules/@emotion/cache": {
"version": "10.0.29",
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz",
"integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==",
"dev": true,
"dependencies": {
"@emotion/sheet": "0.9.4",
"@emotion/stylis": "0.8.5",
"@emotion/utils": "0.11.3",
"@emotion/weak-memoize": "0.2.5"
}
},
"node_modules/@emotion/cache/node_modules/@emotion/stylis": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
"integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
"dev": true
},
"node_modules/@emotion/cache/node_modules/@emotion/utils": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
"integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==",
"dev": true
},
"node_modules/@emotion/core": {
"version": "10.0.28",
"resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz",
"integrity": "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.5.5",
"@emotion/cache": "^10.0.27",
"@emotion/css": "^10.0.27",
"@emotion/serialize": "^0.11.15",
"@emotion/sheet": "0.9.4",
"@emotion/utils": "0.11.3"
},
"peerDependencies": {
"react": ">=16.3.0"
}
},
"node_modules/@emotion/core/node_modules/@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==",
"dev": true
},
"node_modules/@emotion/core/node_modules/@emotion/memoize": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
"integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
"dev": true
},
"node_modules/@emotion/core/node_modules/@emotion/serialize": {
"version": "0.11.16",
"resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz",
"integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==",
"dev": true,
"dependencies": {
"@emotion/hash": "0.8.0",
"@emotion/memoize": "0.7.4",
"@emotion/unitless": "0.7.5",
"@emotion/utils": "0.11.3",
"csstype": "^2.5.7"
}
},
"node_modules/@emotion/core/node_modules/@emotion/unitless": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
"dev": true
},
"node_modules/@emotion/core/node_modules/@emotion/utils": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
"integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==",
"dev": true
},
"node_modules/@emotion/css": {
"version": "10.0.27",
"resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz",
"integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==",
"dev": true,
"dependencies": {
"@emotion/serialize": "^0.11.15",
"@emotion/utils": "0.11.3",
"babel-plugin-emotion": "^10.0.27"
}
},
"node_modules/@emotion/css/node_modules/@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==",
"dev": true
},
"node_modules/@emotion/css/node_modules/@emotion/memoize": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
"integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
"dev": true
},
"node_modules/@emotion/css/node_modules/@emotion/serialize": {
"version": "0.11.16",
"resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz",
"integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==",
"dev": true,
"dependencies": {
"@emotion/hash": "0.8.0",
"@emotion/memoize": "0.7.4",
"@emotion/unitless": "0.7.5",
"@emotion/utils": "0.11.3",
"csstype": "^2.5.7"
}
},
"node_modules/@emotion/css/node_modules/@emotion/unitless": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
"dev": true
},
"node_modules/@emotion/css/node_modules/@emotion/utils": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
"integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==",
"dev": true
},
"node_modules/@emotion/css/node_modules/babel-plugin-emotion": {
"version": "10.0.33",
"resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz",
"integrity": "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==",
"dev": true,
"dependencies": {
"@babel/helper-module-imports": "^7.0.0",
"@emotion/hash": "0.8.0",
"@emotion/memoize": "0.7.4",
"@emotion/serialize": "^0.11.16",
"babel-plugin-macros": "^2.0.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"convert-source-map": "^1.5.0",
"escape-string-regexp": "^1.0.5",
"find-root": "^1.1.0",
"source-map": "^0.5.7"
}
},
"node_modules/@emotion/hash": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.6.6.tgz",
@ -4320,12 +4074,6 @@
"@emotion/utils": "^0.8.2"
}
},
"node_modules/@emotion/sheet": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz",
"integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==",
"dev": true
},
"node_modules/@emotion/stylis": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.7.1.tgz",
@ -4344,12 +4092,6 @@
"integrity": "sha512-rLu3wcBWH4P5q1CGoSSH/i9hrXs7SlbRLkoq9IGuoPYNGQvDJ3pt/wmOM+XgYjIDRMVIdkUWt0RsfzF50JfnCw==",
"dev": true
},
"node_modules/@emotion/weak-memoize": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==",
"dev": true
},
"node_modules/@jitsi/electron-sdk": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@jitsi/electron-sdk/-/electron-sdk-3.0.2.tgz",
@ -6127,28 +5869,12 @@
"node": ">=8.0"
}
},
"node_modules/@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
"integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==",
"dev": true
},
"node_modules/@types/q": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
"dev": true
},
"node_modules/@types/react": {
"version": "16.9.35",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.35.tgz",
"integrity": "sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ==",
"dev": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^2.2.0"
}
},
"node_modules/@types/semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.8.tgz",
@ -15164,20 +14890,6 @@
"integrity": "sha1-0uJZ/clR0diQbAiQIAIQjc6HkuU=",
"dev": true
},
"node_modules/react-animate-height": {
"version": "2.0.21",
"resolved": "https://registry.npmjs.org/react-animate-height/-/react-animate-height-2.0.21.tgz",
"integrity": "sha512-CZHdjMD8qqp10tYtWmauWYASXxxv9vYeljxFGFtbcrbNXhsUv0w3IjxVK+0yCnyfk7769WfMZKHra4vRcbMnQg==",
"dev": true,
"dependencies": {
"classnames": "^2.2.5",
"prop-types": "^15.6.1"
},
"peerDependencies": {
"react": ">=15.6.2",
"react-dom": ">=15.6.2"
}
},
"node_modules/react-clientside-effect": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz",
@ -15235,19 +14947,6 @@
"react": "^15.0.0 || ^16.0.0"
}
},
"node_modules/react-focus-within": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/react-focus-within/-/react-focus-within-2.0.1.tgz",
"integrity": "sha512-lsP9+UW/9iSoqAqZ34wARnypP2izt3BjQ14+5+VpfvTnsNet1wFn071GtJYMmUR0pT6Pa59WnW+HhSguFGXVQg==",
"dev": true,
"dependencies": {
"@types/react": "^15.0.0 || ^16.0.0",
"prop-types": "^15.6.1"
},
"peerDependencies": {
"react": "^15.0.0 || ^16.0.0"
}
},
"node_modules/react-i18next": {
"version": "11.8.12",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.8.12.tgz",
@ -17954,15 +17653,6 @@
"node": ">=0.10.0"
}
},
"node_modules/use-memo-one": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.1.tgz",
"integrity": "sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ==",
"dev": true,
"peerDependencies": {
"react": "^16.8.0"
}
},
"node_modules/utf8-byte-length": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",
@ -20068,86 +19758,6 @@
"@babel/runtime": "^7.0.0"
}
},
"@atlaskit/panel": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@atlaskit/panel/-/panel-0.3.5.tgz",
"integrity": "sha512-yNqI+2FessLZuPri+0Kgbck/nQl8F+k2cFPbkfyIedvazw3lItMyF0oG7JNM6sg9dRo147hKMvggpdVPbDDXhg==",
"dev": true,
"requires": {
"@atlaskit/button": "^13.3.10",
"@atlaskit/icon": "^20.0.1",
"@atlaskit/theme": "^9.5.3",
"react-animate-height": "^2.0.5",
"react-focus-within": "^2.0.1",
"tslib": "^1.9.3"
},
"dependencies": {
"@atlaskit/analytics-next": {
"version": "6.3.6",
"resolved": "https://registry.npmjs.org/@atlaskit/analytics-next/-/analytics-next-6.3.6.tgz",
"integrity": "sha512-LeByMgFN19rU8Awl+OG+9iERwxv2bg/nPLYV6anvPkL4H9IGgDu9+hLgJZ2muCQXN5AfamNMcxtU4LPGcDKRdQ==",
"dev": true,
"requires": {
"prop-types": "^15.5.10",
"tslib": "^1.9.3",
"use-memo-one": "^1.1.1"
}
},
"@atlaskit/button": {
"version": "13.3.12",
"resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-13.3.12.tgz",
"integrity": "sha512-kKvX99fxpuPPGBdk6v/saynNC7sTnpcMLDOWxd7fE1gFPsT29IH4rsNxGO3EhA8aOb/HbwflVvLxeS5MxKTUFg==",
"dev": true,
"requires": {
"@atlaskit/analytics-next": "^6.3.6",
"@atlaskit/spinner": "^12.1.7",
"@atlaskit/theme": "^9.5.3",
"@emotion/core": "^10.0.9",
"memoize-one": "^5.1.0",
"tslib": "^1.9.3"
}
},
"@atlaskit/icon": {
"version": "20.1.2",
"resolved": "https://registry.npmjs.org/@atlaskit/icon/-/icon-20.1.2.tgz",
"integrity": "sha512-cDpE6kfiCxv4VNY4LKtRUPAdXTcx4t2eEU1K5Htm/5i6/rmJMHMITIvpZaRqF2R7XdBH5kE2MLxSfexBHC0DjQ==",
"dev": true,
"requires": {
"@atlaskit/theme": "^9.5.1",
"tslib": "^1.9.3",
"uuid": "^3.1.0"
}
},
"@atlaskit/spinner": {
"version": "12.1.7",
"resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-12.1.7.tgz",
"integrity": "sha512-fGnD6fcBW13RiS1DzGTvrm+M5Ld9Jhlw+Tx3PMs9naFpZvpTqoI5oVyTz+VDoyXhdQGKJAcfk0SntyONFZmDBg==",
"dev": true,
"requires": {
"@atlaskit/theme": "^9.5.1",
"react-transition-group": "^2.2.1",
"tslib": "^1.9.3"
}
},
"@atlaskit/theme": {
"version": "9.5.3",
"resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-9.5.3.tgz",
"integrity": "sha512-GA8zpyDZHO81vPcSJbObQuRt3ajQxOHY+Qz6Zi1yIepr4Y6xz/fXIiFzamP/VJB/TvHQEhyNE0yeQIYVHGuhyg==",
"dev": true,
"requires": {
"exenv": "^1.2.2",
"prop-types": "^15.5.10",
"tslib": "^1.9.3"
}
},
"memoize-one": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz",
"integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==",
"dev": true
}
}
},
"@atlaskit/polyfills": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@atlaskit/polyfills/-/polyfills-3.0.5.tgz",
@ -23000,153 +22610,6 @@
}
}
},
"@emotion/cache": {
"version": "10.0.29",
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz",
"integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==",
"dev": true,
"requires": {
"@emotion/sheet": "0.9.4",
"@emotion/stylis": "0.8.5",
"@emotion/utils": "0.11.3",
"@emotion/weak-memoize": "0.2.5"
},
"dependencies": {
"@emotion/stylis": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz",
"integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==",
"dev": true
},
"@emotion/utils": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
"integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==",
"dev": true
}
}
},
"@emotion/core": {
"version": "10.0.28",
"resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz",
"integrity": "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==",
"dev": true,
"requires": {
"@babel/runtime": "^7.5.5",
"@emotion/cache": "^10.0.27",
"@emotion/css": "^10.0.27",
"@emotion/serialize": "^0.11.15",
"@emotion/sheet": "0.9.4",
"@emotion/utils": "0.11.3"
},
"dependencies": {
"@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==",
"dev": true
},
"@emotion/memoize": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
"integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
"dev": true
},
"@emotion/serialize": {
"version": "0.11.16",
"resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz",
"integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==",
"dev": true,
"requires": {
"@emotion/hash": "0.8.0",
"@emotion/memoize": "0.7.4",
"@emotion/unitless": "0.7.5",
"@emotion/utils": "0.11.3",
"csstype": "^2.5.7"
}
},
"@emotion/unitless": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
"dev": true
},
"@emotion/utils": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
"integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==",
"dev": true
}
}
},
"@emotion/css": {
"version": "10.0.27",
"resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz",
"integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==",
"dev": true,
"requires": {
"@emotion/serialize": "^0.11.15",
"@emotion/utils": "0.11.3",
"babel-plugin-emotion": "^10.0.27"
},
"dependencies": {
"@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
"integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==",
"dev": true
},
"@emotion/memoize": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz",
"integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==",
"dev": true
},
"@emotion/serialize": {
"version": "0.11.16",
"resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz",
"integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==",
"dev": true,
"requires": {
"@emotion/hash": "0.8.0",
"@emotion/memoize": "0.7.4",
"@emotion/unitless": "0.7.5",
"@emotion/utils": "0.11.3",
"csstype": "^2.5.7"
}
},
"@emotion/unitless": {
"version": "0.7.5",
"resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz",
"integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==",
"dev": true
},
"@emotion/utils": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz",
"integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==",
"dev": true
},
"babel-plugin-emotion": {
"version": "10.0.33",
"resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz",
"integrity": "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@emotion/hash": "0.8.0",
"@emotion/memoize": "0.7.4",
"@emotion/serialize": "^0.11.16",
"babel-plugin-macros": "^2.0.0",
"babel-plugin-syntax-jsx": "^6.18.0",
"convert-source-map": "^1.5.0",
"escape-string-regexp": "^1.0.5",
"find-root": "^1.1.0",
"source-map": "^0.5.7"
}
}
}
},
"@emotion/hash": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.6.6.tgz",
@ -23171,12 +22634,6 @@
"@emotion/utils": "^0.8.2"
}
},
"@emotion/sheet": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz",
"integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==",
"dev": true
},
"@emotion/stylis": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.7.1.tgz",
@ -23195,12 +22652,6 @@
"integrity": "sha512-rLu3wcBWH4P5q1CGoSSH/i9hrXs7SlbRLkoq9IGuoPYNGQvDJ3pt/wmOM+XgYjIDRMVIdkUWt0RsfzF50JfnCw==",
"dev": true
},
"@emotion/weak-memoize": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==",
"dev": true
},
"@jitsi/electron-sdk": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@jitsi/electron-sdk/-/electron-sdk-3.0.2.tgz",
@ -24610,28 +24061,12 @@
}
}
},
"@types/prop-types": {
"version": "15.7.3",
"resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
"integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==",
"dev": true
},
"@types/q": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz",
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==",
"dev": true
},
"@types/react": {
"version": "16.9.35",
"resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.35.tgz",
"integrity": "sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ==",
"dev": true,
"requires": {
"@types/prop-types": "*",
"csstype": "^2.2.0"
}
},
"@types/semver": {
"version": "7.3.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.8.tgz",
@ -32033,16 +31468,6 @@
"integrity": "sha1-0uJZ/clR0diQbAiQIAIQjc6HkuU=",
"dev": true
},
"react-animate-height": {
"version": "2.0.21",
"resolved": "https://registry.npmjs.org/react-animate-height/-/react-animate-height-2.0.21.tgz",
"integrity": "sha512-CZHdjMD8qqp10tYtWmauWYASXxxv9vYeljxFGFtbcrbNXhsUv0w3IjxVK+0yCnyfk7769WfMZKHra4vRcbMnQg==",
"dev": true,
"requires": {
"classnames": "^2.2.5",
"prop-types": "^15.6.1"
}
},
"react-clientside-effect": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz",
@ -32093,16 +31518,6 @@
"react-clientside-effect": "^1.2.0"
}
},
"react-focus-within": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/react-focus-within/-/react-focus-within-2.0.1.tgz",
"integrity": "sha512-lsP9+UW/9iSoqAqZ34wARnypP2izt3BjQ14+5+VpfvTnsNet1wFn071GtJYMmUR0pT6Pa59WnW+HhSguFGXVQg==",
"dev": true,
"requires": {
"@types/react": "^15.0.0 || ^16.0.0",
"prop-types": "^15.6.1"
}
},
"react-i18next": {
"version": "11.8.12",
"resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-11.8.12.tgz",
@ -34318,12 +33733,6 @@
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
"use-memo-one": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.1.tgz",
"integrity": "sha512-oFfsyun+bP7RX8X2AskHNTxu+R3QdE/RC5IefMbqptmACAA/gfol1KDD5KRzPsGMa62sWxGZw+Ui43u6x4ddoQ==",
"dev": true
},
"utf8-byte-length": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz",

View File

@ -142,7 +142,6 @@
"@atlaskit/navigation": "^33.3.10",
"@atlaskit/onboarding": "^6.2.0",
"@atlaskit/page": "^8.0.12",
"@atlaskit/panel": "^0.3.5",
"@atlaskit/spinner": "^9.0.13",
"@atlaskit/theme": "^7.0.5",
"@atlaskit/toggle": "^5.0.15",