import React, { useEffect, useReducer, useRef, useState } from 'react'; import { useDispatch, useSelector } from 'react-redux' import { MdDone, MdClose } from 'react-icons/md' import * as Icon from "./icons"; export const Dialog = () => { const dialog = useSelector(state => state.ui.dialog) const dispatch = useDispatch() const ref = useRef() useEffect(() => { if (!ref.current) return ref.current.focus() }, [dialog]) const extrude = () => { sc.extrude(dialog.target, ref.current.value) sc.render() dispatch({ type: "clear-dialog" }) forceUpdate() } const [_, forceUpdate] = useReducer(x => x + 1, 0); switch (dialog.action) { case 'extrude': return <> ref.current.value *= -1} /> dispatch({ type: "clear-dialog" })} /> case 'sketch': return <> { // dispatch({ type: 'update-descendents', sketch}) sc.activeSketch.deactivate() sc.render() forceUpdate() }} /> dispatch({ type: "clear-dialog" })} /> default: return null } }