removed defaultNodeOptions again
This commit is contained in:
@@ -52,7 +52,7 @@
|
|||||||
z: zIndex = 0,
|
z: zIndex = 0,
|
||||||
positionAbsolute: { x: positionX, y: positionY }
|
positionAbsolute: { x: positionX, y: positionY }
|
||||||
}
|
}
|
||||||
} = $derived(store.defaultNodeOptions ? { ...store.defaultNodeOptions, ...node } : node);
|
} = $derived(node);
|
||||||
|
|
||||||
let { id } = node;
|
let { id } = node;
|
||||||
|
|
||||||
|
|||||||
@@ -122,12 +122,12 @@
|
|||||||
if (!isSelecting || !containerBounds || !store.selectionRect) {
|
if (!isSelecting || !containerBounds || !store.selectionRect) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const start = performance.now();
|
|
||||||
selectionInProgress = true;
|
selectionInProgress = true;
|
||||||
|
|
||||||
const mousePos = getEventPosition(event, containerBounds);
|
const mousePos = getEventPosition(event, containerBounds);
|
||||||
const startX = store.selectionRect.startX ?? 0;
|
const { startX = 0, startY = 0 } = store.selectionRect;
|
||||||
const startY = store.selectionRect.startY ?? 0;
|
|
||||||
const nextUserSelectRect = {
|
const nextUserSelectRect = {
|
||||||
...store.selectionRect,
|
...store.selectionRect,
|
||||||
x: mousePos.x < startX ? mousePos.x : startX,
|
x: mousePos.x < startX ? mousePos.x : startX,
|
||||||
@@ -145,8 +145,7 @@
|
|||||||
nextUserSelectRect,
|
nextUserSelectRect,
|
||||||
[store.viewport.x, store.viewport.y, store.viewport.zoom],
|
[store.viewport.x, store.viewport.y, store.viewport.zoom],
|
||||||
store.selectionMode === SelectionMode.Partial,
|
store.selectionMode === SelectionMode.Partial,
|
||||||
true,
|
true
|
||||||
store.defaultNodeOptions.selectable
|
|
||||||
).map((n) => n.id)
|
).map((n) => n.id)
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -174,9 +173,6 @@
|
|||||||
|
|
||||||
store.selectionRectMode = 'user';
|
store.selectionRectMode = 'user';
|
||||||
store.selectionRect = nextUserSelectRect;
|
store.selectionRect = nextUserSelectRect;
|
||||||
|
|
||||||
const end = performance.now();
|
|
||||||
// console.log('onPointerMove', end - start);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function onPointerUp(event: PointerEvent) {
|
function onPointerUp(event: PointerEvent) {
|
||||||
|
|||||||
@@ -32,8 +32,7 @@ import type {
|
|||||||
OnDelete,
|
OnDelete,
|
||||||
OnEdgeCreate,
|
OnEdgeCreate,
|
||||||
OnBeforeDelete,
|
OnBeforeDelete,
|
||||||
IsValidConnection,
|
IsValidConnection
|
||||||
DefaultNodeOptions
|
|
||||||
} from '$lib/types';
|
} from '$lib/types';
|
||||||
|
|
||||||
import type { Snippet } from 'svelte';
|
import type { Snippet } from 'svelte';
|
||||||
@@ -303,22 +302,6 @@ export type SvelteFlowProps = NodeEvents &
|
|||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
defaultEdgeOptions?: DefaultEdgeOptions;
|
defaultEdgeOptions?: DefaultEdgeOptions;
|
||||||
/** Defaults to be applied to all new nodes that are added to the flow.
|
|
||||||
*
|
|
||||||
* Properties on a new nodes will override these defaults if they exist.
|
|
||||||
* @example
|
|
||||||
* const defaultNodeOptions = {
|
|
||||||
* type: 'customNodeType',
|
|
||||||
* position: {x: 0, y: 0}
|
|
||||||
* data: { label: 'custom label' },
|
|
||||||
* hidden: false,
|
|
||||||
* deletable: true,
|
|
||||||
* selected: false,
|
|
||||||
* focusable: true,
|
|
||||||
* zIndex: 12,
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
defaultNodeOptions?: DefaultNodeOptions;
|
|
||||||
/** Sets a fixed width for the flow */
|
/** Sets a fixed width for the flow */
|
||||||
width?: number;
|
width?: number;
|
||||||
/** Sets a fixed height for the flow */
|
/** Sets a fixed height for the flow */
|
||||||
|
|||||||
@@ -52,14 +52,7 @@ export type {
|
|||||||
DefaultEdgeOptions
|
DefaultEdgeOptions
|
||||||
} from '$lib/types/edges';
|
} from '$lib/types/edges';
|
||||||
export type { HandleProps, FitViewOptions } from '$lib/types/general';
|
export type { HandleProps, FitViewOptions } from '$lib/types/general';
|
||||||
export type {
|
export type { Node, NodeTypes, BuiltInNode, NodeProps, InternalNode } from '$lib/types/nodes';
|
||||||
Node,
|
|
||||||
NodeTypes,
|
|
||||||
DefaultNodeOptions,
|
|
||||||
BuiltInNode,
|
|
||||||
NodeProps,
|
|
||||||
InternalNode
|
|
||||||
} from '$lib/types/nodes';
|
|
||||||
export type { SvelteFlowStore } from '$lib/store/types';
|
export type { SvelteFlowStore } from '$lib/store/types';
|
||||||
|
|
||||||
// system types
|
// system types
|
||||||
|
|||||||
@@ -169,7 +169,6 @@ export const getInitialStore = (signals: StoreSignals) => {
|
|||||||
translateExtent: CoordinateExtent = $derived(signals.props.translateExtent ?? infiniteExtent);
|
translateExtent: CoordinateExtent = $derived(signals.props.translateExtent ?? infiniteExtent);
|
||||||
|
|
||||||
defaultEdgeOptions: Partial<Edge> = $derived(signals.props.defaultEdgeOptions ?? {});
|
defaultEdgeOptions: Partial<Edge> = $derived(signals.props.defaultEdgeOptions ?? {});
|
||||||
defaultNodeOptions: Partial<Node> = $derived(signals.props.defaultNodeOptions ?? {});
|
|
||||||
|
|
||||||
nodeDragThreshold: number = $derived(signals.props.nodeDragThreshold ?? 1);
|
nodeDragThreshold: number = $derived(signals.props.nodeDragThreshold ?? 1);
|
||||||
autoPanOnNodeDrag: boolean = $derived(signals.props.autoPanOnNodeDrag ?? true);
|
autoPanOnNodeDrag: boolean = $derived(signals.props.autoPanOnNodeDrag ?? true);
|
||||||
|
|||||||
@@ -40,21 +40,6 @@ export type NodeTypes = Record<
|
|||||||
>
|
>
|
||||||
>;
|
>;
|
||||||
|
|
||||||
// TODO: we should be more selective about this but otherwise good to go
|
|
||||||
export type DefaultNodeOptions = Partial<Omit<Node, 'id'>>;
|
|
||||||
|
|
||||||
export type BuiltInNode =
|
export type BuiltInNode =
|
||||||
| Node<{ label: string }, 'input' | 'output' | 'default'>
|
| Node<{ label: string }, 'input' | 'output' | 'default'>
|
||||||
| Node<Record<string, never>, 'group'>;
|
| Node<Record<string, never>, 'group'>;
|
||||||
|
|
||||||
// TODO SVELTE5 remove this
|
|
||||||
export type NodeEventMap = {
|
|
||||||
nodeclick: { node: Node; event: MouseEvent | TouchEvent };
|
|
||||||
nodecontextmenu: { node: Node; event: MouseEvent | TouchEvent };
|
|
||||||
nodedrag: { targetNode: Node | null; nodes: Node[]; event: MouseEvent | TouchEvent };
|
|
||||||
nodedragstart: { targetNode: Node | null; nodes: Node[]; event: MouseEvent | TouchEvent };
|
|
||||||
nodedragstop: { targetNode: Node | null; nodes: Node[]; event: MouseEvent | TouchEvent };
|
|
||||||
nodemouseenter: { node: Node; event: MouseEvent | TouchEvent };
|
|
||||||
nodemouseleave: { node: Node; event: MouseEvent | TouchEvent };
|
|
||||||
nodemousemove: { node: Node; event: MouseEvent | TouchEvent };
|
|
||||||
};
|
|
||||||
|
|||||||
@@ -202,8 +202,7 @@ export const getNodesInside = <NodeType extends NodeBase = NodeBase>(
|
|||||||
[tx, ty, tScale]: Transform = [0, 0, 1],
|
[tx, ty, tScale]: Transform = [0, 0, 1],
|
||||||
partially = false,
|
partially = false,
|
||||||
// set excludeNonSelectableNodes if you want to pay attention to the nodes "selectable" attribute
|
// set excludeNonSelectableNodes if you want to pay attention to the nodes "selectable" attribute
|
||||||
excludeNonSelectableNodes = false,
|
excludeNonSelectableNodes = false
|
||||||
defaultNodeSelectable: boolean = true
|
|
||||||
): InternalNodeBase<NodeType>[] => {
|
): InternalNodeBase<NodeType>[] => {
|
||||||
const paneRect = {
|
const paneRect = {
|
||||||
...pointToRendererPoint(rect, [tx, ty, tScale]),
|
...pointToRendererPoint(rect, [tx, ty, tScale]),
|
||||||
@@ -214,7 +213,7 @@ export const getNodesInside = <NodeType extends NodeBase = NodeBase>(
|
|||||||
const visibleNodes: InternalNodeBase<NodeType>[] = [];
|
const visibleNodes: InternalNodeBase<NodeType>[] = [];
|
||||||
|
|
||||||
for (const node of nodes.values()) {
|
for (const node of nodes.values()) {
|
||||||
const { measured, selectable = defaultNodeSelectable, hidden = false } = node;
|
const { measured, selectable = true, hidden = false } = node;
|
||||||
|
|
||||||
if ((excludeNonSelectableNodes && !selectable) || hidden) {
|
if ((excludeNonSelectableNodes && !selectable) || hidden) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
Reference in New Issue
Block a user