diff --git a/client/src/App.jsx b/client/src/App.jsx index af3cd20d5..d5fda6a2c 100644 --- a/client/src/App.jsx +++ b/client/src/App.jsx @@ -1,4 +1,4 @@ -import { Route, Switch } from 'react-router-dom'; +import { Route } from 'react-router-dom'; import './App.css'; import Editor from './features/editors/Editor'; import DefaultPresenter from './features/viewers/DefaultPresenter'; @@ -22,14 +22,14 @@ function App() { return ( -
- - - - - - -
+
+ + + + + + +
); diff --git a/client/src/app/api/eventApi.js b/client/src/app/api/eventApi.js new file mode 100644 index 000000000..7d43221e6 --- /dev/null +++ b/client/src/app/api/eventApi.js @@ -0,0 +1,21 @@ +import axios from 'axios'; +import { NODE_PORT } from './apiConstants'; + +// get origin from URL +const serverURL = window.location.origin.replace( + window.location.port, + `${NODE_PORT}/` +); + +export const eventNamespace = 'event'; +export const eventURL = serverURL + eventNamespace; + +export const fetchEvent = async () => { + const res = await axios.get(eventURL); + return res.data; +}; + +export const postEvent = async (data) => { + const res = await axios.post(eventURL, data); + return res; +}; diff --git a/client/src/app/api/settingsApi.js b/client/src/app/api/settingsApi.js deleted file mode 100644 index 334ed2589..000000000 --- a/client/src/app/api/settingsApi.js +++ /dev/null @@ -1,23 +0,0 @@ -import axios from 'axios'; -import { NODE_PORT } from '../api/apiConstants'; - -// get origin from URL -const serverURL = window.location.origin.replace( - window.location.port, - `${NODE_PORT}/` -); - -export const settingsNamespace = 'settings'; -export const settingsURL = serverURL + settingsNamespace; - -export const fetchSettings = async () => { - const res = await axios.get(settingsURL); - return res.data; -}; - -export const postSettings = async (data) => { - console.log('debug sending', data) - console.log('debug await', await axios.post(settingsURL, data)) - const res = await axios.post(settingsURL, data); - return res; -}; diff --git a/client/src/common/components/buttons/AddIconBtn.jsx b/client/src/common/components/buttons/AddIconBtn.jsx index 98113488b..e8983d3a0 100644 --- a/client/src/common/components/buttons/AddIconBtn.jsx +++ b/client/src/common/components/buttons/AddIconBtn.jsx @@ -8,6 +8,7 @@ export default function AddIconBtn(props) { icon={} colorScheme='blue' onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/BlockIconBtn.jsx b/client/src/common/components/buttons/BlockIconBtn.jsx index 2bf54c2b7..3852aff0b 100644 --- a/client/src/common/components/buttons/BlockIconBtn.jsx +++ b/client/src/common/components/buttons/BlockIconBtn.jsx @@ -8,6 +8,7 @@ export default function BlockIconBtn(props) { icon={} colorScheme='purple' onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/CollapseIconBtn.jsx b/client/src/common/components/buttons/CollapseIconBtn.jsx index d42bb7334..13da7b490 100644 --- a/client/src/common/components/buttons/CollapseIconBtn.jsx +++ b/client/src/common/components/buttons/CollapseIconBtn.jsx @@ -9,6 +9,7 @@ export default function CollapseIconBtn(props) { colorScheme='orange' variant={props.active ? 'solid' : 'outline'} onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/DelayIconBtn.jsx b/client/src/common/components/buttons/DelayIconBtn.jsx index 1a50b4a5b..9f0121736 100644 --- a/client/src/common/components/buttons/DelayIconBtn.jsx +++ b/client/src/common/components/buttons/DelayIconBtn.jsx @@ -8,6 +8,7 @@ export default function DelayIconBtn(props) { icon={} colorScheme='yellow' onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/DeleteIconBtn.jsx b/client/src/common/components/buttons/DeleteIconBtn.jsx index bc4d48ea2..3e8a0fc7d 100644 --- a/client/src/common/components/buttons/DeleteIconBtn.jsx +++ b/client/src/common/components/buttons/DeleteIconBtn.jsx @@ -8,6 +8,7 @@ export default function DeleteIconBtn(props) { icon={} colorScheme='red' onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/NextIconBtn.jsx b/client/src/common/components/buttons/NextIconBtn.jsx index 30f4f2d14..35ac1a361 100644 --- a/client/src/common/components/buttons/NextIconBtn.jsx +++ b/client/src/common/components/buttons/NextIconBtn.jsx @@ -5,11 +5,12 @@ export default function NextIconBtn(props) { return ( } - colorScheme= 'whiteAlpha' + colorScheme='whiteAlpha' backgroundColor='#ffffff05' - variant= 'outline' + variant='outline' onClick={props.clickHandler} width={90} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/PauseIconBtn.jsx b/client/src/common/components/buttons/PauseIconBtn.jsx index 637c5c8b0..d619af46c 100644 --- a/client/src/common/components/buttons/PauseIconBtn.jsx +++ b/client/src/common/components/buttons/PauseIconBtn.jsx @@ -8,7 +8,8 @@ export default function PauseIconBtn(props) { colorScheme='orange' variant={props.active ? 'solid' : 'outline'} onClick={props.clickHandler} - width={90} + width={120} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/PrevIconBtn.jsx b/client/src/common/components/buttons/PrevIconBtn.jsx index a629955e3..59bdc955e 100644 --- a/client/src/common/components/buttons/PrevIconBtn.jsx +++ b/client/src/common/components/buttons/PrevIconBtn.jsx @@ -5,11 +5,12 @@ export default function PrevIconBtn(props) { return ( } - colorScheme= 'whiteAlpha' + colorScheme='whiteAlpha' backgroundColor='#ffffff05' - variant= 'outline' + variant='outline' onClick={props.clickHandler} width={90} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/ReloadIconBtn.jsx b/client/src/common/components/buttons/ReloadIconBtn.jsx new file mode 100644 index 000000000..52106f739 --- /dev/null +++ b/client/src/common/components/buttons/ReloadIconBtn.jsx @@ -0,0 +1,16 @@ +import { IconButton } from '@chakra-ui/button'; +import { FiRefreshCcw } from 'react-icons/fi'; + +export default function ReloadIconButton(props) { + return ( + } + colorScheme='whiteAlpha' + backgroundColor='#ffffff05' + variant='outline' + onClick={props.clickHandler} + width={90} + _focus={{ boxShadow: 'none' }} + /> + ); +} diff --git a/client/src/common/components/buttons/RollIconBtn.jsx b/client/src/common/components/buttons/RollIconBtn.jsx index c2d169d02..1d7376ea0 100644 --- a/client/src/common/components/buttons/RollIconBtn.jsx +++ b/client/src/common/components/buttons/RollIconBtn.jsx @@ -8,7 +8,9 @@ export default function RollIconBtn(props) { colorScheme='blue' variant={props.active ? 'solid' : 'outline'} onClick={props.clickHandler} - width={90} + width={120} + disabled + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/SettingsIconBtn.jsx b/client/src/common/components/buttons/SettingsIconBtn.jsx index 738aab8b3..f7fcf63b3 100644 --- a/client/src/common/components/buttons/SettingsIconBtn.jsx +++ b/client/src/common/components/buttons/SettingsIconBtn.jsx @@ -9,6 +9,7 @@ export default function SettingsIconBtn(props) { isRound variant='outline' onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/StartIconBtn.jsx b/client/src/common/components/buttons/StartIconBtn.jsx index 7ec449908..d015135ef 100644 --- a/client/src/common/components/buttons/StartIconBtn.jsx +++ b/client/src/common/components/buttons/StartIconBtn.jsx @@ -8,7 +8,8 @@ export default function StartIconBtn(props) { colorScheme='green' variant={props.active ? 'solid' : 'outline'} onClick={props.clickHandler} - width={90} + width={120} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/buttons/UnloadIconBtn.jsx b/client/src/common/components/buttons/UnloadIconBtn.jsx new file mode 100644 index 000000000..eb09e3c6c --- /dev/null +++ b/client/src/common/components/buttons/UnloadIconBtn.jsx @@ -0,0 +1,16 @@ +import { IconButton } from '@chakra-ui/button'; +import { FiCornerLeftUp } from 'react-icons/fi'; + +export default function UnloadIconBtn(props) { + return ( + } + colorScheme='whiteAlpha' + backgroundColor='#ffffff05' + variant='outline' + onClick={props.clickHandler} + width={90} + _focus={{ boxShadow: 'none' }} + /> + ); +} diff --git a/client/src/common/components/buttons/VisibleIconBtn.jsx b/client/src/common/components/buttons/VisibleIconBtn.jsx index 598ce4653..ba7c8001e 100644 --- a/client/src/common/components/buttons/VisibleIconBtn.jsx +++ b/client/src/common/components/buttons/VisibleIconBtn.jsx @@ -9,6 +9,7 @@ export default function VisibleIconBtn(props) { colorScheme='blue' variant={props.active ? 'solid' : 'outline'} onClick={props.clickHandler} + _focus={{ boxShadow: 'none' }} /> ); } diff --git a/client/src/common/components/eventTimes/EventTimes.jsx b/client/src/common/components/eventTimes/EventTimes.jsx index 1bd928127..c680cce07 100644 --- a/client/src/common/components/eventTimes/EventTimes.jsx +++ b/client/src/common/components/eventTimes/EventTimes.jsx @@ -1,5 +1,4 @@ import EditableTimer from '../../input/EditableTimer'; -import DelayValue from '../../input/DelayValue'; import { showWarningToast } from '../../helpers/toastManager'; export default function EventTimes(props) { @@ -24,7 +23,6 @@ export default function EventTimes(props) { return ( <> - 0; return ( -
+
{delayed && {`+ ${millisToMinutes(delay)}`}}
); diff --git a/client/src/common/input/EditableText.jsx b/client/src/common/input/EditableText.jsx index dbc773213..8e72ab963 100644 --- a/client/src/common/input/EditableText.jsx +++ b/client/src/common/input/EditableText.jsx @@ -1,8 +1,10 @@ import { Editable, EditableInput, EditablePreview } from '@chakra-ui/editable'; +import { useState } from 'react'; import style from './EditableText.module.css'; export default function EditableText(props) { const { label, defaultValue, placeholder, submitHandler } = props; + const [text, setText] = useState(props.defaultValue || ''); const handleSubmit = (submitedVal) => { // No need to update if it hasnt changed @@ -11,19 +13,25 @@ export default function EditableText(props) { submitHandler(submitedVal); }; + const handleChange = (val) => { + if (val.length < 40) setText(val); + console.log(val.length); + }; + return (
{label} handleChange(v)} onSubmit={(v) => handleSubmit(v)} - defaultValue={defaultValue} + value={text} placeholder={placeholder} className={style.inline} > - +
); diff --git a/client/src/common/input/EditableText.module.css b/client/src/common/input/EditableText.module.css index e29803d21..62c53f64f 100644 --- a/client/src/common/input/EditableText.module.css +++ b/client/src/common/input/EditableText.module.css @@ -14,13 +14,11 @@ .block { display: 'block'; + overflow: hidden; + max-width: 100%; } .inline { display: inline; -} - -.editable13 { - width: '13em'; - min-width: '13em'; + width: max-content; } diff --git a/client/src/common/input/EditableTimer.module.css b/client/src/common/input/EditableTimer.module.css index 4ce165612..4cd23a677 100644 --- a/client/src/common/input/EditableTimer.module.css +++ b/client/src/common/input/EditableTimer.module.css @@ -1,6 +1,5 @@ .time { background-color: rgba(255, 255, 255, 0.05); - border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 4px; width: 5em; height: fit-content; @@ -10,17 +9,9 @@ .delayedEditable { text-align: center; border-radius: 4px; + border: 1px solid rgba(255, 255, 255, 0.05); } .delayedEditable { border: 1px solid #d69e2e55; } - -.delayValue { - color: #fff; - border-radius: 4px; - padding: 0.3em 0; - text-align: center; - align-self: flex-start; - background-color: #d69e2e55; -} diff --git a/client/src/common/input/TimeInput.jsx b/client/src/common/input/TimeInput.jsx index d54dfc4ff..19c3ca2db 100644 --- a/client/src/common/input/TimeInput.jsx +++ b/client/src/common/input/TimeInput.jsx @@ -22,14 +22,16 @@ export default function TimeInput(props) { }, [props.value]); const handleChange = (val) => { - if (val <= 999) setValue(val); + if (val <= 666) setValue(val); }; const handleSubmit = (val) => { if (val === props.value) return; if (val === '') setValue(0); - if (val > 0 && val < 60) { + if (val >= 0 && val <= 60) { props.submitHandler(val); + } else { + setValue(60); } }; diff --git a/client/src/features/control/PlaybackControl.jsx b/client/src/features/control/PlaybackControl.jsx index a2ba0e907..9da86ca5c 100644 --- a/client/src/features/control/PlaybackControl.jsx +++ b/client/src/features/control/PlaybackControl.jsx @@ -8,6 +8,8 @@ import PauseIconBtn from '../../common/components/buttons/PauseIconBtn'; import PrevIconBtn from '../../common/components/buttons/PrevIconBtn'; import NextIconBtn from '../../common/components/buttons/NextIconBtn'; import RollIconBtn from '../../common/components/buttons/RollIconBtn'; +import UnloadIconBtn from '../../common/components/buttons/UnloadIconBtn'; +import ReloadIconButton from '../../common/components/buttons/ReloadIconBtn'; export default function PlaybackControl() { const socket = useSocket(); @@ -19,6 +21,14 @@ export default function PlaybackControl() { expectedFinish: null, }); + const resetTimer = () => { + setTimer({ + currentSeconds: null, + startedAt: null, + expectedFinish: null, + }); + }; + // handle incoming messages useEffect(() => { if (socket == null) return; @@ -56,9 +66,11 @@ export default function PlaybackControl() { break; case 'previous': socket.emit('set-playstate', 'previous'); + resetTimer(); break; case 'next': socket.emit('set-playstate', 'next'); + resetTimer(); break; default: break; @@ -93,13 +105,17 @@ export default function PlaybackControl() { active={playback === 'pause'} clickHandler={() => playbackControl('pause')} /> - playbackControl('previous')} /> - playbackControl('next')} /> playbackControl('roll')} />
+
+ playbackControl('previous')} /> + playbackControl('next')} /> + playbackControl('unload')} /> + playbackControl('reload')} /> +
); } diff --git a/client/src/features/editors/Editor.module.css b/client/src/features/editors/Editor.module.css index 1b606b809..78d8275e3 100644 --- a/client/src/features/editors/Editor.module.css +++ b/client/src/features/editors/Editor.module.css @@ -7,7 +7,7 @@ padding: 2vh; display: grid; - grid-template-rows: 1fr 1fr 1fr; + grid-template-rows: 38vh 1fr 1fr; grid-template-columns: 1fr 25vw 25vw 5vw; grid-template-areas: 'even mess play sett' @@ -67,7 +67,6 @@ .mainContainer > div { border-radius: 0.5em; height: 100%; - margin-top: 1.5vh; background-color: rgba(255, 255, 255, 0.13); padding: 0.8em 1.5em; diff --git a/client/src/features/editors/list/ActionButtons.jsx b/client/src/features/editors/list/ActionButtons.jsx new file mode 100644 index 000000000..76b108c9e --- /dev/null +++ b/client/src/features/editors/list/ActionButtons.jsx @@ -0,0 +1,49 @@ +import { Menu, MenuButton, MenuItem, MenuList } from '@chakra-ui/menu'; +import { IconButton } from '@chakra-ui/button'; +import { FiZap, FiPlus, FiMinus, FiMinusCircle, FiClock } from 'react-icons/fi'; + +export default function ActionButtons(props) { + const { showDel, showAdd, showDelay, showBlock } = props; + + const menuStyle = { + color: '#000000', + backgroundColor: 'rgba(255,255,255,0.67)', + }; + + return ( + + } + _hover={{ bg: 'pink.500' }} + _expanded={{ bg: 'pink.300' }} + _focus={{ boxShadow: 'none' }} + colorScheme='pink' + /> + + {showDel && ( + } onClick={props.deleteHandler}> + Delete + + )} + {showAdd && ( + } onClick={props.addHandler}> + Event next + + )} + {showDelay && ( + } onClick={props.delayHandler}> + Delay next + + )} + {showBlock && ( + } onClick={props.blockHandler}> + Block next + + )} + + + ); +} diff --git a/client/src/features/editors/list/Block.module.css b/client/src/features/editors/list/Block.module.css index 1fc7d4737..5e74eb029 100644 --- a/client/src/features/editors/list/Block.module.css +++ b/client/src/features/editors/list/Block.module.css @@ -27,8 +27,7 @@ gap: 0.5em; align-content: center; align-self: flex-start; - - opacity: 0.4; + opacity: 0.8; transition: linear 0.1s; } @@ -52,7 +51,8 @@ padding-left: 1em; display: grid; - grid-template-columns: 3em auto auto 1fr auto; + grid-template-columns: auto 2em auto auto 1fr auto; + justify-content: center; align-content: center; align-items: baseline; @@ -74,6 +74,45 @@ ); } +.drag { + color: rgba(255, 255, 255, 0.37); + align-self: center; + /* cursor: grab; Later */ +} + +.indicators { + display: flex; + flex-direction: column; + align-self: flex-start; + font-size: 0.75em; + overflow: hidden; + min-width: 0; + justify-content: center; +} + +.next { + color: #4bffabcc; + width: max-content; + padding: 0 0.2em; +} + +.nextDisabled { + color: rgba(255, 255, 255, 0.17); +} + +.delayValue { + color: #d69e2eaa; + padding: 0 0.2em; + text-align: center; + align-self: flex-start; + width: max-content; +} + +.next:after, +.delayValue:after { + content: '\200b'; +} + .titleContainer, .detailedContainer { background-color: rgba(255, 255, 255, 0.05); @@ -124,4 +163,4 @@ ); justify-content: space-between; -} \ No newline at end of file +} diff --git a/client/src/features/editors/list/BlockBlock.jsx b/client/src/features/editors/list/BlockBlock.jsx index 826f40929..759484daa 100644 --- a/client/src/features/editors/list/BlockBlock.jsx +++ b/client/src/features/editors/list/BlockBlock.jsx @@ -1,6 +1,4 @@ -import AddIconBtn from '../../../common/components/buttons/AddIconBtn'; -import DelayIconBtn from '../../../common/components/buttons/DelayIconBtn'; -import DeleteIconBtn from '../../../common/components/buttons/DeleteIconBtn'; +import ActionButtons from './ActionButtons'; import style from './Block.module.css'; export default function BlockBlock(props) { @@ -19,9 +17,15 @@ export default function BlockBlock(props) { return (
- - - +
); diff --git a/client/src/features/editors/list/DelayBlock.jsx b/client/src/features/editors/list/DelayBlock.jsx index de7ae4073..f5120a43c 100644 --- a/client/src/features/editors/list/DelayBlock.jsx +++ b/client/src/features/editors/list/DelayBlock.jsx @@ -1,8 +1,7 @@ -import AddIconBtn from '../../../common/components/buttons/AddIconBtn'; -import DeleteIconBtn from '../../../common/components/buttons/DeleteIconBtn'; import { millisToMinutes } from '../../../common/dateConfig'; import TimeInput from '../../../common/input/TimeInput'; import style from './Block.module.css'; +import ActionButtons from './ActionButtons'; export default function DelayBlock(props) { const { data, eventsHandler, index } = props; @@ -13,6 +12,7 @@ export default function DelayBlock(props) { const submitHandler = (value) => { // convert to ms and patch + console.log('debug adding', { id: data.id, duration: value * 1000 * 60 }); eventsHandler('patch', { id: data.id, duration: value * 1000 * 60 }); }; @@ -27,8 +27,12 @@ export default function DelayBlock(props) { submitHandler={submitHandler} />
- - +
); diff --git a/client/src/features/editors/list/EventBlock.jsx b/client/src/features/editors/list/EventBlock.jsx index 92412ffcc..ba9b4ff0d 100644 --- a/client/src/features/editors/list/EventBlock.jsx +++ b/client/src/features/editors/list/EventBlock.jsx @@ -1,16 +1,16 @@ -import { FiChevronDown, FiChevronUp } from 'react-icons/fi'; +import { FiChevronDown, FiChevronUp, FiMoreVertical } from 'react-icons/fi'; import { useState } from 'react'; -import AddIconBtn from '../../../common/components/buttons/AddIconBtn'; -import BlockIconBtn from '../../../common/components/buttons/BlockIconBtn'; -import DelayIconBtn from '../../../common/components/buttons/DelayIconBtn'; -import DeleteIconBtn from '../../../common/components/buttons/DeleteIconBtn'; import EventTimes from '../../../common/components/eventTimes/EventTimes'; import { showErrorToast } from '../../../common/helpers/toastManager'; import style from './Block.module.css'; import EditableText from '../../../common/input/EditableText'; +import DelayValue from '../../../common/input/DelayValue'; +import ActionButtons from './ActionButtons'; +import VisibleIconBtn from '../../../common/components/buttons/VisibleIconBtn'; export default function EventBlock(props) { const { data, selected, delay, index, eventsHandler } = props; + const [visible, setVisible] = useState(false); const [more, setMore] = useState(false); @@ -52,8 +52,18 @@ export default function EventBlock(props) { updateValues('presenter', v); }; + // TODO: implement functionality to select next + let isNext = false; + return (
+ + + +
+
Next
+ +
) : ( @@ -92,6 +102,7 @@ export default function EventBlock(props) { defaultValue={data.title} placeholder='Add Title' submitHandler={handleTitleSubmit} + isTight /> )} @@ -100,10 +111,21 @@ export default function EventBlock(props) {
- - - - + setVisible(!visible)} + active={visible} + /> +
); diff --git a/client/src/features/editors/list/EventListWrapper.jsx b/client/src/features/editors/list/EventListWrapper.jsx index f4d41ed48..79676ad41 100644 --- a/client/src/features/editors/list/EventListWrapper.jsx +++ b/client/src/features/editors/list/EventListWrapper.jsx @@ -24,11 +24,14 @@ export default function EventListWrapper() { // we optimistically update here onMutate: async (newEvent) => { // cancel ongoing queries - queryClient.cancelQueries(eventsNamespace); + queryClient.cancelQueries(eventsNamespace, { exact: true }); // Snapshot the previous value - const previousEvents = queryClient.getQueryData(eventsNamespace); - + let previousEvents = queryClient.getQueryData(eventsNamespace); + if (previousEvents == null) { + await queryClient.refetchQueries(); + previousEvents = queryClient.getQueryData(eventsNamespace); + } // optimistically update object, temp ID until refetch let optimistic = [...previousEvents]; optimistic.splice(newEvent.order, 0, { diff --git a/client/src/features/editors/list/List.module.css b/client/src/features/editors/list/List.module.css index 0cee5f3de..eb0dcec75 100644 --- a/client/src/features/editors/list/List.module.css +++ b/client/src/features/editors/list/List.module.css @@ -8,7 +8,7 @@ border-radius: 4px; padding: 8px; overflow-y: scroll; - height: 71vh; + height: 73vh; } .empty { diff --git a/client/src/features/menu/EventListMenu.jsx b/client/src/features/menu/EventListMenu.jsx index aab5270f1..b73a2de3e 100644 --- a/client/src/features/menu/EventListMenu.jsx +++ b/client/src/features/menu/EventListMenu.jsx @@ -17,6 +17,9 @@ export default function EventListMenu(props) { variant: 'outline', colorScheme: 'whiteAlpha', backgroundColor: '#ffffff05', + _hover: { bg: 'blue.800' }, + _expanded: { bg: 'blue.400' }, + _focus: { boxShadow: 'none' }, }; const menuStyle = { diff --git a/client/src/features/modals/SettingsModal.jsx b/client/src/features/modals/SettingsModal.jsx index d831181bc..5ad824c2a 100644 --- a/client/src/features/modals/SettingsModal.jsx +++ b/client/src/features/modals/SettingsModal.jsx @@ -15,15 +15,15 @@ import { Textarea, } from '@chakra-ui/react'; import { - fetchSettings, - postSettings, - settingsNamespace, -} from '../../app/api/settingsApi'; + fetchEvent, + postEvent, + eventNamespace, +} from '../../app/api/eventApi'; import { useQuery } from 'react-query'; import { useEffect, useState } from 'react'; export default function SettingsModal(props) { - const { data, status, isError } = useQuery(settingsNamespace, fetchSettings); + const { data, status, isError } = useQuery(eventNamespace, fetchEvent); const [formData, setFormData] = useState({ title: '', url: '', @@ -48,7 +48,7 @@ export default function SettingsModal(props) { event.preventDefault(); setSubmitting(true); - await postSettings(formData).then(setSubmitting(false)).then(onClose); + await postEvent(formData).then(setSubmitting(false)).then(onClose); }; return ( @@ -77,7 +77,7 @@ export default function SettingsModal(props) { size='sm' name='title' placeholder='Event Title' - autocomplete='off' + autoComplete='off' value={formData.title} onChange={(event) => setFormData({ ...formData, title: event.target.value }) @@ -97,7 +97,7 @@ export default function SettingsModal(props) { size='sm' name='url' placeholder='www.onsite.no' - autocomplete='off' + autoComplete='off' value={formData.url} onChange={(event) => setFormData({ ...formData, url: event.target.value }) @@ -117,7 +117,7 @@ export default function SettingsModal(props) { size='sm' name='pubInfo' placeholder='Information to be shown on public screens' - autocomplete='off' + autoComplete='off' value={formData.publicInfo} onChange={(event) => setFormData({ @@ -140,7 +140,7 @@ export default function SettingsModal(props) { size='sm' name='backstageInfo' placeholder='Information to be shown on backstage screens' - autocomplete='off' + autoComplete='off' value={formData.backstageInfo} onChange={(event) => setFormData({ diff --git a/client/src/features/viewers/ViewWrapper.jsx b/client/src/features/viewers/ViewWrapper.jsx index 32c7ce525..f8b1c0d10 100644 --- a/client/src/features/viewers/ViewWrapper.jsx +++ b/client/src/features/viewers/ViewWrapper.jsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react'; import { useQuery } from 'react-query'; import { eventsNamespace, fetchAllEvents } from '../../app/api/eventsApi'; -import { fetchSettings, settingsNamespace } from '../../app/api/settingsApi'; +import { fetchEvent, eventNamespace } from '../../app/api/eventApi'; import { useSocket } from '../../app/context/socketContext'; import { stringFromMillis } from '../../common/dateConfig'; @@ -16,9 +16,10 @@ const withSocket = (Component) => { data: genData, status: genDataStatus, isError: genDataIsError, - } = useQuery(settingsNamespace, fetchSettings); + } = useQuery(eventNamespace, fetchEvent); - const [events, setEvents] = useState([]); + const [publicEvents, setPublicEvents] = useState([]); + const [backstageEvents, setBackstageEvents] = useState([]); const socket = useSocket(); const [pres, setPres] = useState({ @@ -54,6 +55,7 @@ const withSocket = (Component) => { publicInfo: '', backstageInfo: '', }); + const [playback, setPlayback] = useState(null); // Ask for update on load useEffect(() => { @@ -79,6 +81,11 @@ const withSocket = (Component) => { setTimer({ ...data }); }); + // Handle playstate + socket.on('playstate', (data) => { + setPlayback(data); + }); + // Handle titles socket.on('titles', (data) => { setTitles({ ...data }); @@ -95,6 +102,12 @@ const withSocket = (Component) => { // Ask for up to data socket.emit('get-presenter'); + // ask for timer + socket.emit('get-timer'); + + // ask for playstate + socket.emit('get-playstate'); + // Ask for up titles socket.emit('get-titles'); @@ -107,6 +120,7 @@ const withSocket = (Component) => { socket.off('messages-presenter'); socket.off('messages-lower'); socket.off('timer'); + socket.off('playstate'); socket.off('titles'); socket.off('selected-id'); }; @@ -117,9 +131,11 @@ const withSocket = (Component) => { if (eventsData == null) return; // filter just events with title - const e = eventsData.filter((d) => d.type === 'event' && d.title !== ''); + const pe = eventsData.filter((d) => d.type === 'event' && d.title !== ''); + setPublicEvents(pe); - setEvents(e); + // everything goes backstage + setBackstageEvents(eventsData); }, [eventsData]); // Set general data @@ -133,12 +149,17 @@ const withSocket = (Component) => { /*** WRAP INFORMATION RELATED TO TITLES ***/ /*** ---------------------------------- ***/ /********************************************/ + // is there a now field? + let showNow = true; + if (!titles.titleNow && !titles.subtitleNow && !titles.presenterNow) + showNow = false; + // is there a next field? let showNext = true; if (!titles.titleNext && !titles.subtitleNext && !titles.presenterNext) showNext = false; - const titleManager = { ...titles, showNext: showNext }; + const titleManager = { ...titles, showNow: showNow, showNext: showNext }; /******************************************/ /*** + timeManager ***/ @@ -152,7 +173,12 @@ const withSocket = (Component) => { // get clock let clock = stringFromMillis(timer.clock); - const timeManager = { ...timer, finished: finished, clock: clock }; + const timeManager = { + ...timer, + finished: finished, + clock: clock, + playstate: playback, + }; return ( { lower={lower} title={titleManager} time={timeManager} - events={events} + events={publicEvents} + backstageEvents={backstageEvents} selectedId={selectedId} general={general} /> diff --git a/client/src/features/viewers/backstage/StageManager.jsx b/client/src/features/viewers/backstage/StageManager.jsx index 3e83216a6..74c0faaee 100644 --- a/client/src/features/viewers/backstage/StageManager.jsx +++ b/client/src/features/viewers/backstage/StageManager.jsx @@ -5,7 +5,7 @@ import Paginator from './Paginator'; import NavLogo from '../../../common/components/nav/NavLogo'; export default function StageManager(props) { - const { pres, publ, lower, title, time, events, selectedId, general } = props; + const { publ, title, time, events, selectedId, general } = props; // Format messages const showPubl = publ.text !== '' && publ.visible; @@ -19,18 +19,24 @@ export default function StageManager(props) {
{general.title}
-
-
Now
-
{title.titleNow}
-
{title.subtitleNow}
-
{title.presenterNow}
-
-
-
Next
-
{title.titleNext}
-
{title.subtitleNext}
-
{title.presenterNext}
-
+ {title.showNow && ( +
+
Now
+
{title.titleNow}
+
{title.subtitleNow}
+
{title.presenterNow}
+
+ )} + + {title.showNext && ( +
+
Next
+
{title.titleNext}
+
{title.subtitleNext}
+
{title.presenterNext}
+
+ )} +
Today
diff --git a/client/src/features/viewers/lower/Lower.jsx b/client/src/features/viewers/lower/Lower.jsx index 2cdd68135..f1f2425f9 100644 --- a/client/src/features/viewers/lower/Lower.jsx +++ b/client/src/features/viewers/lower/Lower.jsx @@ -2,16 +2,18 @@ import { AnimatePresence, motion } from 'framer-motion'; import style from './Lower.module.css'; export default function Lower(props) { - const { pres, publ, lower, title, time, events, selectedId, general } = props; + const { lower, title, time, general } = props; - // getting config from URL - // like http://localhost:3000/lower?bg=ff2&text=f00&size=0.6&transition=5 + // getting config from URL: preset, size, transition, bg, text, key + // eg. http://localhost:3000/lower?bg=ff2&text=f00&size=0.6&transition=5 let params = new URLSearchParams(props.location.search); + // Preset: choose from an animation preset, not yet const preset = params.get('preset') ? params.get('preset') : 1; + const size = params.get('size') ? params.get('size') : 1; const transitionIn = params.get('transition') ? params.get('transition') : 3; - const textColour = params.get('bg') ? `#${params.get('text')}` : '#fffffa'; + const textColour = params.get('text') ? `#${params.get('text')}` : '#fffffa'; const bgColour = params.get('bg') ? `#${params.get('bg')}` : '#00000033'; const key = params.get('key') ? `#${params.get('key')}` : 'null'; @@ -87,7 +89,7 @@ export default function Lower(props) { }, }, }; - + return (
TIME UP
) : ( -
+
)}
{!time.finished && ( -
+
)} -
-
Now
-
{title.titleNow}
-
{title.subtitleNow}
-
{title.presenterNow}
-
+ {title.showNow && ( +
+
Now
+
{title.titleNow}
+
{title.subtitleNow}
+
{title.presenterNow}
+
+ )} {title.showNext && (
diff --git a/client/src/features/viewers/presenter/PresenterView.module.css b/client/src/features/viewers/presenter/PresenterView.module.css index 033d6a2b6..ffc353d1f 100644 --- a/client/src/features/viewers/presenter/PresenterView.module.css +++ b/client/src/features/viewers/presenter/PresenterView.module.css @@ -101,10 +101,21 @@ padding: 0; } -.progressContainer { +.countdown { + opacity: 1; +} + +.progressContainer, +.progressContainerPaused { grid-area: prog; width: 80%; margin: 0 auto; + opacity: 1; +} + +.countdownPaused, +.progressContainerPaused { + opacity: 0.6; } .container__grayFinished { diff --git a/client/yarn.lock b/client/yarn.lock index 1c3030787..03f7a22a3 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -1120,7 +1120,14 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.13": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.17.tgz#8966d1fc9593bf848602f0662d6b4d0069e3a7ec" + integrity sha512-NCdgJEelPTSh+FEFylhnP1ylq848l1z9t9N0j1Lfbcw0+KXGjsTvUmkxy+voLLXB5SOKMbLLx4jxYliGrYQseA== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" integrity sha512-4QPkjJq6Ns3V/RgpEahRk+AGfL0eO6RHHtTWoNNr5mO49G6B5+X6d6THgWEAvTrznU5xYpbAlVKRYcsCgh/Akw== @@ -1164,520 +1171,532 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@chakra-ui/accordion@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-1.2.1.tgz#2e48ed5e79c58d5915a807fc03a486f54325005a" - integrity sha512-gc7x9XFDYYJ/1JqpT6a1IUhNu/Qayzv+bXXijNRHCHgaXuoO0YjiyGDBXEUpMEtwNhv7ENKPSi1V/pNjeZzGwQ== +"@chakra-ui/accordion@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-1.3.0.tgz#60a8cb65e68a7ea74ee64236a605250731a9d45a" + integrity sha512-gfLzgYAigq4FMjy48uzI6QRWgB8qDTZGt9Bgg+JgBmg8DL2Cgi5qL0Q3So5KJWP0NC04fxEUMNstrBlL59lIGw== dependencies: - "@chakra-ui/descendant" "1.1.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/transition" "1.1.2" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/descendant" "2.0.0" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/transition" "1.2.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/alert@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-1.2.1.tgz#77349c6c6cc7c771c12a156ffd52075927761e03" - integrity sha512-uM77sPKH8gY3UtL8nUE8H96JZlEs40SwAJU386uavCdKuD0MikJY6WYUxl22OTnAZ3HoZcxiySSwZ4T/JPagbg== +"@chakra-ui/alert@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-1.2.4.tgz#c7b36da60f40cc7fb748caaee045e6e66431457c" + integrity sha512-Ql46IUFU+BPPZetTSfoAyeecT/wKlfudeidW12aFskQa2j/g+YytXyHBbDfkZYgtnWzoZOsO2itV8sqqdJ4ieQ== dependencies: - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/avatar@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-1.2.1.tgz#2b137bce6d4cf949d45a651ee9ba79a285d14480" - integrity sha512-CapaLdQflGup875pvMgX43TNXPwZhpGHtR1dmLgMw/AtNYwPQEm710cKSLv6IThmDNlE7iII/nZoxrhxpnzRMQ== +"@chakra-ui/avatar@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/avatar/-/avatar-1.2.4.tgz#d13dae1106805d512b19506d95294f5e22a60db7" + integrity sha512-6l6sEHUlVWZUehfYm5hygHoMMOup7gwcB1354iZON67IiEOKTWgoZRjo2Vt85pdB2QZU7RCOAhmOltpny5SPZw== dependencies: - "@chakra-ui/image" "1.0.11" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/image" "1.0.14" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/breadcrumb@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-1.2.1.tgz#773893ce8491bc5ac2c99406181e9e2ad588a1c1" - integrity sha512-K42NXaCqTlU4048POEQAoTr086pdQnCE3b7/STZeeKZb4GiW01R5kGl2zPblqcC8Qoariwh4CWDoOMFHkOWcmA== +"@chakra-ui/breadcrumb@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/breadcrumb/-/breadcrumb-1.2.4.tgz#401e3abfb8c28917311e3e0ef6d2c94a04b33fc2" + integrity sha512-ZQwNjUAnSVpySfZN7KTP9CUUd/+ttuMCbwYHWx+tbirFVmQeyA7/YuIbh0KNlvB0/pVMSH43DRHyImj3dICEAw== dependencies: - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/button@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-1.2.1.tgz#cbfa597e98635f76451f62b0590323e73a511fbc" - integrity sha512-p63593BCuoSEGHO7CBvEKusu2SE6bSgnuXjqA63tl8uYcpS58rIsu53fPyo20oYyc/Ns8iCT33My6W28fHE7cw== +"@chakra-ui/button@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/button/-/button-1.3.1.tgz#23c248e7d0700bb3cc36eb658435ab845b8bb9ab" + integrity sha512-TqoMjKxvrbPaVYK+rRYPZw1YavbvAIdRiyuYFUvmQHNZTHeHLKlQbgJI2K6uYI+MduhU618CDAloXnKxn7mmOA== dependencies: - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/spinner" "1.1.5" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/spinner" "1.1.8" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/checkbox@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-1.4.1.tgz#22b2b6100ff2ee0d5fee2984def4180625ce5aa3" - integrity sha512-09Ef1fvFF3cPHFMGO131AbPT8ufzr8gR7UiqY0a8Xu3O7pMO7ECk5ucjjIDipvrPMGmiemzeqXB5fu4gJ3s9Bg== +"@chakra-ui/checkbox@1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/checkbox/-/checkbox-1.5.1.tgz#a84e0d18214d6dc71f33d30ae9b501b98849d8b8" + integrity sha512-j+OX3rrqj98K4hMu7irxc4FWd639yFdUgUVor7ze9iSSBFzt5lfLXBBjzfy1lFB3GmbMNZCobhO7eD1bNug8sA== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" - "@chakra-ui/visually-hidden" "1.0.8" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" + "@chakra-ui/visually-hidden" "1.0.11" -"@chakra-ui/clickable@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-1.1.1.tgz#b21a56fd3795521470dab18b26d89ff039556a29" - integrity sha512-B0okFSJ27WV5hakz3yIVQAFPfjX+Oa31QtwDKfA9ZA+A17iN8+uLLrK6c+YmnUzrv7T3W1/WYbSK1X1d57d19g== - dependencies: - "@chakra-ui/utils" "1.5.1" - -"@chakra-ui/close-button@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-1.1.5.tgz#810030345bd52d5adc0eb1443585dd4e031380cd" - integrity sha512-Yo/MKv3S0Gg5rzvl3FvRrdvex4WbrdWHH3phEyTymNGCI+JVs50e1c+h2tvYYIUiSiLWlhARPJDsHqOYbot9bg== - dependencies: - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/utils" "1.5.1" - -"@chakra-ui/color-mode@1.1.4": +"@chakra-ui/clickable@1.1.4": version "1.1.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-1.1.4.tgz#622ccd626a29ed0b9d0cc42874e210659c956f4b" - integrity sha512-EpLKTGYgERU4dWALE4p/7XLeKYnuuGs4ZR+9omnCJzF1YU4ya8UK+poQHYqlG5RzlHBWivVrbT0UdQzuanw+jw== + resolved "https://registry.yarnpkg.com/@chakra-ui/clickable/-/clickable-1.1.4.tgz#ff813fdfc5a31a2eb2dc27f39221a9922b71a04a" + integrity sha512-ETpjwr50u7baOujex4Og1om2P/nfGss8f6YYvsewGqI81OUUmOpz2sr87I+gvoZwqwMHQkOksOY1L2BK1MrO9A== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/control-box@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-1.0.8.tgz#9cfda7ff5eb990d2e61c7d3dd5ab8f6be97c236a" - integrity sha512-DumHauP2OMRyiKhkvKV00nJWXZ4HTBQ3k6dLKhQTdZdtQlHciFkQRu3gvHHkk9R2b+ke0vbxyWT7wNsfyR7GMQ== +"@chakra-ui/close-button@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-1.1.8.tgz#02a208c13202a53dc7777f75d7f7fcc2011ab5dc" + integrity sha512-TsDeY2QCyrdDSkB6B0LSh2IZleJ4gkkr+KZaL46WxHRim3CoqrbicQP9n9QZxXrTGa+lsb5+jvB2YrO6I8qquQ== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/counter@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-1.1.1.tgz#55591cefc882828402987cc787b657ca49876834" - integrity sha512-MOK84KrfmDMBwsfDeo26NEOlBZjcTbn6ZIdaYCF/5JmuOwRDBbbQDwJ8CSF87hocJD6tgwkS+WwSmRLZs+eOjg== +"@chakra-ui/color-mode@1.1.7": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/color-mode/-/color-mode-1.1.7.tgz#ad5fc6c631884906ed60ab35849dd4270d27a075" + integrity sha512-av2lH0iFinL4rN1BlSxu8eoted4p+qzOIiLhXcGFNodp73r9I3A2vspaZYke/xMrAwFaZq6wCIl+BwXNHAGRDA== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/utils" "1.7.0" + +"@chakra-ui/control-box@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/control-box/-/control-box-1.0.11.tgz#616afe751cd1b740488afd0ed77b666557307e9e" + integrity sha512-NQCa/HKMG8gW0vOLc+iCuiLRxv3w7K/Hc63ThneW3uR2awAH5hjmO+Xh+0HLYvePocJulqVUbjuJxoQGLMcFPA== + dependencies: + "@chakra-ui/utils" "1.7.0" + +"@chakra-ui/counter@1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/counter/-/counter-1.1.4.tgz#a2c63d96e9cdb7b94aaeb041ea4757f0c4eb3163" + integrity sha512-fmhAbpOdw1PyZs7CiW5jltaBacHIyN+9HyMj6igqJnLaxYvvphUdv94+2pv1nAPgWSLRah3EzNSnjVjXy+5OGA== + dependencies: + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/utils" "1.7.0" "@chakra-ui/css-reset@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@chakra-ui/css-reset/-/css-reset-1.0.0.tgz#8395921b35ef27bee0579a4d730c5ab7f7b39734" integrity sha512-UaPsImGHvCgFO3ayp6Ugafu2/3/EG8wlW/8Y9Ihfk1UFv8cpV+3BfWKmuZ7IcmxcBL9dkP6E8p3/M1T0FB92hg== -"@chakra-ui/descendant@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-1.1.1.tgz#963b21ac2b94a0f31cf3301816822a0f098b14e6" - integrity sha512-PlhxAIQr+1UGymBWbe0gGzTcRk7n1fZSJiFVFxA+VNXXdXbJhffZtZOBLZqer/drU9SdnPnpOwchw7BehNUGxA== +"@chakra-ui/descendant@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/descendant/-/descendant-2.0.0.tgz#719a2f585a73e60db01233a9193dbf22823355a5" + integrity sha512-kdesvjzeTxoLStpgbtMN5JMO3qhhRmZVVH8u2juTB9QIPGs1052Brb3Hcv96kQj7RyigCvarFF9KmvX4BUSdUA== dependencies: - "@chakra-ui/hooks" "1.3.1" + "@chakra-ui/react-utils" "^1.1.2" -"@chakra-ui/editable@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-1.2.1.tgz#b7184cc5fc994c05b478972f66a86263bcc2664a" - integrity sha512-50pfRS8aRZ+cqrlvkjAuJt4LkaszaTbvnY/3QN61SFphw3rkC54vxDmQwE7/+OguBAst/hmVzMa2QZCTe5hcQg== +"@chakra-ui/editable@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/editable/-/editable-1.2.4.tgz#a481d37ff65040dccd6e94320ffffb1f9f0afc7d" + integrity sha512-DftEZTz7S0KZX9No5dw3MNVOWXZnOSt2m15/SqxUcZnkJgTLRtK9yPaqVjZFBcjvgh4QNn2HEY15oy9VSWF0Nw== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/focus-lock@1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-1.1.4.tgz#5245aabb71093bfd38597f3d0245615c0c549be8" - integrity sha512-xH7g+us4lXmQVlZGjFj7AF6O83y1xNIJPip20bB0D7u/hhMWhGD1lmrk9DeUMtSKoeOxB0yvJ092uVTRBL0UBA== +"@chakra-ui/focus-lock@1.1.7": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@chakra-ui/focus-lock/-/focus-lock-1.1.7.tgz#b15d9786621ddff9b7eb07e81f70b6565a6693f1" + integrity sha512-Z3iscVlil0QTrTrv2MCPs4biMuMqXoNoSKDrz7lLoYHQWhiHIMMx9kivyvAXqxai7M1bPcGxvh8XwwoZfv2V3A== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" react-focus-lock "2.5.0" -"@chakra-ui/form-control@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-1.3.1.tgz#28db8a019c047e66d4a39498434ba3668e5ca8f4" - integrity sha512-UDw4MnabC/Hc2MS5LZaqB3BD3tyz8HO0ShqtasUlSm+TzV2yq2fnCFDEuDhwFflyHtnBAhFht73ZaaWWW7RXeQ== +"@chakra-ui/form-control@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-1.3.4.tgz#dd19693cbba5ca19ff4a70a680011509406d4b7a" + integrity sha512-BYJaZMhvAo8csqQ9mNp9i4gACLr/DraJstF1M9WRKjlpst7WK6+bRmG0Cn0ifx8EKfag3VaZMf/iOkoZjF0xuA== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/hooks@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-1.3.1.tgz#a37982855baf8c87d3f3586827003648b13f6276" - integrity sha512-aMx3I8pbHkFHzCdaD8TmZLLPc8i8Y0gLCsSzCooIM0TJq7Dcw072uUMyucQlg+w7zPtvK87GFFYLYZVax503ew== +"@chakra-ui/hooks@1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/hooks/-/hooks-1.5.1.tgz#cae769a35fda0bb07512b52bf4e13fba740a72c5" + integrity sha512-vKAXXsvOPu+juy07Acn8ozRCeCc/hteJaAMLE2QR/nHcjU/45+ClkCO23Q0upI1hBlV5t/NwUzkUQ+U1rTxAyw== dependencies: - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" compute-scroll-into-view "1.0.14" copy-to-clipboard "3.3.1" -"@chakra-ui/icon@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-1.1.5.tgz#f37abe47fd176a4c291d2037df2d6ed480622c09" - integrity sha512-VCzR1L3CJlAxp0IilqCdsF9O/Nncp9Sb2ndQvnQcfbo0GEgQmsH2CBQnmlwnClBQGYhwi6srP9GErYg8ah9LQw== +"@chakra-ui/icon@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-1.1.8.tgz#fbee1c8e0ae848daeb05275049f0764d854dca59" + integrity sha512-kbIPtRd9pD/iTXyzRn2s10w4uX54nNTnoNy/wP0k1145lOHPtlumRMJNSV6cxy+pnwS/YN6xNACfKy6yRQyIVA== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/image@1.0.11": +"@chakra-ui/image@1.0.14": + version "1.0.14" + resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-1.0.14.tgz#c907dfbfb30da9892b59a1e323d9d09aef50e4e6" + integrity sha512-OvtXgXEPSfB+XVhMDNLMBMC1zwVZ3avgh3yDztYkkAl6y7LH756NX8OkW9OEYMIMDQWjjIp63dQufgwik1jzug== + dependencies: + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/utils" "1.7.0" + +"@chakra-ui/input@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-1.2.4.tgz#34ee847c3f3751e01cd9c541b2a889a61abacd4e" + integrity sha512-TCSOQpraTqCetlJw8xYvuu6XhijwA0387s1N7+zM/sb1+HgWGG/qwaG6VEPqOrJ9r7nTgW7FkYA1Vc3ol8BOlw== + dependencies: + "@chakra-ui/form-control" "1.3.4" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" + +"@chakra-ui/layout@1.4.4": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-1.4.4.tgz#3db5b364b2b44e4c8c7ad6b773357aed41519090" + integrity sha512-CtcwgVivcBOM7bn+BHa/BbZ60moLvYWA9V2ukqhKJxLfSBoh/RTqH1q4Qmig+KbQ/xdbKcHTvanJjrMyn1jrpg== + dependencies: + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" + +"@chakra-ui/live-region@1.0.11": version "1.0.11" - resolved "https://registry.yarnpkg.com/@chakra-ui/image/-/image-1.0.11.tgz#de1ee15e81253ca0d71fc99a06a61d3bf749e8d5" - integrity sha512-ZaVw96aaR77oYowj7Hjyt3zVTD/w7FI7+g/TLWizhmiMHX614BZ37oPCa9h7nGojm+DwrvMNvyzWKMji4t+i/A== + resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-1.0.11.tgz#34092c8431b952f5b9739ce3eba7a9a13d351b90" + integrity sha512-/YsiA7cLuphlkvsfbEnlohSen8A+vPfi2XmzEcribO8P29qKd4yU5LjvGCGgQWNbiA6CcJmaKMJ1/yR3fRb8dQ== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/input@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-1.2.1.tgz#e4cef42616ab4bb76afede2597aece1651730c42" - integrity sha512-ynfBduWv0krGK3O3QOJmRXSyGaT+cHRrVB4Y1dINkcW/fhyec0UrUr1kFdBu8vApWpgptJ2o/7hdbIFo4OjQTw== +"@chakra-ui/media-query@1.0.12": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-1.0.12.tgz#84d71f3b2053c194587a596e43947b34da50d104" + integrity sha512-Q2MKzjVxWRo3bfj3GIhzLQqXRNAYZ0gIq/ga+ywSZ4Khfrpcpt/zUnP+mA6+wL7jFMwV4Tw+sC1j3/KxPOMX+Q== dependencies: - "@chakra-ui/form-control" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/layout@1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-1.4.1.tgz#0c369e074391bbdebc698d7c1c3f7ff231023eb4" - integrity sha512-pnbkYyvOzFosA5NgPFSqYJrrWeJU11KL/0sb1UP4uUb7NkO809Dsz6SVW96YCcQmSWv7n5qNENqSkFWDQKrjsA== +"@chakra-ui/menu@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-1.6.0.tgz#9998424655a3ddb984fd558b537e3daa1b7b3352" + integrity sha512-6fMTEcUYYuRi2vpfrgSErWE2KJ23jq280V4R0U8oIyuPdYpd8Te173VVTXLHnh9ArFOvq4SXdk8wZ05MZ05Xbg== dependencies: - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/clickable" "1.1.4" + "@chakra-ui/descendant" "2.0.0" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/popper" "2.1.2" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/transition" "1.2.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/live-region@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/live-region/-/live-region-1.0.8.tgz#0f9bd3fef53e1ce29bc9a90273ee4a29e2673b97" - integrity sha512-Wm1aRVNuODOxuxosdoDQ2248uDOOQZsqYM9mmBHa0z6DMhV7qrt8M9WRnbtVogjlotxwINqaMou+qkoGQEunmg== +"@chakra-ui/modal@1.8.4": + version "1.8.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-1.8.4.tgz#50821e09581342b4db9c39439b923625003811a1" + integrity sha512-u1v2W4Zulz6eQzqVDDyyX/NlRIkOLDTvejUOSW9H1jlRYxFD349yulAPq2c9JxRCoT07/Qu0Pz4k9tITC5IvGQ== dependencies: - "@chakra-ui/utils" "1.5.1" - -"@chakra-ui/media-query@1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-1.0.9.tgz#7d05197576502ca8e92400003b87f82787308f00" - integrity sha512-2GSGZJtl8iVximQqaxlXOk6JH61K4k3z7I6XGCyWC5k8NPRLnHmtue5vp2CmrzXE6u91HX+snFnSHJoVXepIow== - dependencies: - "@chakra-ui/utils" "1.5.1" - -"@chakra-ui/menu@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-1.3.1.tgz#78ac11a96506d52c7871814c32218403904d9e9e" - integrity sha512-zQQBPP0L1PY12dKsBakL3TIaoHgjIkcSBAGA706jJP47BvKIYGD4IEt1kMt/sHkKXrAbZevOsT5H/ayGkzKEhw== - dependencies: - "@chakra-ui/clickable" "1.1.1" - "@chakra-ui/descendant" "1.1.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/popper" "2.1.0" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/transition" "1.1.2" - "@chakra-ui/utils" "1.5.1" - -"@chakra-ui/modal@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-1.8.1.tgz#1e5cd22a990a82271b9eaf6d83710bbaf1b552f1" - integrity sha512-2hvL4PGEdYRHvpmNUglrGVPMe51cTojTZlQyVuGvVJNE1EG2jro/Xxgrahcia3ljMtJNgUe2Lj+QVl2MG3BbUQ== - dependencies: - "@chakra-ui/close-button" "1.1.5" - "@chakra-ui/focus-lock" "1.1.4" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/portal" "1.2.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/transition" "1.1.2" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/close-button" "1.1.8" + "@chakra-ui/focus-lock" "1.1.7" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/portal" "1.2.4" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/transition" "1.2.2" + "@chakra-ui/utils" "1.7.0" aria-hidden "^1.1.1" react-remove-scroll "2.4.1" -"@chakra-ui/number-input@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-1.2.1.tgz#1ee061da061452e24935829df0f3e44e244708b7" - integrity sha512-QXlzmm/ZJlJuNcaEgr5FgEjuxCWw7X5hoPYfxlcZdirtaMHY5xw6oHDtwTgtwqlCvDq7z7FQvJx623Zg1w4I1A== +"@chakra-ui/number-input@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-1.2.4.tgz#0ca307805a08c8771467136355babbc6e4ac24c9" + integrity sha512-2szmts7ex7EEbZZ2hqxk4lV0IFqDB1+/Ga2MoR9QkW8v+Vv9rPSzVrGwaltDlK0Rr9UXYvgBlnNpqhqbvQg4AA== dependencies: - "@chakra-ui/counter" "1.1.1" - "@chakra-ui/form-control" "1.3.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/counter" "1.1.4" + "@chakra-ui/form-control" "1.3.4" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/pin-input@1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-1.5.1.tgz#a5e415734447f0d8ad6e09d423f060ffdd1bed14" - integrity sha512-N4edUiY+SUwHl9NBmPPvqJE+o03xvl4k2qieT0A3gaO4y17A2eIynggzv4FpWbedjds5Kg4Sjn0RJaMFTwL5Bg== +"@chakra-ui/pin-input@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/pin-input/-/pin-input-1.6.0.tgz#e15339f6a760a5eb7a5151d3c4b5998fa2860d6f" + integrity sha512-Pri6lD+APiIkDkWvpgdFFXy4PzFj1XgxbvlmPUlafo97EwCtPSg3QWtOCdPWKtSpWMj1W4X/ZIsmelm/K9MKkw== dependencies: - "@chakra-ui/descendant" "1.1.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/descendant" "2.0.0" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/popover@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-1.5.0.tgz#43f0546e5cd02f9024ebe5a4bf072d2dc924dfe1" - integrity sha512-G/k7B6wG0TjFfCXo/y+YMHfM7WFy/7pIqgzEh958aG4pfvqKxRbGMrkcGXFx8d5ZW8dZi05Wq9KHohDWNzbt1A== +"@chakra-ui/popover@1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-1.6.1.tgz#cc7c81f4967a9038293bdb648116331c59983b28" + integrity sha512-w3xZK9t65AsiGuU6YXf1cpN/GBz4eJWZCDKVwJriHlKkq6L9umPtVjDGMgKegoTwnCokl8gFSxZp9yr2ACOQHQ== dependencies: - "@chakra-ui/close-button" "1.1.5" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/popper" "2.1.0" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/close-button" "1.1.8" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/popper" "2.1.2" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/popper@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-2.1.0.tgz#d213b63bca5937321b5acc005eaabfc72c04b4a4" - integrity sha512-1irixePeBJvc2GTciHx1+WpJaD9xQ/6ZZ/x4A38Ppz+rCS20QWIpBwLeehg18XAJbikcUK59lHmwzgw5RAOu3g== +"@chakra-ui/popper@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/popper/-/popper-2.1.2.tgz#a3948c338c0ff4948a659fad34dcbc3d2bf7ea31" + integrity sha512-X0GlUwOlX4coDO+JOYR52HZt8HsWGZmwL8GWr+DmRZvjBfRl7zKv8cAd4urYz5zwAo9TQfMb5bitjM/HPl3MvA== dependencies: - "@chakra-ui/react-utils" "1.1.1" + "@chakra-ui/react-utils" "1.1.2" "@popperjs/core" "2.4.4" -"@chakra-ui/portal@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-1.2.1.tgz#4b08a0011cbd49b925ef1a3d04aded3c31073439" - integrity sha512-dhgS7hO26cD7yjh/i7a0EzpnW5ZcT2sl1jNz9rxLmcCtipAeaM/IvC6l/u1AisGZ/L8Wp2lOuEbtuZSpuNaqNw== +"@chakra-ui/portal@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/portal/-/portal-1.2.4.tgz#a9038e9ed1ebd73834588fbe2c97230b1c92be79" + integrity sha512-clxYTpXQVSGcL6/+xrhYwKO9syOiPKrQLoe1fUJRp5QtppQ+JHJLKjbRkPujImHczMm2NZPfEqvuKYyHaZjDjw== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/progress@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-1.1.5.tgz#097b4e6376c9e56e2c66d7067382d76bd8789eb4" - integrity sha512-iJFMgVTx0g/Y1pYNHHDTS/tJTS3zHKbkd1UgedzXvOw3G/BmkZ1irJaOwYZvkns3nfe0dYw2bQ4ZkAVBdHJpRQ== +"@chakra-ui/progress@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/progress/-/progress-1.1.8.tgz#a9ce66b72643ad496dc4b329a68262b8aa5abab3" + integrity sha512-3plfN2XxbjsfyPQc2JIcIgYS9Ofz16Sz0AQM8BZ3eziB17DaeFQua0nep76wFwjgKBuZUPO+lK7QYHMx0eLDdQ== dependencies: - "@chakra-ui/theme-tools" "1.1.3" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/theme-tools" "1.1.6" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/radio@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-1.3.1.tgz#39985ae1919bc54ecf2ed9bf91d36b56b34d3975" - integrity sha512-BtbJW8Y1+QKtAcNvM1DAohjlVEnJgWhc5BELOI/RqZuTAVtFRqHtdRphJPiCO8eZ/PnCRhCd0gjgr5Oo2MV5Lw== +"@chakra-ui/radio@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-1.3.4.tgz#cb11bd6ad6a1a6bb694d839ca4f7f9c3f92039bd" + integrity sha512-OuYLs/IJIBPMGsB6Zwf5ohoWYGmZq134sBa4iI3aKjlVfBpqLUHX3dtln1dj6alRlThW8npeJC5j3nmjrZ6pfA== dependencies: - "@chakra-ui/form-control" "1.3.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" - "@chakra-ui/visually-hidden" "1.0.8" + "@chakra-ui/form-control" "1.3.4" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" + "@chakra-ui/visually-hidden" "1.0.11" -"@chakra-ui/react-utils@1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-1.1.1.tgz#13467fbbfe140144a1956b41e831ea4f2d7486e7" - integrity sha512-L5G3e9kTVD5k6T/Aywtq+GegNq/4b+xWkQ4e5DJ5/pS5efsOoaSZcwC61tzGSGLZe+8LBRgaAcIf/aNN3GPjEw== +"@chakra-ui/react-env@1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-env/-/react-env-1.0.3.tgz#ea97d7d1aeebdfac6c7510b4b71a0c46b26174e6" + integrity sha512-9oYWKCIMxRboSgMI1ur4fQqwQm6zZGp0ilm/9BcpCTHa1FXLlOh19GE2L6PkcOahM8icbw6bXX35VdpgIIoOZg== dependencies: - "@chakra-ui/utils" "^1.5.1" + "@chakra-ui/utils" "1.7.0" + +"@chakra-ui/react-utils@1.1.2", "@chakra-ui/react-utils@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/react-utils/-/react-utils-1.1.2.tgz#7ea80b6ae25bd7b182095cc9ffaad23c464408b5" + integrity sha512-S8jPVKGZH2qF7ZGxl/0DF/dXXI2AxDNGf4Ahi2LGHqajMvqBB7vtYIRRmIA7+jAnErhzO8WUi3i4Z7oScp6xSA== + dependencies: + "@chakra-ui/utils" "^1.7.0" "@chakra-ui/react@^1.4.1": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-1.5.0.tgz#bf3326e2c1ff1da8a1e05a933d369af702cf4ad8" - integrity sha512-bk4ZmP+gpC78kD4YoAoFM7VFhyCS45vCQu2k8EsGySiFRGAVREo3y4Gw2FnZ/sL59UnwvJrKemIns71qdiKW9w== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-1.6.0.tgz#6eb5aa1563e0d36e008b03f94d112e0aaaaf0a6e" + integrity sha512-xz6buC2jb7VVspV8SadR9pkEYbBCHOQ+MwcJTm+cveZVWfeth1SwU0Jb7pT4UEDB/OVv2LlaqnYUzsnc585Tpw== dependencies: - "@chakra-ui/accordion" "1.2.1" - "@chakra-ui/alert" "1.2.1" - "@chakra-ui/avatar" "1.2.1" - "@chakra-ui/breadcrumb" "1.2.1" - "@chakra-ui/button" "1.2.1" - "@chakra-ui/checkbox" "1.4.1" - "@chakra-ui/close-button" "1.1.5" - "@chakra-ui/control-box" "1.0.8" - "@chakra-ui/counter" "1.1.1" + "@chakra-ui/accordion" "1.3.0" + "@chakra-ui/alert" "1.2.4" + "@chakra-ui/avatar" "1.2.4" + "@chakra-ui/breadcrumb" "1.2.4" + "@chakra-ui/button" "1.3.1" + "@chakra-ui/checkbox" "1.5.1" + "@chakra-ui/close-button" "1.1.8" + "@chakra-ui/control-box" "1.0.11" + "@chakra-ui/counter" "1.1.4" "@chakra-ui/css-reset" "1.0.0" - "@chakra-ui/editable" "1.2.1" - "@chakra-ui/form-control" "1.3.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/image" "1.0.11" - "@chakra-ui/input" "1.2.1" - "@chakra-ui/layout" "1.4.1" - "@chakra-ui/live-region" "1.0.8" - "@chakra-ui/media-query" "1.0.9" - "@chakra-ui/menu" "1.3.1" - "@chakra-ui/modal" "1.8.1" - "@chakra-ui/number-input" "1.2.1" - "@chakra-ui/pin-input" "1.5.1" - "@chakra-ui/popover" "1.5.0" - "@chakra-ui/popper" "2.1.0" - "@chakra-ui/portal" "1.2.1" - "@chakra-ui/progress" "1.1.5" - "@chakra-ui/radio" "1.3.1" - "@chakra-ui/select" "1.1.5" - "@chakra-ui/skeleton" "1.1.8" - "@chakra-ui/slider" "1.2.1" - "@chakra-ui/spinner" "1.1.5" - "@chakra-ui/stat" "1.1.5" - "@chakra-ui/switch" "1.2.1" - "@chakra-ui/system" "1.6.1" - "@chakra-ui/table" "1.2.0" - "@chakra-ui/tabs" "1.3.1" - "@chakra-ui/tag" "1.1.5" - "@chakra-ui/textarea" "1.1.5" - "@chakra-ui/theme" "1.8.1" - "@chakra-ui/toast" "1.2.2" - "@chakra-ui/tooltip" "1.3.1" - "@chakra-ui/transition" "1.1.2" - "@chakra-ui/utils" "1.5.1" - "@chakra-ui/visually-hidden" "1.0.8" + "@chakra-ui/editable" "1.2.4" + "@chakra-ui/form-control" "1.3.4" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/image" "1.0.14" + "@chakra-ui/input" "1.2.4" + "@chakra-ui/layout" "1.4.4" + "@chakra-ui/live-region" "1.0.11" + "@chakra-ui/media-query" "1.0.12" + "@chakra-ui/menu" "1.6.0" + "@chakra-ui/modal" "1.8.4" + "@chakra-ui/number-input" "1.2.4" + "@chakra-ui/pin-input" "1.6.0" + "@chakra-ui/popover" "1.6.1" + "@chakra-ui/popper" "2.1.2" + "@chakra-ui/portal" "1.2.4" + "@chakra-ui/progress" "1.1.8" + "@chakra-ui/radio" "1.3.4" + "@chakra-ui/react-env" "1.0.3" + "@chakra-ui/select" "1.1.8" + "@chakra-ui/skeleton" "1.1.11" + "@chakra-ui/slider" "1.2.4" + "@chakra-ui/spinner" "1.1.8" + "@chakra-ui/stat" "1.1.8" + "@chakra-ui/switch" "1.2.4" + "@chakra-ui/system" "1.6.4" + "@chakra-ui/table" "1.2.3" + "@chakra-ui/tabs" "1.5.0" + "@chakra-ui/tag" "1.1.8" + "@chakra-ui/textarea" "1.1.8" + "@chakra-ui/theme" "1.8.4" + "@chakra-ui/toast" "1.2.5" + "@chakra-ui/tooltip" "1.3.4" + "@chakra-ui/transition" "1.2.2" + "@chakra-ui/utils" "1.7.0" + "@chakra-ui/visually-hidden" "1.0.11" -"@chakra-ui/select@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-1.1.5.tgz#250f47383bab3655b4975e4bb5b5ef6038c3b24f" - integrity sha512-noftoX3isfJ08bzh2YR/Q1ITE6ldQcxD7XzTRBH3lTDwUK6oyMfKpsTYXLXFgigyp7aiJoM/Vw2DbDAkJf2xVA== - dependencies: - "@chakra-ui/form-control" "1.3.1" - "@chakra-ui/utils" "1.5.1" - -"@chakra-ui/skeleton@1.1.8": +"@chakra-ui/select@1.1.8": version "1.1.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-1.1.8.tgz#4ce58b312b75299027fcbe43701d7402b22fd46d" - integrity sha512-dzi9vq/KVNuW2dgP8jyQTxQPFJsoiVjkEnqOaEKHPS4O8IW1e0HTz3/uaHjUaJB9+7Fx/QEEy8iZ554sJ+wklw== + resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-1.1.8.tgz#273c66c302338b4bb525adcc7db31ab05ca45062" + integrity sha512-XdWaE6wTMZ5JebNFK2BqCW6UFg9OEJ/ThRtA4A8UCXriOv+hjWGjudHIiUsEl+6+j02iOfqw64IT1xJcGgH0bw== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/media-query" "1.0.9" - "@chakra-ui/system" "1.6.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/form-control" "1.3.4" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/slider@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-1.2.1.tgz#cc07f9ee3723006f4d7bf0582a1b11c67c309af0" - integrity sha512-1Ue1loDwB2R/BfvYwNRPBaRnkxm7VW2DkBNYSaA4vxriDc9coXAgo8ATP8iDj5ii8eUvd/JZqeSdYhhwtE2Tgg== +"@chakra-ui/skeleton@1.1.11": + version "1.1.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-1.1.11.tgz#eab4c7d190f6d8e7e6ca86cfb1618a0bcefc8c32" + integrity sha512-Xh0iD84m5+OJxCr69rgDy4ediFNTNourk1QlMVVf7w2BAFVeDMM29wKkkjze9jGjfRdwKu9BxPyFz7Q5U0YxhQ== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/media-query" "1.0.12" + "@chakra-ui/system" "1.6.4" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/spinner@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-1.1.5.tgz#44f8c1fb24bf6534171152011146ef495c380b51" - integrity sha512-QN611tTVKzv150R2WWCVN+QYC0kmOZl36JFUQCdOpS8JT9zPukBcn57kxt6gwodsUo1RddfN+h0Vei6D6XWwZw== +"@chakra-ui/slider@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/slider/-/slider-1.2.4.tgz#9ba481404260beddf069fad4823b31b93478ef97" + integrity sha512-tZD1cHdJ/1RbpPodDlOuhkPE9XoRq6v/GKXDNJZiLuAoWr8gNf7auG3G7iJx2KmO/Px1CrbHSeNL1ufDt5YKew== dependencies: - "@chakra-ui/utils" "1.5.1" - "@chakra-ui/visually-hidden" "1.0.8" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/stat@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-1.1.5.tgz#2a6f8af842cd26a2f1738f799663c797aea49b38" - integrity sha512-R9dynWIV6FnSop4p/w/QPAJ25jb0p0AjsGmPVJ7sjbob46+58iWvDB5N54Tcjw4XBnQ4E0+Ba/t0d7ecTBiF+w== +"@chakra-ui/spinner@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/spinner/-/spinner-1.1.8.tgz#766404a98924f693ce66c040baff3af4fe1dc81e" + integrity sha512-aE3X9Rq2MYjF7YjTDLyfJvj07y/Wp3reeRoXe6Yz8yDfLX14tOPK+k/iDSFnUHtwB4D7fxQX5kpQ65bqVbg3Qg== dependencies: - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/utils" "1.5.1" - "@chakra-ui/visually-hidden" "1.0.8" + "@chakra-ui/utils" "1.7.0" + "@chakra-ui/visually-hidden" "1.0.11" -"@chakra-ui/styled-system@1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-1.10.1.tgz#6f6774bec8c0fec768ae8ea57686563f888378b6" - integrity sha512-fmLNnYmk6WbTSrApubsIRr9LOc5lclLkCa8DOP9mRTaUPKboy61c1p6vSYgto5DZVvNxEUqfuneboCUWk5ew+g== +"@chakra-ui/stat@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-1.1.8.tgz#0a53e292b5a1ac2333bcd8eda877fedd30013a25" + integrity sha512-TeEnOLTjYztBsUoNV/1WfFpWWou7wUvm7SfaSsmvXf14drclyc5cXHdPvcFKLd1R+jMMlsMAEqZ9szU9UZCdxw== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/utils" "1.7.0" + "@chakra-ui/visually-hidden" "1.0.11" + +"@chakra-ui/styled-system@1.10.4": + version "1.10.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-1.10.4.tgz#70ea7dddec69dd9912ec1f65d502097f1f0b8cc6" + integrity sha512-NPfbdjMreEX5rTAXgiFCoh5OotMO+hVLO/ixnn84SpWCUFPRxN8v129DQ+J7VhaKNUqWPMidzx47FmY3RwEJTw== + dependencies: + "@chakra-ui/utils" "1.7.0" csstype "^3.0.6" -"@chakra-ui/switch@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-1.2.1.tgz#ec2a4c8886dc6b902fddb67f6a1e4d824df28105" - integrity sha512-j4cRz9OHJNlH6YdDBoWT0vP+wZ9cHSPruWSS4q+tMF6Qcba8bsN7RWivy2MC6uKns2uLOLSCNgfM10VsR3z3gg== +"@chakra-ui/switch@1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/switch/-/switch-1.2.4.tgz#63c705fb3e108bf3b17a1cf045cd5545d82ad64e" + integrity sha512-pXEXQl4OjUUWqXx3vvXYIrnBHkn2P6H3sARcKs5g7ZwYDQsGgzrEu09HEO9CH/vEQr6XforT5LEQl6LFyApAwg== dependencies: - "@chakra-ui/checkbox" "1.4.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/checkbox" "1.5.1" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/system@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-1.6.1.tgz#20ca13148a78aa3a1662df8be021449af8b712dc" - integrity sha512-zwH9jiGcYd5IZ5454EMfslEcbpigl6Kz/jBE1gsAA97SZFPxUhVamYKn0l2bhaYoRS9ZnDpKx93pFskLCMhBHQ== +"@chakra-ui/system@1.6.4": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-1.6.4.tgz#827867b9bea2c9ce72fdc31001f2cb1b07df6ed2" + integrity sha512-sj93AHFIC8XaQnv3CgQt3Zyr7P3fYUbGMxHKxGDMcSplg+lwOoWVX3UhY3HKCezblsib1+HFhB37oFp7jHlJ4A== dependencies: - "@chakra-ui/color-mode" "1.1.4" - "@chakra-ui/styled-system" "1.10.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/color-mode" "1.1.7" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/styled-system" "1.10.4" + "@chakra-ui/utils" "1.7.0" react-fast-compare "3.2.0" -"@chakra-ui/table@1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-1.2.0.tgz#022495814001b609b3a76e1a2de18424346e007f" - integrity sha512-c9EwHoLASHm723rmyBe/6cwyYecv6YNxj1DxhsirdrtpAVwqDXmX+WJlpxzbo9SMV45LATHSgZH6oZ7MlDg8zg== +"@chakra-ui/table@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@chakra-ui/table/-/table-1.2.3.tgz#6a6754f1d3c55c7ad6a3084c680e01c08ad5d82a" + integrity sha512-nWpZpuS4SnzqDiXb+U03bcOYcmgJNBfd/2O2i2n3EYGwwg+6iso4QPWM+PP4xu+PxeBtQtQ+CPKkERLNka0NiQ== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/tabs@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-1.3.1.tgz#a8fcbeb28db07a4a89bc1a806a4d1d918f076e91" - integrity sha512-/Fy+rGSNX6NWYDa9rrsx8J/HJ4tEt3v3jVDBScU5RYjhO3M6nOSZtsdlHn6H5FiGqj2sw5MEZoySeV/neFuOkw== +"@chakra-ui/tabs@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/tabs/-/tabs-1.5.0.tgz#8f31f6b076ed6d56c931ff3142696cfc2992dab6" + integrity sha512-J3VIRdQeh8u8lsOhuGvrJVHWS7Bz2V9RAKqgSsTcKPVd8EKo50Yv61LgMR0+C1ba1thlbzoY2+Yoz8HFCQzIKg== dependencies: - "@chakra-ui/clickable" "1.1.1" - "@chakra-ui/descendant" "1.1.1" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/react-utils" "1.1.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/clickable" "1.1.4" + "@chakra-ui/descendant" "2.0.0" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/tag@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-1.1.5.tgz#36b2443a87cf75ab6c843af840d33f7cbb8b9ba2" - integrity sha512-fNL86m2C3M8tBLYOVgvJKaVRZii/tPcUX7bFASwAKFwaLmQ5ZuM6r14OkQcZXuM96gznzMQXDle1F2r8HiCFeA== +"@chakra-ui/tag@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-1.1.8.tgz#bccdb4eb624d068358ef59c5449f2b2766a0ac6d" + integrity sha512-ebbFX5XUQlVNIynTxoFOeAJdGubGWtsbuwkPY/2c96hhrrWzb6IdK1CvKy5trhGWpKGtNJ7w+kcaDHQRX7oDvg== dependencies: - "@chakra-ui/icon" "1.1.5" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/icon" "1.1.8" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/textarea@1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-1.1.5.tgz#0456fa05f978e0736e6e452ef917fff7a14fefbb" - integrity sha512-e3yCv0n1ij2gUqEBv0xyasbiIdV0UNSi8Bof0cbCIVXf02yb52w4s93EGEHaI10+z8zCniJPflIUghjVl3zMkg== +"@chakra-ui/textarea@1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-1.1.8.tgz#695be8f52b4ee93557ffdc460a3cbdd2f896fe3d" + integrity sha512-L4xhCB6HSvR7A4XbrGu0xjnfBFqGtZfYZolz5VTfGbw0Zbc3B7wW59zL6XR2+wfkJhXzygy8tVQEn1n6u59EnQ== dependencies: - "@chakra-ui/form-control" "1.3.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/form-control" "1.3.4" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/theme-tools@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-1.1.3.tgz#16b1404d530eca7c51f2ccb57d0bb33c81d0501d" - integrity sha512-Vw8YZwRtbzoDMOY+RxWwSpAXSwfg1S+CSJCry7gpehvumgApoBZFkbfrnXmiuOm4YsJcKgdMNdIhtFRNhtwD1w== +"@chakra-ui/theme-tools@1.1.6": + version "1.1.6" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme-tools/-/theme-tools-1.1.6.tgz#b97a37135f17454ff4b326b9790e57d409fddd81" + integrity sha512-VnAO9AAJGr967mHtAnJCq9mKzfka8I9Ya/6hYU/t1EaaMLy1IseIGkRX3hGYwpl3RZBXGamMxc4C5fJ0TKI4Lg== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" "@types/tinycolor2" "1.4.2" tinycolor2 "1.4.2" -"@chakra-ui/theme@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-1.8.1.tgz#584b1a0c05c250e60aa78d2776c615a1b248ec17" - integrity sha512-EPjXK9eAL3wOe86M0HrsfkVoRBn5VXzeSAeKvxkRXELxaPwnz5X/HOpGvA2J0zlwYqv1K11jxavVNZ8F1rQT7A== +"@chakra-ui/theme@1.8.4": + version "1.8.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-1.8.4.tgz#acf467c818f11aa5bcf1acd2e025063afb51aaad" + integrity sha512-fmzl4gHpETwv7QvvWs1cLouXOTjkzsVWURZNzkDFWm/wOV8IQ2GsDFjP+dA5J2pvHIB6KovyXoN3BdTz9qdPqw== dependencies: - "@chakra-ui/theme-tools" "1.1.3" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/theme-tools" "1.1.6" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/toast@1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-1.2.2.tgz#6b5e5dc401d5fa00de6f8d250ede2c7014fccb5a" - integrity sha512-6jsBoHc55P2fPH75uS6wOC2e+lgC5OS1x0FtJo2d+NN/U0l1f8Kxxp2v8OIA6U96Pl0HRXR03M0THOwFQTgEaQ== +"@chakra-ui/toast@1.2.5": + version "1.2.5" + resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-1.2.5.tgz#65393572b1ed6aca199e421f65cf62606639583e" + integrity sha512-+Yw4Y68LdMUVsBMAjSQXFs5S+eIEzk5rFcxGYNNvCBWj/2jCuHv/pb0gI9Qk6o/z4zuY4vnGXGYBGYCdo8zOzg== dependencies: - "@chakra-ui/alert" "1.2.1" - "@chakra-ui/close-button" "1.1.5" - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/theme" "1.8.1" - "@chakra-ui/transition" "1.1.2" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/alert" "1.2.4" + "@chakra-ui/close-button" "1.1.8" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/theme" "1.8.4" + "@chakra-ui/transition" "1.2.2" + "@chakra-ui/utils" "1.7.0" "@reach/alert" "0.13.2" -"@chakra-ui/tooltip@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-1.3.1.tgz#3737688e105852b31c44da8c7ff00bca5d86835c" - integrity sha512-6S58jDa0ZnzgCNrEmaAi8bEjgCj9Dn77LE4ywAkrbh9hHzFuDLl1l2waLBUHBgVrJQ7aY3wgTWE3pMOPuHAWWw== +"@chakra-ui/tooltip@1.3.4": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-1.3.4.tgz#fcca05091cf0086014c209919505e35601a505d6" + integrity sha512-EnaYXZ4VbMlN12vpobKe5XXBAUxzaBQmxLTzEKlCEYBnhOu9qDR6fRUgF7nwcR8urgNBMfO1t3uED971upOMjQ== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/popper" "2.1.0" - "@chakra-ui/portal" "1.2.1" - "@chakra-ui/utils" "1.5.1" - "@chakra-ui/visually-hidden" "1.0.8" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/popper" "2.1.2" + "@chakra-ui/portal" "1.2.4" + "@chakra-ui/react-utils" "1.1.2" + "@chakra-ui/utils" "1.7.0" + "@chakra-ui/visually-hidden" "1.0.11" -"@chakra-ui/transition@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-1.1.2.tgz#40f492bcaa9c73175c20ccaff7f07d7cfa21c6bc" - integrity sha512-8mT/zd4I8lfwBCQxlmL5jGvjYpJdXm4hLird9taec1VKNF74pRoOvzicdJaEZItR7YnHubH7+kRHDGhYcXSh0Q== +"@chakra-ui/transition@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-1.2.2.tgz#eeeea236b287aa8818b87676e96cceaf83f3a803" + integrity sha512-NzNE0LyD4QzvkmgpfnjshA5sxzC14bMpgLBIXklrOyUEjV7b04erYOXd3iS26JWyu4nPTyMYXH5ipxKcI1SjSA== dependencies: - "@chakra-ui/hooks" "1.3.1" - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/hooks" "1.5.1" + "@chakra-ui/utils" "1.7.0" -"@chakra-ui/utils@1.5.1", "@chakra-ui/utils@^1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-1.5.1.tgz#a01fd14f6d948a13c2644cfa844f410299135ffc" - integrity sha512-J8P9wA96Kaxu4oHh+8s1rEL2VABWK/io8sBck19eOXKfVXJ55KyVwGZTrsVID0No43b7WzJx6n/xsMKkn39Peg== +"@chakra-ui/utils@1.7.0", "@chakra-ui/utils@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@chakra-ui/utils/-/utils-1.7.0.tgz#21c4807f56487284b93773da22665b63730a784c" + integrity sha512-fMZOnWBh/TzAYufkpeVw3yMNxKmYHEkB93luDpIJgxGt4mrbl+A66pd5GvJSGK1N34WYbjWRiJrrSvRI548eZA== dependencies: "@types/lodash.mergewith" "4.6.6" css-box-model "1.2.1" + framesync "5.3.0" lodash.mergewith "4.6.2" -"@chakra-ui/visually-hidden@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-1.0.8.tgz#aa4ec1cdec99437f11527af24b3f44b7b0fe7b8f" - integrity sha512-WTbXK9aonPYcttgqb6v+cKAwKYJ4C0iPtr90cEQTosSk08YlC1yz1G1vfU269u5grY8y7QAUgmM/alCm0HdRoA== +"@chakra-ui/visually-hidden@1.0.11": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@chakra-ui/visually-hidden/-/visually-hidden-1.0.11.tgz#011dfe91817bc5b40548c0504dac57552f63d70c" + integrity sha512-gk2GVdEesFLN6Xrx2/kHfyzmT9nu0iVpvkY2tWnIVvSgpWh5zwGFO/DNpnxOkx9k9Pd/ffhCgki9OkpPL1NO9A== dependencies: - "@chakra-ui/utils" "1.5.1" + "@chakra-ui/utils" "1.7.0" "@cnakazawa/watch@^1.0.3": version "1.0.4" @@ -4622,11 +4641,16 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -csstype@^3.0.2, csstype@^3.0.6: +csstype@^3.0.2: version "3.0.7" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.7.tgz#2a5fb75e1015e84dd15692f71e89a1450290950b" integrity sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g== +csstype@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" + integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== + cyclist@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" @@ -11739,11 +11763,16 @@ tslib@^1.0.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0: +tslib@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +tslib@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tsutils@^3.17.1: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" diff --git a/server/app.js b/server/app.js index 0ba100a00..11eddd13d 100644 --- a/server/app.js +++ b/server/app.js @@ -23,7 +23,9 @@ const cors = require('cors'); // Import Routes const eventsRouter = require('./routes/eventsRouter.js'); -const settingsRouter = require('./routes/settingsRouter.js'); +const eventRouter = require('./routes/eventRouter.js'); +// No settings yet +// const settingsRouter = require('./routes/settingsRouter.js'); // Setup default port const port = process.env.PORT || config.server.port; @@ -46,7 +48,7 @@ app.use(express.json()); // Implement route endpoints app.use('/events', eventsRouter); -app.use('/settings', settingsRouter); +app.use('/event', eventRouter); // implement general router app.get('/', function (req, res) { diff --git a/server/controllers/settingsController.js b/server/controllers/eventController.js similarity index 80% rename from server/controllers/settingsController.js rename to server/controllers/eventController.js index 066e3557d..707210a1f 100644 --- a/server/controllers/settingsController.js +++ b/server/controllers/eventController.js @@ -1,12 +1,12 @@ // get database const db = require('../app.js').db; -const table = 'settings'; +const table = 'event'; function getSettings() { return db.get(table).value(); } -// Create controller for GET request to 'settings' +// Create controller for GET request to 'event' // Returns ACK message exports.getAll = async (req, res) => { const settings = getSettings(); @@ -14,7 +14,7 @@ exports.getAll = async (req, res) => { else res.sendStatus(400); }; -// Create controller for POST request to 'settings' +// Create controller for POST request to 'event' // Returns ACK message exports.post = async (req, res) => { if (!req.body) { @@ -32,7 +32,7 @@ exports.post = async (req, res) => { } }; -// Create controller for GET request to 'settings/title' +// Create controller for GET request to 'event/title' // Returns ACK message exports.titleGet = async (req, res) => { const settings = getSettings(); @@ -41,7 +41,7 @@ exports.titleGet = async (req, res) => { else res.sendStatus(400); }; -// Create controller for POST request to 'settings/title' +// Create controller for POST request to 'event/title' // Returns ACK message exports.titlePost = async (req, res) => { if (!req.body) { @@ -58,7 +58,7 @@ exports.titlePost = async (req, res) => { } }; -// Create controller for GET request to '/settings/url' +// Create controller for GET request to '/event/url' // Returns ACK message exports.urlGet = async (req, res) => { let event = getEventOptions(); @@ -67,7 +67,7 @@ exports.urlGet = async (req, res) => { else res.sendStatus(400); }; -// Create controller for POST request to '/settings/url' +// Create controller for POST request to '/event/url' // Returns ACK message exports.urlPost = async (req, res) => { if (!req.body) { @@ -84,7 +84,7 @@ exports.urlPost = async (req, res) => { } }; -// Create controller for GET request to 'settings/publicInfo' +// Create controller for GET request to 'event/publicInfo' // Returns ACK message exports.publicInfoGet = async (req, res) => { const settings = getSettings(); @@ -93,7 +93,7 @@ exports.publicInfoGet = async (req, res) => { else res.sendStatus(400); }; -// Create controller for POST request to '/settings/publicInfo' +// Create controller for POST request to '/event/publicInfo' // Returns ACK message exports.publicInfoPost = async (req, res) => { if (!req.body) { @@ -110,7 +110,7 @@ exports.publicInfoPost = async (req, res) => { } }; -// Create controller for GET request to 'settings/backstageInfo' +// Create controller for GET request to 'event/backstageInfo' // Returns ACK message exports.backstageInfoGet = async (req, res) => { const settings = getSettings(); @@ -119,7 +119,7 @@ exports.backstageInfoGet = async (req, res) => { else res.sendStatus(400); }; -// Create controller for POST request to '/settings/info' +// Create controller for POST request to '/event/info' // Returns ACK message exports.backstageInfoPost = async (req, res) => { if (!req.body) { @@ -136,7 +136,7 @@ exports.backstageInfoPost = async (req, res) => { } }; -// Create controller for GET request to 'settings/osc' +// Create controller for GET request to 'event/osc' // Returns ACK message exports.osc = async (req, res) => { res.send('Not yet implemented').status(500); diff --git a/server/routes/settingsRouter.js b/server/routes/eventRouter.js similarity index 54% rename from server/routes/settingsRouter.js rename to server/routes/eventRouter.js index 32d2566cd..327fe30b5 100644 --- a/server/routes/settingsRouter.js +++ b/server/routes/eventRouter.js @@ -2,36 +2,36 @@ const express = require('express'); const router = express.Router(); // import event controller -const settingsController = require('../controllers/settingsController'); +const eventController = require('../controllers/eventController'); // create route between controller and '/settings' endpoint -router.get('/', settingsController.getAll); +router.get('/', eventController.getAll); // create route between controller and '/settings' endpoint -router.post('/', settingsController.post); +router.post('/', eventController.post); // create route between controller and '/event/title' endpoint -router.get('/title', settingsController.titleGet); +router.get('/title', eventController.titleGet); // create route between controller and '/event/title' endpoint -router.post('/title', settingsController.titlePost); +router.post('/title', eventController.titlePost); // create route between controller and '/event/info' endpoint -router.get('/publicInfo', settingsController.publicInfoGet); +router.get('/publicInfo', eventController.publicInfoGet); // create route between controller and '/event/info' endpoint -router.post('/publicInfo', settingsController.publicInfoPost); +router.post('/publicInfo', eventController.publicInfoPost); // create route between controller and '/event/info' endpoint -router.get('/backstageInfo', settingsController.backstageInfoGet); +router.get('/backstageInfo', eventController.backstageInfoGet); // create route between controller and '/event/info' endpoint -router.post('/backstageInfo', settingsController.backstageInfoPost); +router.post('/backstageInfo', eventController.backstageInfoPost); // create route between controller and '/event/url' endpoint -router.get('/url', settingsController.urlGet); +router.get('/url', eventController.urlGet); // create route between controller and '/event/url' endpoint -router.post('/url', settingsController.urlPost); +router.post('/url', eventController.urlPost); module.exports = router;