fixed node bounds calculations if it is an internal node
This commit is contained in:
@@ -17,7 +17,8 @@ import {
|
||||
nodeHasDimensions,
|
||||
nodeToBox,
|
||||
getBoundsOfBoxes,
|
||||
boxToRect
|
||||
boxToRect,
|
||||
isInternalNodeBase
|
||||
} from '@xyflow/system';
|
||||
|
||||
import { useStore } from '$lib/store';
|
||||
@@ -240,7 +241,7 @@ export function useSvelteFlow(): {
|
||||
*
|
||||
* @returns the bounds of the given nodes
|
||||
*/
|
||||
getNodesBounds: (nodes: (Node | string)[]) => Rect;
|
||||
getNodesBounds: (nodes: (Node | InternalNode | string)[]) => Rect;
|
||||
} {
|
||||
const {
|
||||
zoomIn,
|
||||
@@ -532,7 +533,7 @@ export function useSvelteFlow(): {
|
||||
const internalNode =
|
||||
typeof node === 'string'
|
||||
? _nodeLookup.get(node)
|
||||
: node.parentId
|
||||
: !isInternalNodeBase(node)
|
||||
? _nodeLookup.get(node.id)
|
||||
: node;
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
<script lang="ts">
|
||||
import { getContext } from 'svelte';
|
||||
import { getNodesBounds, Position, getNodeToolbarTransform } from '@xyflow/system';
|
||||
import { Position, getNodeToolbarTransform } from '@xyflow/system';
|
||||
import portal from '$lib/actions/portal';
|
||||
import type { InternalNode } from '$lib/types';
|
||||
import { useStore } from '$lib/store';
|
||||
|
||||
import type { NodeToolbarProps } from './types';
|
||||
import { useSvelteFlow } from '$lib/hooks/useSvelteFlow';
|
||||
|
||||
type $$Props = NodeToolbarProps;
|
||||
|
||||
@@ -15,7 +16,8 @@
|
||||
export let offset: $$Props['offset'] = undefined;
|
||||
export let isVisible: $$Props['isVisible'] = undefined;
|
||||
|
||||
const { domNode, viewport, nodeLookup, nodes, nodeOrigin } = useStore();
|
||||
const { domNode, viewport, nodeLookup, nodes } = useStore();
|
||||
const { getNodesBounds } = useSvelteFlow();
|
||||
const contextNodeId = getContext<string>('svelteflow__node_id');
|
||||
|
||||
let transform: string;
|
||||
@@ -42,7 +44,7 @@
|
||||
}
|
||||
|
||||
$: {
|
||||
const nodeRect = getNodesBounds(toolbarNodes, { nodeOrigin: $nodeOrigin });
|
||||
const nodeRect = getNodesBounds(toolbarNodes);
|
||||
|
||||
if (nodeRect) {
|
||||
transform = getNodeToolbarTransform(nodeRect, $viewport, _position, _offset, _align);
|
||||
|
||||
Reference in New Issue
Block a user