@xyflow/system 0.0.36 → 0.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/index.js +83 -70
- package/dist/esm/index.mjs +83 -70
- package/dist/esm/types/general.d.ts +2 -1
- package/dist/esm/types/general.d.ts.map +1 -1
- package/dist/esm/utils/graph.d.ts.map +1 -1
- package/dist/esm/utils/store.d.ts.map +1 -1
- package/dist/esm/xyhandle/XYHandle.d.ts.map +1 -1
- package/dist/esm/xyhandle/types.d.ts +3 -3
- package/dist/esm/xyhandle/types.d.ts.map +1 -1
- package/dist/esm/xyhandle/utils.d.ts +6 -9
- package/dist/esm/xyhandle/utils.d.ts.map +1 -1
- package/dist/umd/index.js +1 -1
- package/dist/umd/types/general.d.ts +2 -1
- package/dist/umd/types/general.d.ts.map +1 -1
- package/dist/umd/utils/graph.d.ts.map +1 -1
- package/dist/umd/utils/store.d.ts.map +1 -1
- package/dist/umd/xyhandle/XYHandle.d.ts.map +1 -1
- package/dist/umd/xyhandle/types.d.ts +3 -3
- package/dist/umd/xyhandle/types.d.ts.map +1 -1
- package/dist/umd/xyhandle/utils.d.ts +6 -9
- package/dist/umd/xyhandle/utils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -11,7 +11,7 @@ const errorMessages = {
|
|
|
11
11
|
error006: () => "Can't create edge. An edge needs a source and a target.",
|
|
12
12
|
error007: (id) => `The old edge with id=${id} does not exist.`,
|
|
13
13
|
error009: (type) => `Marker type "${type}" doesn't exist.`,
|
|
14
|
-
error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: "${
|
|
14
|
+
error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: "${handleType === 'source' ? sourceHandle : targetHandle}", edge id: ${id}.`,
|
|
15
15
|
error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',
|
|
16
16
|
error011: (edgeType) => `Edge type "${edgeType}" not found. Using fallback type "default".`,
|
|
17
17
|
error012: (id) => `Node with id "${id}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,
|
|
@@ -235,18 +235,18 @@ excludeNonSelectableNodes = false) => {
|
|
|
235
235
|
height: rect.height / tScale,
|
|
236
236
|
};
|
|
237
237
|
const visibleNodes = [];
|
|
238
|
-
for (const
|
|
238
|
+
for (const node of nodes.values()) {
|
|
239
239
|
const { measured, selectable = true, hidden = false } = node;
|
|
240
|
-
const width = measured.width ?? node.width ?? node.initialWidth ?? null;
|
|
241
|
-
const height = measured.height ?? node.height ?? node.initialHeight ?? null;
|
|
242
240
|
if ((excludeNonSelectableNodes && !selectable) || hidden) {
|
|
243
241
|
continue;
|
|
244
242
|
}
|
|
243
|
+
const width = measured.width ?? node.width ?? node.initialWidth ?? null;
|
|
244
|
+
const height = measured.height ?? node.height ?? node.initialHeight ?? null;
|
|
245
245
|
const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));
|
|
246
|
-
const notInitialized = width === null || height === null;
|
|
247
|
-
const partiallyVisible = partially && overlappingArea > 0;
|
|
248
246
|
const area = (width ?? 0) * (height ?? 0);
|
|
249
|
-
const
|
|
247
|
+
const partiallyVisible = partially && overlappingArea > 0;
|
|
248
|
+
const forceInitialRender = !node.internals.handleBounds;
|
|
249
|
+
const isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area;
|
|
250
250
|
if (isVisible || node.dragging) {
|
|
251
251
|
visibleNodes.push(node);
|
|
252
252
|
}
|
|
@@ -1035,8 +1035,8 @@ function getEdgePosition(params) {
|
|
|
1035
1035
|
}
|
|
1036
1036
|
const sourceHandleBounds = sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);
|
|
1037
1037
|
const targetHandleBounds = targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);
|
|
1038
|
-
const sourceHandle = getHandle(sourceHandleBounds?.source ?? [], params.sourceHandle);
|
|
1039
|
-
const targetHandle = getHandle(
|
|
1038
|
+
const sourceHandle = getHandle$1(sourceHandleBounds?.source ?? [], params.sourceHandle);
|
|
1039
|
+
const targetHandle = getHandle$1(
|
|
1040
1040
|
// when connection type is loose we can define all handles as sources and connect source -> source
|
|
1041
1041
|
params.connectionMode === ConnectionMode.Strict
|
|
1042
1042
|
? targetHandleBounds?.target ?? []
|
|
@@ -1102,7 +1102,7 @@ function getHandlePosition(node, handle, fallbackPosition = Position.Left, cente
|
|
|
1102
1102
|
return { x, y: y + height / 2 };
|
|
1103
1103
|
}
|
|
1104
1104
|
}
|
|
1105
|
-
function getHandle(bounds, handleId) {
|
|
1105
|
+
function getHandle$1(bounds, handleId) {
|
|
1106
1106
|
if (!bounds) {
|
|
1107
1107
|
return null;
|
|
1108
1108
|
}
|
|
@@ -1219,7 +1219,8 @@ function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
|
|
|
1219
1219
|
},
|
|
1220
1220
|
internals: {
|
|
1221
1221
|
positionAbsolute: getNodePositionWithOrigin(userNode, _options.nodeOrigin),
|
|
1222
|
-
handleBounds
|
|
1222
|
+
// if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured
|
|
1223
|
+
handleBounds: !userNode.measured ? undefined : internalNode?.internals.handleBounds,
|
|
1223
1224
|
z: calculateZ(userNode, selectedNodeZ),
|
|
1224
1225
|
userNode,
|
|
1225
1226
|
},
|
|
@@ -1236,7 +1237,8 @@ function updateChildPosition(node, nodeLookup, parentLookup, options) {
|
|
|
1236
1237
|
const parentId = node.parentId;
|
|
1237
1238
|
const parentNode = nodeLookup.get(parentId);
|
|
1238
1239
|
if (!parentNode) {
|
|
1239
|
-
|
|
1240
|
+
console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);
|
|
1241
|
+
return;
|
|
1240
1242
|
}
|
|
1241
1243
|
// update the parentLookup
|
|
1242
1244
|
const childNodes = parentLookup.get(parentId);
|
|
@@ -1742,59 +1744,71 @@ function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragSto
|
|
|
1742
1744
|
};
|
|
1743
1745
|
}
|
|
1744
1746
|
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1747
|
+
function getNodesWithinDistance(position, nodeLookup, distance) {
|
|
1748
|
+
const nodes = [];
|
|
1749
|
+
const rect = {
|
|
1750
|
+
x: position.x - distance,
|
|
1751
|
+
y: position.y - distance,
|
|
1752
|
+
width: distance * 2,
|
|
1753
|
+
height: distance * 2,
|
|
1754
|
+
};
|
|
1755
|
+
for (const node of nodeLookup.values()) {
|
|
1756
|
+
if (getOverlappingArea(rect, nodeToRect(node)) > 0) {
|
|
1757
|
+
nodes.push(node);
|
|
1756
1758
|
}
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
return [handles, excludedHandle];
|
|
1759
|
+
}
|
|
1760
|
+
return nodes;
|
|
1760
1761
|
}
|
|
1761
|
-
|
|
1762
|
+
// this distance is used for the area around the user pointer
|
|
1763
|
+
// while doing a connection for finding the closest nodes
|
|
1764
|
+
const ADDITIONAL_DISTANCE = 250;
|
|
1765
|
+
function getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {
|
|
1762
1766
|
let closestHandles = [];
|
|
1763
1767
|
let minDistance = Infinity;
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1768
|
+
const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);
|
|
1769
|
+
for (const node of closeNodes) {
|
|
1770
|
+
const allHandles = [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])];
|
|
1771
|
+
for (const handle of allHandles) {
|
|
1772
|
+
// if the handle is the same as the fromHandle we skip it
|
|
1773
|
+
if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {
|
|
1774
|
+
continue;
|
|
1775
|
+
}
|
|
1776
|
+
// determine absolute position of the handle
|
|
1777
|
+
const { x, y } = getHandlePosition(node, handle, handle.position, true);
|
|
1778
|
+
const distance = Math.sqrt(Math.pow(x - position.x, 2) + Math.pow(y - position.y, 2));
|
|
1779
|
+
if (distance > connectionRadius) {
|
|
1780
|
+
continue;
|
|
1781
|
+
}
|
|
1767
1782
|
if (distance < minDistance) {
|
|
1768
|
-
closestHandles = [handle];
|
|
1783
|
+
closestHandles = [{ ...handle, x, y }];
|
|
1784
|
+
minDistance = distance;
|
|
1769
1785
|
}
|
|
1770
1786
|
else if (distance === minDistance) {
|
|
1771
1787
|
// when multiple handles are on the same distance we collect all of them
|
|
1772
|
-
closestHandles.push(handle);
|
|
1788
|
+
closestHandles.push({ ...handle, x, y });
|
|
1773
1789
|
}
|
|
1774
|
-
minDistance = distance;
|
|
1775
1790
|
}
|
|
1776
1791
|
}
|
|
1777
1792
|
if (!closestHandles.length) {
|
|
1778
1793
|
return null;
|
|
1779
1794
|
}
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1795
|
+
// when multiple handles overlay each other we prefer the opposite handle
|
|
1796
|
+
if (closestHandles.length > 1) {
|
|
1797
|
+
const oppositeHandleType = fromHandle.type === 'source' ? 'target' : 'source';
|
|
1798
|
+
return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];
|
|
1799
|
+
}
|
|
1800
|
+
return closestHandles[0];
|
|
1784
1801
|
}
|
|
1785
|
-
function
|
|
1786
|
-
const
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
for (const node of nodeLookup.values()) {
|
|
1790
|
-
if (node.internals.handleBounds) {
|
|
1791
|
-
const [sourceHandles, excludedSource] = getHandles(node, node.internals.handleBounds, 'source', currentHandle);
|
|
1792
|
-
const [targetHandles, excludedTarget] = getHandles(node, node.internals.handleBounds, 'target', currentHandle);
|
|
1793
|
-
excludedHandle = excludedHandle ? excludedHandle : excludedSource ?? excludedTarget;
|
|
1794
|
-
connectionHandles.push(...sourceHandles, ...targetHandles);
|
|
1795
|
-
}
|
|
1802
|
+
function getHandle(nodeId, handleType, handleId, nodeLookup, withAbsolutePosition = false) {
|
|
1803
|
+
const node = nodeLookup.get(nodeId);
|
|
1804
|
+
if (!node) {
|
|
1805
|
+
return null;
|
|
1796
1806
|
}
|
|
1797
|
-
|
|
1807
|
+
const handles = node.internals.handleBounds?.[handleType];
|
|
1808
|
+
const handle = (handleId ? handles?.find((h) => h.id === handleId) : handles?.[0]) ?? null;
|
|
1809
|
+
return handle && withAbsolutePosition
|
|
1810
|
+
? { ...handle, ...getHandlePosition(node, handle, handle.position, true) }
|
|
1811
|
+
: handle;
|
|
1798
1812
|
}
|
|
1799
1813
|
function getHandleType(edgeUpdaterType, handleDomNode) {
|
|
1800
1814
|
if (edgeUpdaterType) {
|
|
@@ -1832,17 +1846,15 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1832
1846
|
if (!containerBounds || !handleType) {
|
|
1833
1847
|
return;
|
|
1834
1848
|
}
|
|
1849
|
+
const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup);
|
|
1850
|
+
if (!fromHandleInternal) {
|
|
1851
|
+
return;
|
|
1852
|
+
}
|
|
1835
1853
|
let position = getEventPosition(event, containerBounds);
|
|
1836
1854
|
let autoPanStarted = false;
|
|
1837
1855
|
let connection = null;
|
|
1838
1856
|
let isValid = false;
|
|
1839
1857
|
let handleDomNode = null;
|
|
1840
|
-
const [handleLookup, fromHandleInternal] = getHandleLookup({
|
|
1841
|
-
nodeLookup,
|
|
1842
|
-
nodeId,
|
|
1843
|
-
handleId,
|
|
1844
|
-
handleType,
|
|
1845
|
-
});
|
|
1846
1858
|
// when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas
|
|
1847
1859
|
function autoPan() {
|
|
1848
1860
|
if (!autoPanOnConnect || !containerBounds) {
|
|
@@ -1883,7 +1895,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1883
1895
|
}
|
|
1884
1896
|
const transform = getTransform();
|
|
1885
1897
|
position = getEventPosition(event, containerBounds);
|
|
1886
|
-
closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius,
|
|
1898
|
+
closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius, nodeLookup, fromHandle);
|
|
1887
1899
|
if (!autoPanStarted) {
|
|
1888
1900
|
autoPan();
|
|
1889
1901
|
autoPanStarted = true;
|
|
@@ -1898,7 +1910,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1898
1910
|
doc,
|
|
1899
1911
|
lib,
|
|
1900
1912
|
flowId,
|
|
1901
|
-
|
|
1913
|
+
nodeLookup,
|
|
1902
1914
|
});
|
|
1903
1915
|
handleDomNode = result.handleDomNode;
|
|
1904
1916
|
connection = result.connection;
|
|
@@ -1922,7 +1934,9 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1922
1934
|
newConnection.toHandle &&
|
|
1923
1935
|
previousConnection.toHandle.type === newConnection.toHandle.type &&
|
|
1924
1936
|
previousConnection.toHandle.nodeId === newConnection.toHandle.nodeId &&
|
|
1925
|
-
previousConnection.toHandle.id === newConnection.toHandle.id
|
|
1937
|
+
previousConnection.toHandle.id === newConnection.toHandle.id &&
|
|
1938
|
+
previousConnection.to.x === newConnection.to.x &&
|
|
1939
|
+
previousConnection.to.y === newConnection.to.y) {
|
|
1926
1940
|
return;
|
|
1927
1941
|
}
|
|
1928
1942
|
updateConnection(newConnection);
|
|
@@ -1934,9 +1948,15 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1934
1948
|
}
|
|
1935
1949
|
// it's important to get a fresh reference from the store here
|
|
1936
1950
|
// in order to get the latest state of onConnectEnd
|
|
1937
|
-
|
|
1951
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1952
|
+
const { inProgress, ...connectionState } = previousConnection;
|
|
1953
|
+
const finalConnectionState = {
|
|
1954
|
+
...connectionState,
|
|
1955
|
+
toPosition: previousConnection.toHandle ? previousConnection.toPosition : null,
|
|
1956
|
+
};
|
|
1957
|
+
onConnectEnd?.(event, finalConnectionState);
|
|
1938
1958
|
if (edgeUpdaterType) {
|
|
1939
|
-
onReconnectEnd?.(event);
|
|
1959
|
+
onReconnectEnd?.(event, finalConnectionState);
|
|
1940
1960
|
}
|
|
1941
1961
|
cancelConnection();
|
|
1942
1962
|
cancelAnimationFrame(autoPanId);
|
|
@@ -1955,7 +1975,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1955
1975
|
doc.addEventListener('touchend', onPointerUp);
|
|
1956
1976
|
}
|
|
1957
1977
|
// checks if and returns connection in fom of an object { source: 123, target: 312 }
|
|
1958
|
-
function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid,
|
|
1978
|
+
function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid, nodeLookup, }) {
|
|
1959
1979
|
const isTarget = fromType === 'target';
|
|
1960
1980
|
const handleDomNode = handle
|
|
1961
1981
|
? doc.querySelector(`.${lib}-flow__handle[data-id="${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}"]`)
|
|
@@ -1977,7 +1997,7 @@ function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId
|
|
|
1977
1997
|
const handleId = handleToCheck.getAttribute('data-handleid');
|
|
1978
1998
|
const connectable = handleToCheck.classList.contains('connectable');
|
|
1979
1999
|
const connectableEnd = handleToCheck.classList.contains('connectableend');
|
|
1980
|
-
if (!handleNodeId) {
|
|
2000
|
+
if (!handleNodeId || !handleType) {
|
|
1981
2001
|
return result;
|
|
1982
2002
|
}
|
|
1983
2003
|
const connection = {
|
|
@@ -1994,14 +2014,7 @@ function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId
|
|
|
1994
2014
|
? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target')
|
|
1995
2015
|
: handleNodeId !== fromNodeId || handleId !== fromHandleId);
|
|
1996
2016
|
result.isValid = isValid && isValidConnection(connection);
|
|
1997
|
-
|
|
1998
|
-
const toHandle = handleLookup.find((h) => h.id === handleId && h.nodeId === handleNodeId && h.type === handleType);
|
|
1999
|
-
if (toHandle) {
|
|
2000
|
-
result.toHandle = {
|
|
2001
|
-
...toHandle,
|
|
2002
|
-
};
|
|
2003
|
-
}
|
|
2004
|
-
}
|
|
2017
|
+
result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, false);
|
|
2005
2018
|
}
|
|
2006
2019
|
return result;
|
|
2007
2020
|
}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -11,7 +11,7 @@ const errorMessages = {
|
|
|
11
11
|
error006: () => "Can't create edge. An edge needs a source and a target.",
|
|
12
12
|
error007: (id) => `The old edge with id=${id} does not exist.`,
|
|
13
13
|
error009: (type) => `Marker type "${type}" doesn't exist.`,
|
|
14
|
-
error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: "${
|
|
14
|
+
error008: (handleType, { id, sourceHandle, targetHandle }) => `Couldn't create edge for ${handleType} handle id: "${handleType === 'source' ? sourceHandle : targetHandle}", edge id: ${id}.`,
|
|
15
15
|
error010: () => 'Handle: No node id found. Make sure to only use a Handle inside a custom Node.',
|
|
16
16
|
error011: (edgeType) => `Edge type "${edgeType}" not found. Using fallback type "default".`,
|
|
17
17
|
error012: (id) => `Node with id "${id}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`,
|
|
@@ -235,18 +235,18 @@ excludeNonSelectableNodes = false) => {
|
|
|
235
235
|
height: rect.height / tScale,
|
|
236
236
|
};
|
|
237
237
|
const visibleNodes = [];
|
|
238
|
-
for (const
|
|
238
|
+
for (const node of nodes.values()) {
|
|
239
239
|
const { measured, selectable = true, hidden = false } = node;
|
|
240
|
-
const width = measured.width ?? node.width ?? node.initialWidth ?? null;
|
|
241
|
-
const height = measured.height ?? node.height ?? node.initialHeight ?? null;
|
|
242
240
|
if ((excludeNonSelectableNodes && !selectable) || hidden) {
|
|
243
241
|
continue;
|
|
244
242
|
}
|
|
243
|
+
const width = measured.width ?? node.width ?? node.initialWidth ?? null;
|
|
244
|
+
const height = measured.height ?? node.height ?? node.initialHeight ?? null;
|
|
245
245
|
const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));
|
|
246
|
-
const notInitialized = width === null || height === null;
|
|
247
|
-
const partiallyVisible = partially && overlappingArea > 0;
|
|
248
246
|
const area = (width ?? 0) * (height ?? 0);
|
|
249
|
-
const
|
|
247
|
+
const partiallyVisible = partially && overlappingArea > 0;
|
|
248
|
+
const forceInitialRender = !node.internals.handleBounds;
|
|
249
|
+
const isVisible = forceInitialRender || partiallyVisible || overlappingArea >= area;
|
|
250
250
|
if (isVisible || node.dragging) {
|
|
251
251
|
visibleNodes.push(node);
|
|
252
252
|
}
|
|
@@ -1035,8 +1035,8 @@ function getEdgePosition(params) {
|
|
|
1035
1035
|
}
|
|
1036
1036
|
const sourceHandleBounds = sourceNode.internals.handleBounds || toHandleBounds(sourceNode.handles);
|
|
1037
1037
|
const targetHandleBounds = targetNode.internals.handleBounds || toHandleBounds(targetNode.handles);
|
|
1038
|
-
const sourceHandle = getHandle(sourceHandleBounds?.source ?? [], params.sourceHandle);
|
|
1039
|
-
const targetHandle = getHandle(
|
|
1038
|
+
const sourceHandle = getHandle$1(sourceHandleBounds?.source ?? [], params.sourceHandle);
|
|
1039
|
+
const targetHandle = getHandle$1(
|
|
1040
1040
|
// when connection type is loose we can define all handles as sources and connect source -> source
|
|
1041
1041
|
params.connectionMode === ConnectionMode.Strict
|
|
1042
1042
|
? targetHandleBounds?.target ?? []
|
|
@@ -1102,7 +1102,7 @@ function getHandlePosition(node, handle, fallbackPosition = Position.Left, cente
|
|
|
1102
1102
|
return { x, y: y + height / 2 };
|
|
1103
1103
|
}
|
|
1104
1104
|
}
|
|
1105
|
-
function getHandle(bounds, handleId) {
|
|
1105
|
+
function getHandle$1(bounds, handleId) {
|
|
1106
1106
|
if (!bounds) {
|
|
1107
1107
|
return null;
|
|
1108
1108
|
}
|
|
@@ -1219,7 +1219,8 @@ function adoptUserNodes(nodes, nodeLookup, parentLookup, options) {
|
|
|
1219
1219
|
},
|
|
1220
1220
|
internals: {
|
|
1221
1221
|
positionAbsolute: getNodePositionWithOrigin(userNode, _options.nodeOrigin),
|
|
1222
|
-
handleBounds
|
|
1222
|
+
// if user re-initializes the node or removes `measured` for whatever reason, we reset the handleBounds so that the node gets re-measured
|
|
1223
|
+
handleBounds: !userNode.measured ? undefined : internalNode?.internals.handleBounds,
|
|
1223
1224
|
z: calculateZ(userNode, selectedNodeZ),
|
|
1224
1225
|
userNode,
|
|
1225
1226
|
},
|
|
@@ -1236,7 +1237,8 @@ function updateChildPosition(node, nodeLookup, parentLookup, options) {
|
|
|
1236
1237
|
const parentId = node.parentId;
|
|
1237
1238
|
const parentNode = nodeLookup.get(parentId);
|
|
1238
1239
|
if (!parentNode) {
|
|
1239
|
-
|
|
1240
|
+
console.warn(`Parent node ${parentId} not found. Please make sure that parent nodes are in front of their child nodes in the nodes array.`);
|
|
1241
|
+
return;
|
|
1240
1242
|
}
|
|
1241
1243
|
// update the parentLookup
|
|
1242
1244
|
const childNodes = parentLookup.get(parentId);
|
|
@@ -1742,59 +1744,71 @@ function XYDrag({ onNodeMouseDown, getStoreItems, onDragStart, onDrag, onDragSto
|
|
|
1742
1744
|
};
|
|
1743
1745
|
}
|
|
1744
1746
|
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1747
|
+
function getNodesWithinDistance(position, nodeLookup, distance) {
|
|
1748
|
+
const nodes = [];
|
|
1749
|
+
const rect = {
|
|
1750
|
+
x: position.x - distance,
|
|
1751
|
+
y: position.y - distance,
|
|
1752
|
+
width: distance * 2,
|
|
1753
|
+
height: distance * 2,
|
|
1754
|
+
};
|
|
1755
|
+
for (const node of nodeLookup.values()) {
|
|
1756
|
+
if (getOverlappingArea(rect, nodeToRect(node)) > 0) {
|
|
1757
|
+
nodes.push(node);
|
|
1756
1758
|
}
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
return [handles, excludedHandle];
|
|
1759
|
+
}
|
|
1760
|
+
return nodes;
|
|
1760
1761
|
}
|
|
1761
|
-
|
|
1762
|
+
// this distance is used for the area around the user pointer
|
|
1763
|
+
// while doing a connection for finding the closest nodes
|
|
1764
|
+
const ADDITIONAL_DISTANCE = 250;
|
|
1765
|
+
function getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {
|
|
1762
1766
|
let closestHandles = [];
|
|
1763
1767
|
let minDistance = Infinity;
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1768
|
+
const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);
|
|
1769
|
+
for (const node of closeNodes) {
|
|
1770
|
+
const allHandles = [...(node.internals.handleBounds?.source ?? []), ...(node.internals.handleBounds?.target ?? [])];
|
|
1771
|
+
for (const handle of allHandles) {
|
|
1772
|
+
// if the handle is the same as the fromHandle we skip it
|
|
1773
|
+
if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {
|
|
1774
|
+
continue;
|
|
1775
|
+
}
|
|
1776
|
+
// determine absolute position of the handle
|
|
1777
|
+
const { x, y } = getHandlePosition(node, handle, handle.position, true);
|
|
1778
|
+
const distance = Math.sqrt(Math.pow(x - position.x, 2) + Math.pow(y - position.y, 2));
|
|
1779
|
+
if (distance > connectionRadius) {
|
|
1780
|
+
continue;
|
|
1781
|
+
}
|
|
1767
1782
|
if (distance < minDistance) {
|
|
1768
|
-
closestHandles = [handle];
|
|
1783
|
+
closestHandles = [{ ...handle, x, y }];
|
|
1784
|
+
minDistance = distance;
|
|
1769
1785
|
}
|
|
1770
1786
|
else if (distance === minDistance) {
|
|
1771
1787
|
// when multiple handles are on the same distance we collect all of them
|
|
1772
|
-
closestHandles.push(handle);
|
|
1788
|
+
closestHandles.push({ ...handle, x, y });
|
|
1773
1789
|
}
|
|
1774
|
-
minDistance = distance;
|
|
1775
1790
|
}
|
|
1776
1791
|
}
|
|
1777
1792
|
if (!closestHandles.length) {
|
|
1778
1793
|
return null;
|
|
1779
1794
|
}
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1795
|
+
// when multiple handles overlay each other we prefer the opposite handle
|
|
1796
|
+
if (closestHandles.length > 1) {
|
|
1797
|
+
const oppositeHandleType = fromHandle.type === 'source' ? 'target' : 'source';
|
|
1798
|
+
return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];
|
|
1799
|
+
}
|
|
1800
|
+
return closestHandles[0];
|
|
1784
1801
|
}
|
|
1785
|
-
function
|
|
1786
|
-
const
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
for (const node of nodeLookup.values()) {
|
|
1790
|
-
if (node.internals.handleBounds) {
|
|
1791
|
-
const [sourceHandles, excludedSource] = getHandles(node, node.internals.handleBounds, 'source', currentHandle);
|
|
1792
|
-
const [targetHandles, excludedTarget] = getHandles(node, node.internals.handleBounds, 'target', currentHandle);
|
|
1793
|
-
excludedHandle = excludedHandle ? excludedHandle : excludedSource ?? excludedTarget;
|
|
1794
|
-
connectionHandles.push(...sourceHandles, ...targetHandles);
|
|
1795
|
-
}
|
|
1802
|
+
function getHandle(nodeId, handleType, handleId, nodeLookup, withAbsolutePosition = false) {
|
|
1803
|
+
const node = nodeLookup.get(nodeId);
|
|
1804
|
+
if (!node) {
|
|
1805
|
+
return null;
|
|
1796
1806
|
}
|
|
1797
|
-
|
|
1807
|
+
const handles = node.internals.handleBounds?.[handleType];
|
|
1808
|
+
const handle = (handleId ? handles?.find((h) => h.id === handleId) : handles?.[0]) ?? null;
|
|
1809
|
+
return handle && withAbsolutePosition
|
|
1810
|
+
? { ...handle, ...getHandlePosition(node, handle, handle.position, true) }
|
|
1811
|
+
: handle;
|
|
1798
1812
|
}
|
|
1799
1813
|
function getHandleType(edgeUpdaterType, handleDomNode) {
|
|
1800
1814
|
if (edgeUpdaterType) {
|
|
@@ -1832,17 +1846,15 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1832
1846
|
if (!containerBounds || !handleType) {
|
|
1833
1847
|
return;
|
|
1834
1848
|
}
|
|
1849
|
+
const fromHandleInternal = getHandle(nodeId, handleType, handleId, nodeLookup);
|
|
1850
|
+
if (!fromHandleInternal) {
|
|
1851
|
+
return;
|
|
1852
|
+
}
|
|
1835
1853
|
let position = getEventPosition(event, containerBounds);
|
|
1836
1854
|
let autoPanStarted = false;
|
|
1837
1855
|
let connection = null;
|
|
1838
1856
|
let isValid = false;
|
|
1839
1857
|
let handleDomNode = null;
|
|
1840
|
-
const [handleLookup, fromHandleInternal] = getHandleLookup({
|
|
1841
|
-
nodeLookup,
|
|
1842
|
-
nodeId,
|
|
1843
|
-
handleId,
|
|
1844
|
-
handleType,
|
|
1845
|
-
});
|
|
1846
1858
|
// when the user is moving the mouse close to the edge of the canvas while connecting we move the canvas
|
|
1847
1859
|
function autoPan() {
|
|
1848
1860
|
if (!autoPanOnConnect || !containerBounds) {
|
|
@@ -1883,7 +1895,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1883
1895
|
}
|
|
1884
1896
|
const transform = getTransform();
|
|
1885
1897
|
position = getEventPosition(event, containerBounds);
|
|
1886
|
-
closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius,
|
|
1898
|
+
closestHandle = getClosestHandle(pointToRendererPoint(position, transform, false, [1, 1]), connectionRadius, nodeLookup, fromHandle);
|
|
1887
1899
|
if (!autoPanStarted) {
|
|
1888
1900
|
autoPan();
|
|
1889
1901
|
autoPanStarted = true;
|
|
@@ -1898,7 +1910,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1898
1910
|
doc,
|
|
1899
1911
|
lib,
|
|
1900
1912
|
flowId,
|
|
1901
|
-
|
|
1913
|
+
nodeLookup,
|
|
1902
1914
|
});
|
|
1903
1915
|
handleDomNode = result.handleDomNode;
|
|
1904
1916
|
connection = result.connection;
|
|
@@ -1922,7 +1934,9 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1922
1934
|
newConnection.toHandle &&
|
|
1923
1935
|
previousConnection.toHandle.type === newConnection.toHandle.type &&
|
|
1924
1936
|
previousConnection.toHandle.nodeId === newConnection.toHandle.nodeId &&
|
|
1925
|
-
previousConnection.toHandle.id === newConnection.toHandle.id
|
|
1937
|
+
previousConnection.toHandle.id === newConnection.toHandle.id &&
|
|
1938
|
+
previousConnection.to.x === newConnection.to.x &&
|
|
1939
|
+
previousConnection.to.y === newConnection.to.y) {
|
|
1926
1940
|
return;
|
|
1927
1941
|
}
|
|
1928
1942
|
updateConnection(newConnection);
|
|
@@ -1934,9 +1948,15 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1934
1948
|
}
|
|
1935
1949
|
// it's important to get a fresh reference from the store here
|
|
1936
1950
|
// in order to get the latest state of onConnectEnd
|
|
1937
|
-
|
|
1951
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1952
|
+
const { inProgress, ...connectionState } = previousConnection;
|
|
1953
|
+
const finalConnectionState = {
|
|
1954
|
+
...connectionState,
|
|
1955
|
+
toPosition: previousConnection.toHandle ? previousConnection.toPosition : null,
|
|
1956
|
+
};
|
|
1957
|
+
onConnectEnd?.(event, finalConnectionState);
|
|
1938
1958
|
if (edgeUpdaterType) {
|
|
1939
|
-
onReconnectEnd?.(event);
|
|
1959
|
+
onReconnectEnd?.(event, finalConnectionState);
|
|
1940
1960
|
}
|
|
1941
1961
|
cancelConnection();
|
|
1942
1962
|
cancelAnimationFrame(autoPanId);
|
|
@@ -1955,7 +1975,7 @@ function onPointerDown(event, { connectionMode, connectionRadius, handleId, node
|
|
|
1955
1975
|
doc.addEventListener('touchend', onPointerUp);
|
|
1956
1976
|
}
|
|
1957
1977
|
// checks if and returns connection in fom of an object { source: 123, target: 312 }
|
|
1958
|
-
function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid,
|
|
1978
|
+
function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId, fromType, doc, lib, flowId, isValidConnection = alwaysValid, nodeLookup, }) {
|
|
1959
1979
|
const isTarget = fromType === 'target';
|
|
1960
1980
|
const handleDomNode = handle
|
|
1961
1981
|
? doc.querySelector(`.${lib}-flow__handle[data-id="${flowId}-${handle?.nodeId}-${handle?.id}-${handle?.type}"]`)
|
|
@@ -1977,7 +1997,7 @@ function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId
|
|
|
1977
1997
|
const handleId = handleToCheck.getAttribute('data-handleid');
|
|
1978
1998
|
const connectable = handleToCheck.classList.contains('connectable');
|
|
1979
1999
|
const connectableEnd = handleToCheck.classList.contains('connectableend');
|
|
1980
|
-
if (!handleNodeId) {
|
|
2000
|
+
if (!handleNodeId || !handleType) {
|
|
1981
2001
|
return result;
|
|
1982
2002
|
}
|
|
1983
2003
|
const connection = {
|
|
@@ -1994,14 +2014,7 @@ function isValidHandle(event, { handle, connectionMode, fromNodeId, fromHandleId
|
|
|
1994
2014
|
? (isTarget && handleType === 'source') || (!isTarget && handleType === 'target')
|
|
1995
2015
|
: handleNodeId !== fromNodeId || handleId !== fromHandleId);
|
|
1996
2016
|
result.isValid = isValid && isValidConnection(connection);
|
|
1997
|
-
|
|
1998
|
-
const toHandle = handleLookup.find((h) => h.id === handleId && h.nodeId === handleNodeId && h.type === handleType);
|
|
1999
|
-
if (toHandle) {
|
|
2000
|
-
result.toHandle = {
|
|
2001
|
-
...toHandle,
|
|
2002
|
-
};
|
|
2003
|
-
}
|
|
2004
|
-
}
|
|
2017
|
+
result.toHandle = getHandle(handleNodeId, handleType, handleId, nodeLookup, false);
|
|
2005
2018
|
}
|
|
2006
2019
|
return result;
|
|
2007
2020
|
}
|
|
@@ -37,7 +37,7 @@ export type OnConnectStartParams = {
|
|
|
37
37
|
};
|
|
38
38
|
export type OnConnectStart = (event: MouseEvent | TouchEvent, params: OnConnectStartParams) => void;
|
|
39
39
|
export type OnConnect = (connection: Connection) => void;
|
|
40
|
-
export type OnConnectEnd = (event: MouseEvent | TouchEvent) => void;
|
|
40
|
+
export type OnConnectEnd = (event: MouseEvent | TouchEvent, connectionState: FinalConnectionState) => void;
|
|
41
41
|
export type IsValidConnection = (edge: EdgeBase | Connection) => boolean;
|
|
42
42
|
export type FitViewParamsBase<NodeType extends NodeBase> = {
|
|
43
43
|
nodes: Map<string, InternalNodeBase<NodeType>>;
|
|
@@ -126,6 +126,7 @@ export type ConnectionInProgress<NodeType extends InternalNodeBase = InternalNod
|
|
|
126
126
|
toNode: NodeType | null;
|
|
127
127
|
};
|
|
128
128
|
export type ConnectionState<NodeType extends InternalNodeBase = InternalNodeBase> = ConnectionInProgress<NodeType> | NoConnection;
|
|
129
|
+
export type FinalConnectionState<NodeType extends InternalNodeBase = InternalNodeBase> = Omit<ConnectionState<NodeType>, 'inProgress'>;
|
|
129
130
|
export type UpdateConnection<NodeType extends InternalNodeBase = InternalNodeBase> = (params: ConnectionState<NodeType>) => void;
|
|
130
131
|
export type ColorModeClass = 'light' | 'dark';
|
|
131
132
|
export type ColorMode = ColorModeClass | 'system';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5C,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B,MAAM,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,UAAU,CAAC;AAE3D,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;AACzF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AACjC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,EAAE,6BAA6B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACtF,MAAM,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,6BAA6B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AACtG,MAAM,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC;AACnC,MAAM,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC;AACzC,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,6BAA6B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAC5G,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/F,MAAM,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEvF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,cAAc;IACxB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;AACpG,MAAM,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../src/types/general.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"AAaA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,OAAO,EACP,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,kDAAmD,GAAG,wBACd,CAAC;AAEhE;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,kDAAmD,GAAG,wBACiB,CAAC;AAE/F,eAAO,MAAM,kBAAkB,kEACpB,GAAG,wBACyG,CAAC;AAExH;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,qFAChB,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,SACxB,QAAQ,EAAE,SACV,QAAQ,EAAE,KAChB,QAAQ,EAaV,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,qFAChB,QAAQ,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,SACxB,QAAQ,EAAE,SACV,QAAQ,EAAE,KAChB,QAAQ,EAYV,CAAC;AAEF,eAAO,MAAM,yBAAyB,SAAU,QAAQ,8BAAoC,UAU3F,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,UAAW,QAAQ,EAAE,WAAU,oBAAoB,KAA4B,IAczG,CAAC;AAEF,MAAM,MAAM,4BAA4B,CAAC,QAAQ,IAAI;IACnD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;CACtC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,iEACrB,IAAI,MAAM,EAAE,QAAQ,CAAC,WACzB,6BAA6B,QAAQ,CAAC,KAC7C,IAeF,CAAC;AAEF,eAAO,MAAM,cAAc,gDAClB,IAAI,MAAM,EAAE,iBAAiB,QAAQ,CAAC,CAAC,QACxC,IAAI,6FAKT,iBAAiB,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/utils/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/utils/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,UAAU,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACb,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAY5C,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,EAC/D,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClD,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACtD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,QAUvC;AAED,KAAK,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,IAAI;IACnD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,SAAS,QAAQ,EACtD,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClD,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACtD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/utils/store.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,UAAU,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACb,MAAM,UAAU,CAAC;AAIlB,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAY5C,wBAAgB,uBAAuB,CAAC,QAAQ,SAAS,QAAQ,EAC/D,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClD,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACtD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,QAUvC;AAED,KAAK,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,IAAI;IACnD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,cAAc,CAAC,QAAQ,SAAS,QAAQ,EACtD,KAAK,EAAE,QAAQ,EAAE,EACjB,UAAU,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAClD,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EACtD,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,QAoCvC;AAiED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,UAAU,GAAE,UAAmB,GAC9B,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,EAAE,CA+E9C;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,gBAAgB,EACnE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACxC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,EAChC,YAAY,EAAE,YAAY,CAAC,QAAQ,CAAC,EACpC,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,UAAU,CAAC,EAAE,UAAU,GACtB;IAAE,OAAO,EAAE,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAA;CAAE,CA8EtF;AAED,wBAAsB,KAAK,CAAC,EAC1B,KAAK,EACL,OAAO,EACP,SAAS,EACT,eAAe,EACf,KAAK,EACL,MAAM,GACP,EAAE;IACD,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBnB;AAED,wBAAgB,sBAAsB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAkBnH"}
|