migrate more containers
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
<script lang="ts" context="module">
|
<script lang="ts" module>
|
||||||
export function wrapHandler(
|
export function wrapHandler(
|
||||||
handler: (evt: MouseEvent) => void,
|
handler: (evt: MouseEvent) => void,
|
||||||
container: HTMLDivElement
|
container: HTMLDivElement
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
import type { Node, Edge, InternalNode } from '$lib/types';
|
import type { Node, Edge, InternalNode } from '$lib/types';
|
||||||
import type { PaneProps } from './types';
|
import type { PaneProps } from './types';
|
||||||
let {
|
let {
|
||||||
panOnDrag,
|
panOnDrag = true,
|
||||||
selectionOnDrag,
|
selectionOnDrag,
|
||||||
onpaneclick,
|
onpaneclick,
|
||||||
onpanecontextmenu,
|
onpanecontextmenu,
|
||||||
@@ -59,6 +59,7 @@
|
|||||||
unselectNodesAndEdges
|
unselectNodesAndEdges
|
||||||
} = useStore();
|
} = useStore();
|
||||||
|
|
||||||
|
// svelte-ignore non_reactive_update
|
||||||
let container: HTMLDivElement;
|
let container: HTMLDivElement;
|
||||||
let containerBounds: DOMRect | null = null;
|
let containerBounds: DOMRect | null = null;
|
||||||
let selectedNodes: InternalNode[] = [];
|
let selectedNodes: InternalNode[] = [];
|
||||||
|
|||||||
@@ -242,23 +242,16 @@
|
|||||||
{onMoveStart}
|
{onMoveStart}
|
||||||
{onMove}
|
{onMove}
|
||||||
{onMoveEnd}
|
{onMoveEnd}
|
||||||
panOnScrollMode={panOnScrollMode === undefined ? PanOnScrollMode.Free : panOnScrollMode}
|
{panOnScrollMode}
|
||||||
preventScrolling={preventScrolling === undefined ? true : preventScrolling}
|
{preventScrolling}
|
||||||
zoomOnScroll={zoomOnScroll === undefined ? true : zoomOnScroll}
|
{zoomOnScroll}
|
||||||
zoomOnDoubleClick={zoomOnDoubleClick === undefined ? true : zoomOnDoubleClick}
|
{zoomOnDoubleClick}
|
||||||
zoomOnPinch={zoomOnPinch === undefined ? true : zoomOnPinch}
|
{zoomOnPinch}
|
||||||
panOnScroll={panOnScroll === undefined ? false : panOnScroll}
|
{panOnScroll}
|
||||||
panOnDrag={panOnDrag === undefined ? true : panOnDrag}
|
{panOnDrag}
|
||||||
paneClickDistance={paneClickDistance === undefined ? 0 : paneClickDistance}
|
{paneClickDistance}
|
||||||
>
|
>
|
||||||
<Pane
|
<Pane {nodes} {edges} {onpaneclick} {onpanecontextmenu} {panOnDrag} {selectionOnDrag}>
|
||||||
{nodes}
|
|
||||||
{edges}
|
|
||||||
{onpaneclick}
|
|
||||||
{onpanecontextmenu}
|
|
||||||
panOnDrag={panOnDrag === undefined ? true : panOnDrag}
|
|
||||||
{selectionOnDrag}
|
|
||||||
>
|
|
||||||
<ViewportComponent>
|
<ViewportComponent>
|
||||||
<EdgeRenderer
|
<EdgeRenderer
|
||||||
on:edgeclick
|
on:edgeclick
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { useStore } from '$lib/store';
|
import { useStore } from '$lib/store';
|
||||||
|
import type { Snippet } from 'svelte';
|
||||||
|
|
||||||
const { viewport } = useStore();
|
const { viewport } = useStore();
|
||||||
|
|
||||||
|
let { children }: { children: Snippet } = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="svelte-flow__viewport xyflow__viewport"
|
class="svelte-flow__viewport xyflow__viewport"
|
||||||
style="transform: translate({$viewport.x}px, {$viewport.y}px) scale({$viewport.zoom})"
|
style="transform: translate({$viewport.x}px, {$viewport.y}px) scale({$viewport.zoom})"
|
||||||
>
|
>
|
||||||
<slot />
|
{@render children()}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -6,20 +6,21 @@
|
|||||||
import zoom from '$lib/actions/zoom';
|
import zoom from '$lib/actions/zoom';
|
||||||
import type { ZoomProps } from './types';
|
import type { ZoomProps } from './types';
|
||||||
|
|
||||||
type $$Props = ZoomProps;
|
let {
|
||||||
|
initialViewport = { x: 0, y: 0, zoom: 1 },
|
||||||
export let initialViewport: $$Props['initialViewport'] = undefined;
|
onMoveStart,
|
||||||
export let onMoveStart: $$Props['onMoveStart'] = undefined;
|
onMove,
|
||||||
export let onMove: $$Props['onMove'] = undefined;
|
onMoveEnd,
|
||||||
export let onMoveEnd: $$Props['onMoveEnd'] = undefined;
|
panOnScrollMode = PanOnScrollMode.Free,
|
||||||
export let panOnScrollMode: $$Props['panOnScrollMode'];
|
preventScrolling = true,
|
||||||
export let preventScrolling: $$Props['preventScrolling'];
|
zoomOnScroll = true,
|
||||||
export let zoomOnScroll: $$Props['zoomOnScroll'];
|
zoomOnDoubleClick = true,
|
||||||
export let zoomOnDoubleClick: $$Props['zoomOnDoubleClick'];
|
zoomOnPinch = true,
|
||||||
export let zoomOnPinch: $$Props['zoomOnPinch'];
|
panOnDrag = true,
|
||||||
export let panOnDrag: $$Props['panOnDrag'];
|
panOnScroll = false,
|
||||||
export let panOnScroll: $$Props['panOnScroll'];
|
paneClickDistance = 1,
|
||||||
export let paneClickDistance: $$Props['paneClickDistance'];
|
children
|
||||||
|
}: ZoomProps = $props();
|
||||||
|
|
||||||
const {
|
const {
|
||||||
viewport,
|
viewport,
|
||||||
@@ -35,9 +36,8 @@
|
|||||||
viewportInitialized
|
viewportInitialized
|
||||||
} = useStore();
|
} = useStore();
|
||||||
|
|
||||||
$: viewPort = initialViewport || { x: 0, y: 0, zoom: 1 };
|
let panOnDragActive = $derived($panActivationKeyPressed || panOnDrag);
|
||||||
$: _panOnDrag = $panActivationKeyPressed || panOnDrag;
|
let panOnScrollActive = $derived($panActivationKeyPressed || panOnScroll);
|
||||||
$: _panOnScroll = $panActivationKeyPressed || panOnScroll;
|
|
||||||
|
|
||||||
const onTransformChange = (transform: Transform) =>
|
const onTransformChange = (transform: Transform) =>
|
||||||
viewport.set({ x: transform[0], y: transform[1], zoom: transform[2] });
|
viewport.set({ x: transform[0], y: transform[1], zoom: transform[2] });
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
viewport,
|
viewport,
|
||||||
minZoom: $minZoom,
|
minZoom: $minZoom,
|
||||||
maxZoom: $maxZoom,
|
maxZoom: $maxZoom,
|
||||||
initialViewport: viewPort,
|
initialViewport,
|
||||||
dragging,
|
dragging,
|
||||||
panZoom,
|
panZoom,
|
||||||
onPanZoomStart: onMoveStart,
|
onPanZoomStart: onMoveStart,
|
||||||
@@ -62,8 +62,8 @@
|
|||||||
zoomOnScroll,
|
zoomOnScroll,
|
||||||
zoomOnDoubleClick,
|
zoomOnDoubleClick,
|
||||||
zoomOnPinch,
|
zoomOnPinch,
|
||||||
panOnScroll: _panOnScroll,
|
panOnScroll: panOnScrollActive,
|
||||||
panOnDrag: _panOnDrag,
|
panOnDrag: panOnDragActive,
|
||||||
panOnScrollSpeed: 0.5,
|
panOnScrollSpeed: 0.5,
|
||||||
panOnScrollMode: panOnScrollMode || PanOnScrollMode.Free,
|
panOnScrollMode: panOnScrollMode || PanOnScrollMode.Free,
|
||||||
zoomActivationKeyPressed: $zoomActivationKeyPressed,
|
zoomActivationKeyPressed: $zoomActivationKeyPressed,
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
onTransformChange
|
onTransformChange
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<slot />
|
{@render children()}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import type { OnMoveStart, OnMove, OnMoveEnd, PanOnScrollMode, Viewport } from '@xyflow/system';
|
import type { OnMoveStart, OnMove, OnMoveEnd, PanOnScrollMode, Viewport } from '@xyflow/system';
|
||||||
|
import type { Snippet } from 'svelte';
|
||||||
|
|
||||||
export type ZoomProps = {
|
export type ZoomProps = {
|
||||||
initialViewport?: Viewport;
|
initialViewport?: Viewport;
|
||||||
@@ -13,4 +14,5 @@ export type ZoomProps = {
|
|||||||
panOnScroll: boolean;
|
panOnScroll: boolean;
|
||||||
panOnDrag: boolean | number[];
|
panOnDrag: boolean | number[];
|
||||||
paneClickDistance: number;
|
paneClickDistance: number;
|
||||||
|
children: Snippet;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user