From 329e2ed4f76758e54d92dce6aa8120fe9382a7e9 Mon Sep 17 00:00:00 2001 From: wil Date: Thu, 29 Feb 2024 13:24:03 -0500 Subject: [PATCH] scrubber progress, it's moving --- .../common/VideoQuickTrim/TrimScrubber.tsx | 82 ++++++++++++------- .../common/VideoQuickTrim/VideoQuickTrim.tsx | 17 +++- .../common/VideoQuickTrim/styles.scss | 2 +- .../common/VideoQuickTrim/types.tsx | 1 - .../components/pageVSTApp/pageVSTApp.tsx | 4 +- 5 files changed, 69 insertions(+), 37 deletions(-) diff --git a/packages/fakeyou.com/src/components/common/VideoQuickTrim/TrimScrubber.tsx b/packages/fakeyou.com/src/components/common/VideoQuickTrim/TrimScrubber.tsx index dc900305eb..cc931e7fa4 100644 --- a/packages/fakeyou.com/src/components/common/VideoQuickTrim/TrimScrubber.tsx +++ b/packages/fakeyou.com/src/components/common/VideoQuickTrim/TrimScrubber.tsx @@ -1,47 +1,71 @@ import React, { useRef, - // useState + useState, + PointerEvent } from 'react'; import { faGripDots } from "@fortawesome/pro-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { QuickTrimData } from './types'; export default function TrimScrubber({ - width + trimStart, + trimEnd, + width, + onChange }:{ - width:number + trimStart:number; + trimEnd: number; + boundingWidth: number; + width:number; + onChange:(val:QuickTrimData)=>void }){ const ref = useRef(null); + const [{ + leftOffset, + pointerStart + }, setState] = useState<{ + leftOffset:number + pointerStart:number + }>({ + leftOffset:0, + pointerStart: -1 + }); + + const [left, setLeft] = useState(0); + if(ref.current){ + ref.current.style.cursor = pointerStart >= 0 + ? 'grabbing' : 'grab'; + } + function handleScrubStart(e: PointerEvent){ + setState((curr)=>({ + ...curr, + pointerStart: e.clientX + })); + } + function handleScrubEnd(e: PointerEvent){ + setState((curr)=>({ + ...curr, + pointerStart: -1 + })); + } + function handleScrubMove(e: PointerEvent){ + if(pointerStart >= 0 && ref.current){ + setLeft(e.clientX - ref.current.getBoundingClientRect().left); + } + } return(
{ - // if(trimZoneRef.current){ - // trimZoneRef.current.style.cursor = 'grabbing'; - // setTrimState((curr)=>({ - // ...curr, - // isScrubbingTrim: true, - // })) - // } - // }} - // onPointerUp={()=>{ - // if(trimZoneRef.current) { - // trimZoneRef.current.style.cursor = 'grab'; - // setTrimState((curr)=>({ - // ...curr, - // isScrubbingTrim: false, - // })); - // } - // }} - // onPointerMove={(e: PointerEvent)=>{ - // if(trimZoneRef.current && playbarRef.current && isScrubbingTrim){ - // // console.log(fractionToPercentage( - // // (e.clientX - trimZoneRef.current.getBoundingClientRect().left) / (playbarRef.current.getBoundingClientRect().width) - // // ) + "%"); - // } - // }} + style={{ + width: width + "%", + left: left + }} + onPointerDown={handleScrubStart} + onPointerUp={handleScrubEnd} + onPointerLeave={handleScrubEnd} + onPointerMove={handleScrubMove} >
diff --git a/packages/fakeyou.com/src/components/common/VideoQuickTrim/VideoQuickTrim.tsx b/packages/fakeyou.com/src/components/common/VideoQuickTrim/VideoQuickTrim.tsx index 2ebbd27fab..4a49d08125 100644 --- a/packages/fakeyou.com/src/components/common/VideoQuickTrim/VideoQuickTrim.tsx +++ b/packages/fakeyou.com/src/components/common/VideoQuickTrim/VideoQuickTrim.tsx @@ -4,7 +4,6 @@ import React, { useLayoutEffect, useState, useRef, - // PointerEvent, } from "react"; import { faArrowsRepeat, @@ -35,7 +34,6 @@ const trimOptions: { [key: string]: number } = { const initialTrimState: TrimStates = { canNotTrim: true, - isScrubbingTrim: false, trimDuration: 0, trimStart: 0, trimEnd: 0, @@ -68,7 +66,6 @@ export default memo(function VideoQuickTrim({ trimStart, trimEnd, trimDuration, - // isScrubbingTrim, }, setTrimState] = useState(initialTrimState); @@ -212,7 +209,19 @@ export default memo(function VideoQuickTrim({ {/* END of Video Wrapper */}
- + { + setTrimState((curr)=>({ + ...curr, + trimStart: val.trimStartSeconds, + trimEnd: val.trimEndSeconds + })) + }} + />
{/* END of Playbar */} diff --git a/packages/fakeyou.com/src/components/common/VideoQuickTrim/styles.scss b/packages/fakeyou.com/src/components/common/VideoQuickTrim/styles.scss index dac5941c2e..567e461701 100644 --- a/packages/fakeyou.com/src/components/common/VideoQuickTrim/styles.scss +++ b/packages/fakeyou.com/src/components/common/VideoQuickTrim/styles.scss @@ -87,7 +87,7 @@ $playbar-height: 2rem; outline: 0.125rem $white solid; border-top: 1rem $white solid; border-radius: 0.25rem 0.25rem 0.125rem 0.125rem; - // cursor: grab; + cursor: grab; display: flex; justify-content: center; diff --git a/packages/fakeyou.com/src/components/common/VideoQuickTrim/types.tsx b/packages/fakeyou.com/src/components/common/VideoQuickTrim/types.tsx index 34ac28e0f6..c8aa5abe3b 100644 --- a/packages/fakeyou.com/src/components/common/VideoQuickTrim/types.tsx +++ b/packages/fakeyou.com/src/components/common/VideoQuickTrim/types.tsx @@ -7,7 +7,6 @@ export type QuickTrimData = { // INTERNALS export type TrimStates = { canNotTrim: boolean; - isScrubbingTrim: boolean; trimDuration: number; trimStart: number; trimEnd: number; diff --git a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx index 8b0135d737..c23df09666 100644 --- a/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/video_styletransfer/components/pageVSTApp/pageVSTApp.tsx @@ -145,14 +145,14 @@ export default function PageVSTApp({ variant="primary" /> - {/*