panelui-native 0.20.1 → 0.21.0
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/lib/module/components/bottom-sheet/index.js +35 -10
- package/lib/module/components/bottom-sheet/index.js.map +1 -1
- package/lib/module/components/flow/flow-paths.js +18 -0
- package/lib/module/components/flow/flow-paths.js.map +1 -1
- package/lib/module/components/flow/index.js +156 -31
- package/lib/module/components/flow/index.js.map +1 -1
- package/lib/module/components/signature/index.js +7 -3
- package/lib/module/components/signature/index.js.map +1 -1
- package/lib/module/icons/index.js +29 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
- package/lib/typescript/src/components/flow/flow-paths.d.ts +8 -0
- package/lib/typescript/src/components/flow/flow-paths.d.ts.map +1 -1
- package/lib/typescript/src/components/flow/index.d.ts +13 -1
- package/lib/typescript/src/components/flow/index.d.ts.map +1 -1
- package/lib/typescript/src/components/signature/index.d.ts +4 -0
- package/lib/typescript/src/components/signature/index.d.ts.map +1 -1
- package/lib/typescript/src/icons/index.d.ts +2 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/bottom-sheet/index.tsx +52 -21
- package/src/components/flow/flow-paths.ts +14 -0
- package/src/components/flow/index.tsx +197 -31
- package/src/components/signature/index.tsx +13 -3
- package/src/icons/index.tsx +23 -0
- package/src/index.ts +4 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { cloneElement, createContext, isValidElement, useCallback, useContext, useMemo, useState } from 'react';
|
|
3
|
+
import { cloneElement, createContext, isValidElement, useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { Pressable, useWindowDimensions, View } from 'react-native';
|
|
5
5
|
import { useCSSVariable } from 'uniwind';
|
|
6
6
|
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
@@ -152,7 +152,24 @@ function BottomSheetContent({
|
|
|
152
152
|
const translateY = useSharedValue(0);
|
|
153
153
|
const closeTint = useCSSVariable('--color-muted-foreground');
|
|
154
154
|
const close = useCallback(() => setOpen(false), [setOpen]);
|
|
155
|
-
|
|
155
|
+
|
|
156
|
+
/*
|
|
157
|
+
* The offset survives a close — the early return below sits after every
|
|
158
|
+
* hook, so this component keeps its state while the sheet is hidden. A
|
|
159
|
+
* swipe-dismiss leaves it parked a screen height down, and without this the
|
|
160
|
+
* next open would draw the sheet below the fold behind a full backdrop:
|
|
161
|
+
* a dimmed screen with nothing on it and no reachable close button.
|
|
162
|
+
*/
|
|
163
|
+
useEffect(() => {
|
|
164
|
+
if (open) translateY.value = 0;
|
|
165
|
+
}, [open, translateY]);
|
|
166
|
+
const pan = useMemo(() => Gesture.Pan()
|
|
167
|
+
/*
|
|
168
|
+
* A drag has to travel before it takes the touch. This detector wraps
|
|
169
|
+
* the whole sheet, close button included, and an unqualified Pan
|
|
170
|
+
* activates on a few pixels of drift — cancelling the press the button
|
|
171
|
+
* is in the middle of, so a tap with any finger travel does nothing.
|
|
172
|
+
*/.activeOffsetY([-12, 12]).onChange(event => {
|
|
156
173
|
// Rubber-band when dragging upward, follow the finger downward.
|
|
157
174
|
const next = translateY.value + event.changeY;
|
|
158
175
|
translateY.value = next > 0 ? next : next / 3;
|
|
@@ -166,7 +183,11 @@ function BottomSheetContent({
|
|
|
166
183
|
} else {
|
|
167
184
|
translateY.value = withSpring(0, SPRING);
|
|
168
185
|
}
|
|
169
|
-
})
|
|
186
|
+
}),
|
|
187
|
+
// Rebuilt only when one of these changes. Built inline it would be a new
|
|
188
|
+
// gesture on every render — and the sheet re-renders while it is being
|
|
189
|
+
// used, each time re-attaching the handler and dropping the live touch.
|
|
190
|
+
[close, screenHeight, translateY]);
|
|
170
191
|
const sheetStyle = useAnimatedStyle(() => ({
|
|
171
192
|
transform: [{
|
|
172
193
|
translateY: translateY.value
|
|
@@ -241,19 +262,23 @@ function BottomSheetContent({
|
|
|
241
262
|
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
242
263
|
entering: SlideInDown.springify().damping(22).stiffness(240).mass(0.8),
|
|
243
264
|
exiting: SlideOutDown.duration(200),
|
|
244
|
-
style: [sheetStyle,
|
|
245
|
-
// A detached sheet's own bottom margin already clears the home
|
|
246
|
-
// indicator, so it takes plain padding rather than stacking the
|
|
247
|
-
// inset on top of the gap.
|
|
248
|
-
{
|
|
249
|
-
paddingBottom: detached ? 16 : Math.max(insets.bottom, 16)
|
|
250
|
-
}],
|
|
251
265
|
accessibilityViewIsModal: true,
|
|
252
266
|
className: sheetVariants({
|
|
253
267
|
detached,
|
|
254
268
|
className
|
|
255
269
|
}),
|
|
256
270
|
...props,
|
|
271
|
+
// After the spread, and with the caller's own style folded in
|
|
272
|
+
// rather than replacing the array: spread last, a caller passing
|
|
273
|
+
// `style` for a height would silently drop the drag transform and
|
|
274
|
+
// the safe-area padding with it.
|
|
275
|
+
style: [sheetStyle,
|
|
276
|
+
// A detached sheet's own bottom margin already clears the home
|
|
277
|
+
// indicator, so it takes plain padding rather than stacking the
|
|
278
|
+
// inset on top of the gap.
|
|
279
|
+
{
|
|
280
|
+
paddingBottom: detached ? 16 : Math.max(insets.bottom, 16)
|
|
281
|
+
}, props.style],
|
|
257
282
|
children: [/*#__PURE__*/_jsx(View, {
|
|
258
283
|
className: "mb-3 self-center",
|
|
259
284
|
children: /*#__PURE__*/_jsx(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["cloneElement","createContext","isValidElement","useCallback","useContext","useMemo","useState","Pressable","useWindowDimensions","View","useCSSVariable","Gesture","GestureDetector","Animated","SlideInDown","SlideOutDown","runOnJS","useAnimatedStyle","useSharedValue","withSpring","withTiming","useSafeAreaInsets","tv","getNativeUI","XIcon","Portal","Scrim","cn","jsx","_jsx","jsxs","_jsxs","SPRING","damping","stiffness","mass","DISMISS_DISTANCE","DISMISS_VELOCITY","sheetVariants","base","variants","detached","false","true","defaultVariants","BottomSheetContext","useBottomSheet","component","context","Error","DETENT_FRACTION","half","full","detentFloor","snapPoints","screenHeight","length","undefined","first","fraction","height","NativeSheetContext","BottomSheetRoot","children","open","onOpenChange","defaultOpen","native","internalOpen","setInternalOpen","isControlled","resolvedOpen","setOpen","next","nativeUI","nativeSheet","Provider","value","BottomSheetTrigger","onPress","args","props","BottomSheetContent","className","dismissible","showClose","blur","width","screenWidth","insets","translateY","closeTint","close","pan","Pan","onChange","event","changeY","onEnd","velocityY","duration","sheetStyle","transform","Host","BottomSheet","NativeBottomSheet","RNHostView","matchContents","style","position","isPresented","onDismiss","minHeight","paddingBottom","Math","max","bottom","accessibilityLabel","gesture","entering","springify","exiting","accessibilityViewIsModal","accessibilityRole","hitSlop","size","color","Object","assign","Trigger","Content"],"sourceRoot":"../../../../src","sources":["components/bottom-sheet/index.tsx"],"mappings":";;AAAA,SACEA,YAAY,EACZC,aAAa,EACbC,cAAc,EACdC,WAAW,EACXC,UAAU,EACVC,OAAO,EACPC,QAAQ,QAGH,OAAO;AACd,SAASC,SAAS,EAAEC,mBAAmB,EAAEC,IAAI,QAAwB,cAAc;AACnF,SAASC,cAAc,QAAQ,SAAS;AACxC,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA8B;AACvE,OAAOC,QAAQ,IAGbC,WAAW,EACXC,YAAY,EACZC,OAAO,EACPC,gBAAgB,EAChBC,cAAc,EACdC,UAAU,EACVC,UAAU,QACL,yBAAyB;AAChC,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,EAAE,QAAQ,mBAAmB;AACtC,SAASC,WAAW,QAAQ,uBAAc;AAC1C,SAASC,KAAK,QAAQ,sBAAa;AACnC,SAASC,MAAM,QAAQ,4BAAyB;AAChD,SAASC,KAAK,QAAQ,2BAAwB;AAC9C,SAASC,EAAE,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEpC,MAAMC,MAAM,GAAG;EAAEC,OAAO,EAAE,EAAE;EAAEC,SAAS,EAAE,GAAG;EAAEC,IAAI,EAAE;AAAI,CAAU;AAClE,MAAMC,gBAAgB,GAAG,GAAG;AAC5B,MAAMC,gBAAgB,GAAG,GAAG;AAE5B,MAAMC,aAAa,GAAGhB,EAAE,CAAC;EACvBiB,IAAI,EAAE,qDAAqD;EAC3DC,QAAQ,EAAE;IACRC,QAAQ,EAAE;MACR;MACA;MACA;MACAC,KAAK,EAAE,0BAA0B;MACjC;MACA;MACAC,IAAI,EAAE;IACR;EACF,CAAC;EACDC,eAAe,EAAE;IACfH,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC;AAOF,MAAMI,kBAAkB,
|
|
1
|
+
{"version":3,"names":["cloneElement","createContext","isValidElement","useCallback","useContext","useEffect","useMemo","useState","Pressable","useWindowDimensions","View","useCSSVariable","Gesture","GestureDetector","Animated","SlideInDown","SlideOutDown","runOnJS","useAnimatedStyle","useSharedValue","withSpring","withTiming","useSafeAreaInsets","tv","getNativeUI","XIcon","Portal","Scrim","cn","jsx","_jsx","jsxs","_jsxs","SPRING","damping","stiffness","mass","DISMISS_DISTANCE","DISMISS_VELOCITY","sheetVariants","base","variants","detached","false","true","defaultVariants","BottomSheetContext","useBottomSheet","component","context","Error","DETENT_FRACTION","half","full","detentFloor","snapPoints","screenHeight","length","undefined","first","fraction","height","NativeSheetContext","BottomSheetRoot","children","open","onOpenChange","defaultOpen","native","internalOpen","setInternalOpen","isControlled","resolvedOpen","setOpen","next","nativeUI","nativeSheet","Provider","value","BottomSheetTrigger","onPress","args","props","BottomSheetContent","className","dismissible","showClose","blur","width","screenWidth","insets","translateY","closeTint","close","pan","Pan","activeOffsetY","onChange","event","changeY","onEnd","velocityY","duration","sheetStyle","transform","Host","BottomSheet","NativeBottomSheet","RNHostView","matchContents","style","position","isPresented","onDismiss","minHeight","paddingBottom","Math","max","bottom","accessibilityLabel","gesture","entering","springify","exiting","accessibilityViewIsModal","accessibilityRole","hitSlop","size","color","Object","assign","Trigger","Content"],"sourceRoot":"../../../../src","sources":["components/bottom-sheet/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -72,6 +72,24 @@ export function anchorOf(rect, side, offset) {
|
|
|
72
72
|
};
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/**
|
|
76
|
+
* Pushes an anchor out along its own face's normal.
|
|
77
|
+
*
|
|
78
|
+
* For an end attached to something that draws its own border: landing exactly
|
|
79
|
+
* on the border puts the line under the stroke, where it reads as stopping
|
|
80
|
+
* short rather than as arriving.
|
|
81
|
+
*/
|
|
82
|
+
export function standOff(point, side, by) {
|
|
83
|
+
'worklet';
|
|
84
|
+
|
|
85
|
+
if (by === 0) return point;
|
|
86
|
+
const normal = sideNormal(side);
|
|
87
|
+
return {
|
|
88
|
+
x: point.x + normal.x * by,
|
|
89
|
+
y: point.y + normal.y * by
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
|
|
75
93
|
/**
|
|
76
94
|
* The faces two nodes should use when nobody has said. Whichever axis they are
|
|
77
95
|
* further apart on wins, so nodes side by side connect left-to-right and nodes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sideNormal","side","x","y","anchorOf","rect","offset","width","height","autoSides","from","to","dx","dy","Math","abs","straightPath","controlOffset","distance","curvature","sqrt","controlPoint","point","other","bezierPath","fromSide","toSide","c1","c2","distanceBetween","a","b","bend","c","radius","size","min","xDir","yDir","smoothStepPath","gap","fromNormal","toNormal","fromGap","toGap","horizontal","facing","middle","midX","midY","axis","apart","push","max","points","route","i","length","previous","d","last","edgePath","variant","edgeSpan","arrowHeadPath","tip","dirX","dirY","ux","uy","px","py","baseX","baseY","half","arrivalDirection","normal"],"sourceRoot":"../../../../src","sources":["components/flow/flow-paths.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["sideNormal","side","x","y","anchorOf","rect","offset","width","height","standOff","point","by","normal","autoSides","from","to","dx","dy","Math","abs","straightPath","controlOffset","distance","curvature","sqrt","controlPoint","other","bezierPath","fromSide","toSide","c1","c2","distanceBetween","a","b","bend","c","radius","size","min","xDir","yDir","smoothStepPath","gap","fromNormal","toNormal","fromGap","toGap","horizontal","facing","middle","midX","midY","axis","apart","push","max","points","route","i","length","previous","d","last","edgePath","variant","edgeSpan","arrowHeadPath","tip","dirX","dirY","ux","uy","px","py","baseX","baseY","half","arrivalDirection"],"sourceRoot":"../../../../src","sources":["components/flow/flow-paths.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -55,7 +55,7 @@ import { LockIcon, MaximizeIcon, MinusIcon, PlusIcon, UnlockIcon } from "../../i
|
|
|
55
55
|
import { AnimatedPressable } from "../../primitives/animated-pressable.js";
|
|
56
56
|
import { Text } from "../../primitives/text.js";
|
|
57
57
|
import { cn } from "../../utils/cn.js";
|
|
58
|
-
import { anchorOf, arrivalDirection, arrowHeadPath, autoSides, edgePath } from "./flow-paths.js";
|
|
58
|
+
import { anchorOf, arrivalDirection, arrowHeadPath, autoSides, edgePath, standOff } from "./flow-paths.js";
|
|
59
59
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
60
60
|
const AnimatedPath = Animated.createAnimatedComponent(Path);
|
|
61
61
|
const AnimatedRect = Animated.createAnimatedComponent(Rect);
|
|
@@ -75,6 +75,16 @@ const TRANSFORM_ORIGIN = {
|
|
|
75
75
|
/** How many screens of grid to draw around the container in each direction. */
|
|
76
76
|
const GRID_SPAN = 4;
|
|
77
77
|
|
|
78
|
+
/**
|
|
79
|
+
* The step the layer grows in once the graph outruns it.
|
|
80
|
+
*
|
|
81
|
+
* Quantised because the layer's size is React state on the render path: sized
|
|
82
|
+
* to the graph exactly, every frame of every drag would resize it and the SVG
|
|
83
|
+
* drawn at its size. Rounded up to a step, it changes a handful of times over a
|
|
84
|
+
* session instead.
|
|
85
|
+
*/
|
|
86
|
+
const LAYER_STEP = 600;
|
|
87
|
+
|
|
78
88
|
/**
|
|
79
89
|
* An SVG is backed by a single texture, and a texture has a maximum size the
|
|
80
90
|
* platform will allocate — past it, nothing is drawn at all rather than
|
|
@@ -88,6 +98,13 @@ function clampCanvas(value) {
|
|
|
88
98
|
/** How close a finger has to get to a handle for a connection to land. */
|
|
89
99
|
const CONNECT_RADIUS = 44;
|
|
90
100
|
|
|
101
|
+
/**
|
|
102
|
+
* How far short of a container an edge stops. A group draws its own border, so
|
|
103
|
+
* an edge landing exactly on it would run under the stroke; a node has no
|
|
104
|
+
* border of its own and takes none of this.
|
|
105
|
+
*/
|
|
106
|
+
const GROUP_EDGE_STANDOFF = 5;
|
|
107
|
+
|
|
91
108
|
/** What `onConnect` is handed when a connection lands. */
|
|
92
109
|
|
|
93
110
|
const FlowContext = /*#__PURE__*/createContext(null);
|
|
@@ -156,6 +173,7 @@ function FlowRoot({
|
|
|
156
173
|
});
|
|
157
174
|
const [locked, setLocked] = useState(false);
|
|
158
175
|
const [nodeIds, setNodeIds] = useState([]);
|
|
176
|
+
const [groupIds, setGroupIds] = useState([]);
|
|
159
177
|
const [handles, setHandles] = useState([]);
|
|
160
178
|
const [edges, setEdges] = useState([]);
|
|
161
179
|
const [box, setBox] = useState({
|
|
@@ -225,10 +243,27 @@ function FlowRoot({
|
|
|
225
243
|
* of the canvas would quietly become unmovable. Sizing the layer to the same
|
|
226
244
|
* span as the grid keeps every node inside its parent, where it can be hit.
|
|
227
245
|
*/
|
|
246
|
+
/**
|
|
247
|
+
* How far the graph reaches from graph (0, 0), in its worst direction. The
|
|
248
|
+
* layer is symmetric about the origin, so one number covers all four sides.
|
|
249
|
+
*
|
|
250
|
+
* Without this the layer is a fixed multiple of the container, and a graph
|
|
251
|
+
* that grows past it has its edges clipped by the SVG drawn at that size —
|
|
252
|
+
* leaving nodes on screen with the lines between them missing, which reads as
|
|
253
|
+
* the graph having lost its connections rather than as a clipped canvas.
|
|
254
|
+
*/
|
|
255
|
+
const reach = useMemo(() => {
|
|
256
|
+
let out = 0;
|
|
257
|
+
for (const id in boxes) {
|
|
258
|
+
const rect = boxes[id];
|
|
259
|
+
out = Math.max(out, Math.abs(rect.x), Math.abs(rect.y), Math.abs(rect.x + rect.width), Math.abs(rect.y + rect.height));
|
|
260
|
+
}
|
|
261
|
+
return Math.ceil(out / LAYER_STEP) * LAYER_STEP;
|
|
262
|
+
}, [boxes]);
|
|
228
263
|
const layer = useMemo(() => ({
|
|
229
|
-
width: clampCanvas(Math.max(box.width, 320) * GRID_SPAN),
|
|
230
|
-
height: clampCanvas(Math.max(box.height, 480) * GRID_SPAN)
|
|
231
|
-
}), [box.height, box.width]);
|
|
264
|
+
width: clampCanvas(Math.max(Math.max(box.width, 320) * GRID_SPAN, reach * 2)),
|
|
265
|
+
height: clampCanvas(Math.max(Math.max(box.height, 480) * GRID_SPAN, reach * 2))
|
|
266
|
+
}), [box.height, box.width, reach]);
|
|
232
267
|
const origin = useMemo(() => ({
|
|
233
268
|
x: layer.width / 2,
|
|
234
269
|
y: layer.height / 2
|
|
@@ -248,6 +283,12 @@ function FlowRoot({
|
|
|
248
283
|
const unregisterNode = useCallback(id => {
|
|
249
284
|
setNodeIds(current => current.filter(entry => entry !== id));
|
|
250
285
|
}, []);
|
|
286
|
+
const registerGroup = useCallback(id => {
|
|
287
|
+
setGroupIds(current => current.includes(id) ? current : [...current, id]);
|
|
288
|
+
}, []);
|
|
289
|
+
const unregisterGroup = useCallback(id => {
|
|
290
|
+
setGroupIds(current => current.filter(entry => entry !== id));
|
|
291
|
+
}, []);
|
|
251
292
|
const registerHandle = useCallback(entry => {
|
|
252
293
|
setHandles(current => [...current.filter(h => h.key !== entry.key), entry]);
|
|
253
294
|
}, []);
|
|
@@ -408,10 +449,13 @@ function FlowRoot({
|
|
|
408
449
|
locked,
|
|
409
450
|
setLocked,
|
|
410
451
|
nodeIds,
|
|
452
|
+
groupIds,
|
|
411
453
|
handles,
|
|
412
454
|
edges,
|
|
413
455
|
registerNode,
|
|
414
456
|
unregisterNode,
|
|
457
|
+
registerGroup,
|
|
458
|
+
unregisterGroup,
|
|
415
459
|
registerHandle,
|
|
416
460
|
unregisterHandle,
|
|
417
461
|
registerEdge,
|
|
@@ -421,7 +465,7 @@ function FlowRoot({
|
|
|
421
465
|
onNodeDragEnd,
|
|
422
466
|
fitView,
|
|
423
467
|
zoomBy
|
|
424
|
-
}), [boxes, setNodeRect, dropNodeRect, box, layer, origin, connection, edges, fitView, handles, registerEdge, unregisterEdge, isValidConnection, locked, maxZoom, minZoom, nodeIds, onConnect, onNodeDragEnd, rects, registerHandle, registerNode, size, translateX, translateY, unregisterHandle, unregisterNode, zoom, zoomBy]);
|
|
468
|
+
}), [boxes, setNodeRect, dropNodeRect, box, layer, origin, connection, edges, fitView, handles, registerEdge, unregisterEdge, isValidConnection, locked, maxZoom, minZoom, nodeIds, groupIds, onConnect, onNodeDragEnd, rects, registerGroup, registerHandle, registerNode, size, translateX, translateY, unregisterGroup, unregisterHandle, unregisterNode, zoom, zoomBy]);
|
|
425
469
|
const onLayout = useCallback(event => {
|
|
426
470
|
const {
|
|
427
471
|
width,
|
|
@@ -668,6 +712,8 @@ function FlowNode({
|
|
|
668
712
|
position,
|
|
669
713
|
className,
|
|
670
714
|
draggable = true,
|
|
715
|
+
confine = false,
|
|
716
|
+
pinned = false,
|
|
671
717
|
selected = false,
|
|
672
718
|
onPress,
|
|
673
719
|
accessibilityLabel,
|
|
@@ -685,12 +731,25 @@ function FlowNode({
|
|
|
685
731
|
dropNodeRect,
|
|
686
732
|
registerNode,
|
|
687
733
|
unregisterNode,
|
|
734
|
+
registerGroup,
|
|
735
|
+
unregisterGroup,
|
|
688
736
|
onNodeDragEnd
|
|
689
737
|
} = flow;
|
|
738
|
+
|
|
739
|
+
/*
|
|
740
|
+
* Registered twice, on purpose. As a node, because its box belongs in the
|
|
741
|
+
* same registry every other box lives in — that is what lets an edge name it
|
|
742
|
+
* and fitView account for it. As a group, because the minimap and the edge
|
|
743
|
+
* layer both need to know it is a container and not a card.
|
|
744
|
+
*/
|
|
690
745
|
useEffect(() => {
|
|
691
|
-
registerNode(id
|
|
692
|
-
|
|
693
|
-
|
|
746
|
+
registerNode(id);
|
|
747
|
+
registerGroup(id);
|
|
748
|
+
return () => {
|
|
749
|
+
unregisterNode(id);
|
|
750
|
+
unregisterGroup(id);
|
|
751
|
+
};
|
|
752
|
+
}, [id, registerGroup, registerNode, unregisterGroup, unregisterNode]);
|
|
694
753
|
|
|
695
754
|
// Writing on every render would fight the drag, snapping a node back to the
|
|
696
755
|
// position it was first given. Only an actual change to the prop moves it.
|
|
@@ -739,7 +798,10 @@ function FlowNode({
|
|
|
739
798
|
const pressRef = useRef(onPress);
|
|
740
799
|
pressRef.current = onPress;
|
|
741
800
|
const press = useCallback(() => pressRef.current?.(), []);
|
|
742
|
-
const drag = useMemo(() => Gesture.Pan()
|
|
801
|
+
const drag = useMemo(() => Gesture.Pan()
|
|
802
|
+
// A pinned node takes no drag at all: it is part of its container, and
|
|
803
|
+
// the container is what moves.
|
|
804
|
+
.enabled(draggable && !pinned && !locked).onBegin(() => {
|
|
743
805
|
'worklet';
|
|
744
806
|
|
|
745
807
|
const rect = rects.value[id];
|
|
@@ -754,8 +816,23 @@ function FlowNode({
|
|
|
754
816
|
if (!rect) return;
|
|
755
817
|
// Divided by the zoom, so the node keeps up with the finger rather
|
|
756
818
|
// than with the graph coordinate the finger happens to be over.
|
|
757
|
-
|
|
758
|
-
|
|
819
|
+
let x = start.value.x + event.translationX / zoom.value;
|
|
820
|
+
let y = start.value.y + event.translationY / zoom.value;
|
|
821
|
+
|
|
822
|
+
/*
|
|
823
|
+
* Clamped before anything is written, so the box React is told about
|
|
824
|
+
* and the box on screen are the same one. Clamping after the write
|
|
825
|
+
* would leave the edges drawn to a position the node never reached.
|
|
826
|
+
*/
|
|
827
|
+
if (confine && group) {
|
|
828
|
+
const box = rects.value[group];
|
|
829
|
+
if (box) {
|
|
830
|
+
const maxX = box.x + box.width - rect.width;
|
|
831
|
+
const maxY = box.y + box.height - rect.height;
|
|
832
|
+
x = x < box.x ? box.x : x > maxX ? maxX : x;
|
|
833
|
+
y = y < box.y ? box.y : y > maxY ? maxY : y;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
759
836
|
rects.value = {
|
|
760
837
|
...rects.value,
|
|
761
838
|
[id]: {
|
|
@@ -770,7 +847,7 @@ function FlowNode({
|
|
|
770
847
|
|
|
771
848
|
const rect = rects.value[id];
|
|
772
849
|
if (rect) runOnJS(dragEnd)(rect.x, rect.y);
|
|
773
|
-
}), [dragEnd, dragTo, draggable, id, locked, rects, start, zoom]);
|
|
850
|
+
}), [confine, dragEnd, dragTo, draggable, group, id, locked, pinned, rects, start, zoom]);
|
|
774
851
|
|
|
775
852
|
// Raced with the drag rather than layered on top of it. A plain touch handler
|
|
776
853
|
// would fire at the end of a drag too, so every rearrangement would also read
|
|
@@ -1052,6 +1129,7 @@ function FlowEdgePath({
|
|
|
1052
1129
|
curvature = 0.25,
|
|
1053
1130
|
boxes,
|
|
1054
1131
|
handles,
|
|
1132
|
+
groups,
|
|
1055
1133
|
tint,
|
|
1056
1134
|
origin
|
|
1057
1135
|
}) {
|
|
@@ -1072,13 +1150,22 @@ function FlowEdgePath({
|
|
|
1072
1150
|
// to fit whenever the viewport and the laid-out size disagree, and an edge
|
|
1073
1151
|
// drawn at a slightly different scale from the nodes misses them by a little
|
|
1074
1152
|
// everywhere — which looks like bad routing rather than a bad transform.
|
|
1153
|
+
/*
|
|
1154
|
+
* A container's edge is a drawn border rather than the invisible edge of a
|
|
1155
|
+
* card, so an edge that lands exactly on it disappears under the stroke.
|
|
1156
|
+
* Standing a few points off it reads as a line arriving at the box.
|
|
1157
|
+
*/
|
|
1158
|
+
const offA = groups.has(source.node) ? GROUP_EDGE_STANDOFF : 0;
|
|
1159
|
+
const offB = groups.has(target.node) ? GROUP_EDGE_STANDOFF : 0;
|
|
1160
|
+
const outA = standOff(rawA, sideA, offA);
|
|
1161
|
+
const outB = standOff(rawB, sideB, offB);
|
|
1075
1162
|
const a = {
|
|
1076
|
-
x:
|
|
1077
|
-
y:
|
|
1163
|
+
x: outA.x + origin.x,
|
|
1164
|
+
y: outA.y + origin.y
|
|
1078
1165
|
};
|
|
1079
1166
|
const b = {
|
|
1080
|
-
x:
|
|
1081
|
-
y:
|
|
1167
|
+
x: outB.x + origin.x,
|
|
1168
|
+
y: outB.y + origin.y
|
|
1082
1169
|
};
|
|
1083
1170
|
const d = edgePath(variant, a, sideA, b, sideB, curvature, radius, gap);
|
|
1084
1171
|
const dash = dashed || animated ? 6 : 0;
|
|
@@ -1135,12 +1222,16 @@ function FlowEdgeLayer() {
|
|
|
1135
1222
|
boxes,
|
|
1136
1223
|
edges,
|
|
1137
1224
|
handles,
|
|
1225
|
+
groupIds,
|
|
1138
1226
|
connection,
|
|
1139
1227
|
layer,
|
|
1140
1228
|
origin
|
|
1141
1229
|
} = useFlow('Flow');
|
|
1142
1230
|
const token = useCSSVariable('--color-muted-foreground');
|
|
1143
1231
|
const tint = typeof token === 'string' ? token : '#878787';
|
|
1232
|
+
|
|
1233
|
+
// A set rather than the array: every edge asks about both of its ends.
|
|
1234
|
+
const groups = useMemo(() => new Set(groupIds), [groupIds]);
|
|
1144
1235
|
const lineProps = useAnimatedProps(() => {
|
|
1145
1236
|
const current = connection.value;
|
|
1146
1237
|
if (current.active === 0) return {
|
|
@@ -1163,6 +1254,7 @@ function FlowEdgeLayer() {
|
|
|
1163
1254
|
...edge.props,
|
|
1164
1255
|
boxes: boxes,
|
|
1165
1256
|
handles: handles,
|
|
1257
|
+
groups: groups,
|
|
1166
1258
|
tint: tint,
|
|
1167
1259
|
origin: origin
|
|
1168
1260
|
}, edge.key)), /*#__PURE__*/_jsx(AnimatedPath, {
|
|
@@ -1226,10 +1318,15 @@ function FlowGroup({
|
|
|
1226
1318
|
// read per frame.
|
|
1227
1319
|
const childIds = useMemo(() => collectNodeIds(children), [children]);
|
|
1228
1320
|
const start = useSharedValue({});
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1321
|
+
|
|
1322
|
+
/**
|
|
1323
|
+
* Reports the group *and* everything that travelled with it. Reporting only
|
|
1324
|
+
* the container would leave a graph whose positions are driven from outside
|
|
1325
|
+
* holding stale coordinates for every node in it.
|
|
1326
|
+
*/
|
|
1327
|
+
const dragEnd = useCallback(moved => {
|
|
1328
|
+
for (const [key, next] of Object.entries(moved)) onNodeDragEnd?.(key, next);
|
|
1329
|
+
}, [onNodeDragEnd]);
|
|
1233
1330
|
|
|
1234
1331
|
/** Tells React where the group and everything in it got to. */
|
|
1235
1332
|
const dragTo = useCallback(moved => {
|
|
@@ -1284,8 +1381,17 @@ function FlowGroup({
|
|
|
1284
1381
|
}).onEnd(() => {
|
|
1285
1382
|
'worklet';
|
|
1286
1383
|
|
|
1287
|
-
const
|
|
1288
|
-
|
|
1384
|
+
const settled = {};
|
|
1385
|
+
const ids = Object.keys(start.value);
|
|
1386
|
+
for (let i = 0; i < ids.length; i += 1) {
|
|
1387
|
+
const key = ids[i];
|
|
1388
|
+
const rect = rects.value[key];
|
|
1389
|
+
if (rect) settled[key] = {
|
|
1390
|
+
x: rect.x,
|
|
1391
|
+
y: rect.y
|
|
1392
|
+
};
|
|
1393
|
+
}
|
|
1394
|
+
runOnJS(dragEnd)(settled);
|
|
1289
1395
|
}), [childIds, dragEnd, dragTo, draggable, id, locked, rects, start, zoom]);
|
|
1290
1396
|
const style = useAnimatedStyle(() => {
|
|
1291
1397
|
const rect = rects.value[id];
|
|
@@ -1448,6 +1554,7 @@ function FlowMiniMap({
|
|
|
1448
1554
|
const {
|
|
1449
1555
|
rects,
|
|
1450
1556
|
nodeIds,
|
|
1557
|
+
groupIds,
|
|
1451
1558
|
translateX,
|
|
1452
1559
|
translateY,
|
|
1453
1560
|
zoom,
|
|
@@ -1457,6 +1564,9 @@ function FlowMiniMap({
|
|
|
1457
1564
|
const tint = nodeColor ?? (typeof token === 'string' ? token : '#737373');
|
|
1458
1565
|
const ringToken = useCSSVariable('--color-ring');
|
|
1459
1566
|
const ring = typeof ringToken === 'string' ? ringToken : '#737373';
|
|
1567
|
+
const borderToken = useCSSVariable('--color-border');
|
|
1568
|
+
const outline = typeof borderToken === 'string' ? borderToken : '#404040';
|
|
1569
|
+
const groups = useMemo(() => new Set(groupIds), [groupIds]);
|
|
1460
1570
|
const padding = 6;
|
|
1461
1571
|
|
|
1462
1572
|
/** The graph's bounds and the scale that fits them in the box. Once a frame. */
|
|
@@ -1530,15 +1640,19 @@ function FlowMiniMap({
|
|
|
1530
1640
|
children: /*#__PURE__*/_jsxs(Svg, {
|
|
1531
1641
|
width: width,
|
|
1532
1642
|
height: height,
|
|
1533
|
-
children: [nodeIds.map(id =>
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1643
|
+
children: [nodeIds.map(id => {
|
|
1644
|
+
const group = groups.has(id);
|
|
1645
|
+
return /*#__PURE__*/_jsx(MiniMapNode, {
|
|
1646
|
+
id: id,
|
|
1647
|
+
group: group,
|
|
1648
|
+
rects: rects,
|
|
1649
|
+
fit: fit,
|
|
1650
|
+
padding: padding,
|
|
1651
|
+
color: group ? outline : tint,
|
|
1652
|
+
width: width,
|
|
1653
|
+
height: height
|
|
1654
|
+
}, id);
|
|
1655
|
+
}), /*#__PURE__*/_jsx(AnimatedRect, {
|
|
1542
1656
|
animatedProps: viewportProps,
|
|
1543
1657
|
fill: "none",
|
|
1544
1658
|
stroke: ring,
|
|
@@ -1552,6 +1666,7 @@ FlowMiniMap.displayName = 'Flow.MiniMap';
|
|
|
1552
1666
|
FlowMiniMap.slot = 'overlay';
|
|
1553
1667
|
function MiniMapNode({
|
|
1554
1668
|
id,
|
|
1669
|
+
group = false,
|
|
1555
1670
|
rects,
|
|
1556
1671
|
fit,
|
|
1557
1672
|
padding,
|
|
@@ -1579,6 +1694,16 @@ function MiniMapNode({
|
|
|
1579
1694
|
height: Math.min(Math.max(rect.height * scale, 2), height)
|
|
1580
1695
|
};
|
|
1581
1696
|
});
|
|
1697
|
+
if (group) {
|
|
1698
|
+
return /*#__PURE__*/_jsx(AnimatedRect, {
|
|
1699
|
+
animatedProps: props,
|
|
1700
|
+
fill: "none",
|
|
1701
|
+
stroke: color,
|
|
1702
|
+
strokeWidth: 1,
|
|
1703
|
+
opacity: 0.9,
|
|
1704
|
+
rx: 2
|
|
1705
|
+
});
|
|
1706
|
+
}
|
|
1582
1707
|
return /*#__PURE__*/_jsx(AnimatedRect, {
|
|
1583
1708
|
animatedProps: props,
|
|
1584
1709
|
fill: color,
|