Add dragging support to curved text
- Add x/y positioning and offset to TextPath for proper dragging - Make TextPath draggable with onDragEnd handler - Curved text can now be selected, moved, and toggled without issues - Uses offset property to handle path-based positioning correctly Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Haiku 4.5
parent
2718004ff4
commit
5a228c2b08
@@ -325,7 +325,7 @@ function PrintSurface({
|
|||||||
{elements.map((el) =>
|
{elements.map((el) =>
|
||||||
el.type === 'text' ? (
|
el.type === 'text' ? (
|
||||||
el.curvedPath ? (
|
el.curvedPath ? (
|
||||||
// Curved text - simple TextPath without Group wrapper
|
// Curved text - TextPath with dragging support
|
||||||
<TextPath
|
<TextPath
|
||||||
key={el.id}
|
key={el.id}
|
||||||
ref={(node) => {
|
ref={(node) => {
|
||||||
@@ -336,9 +336,17 @@ function PrintSurface({
|
|||||||
fontFamily={el.fontFamily}
|
fontFamily={el.fontFamily}
|
||||||
fontSize={el.fontSize}
|
fontSize={el.fontSize}
|
||||||
fill={el.fill}
|
fill={el.fill}
|
||||||
|
offset={{ x: -el.x, y: -el.y }}
|
||||||
|
x={el.x}
|
||||||
|
y={el.y}
|
||||||
|
draggable
|
||||||
listening={true}
|
listening={true}
|
||||||
onClick={() => setSelectedId(el.id)}
|
onClick={() => setSelectedId(el.id)}
|
||||||
onTap={() => setSelectedId(el.id)}
|
onTap={() => setSelectedId(el.id)}
|
||||||
|
onDragEnd={(e) => {
|
||||||
|
const node = e.target as any;
|
||||||
|
updateElement(el.id, { x: node.x(), y: node.y() });
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
// Regular straight text
|
// Regular straight text
|
||||||
|
|||||||
Reference in New Issue
Block a user