Skip to content

Commit dd5f955

Browse files
zachelnetDeepSeek V4
andcommitted
fix(ui): guard slider against non-numeric draft, use onPointerUp
- Range slider value now only uses rotationDraft when it parses to a finite number; otherwise falls back to the selected node's rotation. Prevents React warnings from passing "-" to type=range. - Changed onMouseUp to onPointerUp so the slider commit also fires on touch devices. Co-authored-by: DeepSeek V4 <deepseek@v4.ai>
1 parent 1449792 commit dd5f955

1 file changed

Lines changed: 20 additions & 11 deletions

File tree

ui/components/panels/RenderControlsPanel.tsx

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -352,15 +352,20 @@ export function RenderControlsPanel() {
352352
}
353353

354354
const updateSelectedRotation = async (value: number) => {
355-
if (!page || !selectedNode) return
356-
await applyOp(
357-
ops.updateNode(page.id, selectedNode.id, {
358-
transform: {
359-
...selectedNode.transform,
360-
rotationDeg: clampRotationDeg(value),
361-
},
362-
}),
363-
)
355+
if (!page || selectedNodes.length === 0) return
356+
const deg = clampRotationDeg(value)
357+
const buildOp = (n: TextNodeEntry) =>
358+
ops.updateNode(page.id, n.id, {
359+
transform: { ...n.transform, rotationDeg: deg },
360+
})
361+
const op =
362+
selectedNodes.length === 1
363+
? buildOp(selectedNodes[0])
364+
: ops.batch(
365+
'Multi-block rotation',
366+
selectedNodes.map((n) => buildOp(n)),
367+
)
368+
await applyOp(op)
364369
queueAutoRender(page.id)
365370
}
366371

@@ -829,11 +834,15 @@ export function RenderControlsPanel() {
829834
max={String(MAX_ROTATION_DEG)}
830835
step='1'
831836
disabled={!selectedNode}
832-
value={rotationDraft ?? String(selectedNode?.transform.rotationDeg ?? 0)}
837+
value={
838+
rotationDraft != null && Number.isFinite(Number.parseFloat(rotationDraft))
839+
? String(clampRotationDeg(Number.parseFloat(rotationDraft)))
840+
: String(selectedNode?.transform.rotationDeg ?? 0)
841+
}
833842
onChange={(event) => {
834843
setRotationDraft(event.target.value)
835844
}}
836-
onMouseUp={() => {
845+
onPointerUp={() => {
837846
if (rotationDraft == null) return
838847
const parsed = Number.parseFloat(rotationDraft)
839848
setRotationDraft(null)

0 commit comments

Comments
 (0)