migrate more containers
This commit is contained in:
@@ -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[] = [];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user