diff --git a/examples/vite-app/src/examples/CustomNode/index.tsx b/examples/vite-app/src/examples/CustomNode/index.tsx
index 72c58126..9c62f46a 100644
--- a/examples/vite-app/src/examples/CustomNode/index.tsx
+++ b/examples/vite-app/src/examples/CustomNode/index.tsx
@@ -11,6 +11,7 @@ import {
Connection,
useNodesState,
useEdgesState,
+ Background,
} from '@xyflow/react';
import ColorSelectorNode from './ColorSelectorNode';
@@ -133,7 +134,6 @@ const CustomNodeFlow = () => {
onNodeClick={onNodeClick}
onConnect={onConnect}
onNodeDragStop={onNodeDragStop}
- style={{ background: bgColor }}
onInit={onInit}
nodeTypes={nodeTypes}
connectionLineStyle={connectionLineStyle}
@@ -158,6 +158,7 @@ const CustomNodeFlow = () => {
}}
/>
+
);
};
diff --git a/package.json b/package.json
index be5c86ad..e9583c5d 100644
--- a/package.json
+++ b/package.json
@@ -22,17 +22,11 @@
"@changesets/cli": "^2.25.0",
"@typescript-eslint/eslint-plugin": "latest",
"@typescript-eslint/parser": "latest",
- "autoprefixer": "^10.4.8",
"concurrently": "^7.6.0",
"eslint": "^8.22.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.2.1",
"eslint-plugin-react": "latest",
- "postcss": "^8.4.21",
- "postcss-cli": "^10.1.0",
- "postcss-combine-duplicated-selectors": "^10.0.3",
- "postcss-import": "^15.1.0",
- "postcss-nested": "^6.0.0",
"prettier": "^2.7.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/packages/react/package.json b/packages/react/package.json
index dae94edf..1c3194d5 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -42,7 +42,7 @@
"scripts": {
"dev": "concurrently \"rollup --config node:@xyflow/rollup-config --watch\" pnpm:css-watch",
"build": "rollup --config node:@xyflow/rollup-config --environment NODE_ENV:production && npm run css",
- "css": "postcss src/styles/{base,style}.css --config ./../../tooling/postcss-config/postcss.config.js --dir dist",
+ "css": "postcss src/styles/{base,style}.css --config ./../../tooling/postcss-config/ --dir dist ",
"css-watch": "pnpm css --watch",
"lint": "eslint --ext .js,.jsx,.ts,.tsx src",
"typecheck": "tsc --noEmit"
@@ -70,6 +70,14 @@
"@xyflow/eslint-config": "workspace:*",
"@xyflow/rollup-config": "workspace:*",
"@xyflow/tsconfig": "workspace:*",
+ "autoprefixer": "^10.4.15",
+ "cssnano": "^6.0.1",
+ "postcss": "^8.4.21",
+ "postcss-cli": "^10.1.0",
+ "postcss-combine-duplicated-selectors": "^10.0.3",
+ "postcss-import": "^15.1.0",
+ "postcss-nested": "^6.0.0",
+ "postcss-rename": "^0.6.1",
"react": "^18.2.0",
"typescript": "5.1.3"
},
diff --git a/packages/react/src/additional-components/Background/Background.tsx b/packages/react/src/additional-components/Background/Background.tsx
index 31a280d0..73664f9f 100644
--- a/packages/react/src/additional-components/Background/Background.tsx
+++ b/packages/react/src/additional-components/Background/Background.tsx
@@ -1,4 +1,4 @@
-import { memo, useRef } from 'react';
+import { CSSProperties, memo, useRef } from 'react';
import cc from 'classcat';
import { shallow } from 'zustand/shallow';
@@ -6,12 +6,7 @@ import { useStore } from '../../hooks/useStore';
import { type ReactFlowState } from '../../types';
import { BackgroundProps, BackgroundVariant } from './types';
import { DotPattern, LinePattern } from './Patterns';
-
-const defaultColor = {
- [BackgroundVariant.Dots]: '#91919a',
- [BackgroundVariant.Lines]: '#eee',
- [BackgroundVariant.Cross]: '#e2e2e2',
-};
+import { containerStyle } from '../../styles/utils';
const defaultSize = {
[BackgroundVariant.Dots]: 1,
@@ -31,12 +26,13 @@ function Background({
lineWidth = 1,
offset = 2,
color,
+ bgColor,
style,
className,
+ patternClassName,
}: BackgroundProps) {
const ref = useRef(null);
const { transform, patternId } = useStore(selector, shallow);
- const patternColor = color || defaultColor[variant];
const patternSize = size || defaultSize[variant];
const isDots = variant === BackgroundVariant.Dots;
const isCross = variant === BackgroundVariant.Cross;
@@ -53,14 +49,14 @@ function Background({
return (
{/if}
-
-
diff --git a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte
index b271bbf8..cc9f4eb0 100644
--- a/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte
+++ b/packages/svelte/src/lib/components/EdgeWrapper/EdgeWrapper.svelte
@@ -89,10 +89,3 @@
markerEnd={markerEndUrl}
/>
-
-
diff --git a/packages/svelte/src/lib/components/Handle/Handle.svelte b/packages/svelte/src/lib/components/Handle/Handle.svelte
index f8cf43d3..84e50bce 100644
--- a/packages/svelte/src/lib/components/Handle/Handle.svelte
+++ b/packages/svelte/src/lib/components/Handle/Handle.svelte
@@ -93,6 +93,7 @@
class:connectablestart={isConnectableStart}
class:connectableend={isConnectableEnd}
class:connectable={isConnectable}
+ class:connectionindicator={isConnectable}
on:mousedown={onPointerDown}
on:touchstart={onPointerDown}
{style}
@@ -101,46 +102,3 @@
>
-
-
diff --git a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte
index 54913971..75025c30 100644
--- a/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte
+++ b/packages/svelte/src/lib/components/NodeWrapper/NodeWrapper.svelte
@@ -75,6 +75,8 @@
dispatchEvent('nodeclick');
}
+
+ // @todo: add selectable state
@@ -95,6 +97,7 @@
class:selected
class:draggable
class:connectable
+ class:selectable
class:parent={isParent}
style:z-index={zIndex}
style:transform="translate({positionOrigin?.x ?? 0}px, {positionOrigin?.y ?? 0}px)"
@@ -123,33 +126,3 @@
on:connectend
/>
-
-
diff --git a/packages/svelte/src/lib/components/Selection/Selection.svelte b/packages/svelte/src/lib/components/Selection/Selection.svelte
index 24755b3a..552c05ae 100644
--- a/packages/svelte/src/lib/components/Selection/Selection.svelte
+++ b/packages/svelte/src/lib/components/Selection/Selection.svelte
@@ -18,13 +18,5 @@
position: absolute;
top: 0;
left: 0;
- background: rgba(0, 89, 220, 0.08);
- border: 1px dotted rgba(0, 89, 220, 0.8);
- z-index: 6;
- }
-
- .svelte-flow__selection:focus,
- .svelte-flow__selection:focus-visible {
- outline: none;
}
diff --git a/packages/svelte/src/lib/container/EdgeRenderer/EdgeRenderer.svelte b/packages/svelte/src/lib/container/EdgeRenderer/EdgeRenderer.svelte
index 9563cf53..0658f47a 100644
--- a/packages/svelte/src/lib/container/EdgeRenderer/EdgeRenderer.svelte
+++ b/packages/svelte/src/lib/container/EdgeRenderer/EdgeRenderer.svelte
@@ -30,7 +30,5 @@
position: absolute;
top: 0;
left: 0;
- pointer-events: none;
- overflow: visible;
}
diff --git a/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte b/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte
index 154e5578..3d212dba 100644
--- a/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte
+++ b/packages/svelte/src/lib/container/NodeRenderer/NodeRenderer.svelte
@@ -79,7 +79,8 @@
.svelte-flow__nodes {
width: 100%;
height: 100%;
- pointer-events: none;
- transform-origin: 0 0;
+ position: absolute;
+ left: 0;
+ top: 0;
}
diff --git a/packages/svelte/src/lib/container/Pane/Pane.svelte b/packages/svelte/src/lib/container/Pane/Pane.svelte
index dc9772e7..d98fb106 100644
--- a/packages/svelte/src/lib/container/Pane/Pane.svelte
+++ b/packages/svelte/src/lib/container/Pane/Pane.svelte
@@ -203,20 +203,10 @@
diff --git a/packages/svelte/src/lib/container/Panel/Panel.svelte b/packages/svelte/src/lib/container/Panel/Panel.svelte
index 86b8aa35..e1629ccc 100644
--- a/packages/svelte/src/lib/container/Panel/Panel.svelte
+++ b/packages/svelte/src/lib/container/Panel/Panel.svelte
@@ -16,32 +16,3 @@
-
-
diff --git a/packages/svelte/src/lib/container/SvelteFlow/SvelteFlow.svelte b/packages/svelte/src/lib/container/SvelteFlow/SvelteFlow.svelte
index 1c475331..bb359302 100644
--- a/packages/svelte/src/lib/container/SvelteFlow/SvelteFlow.svelte
+++ b/packages/svelte/src/lib/container/SvelteFlow/SvelteFlow.svelte
@@ -175,25 +175,10 @@
background-color: var(--background-color, var(--background-color-default));
}
- .svelte-flow :global(.svelte-flow__node-default),
- .svelte-flow :global(.svelte-flow__node-input),
- .svelte-flow :global(.svelte-flow__node-output) {
- padding: 10px;
- }
-
- .svelte-flow__edgelabel-renderer {
- position: absolute;
- width: 100%;
- height: 100%;
- pointer-events: none;
- user-select: none;
- }
-
:root {
--background-color-default: #fff;
--background-pattern-color-default: #ddd;
- --minimap-background-color-default: #fff;
--minimap-mask-color-default: rgb(240, 240, 240, 0.6);
--minimap-mask-stroke-color-default: none;
--minimap-mask-stroke-width-default: 1;
@@ -203,18 +188,5 @@
--controls-button-color-default: inherit;
--controls-button-color-hover-default: inherit;
--controls-button-border-color-default: #eee;
-
- --edge-color-default: #cfcfcf;
- --edge-color-selected-default: #555;
-
- --node-color-default: inherit;
- --node-border-color-default: #1a192b;
- --node-background-color-default: #fff;
- --node-shadow-color-selected-default: #1a192b;
-
- --handle-background-color-default: #1a192b;
- --handle-border-color-default: #fff;
-
- --connection-line-color-default: #b1b1b7;
}
diff --git a/packages/svelte/src/lib/container/Viewport/Viewport.svelte b/packages/svelte/src/lib/container/Viewport/Viewport.svelte
index 11b864e6..2d331ba1 100644
--- a/packages/svelte/src/lib/container/Viewport/Viewport.svelte
+++ b/packages/svelte/src/lib/container/Viewport/Viewport.svelte
@@ -16,10 +16,7 @@
width: 100%;
height: 100%;
position: absolute;
- transform-origin: 0 0;
top: 0;
left: 0;
- z-index: 2;
- pointer-events: none;
}
diff --git a/packages/svelte/src/lib/plugins/Background/Background.svelte b/packages/svelte/src/lib/plugins/Background/Background.svelte
index c5bfec39..033cdb9f 100644
--- a/packages/svelte/src/lib/plugins/Background/Background.svelte
+++ b/packages/svelte/src/lib/plugins/Background/Background.svelte
@@ -22,6 +22,7 @@
export let lineWidth: $$Props['lineWidth'] = 1;
export let bgColor: $$Props['bgColor'] = undefined;
export let patternColor: $$Props['patternColor'] = undefined;
+ export let patternClassName: $$Props['patternClassName'] = undefined;
let className: $$Props['class'] = '';
export { className as class };
@@ -44,6 +45,7 @@
class={cc(['svelte-flow__background', className])}
data-testid="svelte-flow__background"
style:--background-color-props={bgColor}
+ style:--pattern-color-props={patternColor}
>
{#if isDots}
-
+
{:else}
-
+
{/if}
@@ -70,8 +72,5 @@
height: 100%;
top: 0;
left: 0;
- pointer-events: none;
- z-index: -1;
- background-color: var(--background-color-props, 'transparent');
}
diff --git a/packages/svelte/src/lib/plugins/Background/DotPattern.svelte b/packages/svelte/src/lib/plugins/Background/DotPattern.svelte
index 474e555c..1951a3d2 100644
--- a/packages/svelte/src/lib/plugins/Background/DotPattern.svelte
+++ b/packages/svelte/src/lib/plugins/Background/DotPattern.svelte
@@ -1,15 +1,14 @@
-
-
-
+
diff --git a/packages/svelte/src/lib/plugins/Background/LinePattern.svelte b/packages/svelte/src/lib/plugins/Background/LinePattern.svelte
index 16d72071..6ef75599 100644
--- a/packages/svelte/src/lib/plugins/Background/LinePattern.svelte
+++ b/packages/svelte/src/lib/plugins/Background/LinePattern.svelte
@@ -1,20 +1,16 @@
-
-
diff --git a/packages/svelte/src/lib/plugins/Background/types.ts b/packages/svelte/src/lib/plugins/Background/types.ts
index 6f44057d..d0935b4c 100644
--- a/packages/svelte/src/lib/plugins/Background/types.ts
+++ b/packages/svelte/src/lib/plugins/Background/types.ts
@@ -7,6 +7,7 @@ export enum BackgroundVariant {
export type BackgroundProps = {
bgColor?: string;
patternColor?: string;
+ patternClassName?: string;
class?: string;
gap?: number | [number, number];
size?: number;
diff --git a/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte b/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte
index 0fd3dc09..bd73ee30 100644
--- a/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte
+++ b/packages/svelte/src/lib/plugins/Controls/ControlButton.svelte
@@ -24,59 +24,3 @@
>
-
-
diff --git a/packages/svelte/src/routes/overview/+page.svelte b/packages/svelte/src/routes/overview/+page.svelte
index 9285f50f..d8ac5982 100644
--- a/packages/svelte/src/routes/overview/+page.svelte
+++ b/packages/svelte/src/routes/overview/+page.svelte
@@ -12,8 +12,10 @@
type EdgeTypes
} from '../../lib/index';
- import { CustomNode } from './CustomNode';
- import { CustomEdge } from './CustomEdge';
+ import CustomNode from './CustomNode.svelte';
+ import CustomEdge from './CustomEdge.svelte';
+
+ import '../../styles/style.css';
const nodeTypes: NodeTypes = {
custom: CustomNode
diff --git a/packages/svelte/src/routes/overview/CustomEdge/Custom.svelte b/packages/svelte/src/routes/overview/CustomEdge.svelte
similarity index 97%
rename from packages/svelte/src/routes/overview/CustomEdge/Custom.svelte
rename to packages/svelte/src/routes/overview/CustomEdge.svelte
index b858b453..692961d6 100644
--- a/packages/svelte/src/routes/overview/CustomEdge/Custom.svelte
+++ b/packages/svelte/src/routes/overview/CustomEdge.svelte
@@ -5,7 +5,7 @@
useSvelteFlow,
type EdgeProps,
getBezierPath
- } from '../../../lib/index';
+ } from '../../lib/index';
type $$Props = EdgeProps;
diff --git a/packages/svelte/src/routes/overview/CustomEdge/index.ts b/packages/svelte/src/routes/overview/CustomEdge/index.ts
deleted file mode 100644
index 6e7bab0a..00000000
--- a/packages/svelte/src/routes/overview/CustomEdge/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export { default as CustomEdge } from './Custom.svelte';
diff --git a/packages/svelte/src/routes/overview/CustomNode/Custom.svelte b/packages/svelte/src/routes/overview/CustomNode.svelte
similarity index 89%
rename from packages/svelte/src/routes/overview/CustomNode/Custom.svelte
rename to packages/svelte/src/routes/overview/CustomNode.svelte
index e636cdfe..91115e5c 100644
--- a/packages/svelte/src/routes/overview/CustomNode/Custom.svelte
+++ b/packages/svelte/src/routes/overview/CustomNode.svelte
@@ -1,5 +1,5 @@