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" }) } const [_, forceUpdate] = useReducer(x => x + 1, 0); switch (dialog.action) { case 'extrude': return <> ref.current.value *= -1} /> dispatch({ type: "clear-dialog" })} /> case 'sketch': return <> { if (sc.activeSketch.hasChanged || sc.activeSketch.idOnActivate != id) { // for (let k in sc.store.getState().treeEntries.tree[sc.activeSketch.obj3d.name]) { // console.log('circlllles',k) // } sc.refreshNode(sc.activeSketch.obj3d.name) } // dispatch({ type: 'update-descendents', sketch}) sc.activeSketch.deactivate() sc.render() dispatch({ type: "clear-dialog" }) }} /> { console.log('cancle',sc.activeSketch.hasChanged, sc.activeSketch.idOnActivate, id) if (sc.activeSketch.hasChanged || sc.activeSketch.idOnActivate != id) { console.log('has changed') dispatch({ type: "cancel-sketch" }) } sc.activeSketch.deactivate() sc.render() dispatch({ type: "clear-dialog" }) } } /> default: return null } }