diff options
-rw-r--r-- | package.json | 4 | ||||
-rw-r--r-- | pages/editor.tsx | 396 | ||||
-rw-r--r-- | styles/editor.css | 5 | ||||
-rw-r--r-- | yarn.lock | 430 |
4 files changed, 440 insertions, 395 deletions
diff --git a/package.json b/package.json index 0b8f060..9d763f9 100644 --- a/package.json +++ b/package.json @@ -18,13 +18,13 @@ "@types/uuid": "^8.3.0", "ajv": "^8.3.0", "mousetrap": "^1.6.5", - "next": "^10.2.0", + "next": "^11.0.1", "react": "^17.0.2", "react-dom": "^17.0.2", "react-spring": "^9.1.2", "react-use-gesture": "^9.1.3", "timecode-boss": "^4.2.3", - "ts-json-schema-generator": "^0.92.0", + "ts-json-schema-generator": "^0.93.0", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/pages/editor.tsx b/pages/editor.tsx index f00c504..8fcb905 100644 --- a/pages/editor.tsx +++ b/pages/editor.tsx @@ -1,6 +1,6 @@ import { createState, Downgraded, State, useHookstate } from '@hookstate/core'; import mousetrap from 'mousetrap'; -import { CSSProperties, ReactNode, useEffect, useRef, useState } from 'react'; +import { CSSProperties, ReactNode, Ref, useEffect, useRef, useState } from 'react'; import { animated, useSpring } from 'react-spring'; import { useDrag } from 'react-use-gesture'; @@ -114,7 +114,6 @@ function TimelineKeyframe(props: { slide: slide; }) { var workingTimeline = useHookstate(project).timeline.workingTimeline; - var updateTimeline = useHookstate(project).update.refreshLiveTimeline.value; function modifySlide(newProps: Partial<anySlide>) { var slide = workingTimeline.find(s => s.value.id == props.slide.id); @@ -239,166 +238,16 @@ function TimelineLabels() { return <div className='labels' children={labels.attach(Downgraded).get()} />; } -function TimelineEditor() { - var timelineZoom = useHookstate(project).timeline.zoom; +function TimelineSelection(props: { selectionAreaRef: Ref<ReactNode>; }) { var workingTimeline = useHookstate(project).timeline.workingTimeline; var tool = useHookstate(project).timeline.tool; - var mouseX = 0; - - var timelineRef = useRef(null); - useEffect(() => { - timelineRef.current.addEventListener('wheel', (e: WheelEvent) => { - if (!e.ctrlKey && !e.altKey) return; - e.preventDefault(); - - var newZoom = Math.min(1, Math.max(0, project.timeline.zoom.value + (-e.deltaY / 1000))); - zoomAroundPoint(newZoom, mouseX); - }); - }, []); - - useEffect(() => { - var canvas = document.querySelector('.timeline .timeScale'); - window.addEventListener('mousemove', e => { - var rect = canvas.getBoundingClientRect(); - mouseX = e.clientX - rect.x; - }); - }, []); - - useEffect(() => { - player.addEventListener('TimedVideoPlayerOnFrame', (event: CustomEvent) => { - project.timeline.frame.set(event.detail); - scrubberSpring.start({ frame: event.detail }); - }); - }, []); - - useEffect(() => { - player.addEventListener('TimedVideoPlayerSlide', (event: CustomEvent) => { - document.querySelectorAll('.keyframes .frame').forEach(el => { - el.classList.remove('current'); - if (event.detail && el.id == 'slide-' + (event.detail as slide).id) { - el.classList.add('current'); - } - }); - }); - }, []); - - // timeline canvas stuff - useEffect(() => { - var canvas = document.getElementById('timeScaleCanvas') as HTMLCanvasElement; - var ctx = canvas.getContext('2d'); - - var css = (varname: string) => getComputedStyle(document.body).getPropertyValue(varname).trim(); - var baseColor = css('--c100'); - var frameColor = css('--c250'); - var markerFrame = css('--c400'); - - function draw() { - ctx.clearRect(0, 0, canvas.width, canvas.height); - - var labels: Array<ReactNode> = []; - - var offset = document.querySelector('.timeline .timelineInner').scrollLeft; - - var frameWidth = zoomToPx(project.timeline.zoom.value); - - var d = true; - var a = 0; - var ns = [300, 150, 120, 90, 60, 30, 30, 30, 15, 15, 10, 10, 10]; - var everyN = ns[Math.floor(frameWidth)]; - for (var x = -offset; x < canvas.width + offset; x += frameWidth) { - ctx.fillStyle = baseColor; - - var rect = [Math.round(x + (frameWidth - 2) / 2), 28, 2, canvas.height]; - var drawFrame = false; - var marker = false; - if (frameWidth >= 6) { - ctx.fillStyle = d ? baseColor : frameColor; - rect = [x, 28, frameWidth, canvas.height]; - drawFrame = !d; - } - if (a % everyN == 0) { - ctx.fillStyle = markerFrame; - drawFrame = true; - marker = true; - } - - if (drawFrame) { - ctx.fillRect(Math.round(rect[0]), Math.round(rect[1]), Math.round(rect[2]), Math.round(rect[3])); - - if (marker) { - var frame = Math.round(x / frameWidth + offset / frameWidth + 1); - labels.push( - <span - className='label numbers posabs nosel' - style={{ - left: Math.round(rect[0] + frameWidth / 2), - top: rect[1], - }} - children={player.frameToTimestampString(frame - 1)} - />, - ); - } - } - - d = !d; - a++; - } - - project.timeline.labels.set(labels); - - requestAnimationFrame(draw); - } - draw(); - - function onresize() { - var size = document.querySelector('.timeline .timelineInner'); - canvas.width = size.clientWidth; - canvas.height = size.clientHeight; - } - onresize(); - window.addEventListener('resize', onresize); - }, []); - - // timeline scrubber - var scrubberDragRef = useRef(null); - var [scrubberPos, scrubberSpring] = useSpring( - () => ({ - frame: 0, - config: { mass: 0.5, tension: 500, friction: 20 }, - }), - ); - useDrag(({ xy: [x, _y] }) => { - var frame = Math.max(0, Math.round(getFrameAtOffset(x - 240, project.timeline.zoom.value)) - 1); - scrubberSpring.start({ frame }); - if (player.player) { - var time = player.frameToTimestamp(frame + 1); - if (isFinite(time)) player.player.currentTime = time; - } - project.timeline.frame.set(frame); - }, { domTarget: scrubberDragRef, eventOptions: { passive: false } }); - - // slide placement ghost - var [ghost, ghostApi] = useSpring(() => ({ - x: 0, - y: 0, - config: { mass: 0.5, tension: 500, friction: 20 }, - })); - useEffect(() => { - document.querySelector('.timeline').addEventListener('mousemove', (e: MouseEvent) => { - var rect = document.querySelector('.timeline').getBoundingClientRect(); - var x = e.clientX - rect.left; - var y = e.clientY - rect.top; - ghostApi.start({ x, y }); - }); - }, []); - - // selection var [selectionActive, setSelectionActive] = useState(false); var [selectionPlaced, setSelectionPlaced] = useState(false); var [selectionHidden, setSelectionHidden] = useState(true); var [selectionLeftType, setSelectionLeftType] = useState(null); var [selectionRightType, setSelectionRightType] = useState(null); + var [selectionPos, selectionPosAPI] = useSpring(() => ({ x1: 0, y1: 0, @@ -411,9 +260,10 @@ function TimelineEditor() { widthOffset: 0, config: { mass: 0.5, tension: 500, friction: 20 }, })); - var selectionAreaRef = useRef(null); + var selectionRef = useRef(null); var [selection, setSelection] = useState<anySlide[]>([]); + // drag on selection useDrag(({ movement: [x, _y], last }) => { if (!selectionPlaced) return; if (selection.length < 1) return; @@ -451,6 +301,7 @@ function TimelineEditor() { selectionPosAPI.start({ startingFrame: selectionFrame + frameOffset }); }); }, { domTarget: selectionRef, eventOptions: { passive: false } }); + useDrag(({ xy: [x, y], initial: [bx, by], first, last, movement: [ox, oy] }) => { if (tool.value != 'cursor') return; var minDistance = 5; // minimal drag distance in pixels to register selection @@ -530,12 +381,24 @@ function TimelineEditor() { startOffset, widthOffset, }); + + setTimeout(() => { + selectionPosAPI.start({ + y1: 50, + y2: 62, + startingFrame: left.frame, + frameWidth: right.frame - left.frame, + center: 0.5, + startOffset, + widthOffset, + }); + }, 100); setSelectionLeftType(left.type); setSelectionRightType(right.type); setSelectionPlaced(true); } } - }, { domTarget: selectionAreaRef, eventOptions: { passive: false } }); + }, { domTarget: props.selectionAreaRef, eventOptions: { passive: false } }); useEffect(() => { var delkeys = ['del', 'backspace']; @@ -562,6 +425,206 @@ function TimelineEditor() { }; }, [selectionPlaced, workingTimeline]); + function CustomSelection(props: { + x1: number; + x2: number; + y1: number; + y2: number; + widthOffset: number; + frameWidth: number; + className: string; + }) { + return <Selection + className={props.className} + width={props.x2 - props.x1 + 12} + frameWidth={props.frameWidth} + height={props.y2 - props.y1 + 12} + left={selectionLeftType} + right={selectionRightType} + widthOffset={props.widthOffset} + />; + } + var AnimatedSelection = animated(props => <CustomSelection {...props} />); + + return <animated.div + id='selection' + className={'posabs dispinbl ' + (selectionPlaced ? 'placed ' : '')} + ref={selectionRef} + style={{ + '--starting-frame': selectionPos.startingFrame, + '--y': selectionPos.y1, + '--start-offset': selectionPos.startOffset, + '--center': selectionPos.center, + pointerEvents: selectionPlaced ? 'all' : 'none', + } as CSSProperties} + > + <AnimatedSelection + x1={selectionPos.x1} + x2={selectionPos.x2} + y1={selectionPos.y1} + y2={selectionPos.y2} + widthOffset={selectionPos.widthOffset} + frameWidth={selectionPos.frameWidth} + className={'' + (selectionActive ? 'active ' : '') + (selectionHidden ? 'hidden ' : '')} + /> + </animated.div>; +} + +function TimelineEditor() { + var timelineZoom = useHookstate(project).timeline.zoom; + var workingTimeline = useHookstate(project).timeline.workingTimeline; + var tool = useHookstate(project).timeline.tool; + + var mouseX = 0; + + var timelineRef = useRef(null); + var selectionAreaRef = useRef(null); + useEffect(() => { + timelineRef.current.addEventListener('wheel', (e: WheelEvent) => { + if (!e.ctrlKey && !e.altKey) return; + e.preventDefault(); + + var newZoom = Math.min(1, Math.max(0, project.timeline.zoom.value + (-e.deltaY / 1000))); + zoomAroundPoint(newZoom, mouseX); + }); + }, []); + + useEffect(() => { + var canvas = document.querySelector('.timeline .timeScale'); + window.addEventListener('mousemove', e => { + var rect = canvas.getBoundingClientRect(); + mouseX = e.clientX - rect.x; + }); + }, []); + + useEffect(() => { + player.addEventListener('TimedVideoPlayerOnFrame', (event: CustomEvent) => { + project.timeline.frame.set(event.detail); + scrubberSpring.start({ frame: event.detail }); + }); + }, []); + + useEffect(() => { + player.addEventListener('TimedVideoPlayerSlide', (event: CustomEvent) => { + document.querySelectorAll('.keyframes .frame').forEach(el => { + el.classList.remove('current'); + if (event.detail && el.id == 'slide-' + (event.detail as slide).id) { + el.classList.add('current'); + } + }); + }); + }, []); + + // timeline canvas stuff + useEffect(() => { + var canvas = document.getElementById('timeScaleCanvas') as HTMLCanvasElement; + var ctx = canvas.getContext('2d'); + + var css = (varname: string) => getComputedStyle(document.body).getPropertyValue(varname).trim(); + var baseColor = css('--c100'); + var frameColor = css('--c250'); + var markerFrame = css('--c400'); + + function draw() { + ctx.clearRect(0, 0, canvas.width, canvas.height); + + var labels: Array<ReactNode> = []; + + var offset = document.querySelector('.timeline .timelineInner').scrollLeft; + + var frameWidth = zoomToPx(project.timeline.zoom.value); + + var d = true; + var a = 0; + var ns = [300, 150, 120, 90, 60, 30, 30, 30, 15, 15, 10, 10, 10]; + var everyN = ns[Math.floor(frameWidth)]; + for (var x = -offset; x < canvas.width + offset; x += frameWidth) { + ctx.fillStyle = baseColor; + + var rect = [Math.round(x + (frameWidth - 2) / 2), 28, 2, canvas.height]; + var drawFrame = false; + var marker = false; + if (frameWidth >= 6) { + ctx.fillStyle = d ? baseColor : frameColor; + rect = [x, 28, frameWidth, canvas.height]; + drawFrame = !d; + } + if (a % everyN == 0) { + ctx.fillStyle = markerFrame; + drawFrame = true; + marker = true; + } + + if (drawFrame) { + ctx.fillRect(Math.round(rect[0]), Math.round(rect[1]), Math.round(rect[2]), Math.round(rect[3])); + + if (marker) { + var frame = Math.round(x / frameWidth + offset / frameWidth + 1); + labels.push( + <span + className='label numbers posabs nosel' + style={{ + left: Math.round(rect[0] + frameWidth / 2), + top: rect[1], + }} + children={player.frameToTimestampString(frame - 1)} + />, + ); + } + } + + d = !d; + a++; + } + + project.timeline.labels.set(labels); + + requestAnimationFrame(draw); + } + draw(); + + function onresize() { + var size = document.querySelector('.timeline .timelineInner'); + canvas.width = size.clientWidth; + canvas.height = size.clientHeight; + } + onresize(); + window.addEventListener('resize', onresize); + }, []); + + // timeline scrubber + var scrubberDragRef = useRef(null); + var [scrubberPos, scrubberSpring] = useSpring( + () => ({ + frame: 0, + config: { mass: 0.5, tension: 500, friction: 20 }, + }), + ); + useDrag(({ xy: [x, _y] }) => { + var frame = Math.max(0, Math.round(getFrameAtOffset(x - 240, project.timeline.zoom.value)) - 1); + scrubberSpring.start({ frame }); + if (player.player) { + var time = player.frameToTimestamp(frame + 1); + if (isFinite(time)) player.player.currentTime = time; + } + project.timeline.frame.set(frame); + }, { domTarget: scrubberDragRef, eventOptions: { passive: false } }); + + // slide placement ghost + var [ghost, ghostApi] = useSpring(() => ({ + x: 0, + y: 0, + config: { mass: 0.5, tension: 500, friction: 20 }, + })); + useEffect(() => { + document.querySelector('.timeline').addEventListener('mousemove', (e: MouseEvent) => { + var rect = document.querySelector('.timeline').getBoundingClientRect(); + var x = e.clientX - rect.left; + var y = e.clientY - rect.top; + ghostApi.start({ x, y }); + }); + }, []); + return <div className='timeline posrel' style={{ '--zoom': zoomToPx(timelineZoom.value) } as CSSProperties} @@ -612,26 +675,7 @@ function TimelineEditor() { > <div className='selectionarea posabs v0' ref={selectionAreaRef} /> {workingTimeline.value.map(slide => <TimelineKeyframe slide={slide} />)} - <div - id='selection' - className={'posabs dispinbl ' + (selectionPlaced ? 'placed ' : '')} - ref={selectionRef} - style={{ - left: `calc(var(--zoom) * ${selectionPos.startingFrame.toJSON() - + selectionPos.center.toJSON()} * 1px - 6px + ${selectionPos.startOffset.toJSON()} * 1px)`, - top: selectionPos.y1.toJSON() - 6, - pointerEvents: selectionPlaced ? 'all' : 'none', - }} - children={<Selection - className={'' + (selectionActive ? 'active ' : '') + (selectionHidden ? 'hidden ' : '')} - width={selectionPos.x2.toJSON() - selectionPos.x1.toJSON() + 12} - frameWidth={selectionPos.frameWidth.toJSON()} - height={selectionPos.y2.toJSON() - selectionPos.y1.toJSON() + 12} - left={selectionLeftType} - right={selectionRightType} - widthOffset={selectionPos.widthOffset.toJSON()} - />} - /> + <TimelineSelection selectionAreaRef={selectionAreaRef} /> </div> </div> <div className={'ghostArea posabs a0' + (tool.value != 'cursor' ? ' active' : '')}> diff --git a/styles/editor.css b/styles/editor.css index 3263c19..a14adb3 100644 --- a/styles/editor.css +++ b/styles/editor.css @@ -299,6 +299,11 @@ cursor: grabbing; } +#selection { + left: calc(var(--zoom) * (var(--starting-frame) + var(--center)) * 1px - 6px + var(--start-offset) * 1px); + top: calc((var(--y) - 6) * 1px); +} + .appGrid .timeline .ghostArea { pointer-events: none; line-height: 0; @@ -9,17 +9,17 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== "@babel/highlight@^7.10.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== dependencies: - "@babel/helper-validator-identifier" "^7.14.0" + "@babel/helper-validator-identifier" "^7.14.5" chalk "^2.0.0" js-tokens "^4.0.0" @@ -31,9 +31,9 @@ regenerator-runtime "^0.13.4" "@babel/runtime@^7.3.1", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.7": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.0.tgz#46794bc20b612c5f75e62dd071e24dfd95f1cbe6" - integrity sha512-JELkvo/DlpNdJ7dlyw/eY7E0suy5i5GQH+Vlxaq1nsNJ+H7f4Vtv3jMeCEgRhZZQFXTjldYfQgv2qmM6M1v5wA== + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" + integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== dependencies: regenerator-runtime "^0.13.4" @@ -168,20 +168,20 @@ resolved "https://registry.yarnpkg.com/@mdi/react/-/react-1.5.0.tgz#461d2064ba12d509723bffc95e2f7169a6ac884a" integrity sha512-NztRgUxSYD+ImaKN94Tg66VVVqXj4SmlDGzZoz48H9riJ+Awha56sfXH2fegw819NWo7KI3oeS1Es0lNQqwr0w== -"@next/env@10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@next/env/-/env-10.2.2.tgz#cb61f6c29f349815108184c2f1926ada65458e28" - integrity sha512-m0xOpl4F9z7R7Yt2OtJoo6ZUsFPdx+kuvZeoctH7T6lO66DmZL3W6MQDxso/ArkH8VOlDPZgeQVVBPf+I7wflA== +"@next/env@11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@next/env/-/env-11.0.1.tgz#6dc96ac76f1663ab747340e907e8933f190cc8fd" + integrity sha512-yZfKh2U6R9tEYyNUrs2V3SBvCMufkJ07xMH5uWy8wqcl5gAXoEw6A/1LDqwX3j7pUutF9d1ZxpdGDA3Uag+aQQ== -"@next/polyfill-module@10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-10.2.2.tgz#48d108dd562ed021dd23510c0ffe96badf5f9c04" - integrity sha512-0t5Hw1Dr18TWP65qAnakRa8+jza6SAFOz0b2v67s5AVquAwXXlclR4SfUy3ahrRtjCqlbLEE/oFIzCGbyMYfVA== +"@next/polyfill-module@11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.0.1.tgz#ca2a110c1c44672cbcff6c2b983f0c0549d87291" + integrity sha512-Cjs7rrKCg4CF4Jhri8PCKlBXhszTfOQNl9AjzdNy4K5jXFyxyoSzuX2rK4IuoyE+yGp5A3XJCBEmOQ4xbUp9Mg== -"@next/react-dev-overlay@10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-10.2.2.tgz#88fb5013d3df70bd37b854234c41d884e108a149" - integrity sha512-uPslFPWvvZ8AdadGdK2/834UnJy6F+7071/ere6QpN88Ngzqx9lDIhjslEeFLRtpyBst4s1YUdbm69btVPdE5w== +"@next/react-dev-overlay@11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.0.1.tgz#3c481e83347255abd466dcf7e59ac8a79a0d7fd6" + integrity sha512-lvUjMVpLsgzADs9Q8wtC5LNqvfdN+M0BDMSrqr04EDWAyyX0vURHC9hkvLbyEYWyh+WW32pwjKBXdkMnJhoqMg== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9" @@ -195,102 +195,95 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@10.2.2": - version "10.2.2" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-10.2.2.tgz#69dd150e3656aebe63fc828916105f1472810488" - integrity sha512-OL7r0iz+SiE9SMWcxZocUtEAHv0/TlBWxIE3KjjO1vWSU1r0gMrE2l2RxHfMLIPsl6CjAkcPxoaXlosFsJ2S5w== - -"@opentelemetry/api@0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-0.14.0.tgz#4e17d8d2f1da72b19374efa7b6526aa001267cae" - integrity sha512-L7RMuZr5LzMmZiQSQDy9O1jo0q+DaLy6XpYJfIGfYSfoJA5qzYwUP3sP1uMIQ549DvxAgM3ng85EaPTM/hUHwQ== - dependencies: - "@opentelemetry/context-base" "^0.14.0" - -"@opentelemetry/context-base@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.14.0.tgz#c67fc20a4d891447ca1a855d7d70fa79a3533001" - integrity sha512-sDOAZcYwynHFTbLo6n8kIbLiVF3a3BLkrmehJUyEbT9F+Smbi47kLGS2gG2g0fjBLR/Lr1InPD7kXL7FaTqEkw== - -"@react-spring/animated@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.1.2.tgz#e43b122160f8f4cbb0caac8a7f57acd76dd12369" - integrity sha512-nKOGk+3aWbNp46V/CB1J2vR3GJI/Vork8N1WTI5mt+32QekrSsBn5/YFt4/iPaDGhLjukFxF0IjLs6hRLqSObw== - dependencies: - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" - -"@react-spring/core@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.1.2.tgz#6d854a12fe9c3caa7942e51e708cb5fb4e2d1124" - integrity sha512-rgobYPCcLdDwbHBVqAmvtXhhX92G7MoPltJlzUge843yp1dNr47tkagFdCtw9NMGp6eHu/CE5byh/imlhLLAxw== - dependencies: - "@react-spring/animated" "~9.1.2" - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" - -"@react-spring/konva@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.1.2.tgz#20567063efd8d441a268826e326bd5d7574bbc50" - integrity sha512-P60mhUHRYgPPhoTBQWzuzD3hfeCFWC0BQ7N0iHzpMTzDIrAvutyg+iAX59jSXo3yatrcx60NmlCsiG8tRxbw6w== - dependencies: - "@react-spring/animated" "~9.1.2" - "@react-spring/core" "~9.1.2" - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" - -"@react-spring/native@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.1.2.tgz#d21a64c20ca08d2c5839cedcf9cc4842770f8ffc" - integrity sha512-d7+tCoKAnDPSoVtpyFFm4BWQhn1h833ocdP0d2POZzKTcR1iQ8YI7EQ22iKGLvwH+0vjymde039CgYy31INqWQ== - dependencies: - "@react-spring/animated" "~9.1.2" - "@react-spring/core" "~9.1.2" - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" - -"@react-spring/shared@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.1.2.tgz#c36d077d7eb31fd2cbcf8956d9d35037b2998613" - integrity sha512-sj/RrhFZAteCWAMk+W0t6Ku/skn/lbskCCs8B7ZnHNLMGPM+Zb3MOk+aVbX3T/D0iq/oTnKWyQYqrXDKiFcZ7g== - dependencies: - "@react-spring/types" "~9.1.2" - rafz "^0.1.14" - -"@react-spring/three@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.1.2.tgz#49d1d4c0b9d059bd470712c78c9dd73af130677d" - integrity sha512-d/v94ykmfJGLTJxJ+jxlTAJSfFdD+SSf+yvXReS81hc7+9VYeEwIHVIEKOzckYnPy/MEOSVhIVKF/9wdFIIo6g== - dependencies: - "@react-spring/animated" "~9.1.2" - "@react-spring/core" "~9.1.2" - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" - -"@react-spring/types@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.1.2.tgz#3273a182f825b38f44ead2a2f3984344abad1e2b" - integrity sha512-NZNImL0ymRFbss1cGKX2qSEeFdFoOgnIJZEW4Uczt+wm04J7g0Zuf23Hf8hM35JtxDr8QO5okp8BBtCM5FzzMg== - -"@react-spring/web@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.1.2.tgz#6ec409e8559676834b67aa33f0a2d57643c3c555" - integrity sha512-E5W9Hmi2bO6CPorCNV/2iv12ux9LxHJAbpXmrBPKWFRqZixysiHoNQKKPG0DmSvUU1uKkvCvMC4VoB6pj/2kxw== - dependencies: - "@react-spring/animated" "~9.1.2" - "@react-spring/core" "~9.1.2" - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" - -"@react-spring/zdog@~9.1.2": - version "9.1.2" - resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.1.2.tgz#edf270e93d5db8a94f65d4e94e4438352fbb454f" - integrity sha512-t5RobDp12HGVh6XJ1BZ+dFdxRQ/goEapYvjH5eqQa1vC97bSqJGLiG+SM/E360DtDlh8GXAyGSesd2pXzBkpPg== - dependencies: - "@react-spring/animated" "~9.1.2" - "@react-spring/core" "~9.1.2" - "@react-spring/shared" "~9.1.2" - "@react-spring/types" "~9.1.2" +"@next/react-refresh-utils@11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.0.1.tgz#a7509f22b6f70c13101a26573afd295295f1c020" + integrity sha512-K347DM6Z7gBSE+TfUaTTceWvbj0B6iNAsFZXbFZOlfg3uyz2sbKpzPYYFocCc27yjLaS8OfR8DEdS2mZXi8Saw== + +"@react-spring/animated@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.2.3.tgz#271226099d356b7b6d99240375dd8f62f450e997" + integrity sha512-xxYOxxrk4r+yy218lVnkR027GXGvHcadDnnXRW0l6atcL+1AGYwimMwIuvzlvnsVnyoK0YUABEeGjk9ENOrVMQ== + dependencies: + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/core@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.2.3.tgz#b3926ef8f2694bfb251318d7b44abac1fa5321d0" + integrity sha512-8qJbj0xjjoYGVqdmNd2bVaFzKSAwrMVLweHkaYJiTY6p0g7LhSdt5KSl1MjYA4Rj6S4wO1KgefAPK6mH6MtGtA== + dependencies: + "@react-spring/animated" "~9.2.0" + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/konva@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/konva/-/konva-9.2.3.tgz#7a0a1cd7b2b365c7e9c6a14002c3ec6f37f3663a" + integrity sha512-lycvgmlag3/CeemuoI2bTVgu/LK98VzNTyBClXyppduGwGwR/iJPYjOFraL7pTKyEGp2qMCo1URISc6W43PkQg== + dependencies: + "@react-spring/animated" "~9.2.0" + "@react-spring/core" "~9.2.0" + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/native@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/native/-/native-9.2.3.tgz#a98c43fad6322e9c77e0fad602f83caf56f45c93" + integrity sha512-odPk/NfMgLTp9bh4Rz2joWKMiNIC4/n+m60lGG0Eznmg3nYgtZ5+GMcph3A5dn5XWJGLywxrPiy8/wf+5LaVtA== + dependencies: + "@react-spring/animated" "~9.2.0" + "@react-spring/core" "~9.2.0" + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/rafz@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.2.3.tgz#ffde337240b6880a2488d3ca67e4b01688881793" + integrity sha512-ThBI3HWp1Y82uRSFVpoykwgM3M9s3SJD6ilKKp9C2OTPcGhWiRGt1IMjzKPwB+F1NX3psbPTt30Bev8WzA/DQQ== + +"@react-spring/shared@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.2.3.tgz#eaa4a4e6bf4f43d10b4a5c920a917e84047ac50e" + integrity sha512-MehdmKao1oUAwSEJo8BXOz1OGgsSav/dimD1Vz920hirShj9s/I4zKnWtkdK92xQ4n35D/xD3hATHkXbt/WSvg== + dependencies: + "@react-spring/rafz" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/three@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.2.3.tgz#1871a6c7dcb20ab284b8ce4af1805c86c9bb27ed" + integrity sha512-DMns/lTWmJ7EFJHf+7CERBAUWWZ314FPQGAcOXFHvMXfxfzBwV8/HGuvlKcdNsTqXfCi3PcYQEAWhpFF/YgVbA== + dependencies: + "@react-spring/animated" "~9.2.0" + "@react-spring/core" "~9.2.0" + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/types@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.2.3.tgz#08b5ca1cb262328529ee558796395f073b6029b0" + integrity sha512-G7AWUJavwsvvvprnYmqUXE5N1XKINktc8V72ipvkFTE3DD3GApYpX/ORNmieJljKJYvBSBzpRSIzk2qELUs30Q== + +"@react-spring/web@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.2.3.tgz#b9037719b489863ca2ad39caaacff6d315bbaea8" + integrity sha512-dWRcgVDbO2UI9I03n/HVmCx9tY++Na+RwRzkzXv3E53BcFsjvnWGArnpj+xE/XgXiaII3ep2RmUj5jyYoukqGg== + dependencies: + "@react-spring/animated" "~9.2.0" + "@react-spring/core" "~9.2.0" + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" + +"@react-spring/zdog@~9.2.0": + version "9.2.3" + resolved "https://registry.yarnpkg.com/@react-spring/zdog/-/zdog-9.2.3.tgz#f41cf4f99ddde1cbb9a4c76202a4d2bf8d4b9886" + integrity sha512-Ne06eVaV/SQrtdMixLPmkfO2mhoqpkPEAsqW92Bh+hODdEdPwVvexitKPx29uc6F2/zOu9t8NAJfqbOsq3j1Hw== + dependencies: + "@react-spring/animated" "~9.2.0" + "@react-spring/core" "~9.2.0" + "@react-spring/shared" "~9.2.0" + "@react-spring/types" "~9.2.0" "@types/json-schema@^7.0.7": version "7.0.7" @@ -303,9 +296,9 @@ integrity sha512-zTqjvgCUT5EoXqbqmd8iJMb4NJqyV/V7pK7AIKq7qcaAsJIpGlTVJS1HQM6YkdHCdnkNSbhcQI7MXYxFfE3iCA== "@types/node@*": - version "15.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.6.0.tgz#f0ddca5a61e52627c9dcb771a6039d44694597bc" - integrity sha512-gCYSfQpy+LYhOFTKAeE8BkyGqaxmlFxe+n4DKM6DR0wzw/HISUE/hAmkC/KT8Sw5PCJblqg062b3z9gucv3k0A== + version "15.12.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.4.tgz#e1cf817d70a1e118e81922c4ff6683ce9d422e26" + integrity sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA== "@types/prop-types@*": version "15.7.3" @@ -320,9 +313,9 @@ "@types/react" "*" "@types/react@*": - version "17.0.6" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.6.tgz#0ec564566302c562bf497d73219797a5e0297013" - integrity sha512-u/TtPoF/hrvb63LdukET6ncaplYsvCvmkceasx8oG84/ZCsoLxz9Z/raPBP4lTAiWW1Jb889Y9svHmv8R26dWw== + version "17.0.11" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.11.tgz#67fcd0ddbf5a0b083a0f94e926c7d63f3b836451" + integrity sha512-yFRQbD+whVonItSk7ZzP/L+gPTJVBkL/7shLEF+i9GC/1cV3JmUxEQz6+9ylhUpWSDuqo1N9qEvqS6vTj4USUA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -339,9 +332,9 @@ integrity sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ== ajv@^8.3.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.5.0.tgz#695528274bcb5afc865446aa275484049a18ae4b" - integrity sha512-Y2l399Tt1AguU3BPRP9Fn4eN+Or+StUGWCUpbnFyXSo8NZ9S4uj+AG2pjs5apK+ZMOwYOz1+a+VKvKH7CudXgQ== + version "8.6.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -380,17 +373,6 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -array.prototype.filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array.prototype.filter/-/array.prototype.filter-1.0.0.tgz#24d63e38983cdc6bf023a3c574b2f2a3f384c301" - integrity sha512-TfO1gz+tLm+Bswq0FBOXPqAchtCr2Rn48T8dLJoRFl8NoEosjZmzptmuo1X8aZBzZcqsR1W8U761tjACJtngTQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.5" - asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -425,11 +407,9 @@ ast-types@0.13.2: integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== available-typed-arrays@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.3.tgz#fb7d02445bfedefad79fad1fe47931163a227198" - integrity sha512-CuPhFULixV/d89POo1UG4GqGbR7dmrefY2ZdmsYakeR4gOSJXoF7tfeaiqMHGOMrlTiJoeEs87fpLsBYmE2BMw== - dependencies: - array.prototype.filter "^1.0.0" + version "1.0.4" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" + integrity sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA== babel-plugin-syntax-jsx@6.18.0: version "6.18.0" @@ -599,9 +579,9 @@ call-bind@^1.0.0, call-bind@^1.0.2: get-intrinsic "^1.0.2" caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228: - version "1.0.30001228" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" - integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== + version "1.0.30001239" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001239.tgz#66e8669985bb2cb84ccb10f68c25ce6dd3e4d2b8" + integrity sha512-cyBkXJDMeI4wthy8xJ2FvDU6+0dtcZSJW3voUF8+e9f1bBeuvyZfc3PNbkOETyhbR+dGCPzn9E7MA3iwzusOhQ== chalk@2.4.2, chalk@^2.0.0: version "2.4.2" @@ -864,9 +844,9 @@ domain-browser@^1.1.1: integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== electron-to-chromium@^1.3.723: - version "1.3.736" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.736.tgz#f632d900a1f788dab22fec9c62ec5c9c8f0c4052" - integrity sha512-DY8dA7gR51MSo66DqitEQoUMQ0Z+A2DSXFi7tK304bdTVqczCAfUuyQw6Wdg8hIoo5zIxkU1L24RQtUce1Ioig== + version "1.3.755" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.755.tgz#4b6101f13de910cf3f0a1789ddc57328133b9332" + integrity sha512-BJ1s/kuUuOeo1bF/EM2E4yqW9te0Hpof3wgwBx40AWJE18zsD1Tqo0kr7ijnOc+lRsrlrqKPauJAHqaxOItoUA== elliptic@^6.5.3: version "6.5.4" @@ -893,10 +873,10 @@ encoding@0.1.13: dependencies: iconv-lite "^0.6.2" -es-abstract@^1.18.0, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: - version "1.18.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0.tgz#ab80b359eecb7ede4c298000390bc5ac3ec7b5a4" - integrity sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" + integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" @@ -906,19 +886,14 @@ es-abstract@^1.18.0, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: has-symbols "^1.0.2" is-callable "^1.2.3" is-negative-zero "^2.0.1" - is-regex "^1.1.2" - is-string "^1.0.5" - object-inspect "^1.9.0" + is-regex "^1.1.3" + is-string "^1.0.6" + object-inspect "^1.10.3" object-keys "^1.1.1" object.assign "^4.1.2" string.prototype.trimend "^1.0.4" string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.0" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + unbox-primitive "^1.0.1" es-to-primitive@^1.2.1: version "1.2.1" @@ -1049,7 +1024,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.1.6: +glob@^7.1.7: version "7.1.7" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== @@ -1171,6 +1146,13 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +image-size@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.0.tgz#58b31fe4743b1cec0a0ac26f5c914d3c5b2f0750" + integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw== + dependencies: + queue "6.0.2" + indefinite-observable@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/indefinite-observable/-/indefinite-observable-2.0.1.tgz#574af29bfbc17eb5947793797bddc94c9d859400" @@ -1282,7 +1264,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-regex@^1.1.2: +is-regex@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== @@ -1290,7 +1272,7 @@ is-regex@^1.1.2: call-bind "^1.0.2" has-symbols "^1.0.2" -is-string@^1.0.5: +is-string@^1.0.5, is-string@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" integrity sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w== @@ -1533,18 +1515,17 @@ native-url@0.3.4: dependencies: querystring "^0.2.0" -next@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/next/-/next-10.2.2.tgz#aadcc526e420282b4a735b0595041195d748a91d" - integrity sha512-HPGSLrflWPvf3zEZSIk/uj0CZ+YYrpZwZS0PFAgXbEwb894iRuAPzglagqlzcCh7lg12RBEaKNIxhrVa5xgjtQ== +next@^11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/next/-/next-11.0.1.tgz#b8e3914d153aaf7143cb98c09bcd3c8230eeb17a" + integrity sha512-yR7be7asNbvpVNpi6xxEg28wZ7Gqmj1nOt0sABH9qORmF3+pms2KZ7Cng33oK5nqPIzEEFJD0pp2PCe3/ueMIg== dependencies: "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.2" - "@next/env" "10.2.2" - "@next/polyfill-module" "10.2.2" - "@next/react-dev-overlay" "10.2.2" - "@next/react-refresh-utils" "10.2.2" - "@opentelemetry/api" "0.14.0" + "@next/env" "11.0.1" + "@next/polyfill-module" "11.0.1" + "@next/react-dev-overlay" "11.0.1" + "@next/react-refresh-utils" "11.0.1" assert "2.0.0" ast-types "0.13.2" browserify-zlib "0.2.0" @@ -1562,6 +1543,7 @@ next@^10.2.0: find-cache-dir "3.3.1" get-orientation "1.1.2" https-browserify "1.0.0" + image-size "1.0.0" jest-worker "27.0.0-next.5" native-url "0.3.4" node-fetch "2.6.1" @@ -1576,7 +1558,7 @@ next@^10.2.0: prop-types "15.7.2" querystring-es3 "0.2.1" raw-body "2.4.1" - react-is "16.13.1" + react-is "17.0.2" react-refresh "0.8.3" stream-browserify "3.0.0" stream-http "3.1.1" @@ -1631,9 +1613,9 @@ node-libs-browser@^2.2.1: vm-browserify "^1.0.1" node-releases@^1.1.71: - version "1.1.72" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" - integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -1645,7 +1627,7 @@ object-assign@^4.1.1: resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-inspect@^1.9.0: +object-inspect@^1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== @@ -1857,10 +1839,12 @@ querystring@^0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== -rafz@^0.1.14: - version "0.1.14" - resolved "https://registry.yarnpkg.com/rafz/-/rafz-0.1.14.tgz#164f01cf7cc6094e08467247ef351ef5c8d278fe" - integrity sha512-YiQkedSt1urYtYbvHhTQR3l67M8SZbUvga5eJFM/v4vx/GmDdtXlE2hjJIyRjhhO/PjcdGC+CXCYOUA4onit8w== +queue@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" @@ -1896,37 +1880,37 @@ react-dom@^17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" -react-is@16.13.1, react-is@^16.7.0, react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -"react-is@^16.8.0 || ^17.0.0": +react-is@17.0.2, "react-is@^16.8.0 || ^17.0.0": version "17.0.2" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + react-refresh@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== react-spring@^9.1.2: - version "9.1.2" - resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.1.2.tgz#a2392f5468bfd960976747d59361236536e1f303" - integrity sha512-xLmkierisElCQShCqAH3PpepjHhCyOK1wGSTdpvG7GGD+SbfG4Sac7wj6wrKTT5A5NUFM5OnVQUXZLe5HScIfA== + version "9.2.3" + resolved "https://registry.yarnpkg.com/react-spring/-/react-spring-9.2.3.tgz#ff644f8857782389b47171239ee8dead372ebd46" + integrity sha512-D3fx9A7UjX4yp35TM3YxbhzKhjq6nFaEs4/RkKT+/Ch732opG6iUek9jt+mwR1bST29aa9Da6mWipAtQbD2U3g== dependencies: - "@react-spring/core" "~9.1.2" - "@react-spring/konva" "~9.1.2" - "@react-spring/native" "~9.1.2" - "@react-spring/three" "~9.1.2" - "@react-spring/web" "~9.1.2" - "@react-spring/zdog" "~9.1.2" + "@react-spring/core" "~9.2.0" + "@react-spring/konva" "~9.2.0" + "@react-spring/native" "~9.2.0" + "@react-spring/three" "~9.2.0" + "@react-spring/web" "~9.2.0" + "@react-spring/zdog" "~9.2.0" react-transition-group@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.1.tgz#63868f9325a38ea5ee9535d828327f85773345c9" - integrity sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw== + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== dependencies: "@babel/runtime" "^7.5.5" dom-helpers "^5.0.1" @@ -2210,9 +2194,9 @@ symbol-observable@1.2.0: integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== timecode-boss@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/timecode-boss/-/timecode-boss-4.2.3.tgz#c569ef8b815c0434ad551f7681577cd46949abf9" - integrity sha512-DnZWYwn/QCAW3ElK0TOaAy3v2QEr6I+VMdc1aqo/9/H0uiebMp5xIeaU44IDpwQUE7W6W4k2+2aDM6VwQaXjOQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/timecode-boss/-/timecode-boss-4.5.0.tgz#cc2b2628b810f89c5c1d44021abad25753cb8f57" + integrity sha512-uSWiBC06vRM+3LcoLZoAVw5BAaWwcukj4APxaJc+/t9l7UOPuSCqQGuawEUXFkgr/7sYDko4ohf5xm95vzFqZg== timers-browserify@2.0.12, timers-browserify@^2.0.4: version "2.0.12" @@ -2255,17 +2239,17 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" -ts-json-schema-generator@^0.92.0: - version "0.92.0" - resolved "https://registry.yarnpkg.com/ts-json-schema-generator/-/ts-json-schema-generator-0.92.0.tgz#a77dd06ad6ba302d7fddb9fa18ad9754994c6b71" - integrity sha512-tuk8I+UF/r2RpgyWxKjlKa+q8JQqTbSZ5iuWnf4TYzJkyH0tgPgynGy0jkWHotNZgbT6+TPvzlShXo5aXgI6Iw== +ts-json-schema-generator@^0.93.0: + version "0.93.0" + resolved "https://registry.yarnpkg.com/ts-json-schema-generator/-/ts-json-schema-generator-0.93.0.tgz#3d6adf99446a1b3d0887dbad7cca015a49394d3a" + integrity sha512-JYacSIgw4KqsOXF/zRSY4pE/v6jUk7aMDXhwK5MdopN0UeKH58TRZHrQADy9uxTf78jqUfFLzARQKNOb9H+jVQ== dependencies: "@types/json-schema" "^7.0.7" commander "^7.2.0" fast-json-stable-stringify "^2.1.0" - glob "^7.1.6" + glob "^7.1.7" json-stable-stringify "^1.0.1" - typescript "~4.2.4" + typescript "~4.3.2" ts-pnp@^1.1.6: version "1.2.0" @@ -2287,12 +2271,12 @@ type-fest@^0.7.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== -typescript@^4.2.4, typescript@~4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" - integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== +typescript@^4.2.4, typescript@~4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" + integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== -unbox-primitive@^1.0.0: +unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== @@ -2341,7 +2325,7 @@ util@0.10.3: dependencies: inherits "2.0.1" -util@0.12.3, util@^0.12.0: +util@0.12.3: version "0.12.3" resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== @@ -2360,6 +2344,18 @@ util@^0.11.0: dependencies: inherits "2.0.3" +util@^0.12.0: + version "0.12.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.4.tgz#66121a31420df8f01ca0c464be15dfa1d1850253" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" + uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" |