From d2eb6fbaf5f7fa0ca179ae7beb07ec62c20d1acd Mon Sep 17 00:00:00 2001 From: lonkaars Date: Fri, 25 Jun 2021 21:59:00 +0200 Subject: project settings working --- pages/editor.tsx | 100 +++++++++++++++++++++++++++++++++++++++--------------- pages/present.tsx | 15 ++++---- styles/editor.css | 10 ++++-- timeline.ts | 2 +- 4 files changed, 86 insertions(+), 41 deletions(-) diff --git a/pages/editor.tsx b/pages/editor.tsx index 67d99af..c90d14b 100644 --- a/pages/editor.tsx +++ b/pages/editor.tsx @@ -13,7 +13,15 @@ import { import KeybindSelector from '../components/keybindselector'; import PlaySkipIconAni from '../components/play-skip'; import Selection from '../components/selection'; -import { anySlide, loopBeginSlide, loopSlide, slide, slideTypes, toolToSlide } from '../timeline'; +import timeline, { + anySlide, + loopBeginSlide, + loopSlide, + presentationSettings, + slide, + slideTypes, + toolToSlide, +} from '../timeline'; import { TimedVideoPlayer } from './present'; import AppBar from '@material-ui/core/AppBar'; @@ -28,6 +36,7 @@ import MenuItem from '@material-ui/core/MenuItem'; import Select from '@material-ui/core/Select'; import Slider from '@material-ui/core/Slider'; import Switch from '@material-ui/core/Switch'; +import TextField from '@material-ui/core/TextField'; import Toolbar from '@material-ui/core/Toolbar'; import ZoomInRoundedIcon from '@material-ui/icons/ZoomInRounded'; import ZoomOutRoundedIcon from '@material-ui/icons/ZoomOutRounded'; @@ -122,10 +131,28 @@ var global = createState({ type: 'default', clickThroughBehaviour: 'ImmediatelySkip', }; + project.timeline.slides.set(player.timeline.slides); + player.timeline = project.timeline.attach(Downgraded).value; }, }, }); +interface project { + timeline: timeline; +} + +var project = createState({ + timeline: { + name: '', + slides: [], + settings: { + controlType: 'FullScreen', + }, + framerate: 0, + framecount: 0, + }, +}); + var zoomToPx = (zoom: number) => (12 - 0.5) * zoom ** (1 / 0.4) + 0.5; function getFrameAtOffset(offset: number, timelineZoom: number) { @@ -384,7 +411,7 @@ function TimelineSelection(props: { selectionAreaRef: Ref; }) { if (distanceTraveled <= minDistance) global.selection.hidden.set(true); else { var endingFrame = startingFrame + frameWidth; - var expandedTimeline = new Array(...player.timeline.slides); + var expandedTimeline = new Array(...project.timeline.slides.value); for (let i = 0; i < expandedTimeline.length; i++) { var slide = expandedTimeline[i]; if (slide.type != 'loop') continue; @@ -511,6 +538,7 @@ function TimelineEditor() { var mouseX = 0; var ready = useHookstate(global).ready; + var proj = useHookstate(project).timeline; var timelineRef = useRef(null); var selectionAreaRef = useRef(null); @@ -705,7 +733,7 @@ function TimelineEditor() {
{workingTimeline.value.map(slide => )} @@ -747,23 +775,36 @@ function ProjectSettings(props: { close: () => any; open?: boolean; }) { - return -
- Lorem ipsum dolor, sit amet consectetur adipisicing elit. Deserunt blanditiis accusamus, fugiat vel, dolor - nesciunt asperiores reiciendis iure tempore veniam corrupti earum! Ipsam, delectus. Ipsum, sed eligendi - facere veniam nostrum in tempora libero voluptates quam saepe culpa, minima praesentium iure explicabo aut - laboriosam asperiores quisquam non. Nulla, eaque, enim, vitae illo dolorem natus dolores quas quam possimus - iure soluta quibusdam est fuga quae autem vel totam molestiae blanditiis reiciendis ducimus. Similique - numquam nam quisquam corrupti enim possimus debitis repudiandae sapiente et porro. Asperiores placeat error - quis distinctio laboriosam cumque ex iste, natus incidunt, deserunt beatae earum laudantium nam amet quia - nihil nesciunt exercitationem corrupti quibusdam veritatis repellendus? Neque impedit laudantium at, - voluptatem iure ut sed nemo quod officiis aut ab dolore quibusdam dicta rem dolor amet quo saepe corporis. - Iure itaque magnam quasi dolores consequuntur praesentium quaerat odit officia consequatur illo nobis odio - velit mollitia eaque, placeat a. Ut voluptates, odio perspiciatis earum dolore optio excepturi laudantium - doloremque accusamus consequuntur qui saepe obcaecati? Dolorum harum dolores officiis perspiciatis quos - debitis reiciendis rerum qui laborum, sapiente ut delectus totam sit aperiam magni maiores cupiditate atque - cum alias. Dolorum possimus fugiat ratione laborum architecto? Tempora eos, blanditiis consequuntur fugiat - soluta illo beatae? + var proj = useHookstate(project).timeline; + + function close() { + global.update.refreshLiveTimeline.value(); + console.log(player); + props.close(); + } + + return +
+ proj.name.set(e.target.value)} + label='Project name' + variant='filled' + /> + proj.framecount.set(Math.max(0, Number(e.target.value)))} + label='Frame count' + variant='filled' + type='number' + /> + proj.framerate.set(Math.max(0, Number(e.target.value)))} + label='Framerate' + variant='filled' + type='number' + />
; } @@ -776,10 +817,10 @@ function DefaultSettings() { var [previousSlideKeybinds, setPreviousSlideKeybinds] = useState(['Backspace', 'p']); var [showMenuKeybinds, setShowMenuKeybinds] = useState(['Escape', 'm']); - var [oscType, setOscType] = useState('FullScreen'); - var [projectSettingsOpen, setProjectSettingsOpen] = useState(false); + var proj = useHookstate(project).timeline; + return <> setProjectSettingsOpen(false)} />

Presentation settings

@@ -795,8 +836,9 @@ function DefaultSettings() {