diff --git a/.changeset/flow-disable-canvas-panning.md b/.changeset/flow-disable-canvas-panning.md new file mode 100644 index 0000000000..1015e13ecf --- /dev/null +++ b/.changeset/flow-disable-canvas-panning.md @@ -0,0 +1,5 @@ +--- +"@cloudflare/kumo": patch +--- + +fix(flow): disable panning, drag cursors, and text-selection blocking when `canvas={false}` diff --git a/.opencode/package-lock.json b/.opencode/package-lock.json index 258c5c979c..abded7b2ac 100644 --- a/.opencode/package-lock.json +++ b/.opencode/package-lock.json @@ -5,16 +5,16 @@ "packages": { "": { "dependencies": { - "@opencode-ai/plugin": "1.4.0" + "@opencode-ai/plugin": "1.4.3" } }, "node_modules/@opencode-ai/plugin": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@opencode-ai/plugin/-/plugin-1.4.0.tgz", - "integrity": "sha512-VFIff6LHp/RVaJdrK3EQ1ijx0K1tV5i1DY5YJ+pRqwC6trunPHbvqSN0GHSTZX39RdnSc+XuzCTZQCy1W2qNOg==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@opencode-ai/plugin/-/plugin-1.4.3.tgz", + "integrity": "sha512-Ob/3tVSIeuMRJBr2O23RtrnC5djRe01Lglx+TwGEmjrH9yDBJ2tftegYLnNEjRoMuzITgq9LD8168p4pzv+U/A==", "license": "MIT", "dependencies": { - "@opencode-ai/sdk": "1.4.0", + "@opencode-ai/sdk": "1.4.3", "zod": "4.1.8" }, "peerDependencies": { @@ -31,9 +31,9 @@ } }, "node_modules/@opencode-ai/sdk": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@opencode-ai/sdk/-/sdk-1.4.0.tgz", - "integrity": "sha512-mfa3MzhqNM+Az4bgPDDXL3NdG+aYOHClXmT6/4qLxf2ulyfPpMNHqb9Dfmo4D8UfmrDsPuJHmbune73/nUQnuw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@opencode-ai/sdk/-/sdk-1.4.3.tgz", + "integrity": "sha512-X0CAVbwoGAjTY2iecpWkx2B+GAa2jSaQKYpJ+xILopeF/OGKZUN15mjqci+L7cEuwLHV5wk3x2TStUOVCa5p0A==", "license": "MIT", "dependencies": { "cross-spawn": "7.0.6" diff --git a/packages/kumo-docs-astro/src/components/demos/FlowDemo.tsx b/packages/kumo-docs-astro/src/components/demos/FlowDemo.tsx index 0b0cee0761..1aec59cdc5 100644 --- a/packages/kumo-docs-astro/src/components/demos/FlowDemo.tsx +++ b/packages/kumo-docs-astro/src/components/demos/FlowDemo.tsx @@ -1,5 +1,6 @@ import { forwardRef, useState } from "react"; import { Flow } from "@cloudflare/kumo"; +import { ShikiProvider, CodeHighlighted } from "@cloudflare/kumo/code"; import { CaretDownIcon, SidebarSimpleIcon } from "@phosphor-icons/react"; const ExpandableNode = forwardRef< @@ -62,7 +63,9 @@ export function FlowParallelDemo() { export function FlowCustomContentDemo() { return ( - } /> + } + /> @@ -133,7 +136,9 @@ export function FlowAnchorDemo() { export function FlowCenteredDemo() { return ( - } /> + } + /> my-worker + + Receive Request + +
+ Handler +
+ + + } + /> + Return Response +
+ + ); +} + /** Flow diagram with expandable nodes in a parallel group */ export function FlowExpandableDemo() { return ( diff --git a/packages/kumo-docs-astro/src/pages/tests/flow.astro b/packages/kumo-docs-astro/src/pages/tests/flow.astro index 5165aaf14d..1f5e91f7ec 100644 --- a/packages/kumo-docs-astro/src/pages/tests/flow.astro +++ b/packages/kumo-docs-astro/src/pages/tests/flow.astro @@ -13,6 +13,7 @@ import { FlowParallelNestedListDemo, FlowSequentialParallelDemo, FlowExpandableDemo, + FlowWithCodeBlockDemo, } from "../../components/demos/FlowDemo"; --- @@ -138,5 +139,18 @@ import { + +
+

+ FlowWithCodeBlockDemo +

+

+ Flow diagram with a code block node — verifies syntax highlighting works + inside a flow node (canvas disabled) +

+
+ +
+
diff --git a/packages/kumo/src/components/flow/diagram.tsx b/packages/kumo/src/components/flow/diagram.tsx index ae519d6b20..f2557ad55f 100644 --- a/packages/kumo/src/components/flow/diagram.tsx +++ b/packages/kumo/src/components/flow/diagram.tsx @@ -288,11 +288,11 @@ export function FlowDiagram({ paddingBottom: padding.y, paddingLeft: padding.x, paddingRight: padding.x, - cursor: canPan && !isPanning ? "grab" : undefined, + cursor: canvas && canPan && !isPanning ? "grab" : undefined, }} - onPanStart={handlePanStart} - onPan={handlePan} - onPanEnd={handlePanEnd} + onPanStart={canvas ? handlePanStart : undefined} + onPan={canvas ? handlePan : undefined} + onPanEnd={canvas ? handlePanEnd : undefined} >