snapshot of https://github.com/tldraw/tldraw.git (main, 2026-09-23; blobs > 131072B omitted)
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
Some checks failed
Deploy analytics worker / Deploy analytics worker to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
i18n upload strings / Upload latest strings (push) Failing after 1s
Deploy bemo / Deploy bemo to ${{ (github.ref == 'refs/heads/bemo-production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Failing after 1s
Deploy grafana resources / ${{ github.event_name == 'push' && 'Deploy grafana resources' || 'Validate grafana resources (dry run)' }} (push) Failing after 0s
End to end tests (dotcom) / Check for relevant changes (push) Failing after 0s
End to end tests (examples) / Check for relevant changes (push) Failing after 0s
End to end tests (mermaid readability) / Check for relevant changes (push) Failing after 1s
End to end tests (perf) / Check for relevant changes (push) Failing after 0s
Publish editor extensions / Publish editor extensions (push) Failing after 1s
Publish SDK packages / Remove the publish-packages label (push) Has been skipped
Checks / Tests & checks (push) Has been cancelled
Checks / Build all projects (push) Has been cancelled
Deploy templates / Deploy templates (push) Has been cancelled
End to end tests (dotcom) / End to end tests (dotcom) (push) Has been cancelled
End to end tests (mermaid readability) / End to end tests (mermaid readability) (push) Has been cancelled
End to end tests (perf) / End to end tests (perf) (push) Has been cancelled
Deploy .com / Deploy dotcom to ${{ (github.ref == 'refs/heads/production' && 'production') || (github.ref == 'refs/heads/main' && 'staging') || 'preview' }} (push) Has been cancelled
End to end tests (examples) / End to end tests (examples) (push) Has been cancelled
Publish SDK packages / Publish SDK packages (push) Has been cancelled
Publish SDK packages / Tell user released version (push) Has been cancelled
Publish SDK packages / Publishes code templates to separate repositories (push) Has been cancelled
Publish SDK packages / Deploys the template demos with the new SDK version (push) Has been cancelled
This commit is contained in:
131
templates/branching-chat/client/components/WorkflowToolbar.tsx
Normal file
131
templates/branching-chat/client/components/WorkflowToolbar.tsx
Normal file
@@ -0,0 +1,131 @@
|
||||
import {
|
||||
AssetToolbarItem,
|
||||
CheckBoxToolbarItem,
|
||||
CloudToolbarItem,
|
||||
createShapeId,
|
||||
DefaultToolbar,
|
||||
DiamondToolbarItem,
|
||||
DrawToolbarItem,
|
||||
Editor,
|
||||
EllipseToolbarItem,
|
||||
HandToolbarItem,
|
||||
HeartToolbarItem,
|
||||
HexagonToolbarItem,
|
||||
HighlightToolbarItem,
|
||||
LaserToolbarItem,
|
||||
NoteToolbarItem,
|
||||
onDragFromToolbarToCreateShape,
|
||||
OvalToolbarItem,
|
||||
RectangleToolbarItem,
|
||||
RhombusToolbarItem,
|
||||
SelectToolbarItem,
|
||||
StarToolbarItem,
|
||||
TextToolbarItem,
|
||||
TldrawUiMenuGroup,
|
||||
TLShapeId,
|
||||
TLUiOverrides,
|
||||
ToolbarItem,
|
||||
TriangleToolbarItem,
|
||||
Vec,
|
||||
XBoxToolbarItem,
|
||||
} from 'tldraw'
|
||||
import { NodeShape } from '../nodes/NodeShapeUtil'
|
||||
import { getNodeDefinitions, NodeType } from '../nodes/nodeTypes'
|
||||
|
||||
function createNodeShape(editor: Editor, shapeId: TLShapeId, center: Vec, node: NodeType) {
|
||||
// Mark a history stopping point for undo/redo
|
||||
editor.markHistoryStoppingPoint('create node')
|
||||
|
||||
editor.run(() => {
|
||||
// Create the shape with the node definition
|
||||
editor.createShape({
|
||||
id: shapeId,
|
||||
type: 'node',
|
||||
props: { node },
|
||||
})
|
||||
|
||||
// Get the created shape and its bounds
|
||||
const shape = editor.getShape<NodeShape>(shapeId)!
|
||||
const shapeBounds = editor.getShapePageBounds(shapeId)!
|
||||
|
||||
// Position the shape so its center aligns with the drop point
|
||||
editor.updateShape({
|
||||
...shape,
|
||||
x: center.x - shapeBounds.width / 2,
|
||||
y: center.y - shapeBounds.height / 2,
|
||||
})
|
||||
|
||||
// Select the newly created shape
|
||||
editor.select(shapeId)
|
||||
})
|
||||
}
|
||||
|
||||
export const overrides: TLUiOverrides = {
|
||||
tools: (editor, tools, _) => {
|
||||
for (const nodeDef of Object.values(getNodeDefinitions(editor))) {
|
||||
tools[`node-${nodeDef.type}`] = {
|
||||
id: `node-${nodeDef.type}`,
|
||||
label: nodeDef.title,
|
||||
icon: nodeDef.icon,
|
||||
onSelect: () => {
|
||||
createNodeShape(
|
||||
editor,
|
||||
createShapeId(),
|
||||
editor.getViewportPageBounds().center,
|
||||
nodeDef.getDefault()
|
||||
)
|
||||
},
|
||||
onDragStart: (_, info) => {
|
||||
onDragFromToolbarToCreateShape(editor, info, {
|
||||
createShape: (id) => {
|
||||
editor.createShape({
|
||||
id,
|
||||
type: 'node',
|
||||
props: { node: nodeDef.getDefault() },
|
||||
})
|
||||
},
|
||||
onDragEnd: () => {},
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
return tools
|
||||
},
|
||||
}
|
||||
|
||||
export function WorkflowToolbar() {
|
||||
return (
|
||||
<DefaultToolbar orientation="vertical" maxItems={7}>
|
||||
<TldrawUiMenuGroup id="selection">
|
||||
<SelectToolbarItem />
|
||||
<HandToolbarItem />
|
||||
<DrawToolbarItem />
|
||||
</TldrawUiMenuGroup>
|
||||
<TldrawUiMenuGroup id="nodes">
|
||||
<ToolbarItem tool="node-message" />
|
||||
</TldrawUiMenuGroup>
|
||||
<TldrawUiMenuGroup id="shapes">
|
||||
<RectangleToolbarItem />
|
||||
<EllipseToolbarItem />
|
||||
<TriangleToolbarItem />
|
||||
<NoteToolbarItem />
|
||||
|
||||
<DiamondToolbarItem />
|
||||
<HexagonToolbarItem />
|
||||
<OvalToolbarItem />
|
||||
<RhombusToolbarItem />
|
||||
|
||||
<StarToolbarItem />
|
||||
<CloudToolbarItem />
|
||||
<HeartToolbarItem />
|
||||
<XBoxToolbarItem />
|
||||
|
||||
<CheckBoxToolbarItem />
|
||||
<TextToolbarItem />
|
||||
<AssetToolbarItem />
|
||||
<HighlightToolbarItem />
|
||||
<LaserToolbarItem />
|
||||
</TldrawUiMenuGroup>
|
||||
</DefaultToolbar>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user