1 line
2.6 KiB
JavaScript
1 line
2.6 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,958753,e=>{"use strict";var t=e.i(104228);e.s(["useInteractionScope",()=>t.default])},322892,e=>{"use strict";var t=e.i(843476);e.i(958123);var r=e.i(787542),i=e.i(788398),n=e.i(440457),a=e.i(34731);e.i(818350);var o=e.i(66756),s=e.i(647327),u=e.i(709151),c=e.i(127541),l=e.i(958753);e.i(592888);var S=e.i(810741),d=e.i(271645);let g=({node:e})=>{let g=(0,d.useRef)(Date.now()),p=(0,d.useRef)((0,i.getClampedWallCurveOffset)(e)),f=(0,d.useRef)(null),m=(0,d.useRef)(p.current),v=(0,i.getWallMidpointHandlePoint)(e),[y,C]=(0,d.useState)([v.x,0,v.y]),h=(0,d.useCallback)(()=>{l.useInteractionScope.getState().endIf(e=>"reshaping"===e.kind&&"curve"===e.reshape)},[]);return(0,d.useEffect)(()=>{let t=e.id,o=p.current,l=(0,i.getWallChordFrame)(e),d=(0,i.getMaxWallCurveOffset)(e);(0,n.pauseSceneHistory)(a.useScene);let v=!1,y=()=>{m.current!==o&&(m.current=o,a.useScene.getState().updateNode(t,{curveOffset:o}),a.useScene.getState().markDirty(t))},x=r=>{let n=(0,s.getSegmentGridStep)(),o=(0,s.snapScalarToGrid)(r.localPosition[0],n),u=(0,s.snapScalarToGrid)(r.localPosition[2],n),S=-((o-l.midpoint.x)*l.normal.x+(u-l.midpoint.y)*l.normal.y),g=(0,s.snapScalarToGrid)(S,n),p=(0,i.normalizeWallCurveOffset)(e,Math.max(-d,Math.min(d,g)));null!==f.current&&p!==f.current&&(0,c.triggerSFX)("sfx:grid-snap"),f.current=p,(r=>{if(m.current===r)return;m.current=r;let n={...e,curveOffset:r},o=(0,i.getWallMidpointHandlePoint)(n);C([o.x,0,o.y]),a.useScene.getState().updateNode(t,{curveOffset:r}),a.useScene.getState().markDirty(t)})(p)},T=e=>{if(Date.now()-g.current<150)return void e.nativeEvent?.stopPropagation?.();let r=m.current;v=!0,r!==o&&(a.useScene.getState().updateNode(t,{curveOffset:o}),a.useScene.getState().markDirty(t),(0,n.resumeSceneHistory)(a.useScene),a.useScene.getState().updateNode(t,{curveOffset:r}),a.useScene.getState().markDirty(t),(0,n.pauseSceneHistory)(a.useScene)),(0,c.triggerSFX)("sfx:item-place"),S.useViewer.getState().setSelection({selectedIds:[t]}),h(),e.nativeEvent?.stopPropagation?.()},k=()=>{y(),S.useViewer.getState().setSelection({selectedIds:[t]}),(0,n.resumeSceneHistory)(a.useScene),(0,u.markToolCancelConsumed)(),h()};return r.emitter.on("grid:move",x),r.emitter.on("grid:click",T),r.emitter.on("tool:cancel",k),()=>{v||y(),(0,n.resumeSceneHistory)(a.useScene),r.emitter.off("grid:move",x),r.emitter.off("grid:click",T),r.emitter.off("tool:cancel",k)}},[h,e]),(0,t.jsx)("group",{children:(0,t.jsx)(o.CursorSphere,{position:y,showTooltip:!1})})};e.s(["CurveFenceTool",0,g,"default",0,g])}]); |