<SvelteFlow />
<SvelteFlow />
コンポーネントは、Svelte Flow アプリケーションの中核です。
<script>
import { writable } from 'svelte/store';
import { SvelteFlow } from '@xyflow/svelte';
const nodes = writable([
{ id: 'a', data: { label: 'node a' }, position: { x: 0, y: 0 } },
{ id: 'b', data: { label: 'node b' }, position: { x: 0, y: 100 } }
]);
const edges = writable([
{ id: 'e1-2', source: 'a', target: 'b' }
]);
</script>
<SvelteFlow
nodes={nodes}
edges={edges}
fitView
/>
このコンポーネントは、多くの異なるプロパティを受け取りますが、そのほとんどはオプションです。理解しやすいように、グループごとにドキュメント化を試みました。
共通プロパティ
これらは、Svelte Flow を操作する際に最もよく使用するプロパティです。
名前 | 型 | デフォルト |
---|---|---|
# nodes | Writable<Node[]> ノードの配列を持つ書き込み可能なストア。 |
|
# edges | Writable<Edge[]> エッジの配列を持つ書き込み可能なストア。 |
|
# nodeTypes | Record<string, ComponentType<SvelteComponent<NodeProps>>> フローでカスタムノードを使用する場合、Svelte Flow にそれらを認識させる必要があります。新しいノードをレンダリングするとき、Svelte Flow はこのオブジェクト内でそのノードの型を検索し、対応するコンポーネントをレンダリングします。 |
|
# edgeTypes | Record<string, ComponentType<SvelteComponent<EdgeProps>>> ノードタイプと同様に、このプロパティを使用すると、エッジタイプを Svelte コンポーネントにマッピングすることにより、フローでカスタムエッジを使用できます。 |
|
# colorMode | ColorMode この型を使用して、組み込みのライトテーマとダークテーマを切り替えることができます。 |
|
# nodeOrigin | [number, number] フローにノードを配置したり、その x 座標と y 座標を検索したりするときに使用するノードの原点。原点が [0,0] の場合、ノードの左上隅が x 座標と y 座標に配置されます。 |
|
# nodeDragThreshold | number ゼロより大きいしきい値を設定すると、ノードのドラッグイベントを遅延させることができます。しきい値が 1 の場合、ドラッグイベントが発生する前にノードを 1 ピクセルドラッグする必要があります。 |
|
# style | string |
|
# class | string |
|
ビューポートプロパティ
名前 | 型 | デフォルト |
---|---|---|
# initialViewport | Viewport ビューポートの初期位置とズームを設定します。デフォルトのビューポートが指定されているが、fitView が有効になっている場合、デフォルトのビューポートは無視されます。 |
|
# viewport | Writable<Viewport> ビューポートをより詳細に制御する必要がある場合は、書き込み可能なストアを渡すことができます。 |
|
# fitView | boolean true の場合、最初に提供されたすべてのノードに合わせてフローがズームおよびパンされます。 |
|
# fitViewOptions | FitViewOptions 通常、Svelte Flow インスタンスで fitView を呼び出すと、オプションのオブジェクトを提供して動作をカスタマイズできます。このプロパティを使用すると、初期 fitView 呼び出しに対して同じことができます。 |
|
# minZoom | number |
|
# maxZoom | number |
|
# snapGrid | [number, number] | undefined このプロパティは、ノードがスナップするグリッドを設定します。 |
|
# onlyRenderVisibleElements | boolean この最適化を有効にして、ビューポートに表示されるノードとエッジのみをレンダリングするように Svelte Flow に指示できます。 |
|
# translateExtent | CoordinateExtent デフォルトでは、ビューポートは無限に拡張されます。このプロパティを使用して境界を設定できます。最初の座標ペアは左上の境界で、2 番目のペアは右下の境界です。 |
|
# preventScrolling | boolean このプロパティを無効にすると、ポインターがフロー上にある場合でも、ユーザーはページをスクロールできます。 |
|
# attributionPosition | PanelPosition デフォルトでは、Svelte Flow はフローの右下隅に小さな属性表示をレンダリングします。他のものを配置したい場合に備えて、このプロパティを使用してその位置を変更できます。 |
|
エッジプロパティ
名前 | 型 | デフォルト |
---|---|---|
# defaultMarkerColor | string |
|
# defaultEdgeOptions | DefaultEdgeOptions ここで設定されたデフォルトは、フローに追加されるすべての新しいエッジに適用されます。新しいエッジのプロパティは、存在する場合、これらのデフォルトをオーバーライドします。 |
|
# onedgecreate | (接続: Connection) => Edge このハンドラは、新しいエッジが作成されたときに呼び出されます。新しく作成されたエッジを変更するために使用できます。 |
|
イベントハンドラ
一般的なイベント
名前 | 型 |
---|---|
# oninit | () => void(なし) このハンドラは、フローが初期化されたときに呼び出されます。 |
# onerror | (コード: string, メッセージ: string) => void(なし) 場合によっては、Svelte Flow がエラーを引き起こす状況が発生する可能性があります。アプリケーションをクラッシュさせる代わりに、コンソールにメッセージを記録し、このハンドラを呼び出します。追加のログ記録やユーザーへのメッセージの表示に使用できます。 |
# ondelete | (パラメータ: { ノード: Node[]; エッジ: Edge[] }) => void(なし) このハンドラは、ユーザーがノードまたはエッジを削除するときに呼び出されます。 |
# onbeforedelete | 非同期 (パラメータ: { ノード: Node[]; エッジ: Edge[] }) => boolean このハンドラは、ユーザーがノードまたはエッジを削除する前に呼び出され、false を返すことで削除を中止する方法を提供します。 |
ノードイベント
名前 | 型 |
---|---|
# on:nodeclick | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント) | TouchEvent (タッチイベント); ノード: Node }>) => void(なし) |
# on:nodecontextmenu | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ノード: Node }>) => void(なし) |
# on:nodemouseenter | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ノード: Node }>) => void(なし) |
# on:nodemousemove | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ノード: Node }>) => void(なし) |
# on:nodemouseleave | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ノード: Node }>) => void(なし) |
# on:nodedragstart | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ターゲットノード: Node | null(なし); ノード: Node[] }>) => void(なし) このイベントは、単一のノードと選択範囲に使用されます。選択範囲をドラッグすると、targetNode は null になります。 |
# on:nodedrag | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ターゲットノード: Node | null(なし); ノード: Node[] }>) => void(なし) このイベントは、単一のノードと選択範囲に使用されます。選択範囲をドラッグすると、targetNode は null になります。 |
# on:nodedragstop | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); ターゲットノード: Node | null(なし); ノード: Node[] }>) => void(なし) このイベントは、単一のノードと選択範囲に使用されます。選択範囲をドラッグすると、targetNode は null になります。 |
エッジイベント
名前 | 型 |
---|---|
# on:edgeclick | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); エッジ: Edge }>) => void(なし) |
# on:edgecontextmenu | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント); エッジ: Edge }>) => void(なし) |
接続イベント
名前 | 型 |
---|---|
# onconnectstart | (イベント: MouseEvent (マウスイベント) | TouchEvent (タッチイベント), パラメータ: {
ノードID?: string;
ハンドルID?: string;
ハンドルの種類?: 'ソース' | 'ターゲット';
}) => void(なし) ユーザーが接続線をドラッグし始めると、このイベントが発生します。 |
# onconnect | (接続: Connection) => void(なし) 接続が正常に完了すると、このイベントが発生します。 |
# onconnectend | (イベント: MouseEvent (マウスイベント) | TouchEvent (タッチイベント)) => void(なし) ユーザーが接続線をドロップするたびに、このイベントが発生します。接続が作成されたかどうかに関係なく発生します。 |
ペインイベント
名前 | 型 |
---|---|
# on:paneclick | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント) | TouchEvent (タッチイベント) }>) => void(なし) |
# on:panecontextmenu | (イベント: CustomEvent<{イベント: MouseEvent (マウスイベント) }>) => void(なし) |
キーボードプロパティ
名前 | 型 | デフォルト |
---|---|---|
# deleteKey | KeyDefinition | KeyDefinition[] | null(なし) |
|
# selectionKey | KeyDefinition | KeyDefinition[] | null(なし) |
|
# multiSelectionKey | KeyDefinition | KeyDefinition[] | null(なし) |
|
# zoomActivationKey | KeyDefinition | KeyDefinition[] | null(なし) キーが設定されている場合、panOnScroll が false に設定されている場合でも、そのキーが押されている間はビューポートをズームできます。このプロパティを null に設定すると、この機能を無効にできます。 |
|
# panActivationKey | KeyDefinition | KeyDefinition[] | null(なし) キーが設定されている場合、panOnScroll が false に設定されている場合でも、そのキーが押されている間はビューポートをパンできます。このプロパティを null に設定すると、この機能を無効にできます。 |
|
インタラクションプロパティ
名前 | 型 | デフォルト |
---|---|---|
# nodesDraggable | boolean すべてのノードをドラッグ可能にするかどうかを制御します。個々のノードは、draggable プロパティを設定することでこの設定をオーバーライドできます。ドラッグ不可能なノードでマウスハンドラを使用する場合は、それらのノードに "nopan" クラスを追加する必要があります。 |
|
# nodesConnectable | boolean すべてのノードを接続可能にするかどうかを制御します。個々のノードは、connectable プロパティを設定することでこの設定をオーバーライドできます。 |
|
# elementsSelectable (要素選択可能) | boolean |
|
# autoPanOnConnect (接続時の自動パン) | boolean |
|
# autoPanOnNodeDrag (ノードドラッグ時の自動パン) | boolean |
|
# panOnDrag (ドラッグ時のパン) | boolean | (0 | 1 | 2 | 3 | 4)[] このプロパティを有効にすると、ユーザーはクリックとドラッグでビューポートをパンできます。また、このプロパティを数値の配列に設定して、パンをアクティブ化できるマウスボタンを制限することもできます。たとえば、[0,2]は、マウスの左ボタンと右ボタンでパンすることを許可します。 |
|
# selectionOnDrag (ドラッグ時の選択) | boolean |
|
# selectionMode (選択モード) | "部分的" | "完全" 「部分的」に設定すると、ユーザーがクリックとドラッグで選択ボックスを作成したときに、ボックスに部分的にのみ含まれるノードも選択されます。 |
|
# panOnScroll (スクロール時のパン) | boolean |
|
# panOnScrollSpeed (スクロール時のパン速度) | number |
|
# panOnScrollMode (スクロール時のパンモード) | "自由" | "水平" | "垂直" このプロパティは、panOnScrollが有効になっている場合のパンの方向を制限するために使用されます。「自由」オプションでは、どの方向にもパンできます。 |
|
# zoomOnScroll (スクロール時のズーム) | boolean |
|
# zoomOnPinch (ピンチ時のズーム) | boolean |
|
# zoomOnDoubleClick (ダブルクリック時のズーム) | boolean |
|
# connectionMode (接続モード) | "緩い" | "厳格" 緩い接続モードでは、任意のタイプのハンドルを相互に接続できます。厳格モードでは、ソースハンドルをターゲットハンドルにのみ接続できます。 |
|
接続線プロパティ
名前 | 型 | デフォルト |
---|---|---|
# isValidConnection (有効な接続) | (接続: Connection) => boolean このプロパティを使用すると、どの接続が有効かを制御できます。エッジが作成される前に呼び出されます。 |
|
# connectionRadius (接続半径) | number 接続線をドロップして新しいエッジを作成するハンドルの周りの半径。 |
|
# connectionLineType (接続線の種類) | ConnectionLineType 接続線に使用するエッジパスの種類。作成されたエッジはどのタイプでもかまいませんが、Svelte Flowはエッジが作成される前に接続線にどのタイプのパスをレンダリングするかを知る必要があります。 |
|
# connectionLineStyle (接続線のスタイル) | string |
|
# connectionLineWrapperStyles (接続線ラッパースタイル) | string |
|
注記
- このコンポーネントのプロパティは、
SvelteFlowProps
としてエクスポートされます。