migrate more containers

This commit is contained in:
peterkogo
2024-11-13 15:52:16 +01:00
parent 52a4b310d4
commit 1e11903184
5 changed files with 39 additions and 40 deletions

View File

@@ -1,4 +1,4 @@
<script lang="ts" context="module">
<script lang="ts" module>
export function wrapHandler(
handler: (evt: MouseEvent) => void,
container: HTMLDivElement
@@ -37,7 +37,7 @@
import type { Node, Edge, InternalNode } from '$lib/types';
import type { PaneProps } from './types';
let {
panOnDrag,
panOnDrag = true,
selectionOnDrag,
onpaneclick,
onpanecontextmenu,
@@ -59,6 +59,7 @@
unselectNodesAndEdges
} = useStore();
// svelte-ignore non_reactive_update
let container: HTMLDivElement;
let containerBounds: DOMRect | null = null;
let selectedNodes: InternalNode[] = [];

View File

@@ -242,23 +242,16 @@
{onMoveStart}
{onMove}
{onMoveEnd}
panOnScrollMode={panOnScrollMode === undefined ? PanOnScrollMode.Free : panOnScrollMode}
preventScrolling={preventScrolling === undefined ? true : preventScrolling}
zoomOnScroll={zoomOnScroll === undefined ? true : zoomOnScroll}
zoomOnDoubleClick={zoomOnDoubleClick === undefined ? true : zoomOnDoubleClick}
zoomOnPinch={zoomOnPinch === undefined ? true : zoomOnPinch}
panOnScroll={panOnScroll === undefined ? false : panOnScroll}
panOnDrag={panOnDrag === undefined ? true : panOnDrag}
paneClickDistance={paneClickDistance === undefined ? 0 : paneClickDistance}
{panOnScrollMode}
{preventScrolling}
{zoomOnScroll}
{zoomOnDoubleClick}
{zoomOnPinch}
{panOnScroll}
{panOnDrag}
{paneClickDistance}
>
<Pane
{nodes}
{edges}
{onpaneclick}
{onpanecontextmenu}
panOnDrag={panOnDrag === undefined ? true : panOnDrag}
{selectionOnDrag}
>
<Pane {nodes} {edges} {onpaneclick} {onpanecontextmenu} {panOnDrag} {selectionOnDrag}>
<ViewportComponent>
<EdgeRenderer
on:edgeclick

View File

@@ -1,14 +1,17 @@
<script lang="ts">
import { useStore } from '$lib/store';
import type { Snippet } from 'svelte';
const { viewport } = useStore();
let { children }: { children: Snippet } = $props();
</script>
<div
class="svelte-flow__viewport xyflow__viewport"
style="transform: translate({$viewport.x}px, {$viewport.y}px) scale({$viewport.zoom})"
>
<slot />
{@render children()}
</div>
<style>

View File

@@ -6,20 +6,21 @@
import zoom from '$lib/actions/zoom';
import type { ZoomProps } from './types';
type $$Props = ZoomProps;
export let initialViewport: $$Props['initialViewport'] = undefined;
export let onMoveStart: $$Props['onMoveStart'] = undefined;
export let onMove: $$Props['onMove'] = undefined;
export let onMoveEnd: $$Props['onMoveEnd'] = undefined;
export let panOnScrollMode: $$Props['panOnScrollMode'];
export let preventScrolling: $$Props['preventScrolling'];
export let zoomOnScroll: $$Props['zoomOnScroll'];
export let zoomOnDoubleClick: $$Props['zoomOnDoubleClick'];
export let zoomOnPinch: $$Props['zoomOnPinch'];
export let panOnDrag: $$Props['panOnDrag'];
export let panOnScroll: $$Props['panOnScroll'];
export let paneClickDistance: $$Props['paneClickDistance'];
let {
initialViewport = { x: 0, y: 0, zoom: 1 },
onMoveStart,
onMove,
onMoveEnd,
panOnScrollMode = PanOnScrollMode.Free,
preventScrolling = true,
zoomOnScroll = true,
zoomOnDoubleClick = true,
zoomOnPinch = true,
panOnDrag = true,
panOnScroll = false,
paneClickDistance = 1,
children
}: ZoomProps = $props();
const {
viewport,
@@ -35,9 +36,8 @@
viewportInitialized
} = useStore();
$: viewPort = initialViewport || { x: 0, y: 0, zoom: 1 };
$: _panOnDrag = $panActivationKeyPressed || panOnDrag;
$: _panOnScroll = $panActivationKeyPressed || panOnScroll;
let panOnDragActive = $derived($panActivationKeyPressed || panOnDrag);
let panOnScrollActive = $derived($panActivationKeyPressed || panOnScroll);
const onTransformChange = (transform: Transform) =>
viewport.set({ x: transform[0], y: transform[1], zoom: transform[2] });
@@ -53,7 +53,7 @@
viewport,
minZoom: $minZoom,
maxZoom: $maxZoom,
initialViewport: viewPort,
initialViewport,
dragging,
panZoom,
onPanZoomStart: onMoveStart,
@@ -62,8 +62,8 @@
zoomOnScroll,
zoomOnDoubleClick,
zoomOnPinch,
panOnScroll: _panOnScroll,
panOnDrag: _panOnDrag,
panOnScroll: panOnScrollActive,
panOnDrag: panOnDragActive,
panOnScrollSpeed: 0.5,
panOnScrollMode: panOnScrollMode || PanOnScrollMode.Free,
zoomActivationKeyPressed: $zoomActivationKeyPressed,
@@ -77,7 +77,7 @@
onTransformChange
}}
>
<slot />
{@render children()}
</div>
<style>

View File

@@ -1,4 +1,5 @@
import type { OnMoveStart, OnMove, OnMoveEnd, PanOnScrollMode, Viewport } from '@xyflow/system';
import type { Snippet } from 'svelte';
export type ZoomProps = {
initialViewport?: Viewport;
@@ -13,4 +14,5 @@ export type ZoomProps = {
panOnScroll: boolean;
panOnDrag: boolean | number[];
paneClickDistance: number;
children: Snippet;
};