panelui-native 0.99.0 → 0.101.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/README.md +2 -0
- package/lib/module/components/animated-badge/index.js +24 -2
- package/lib/module/components/animated-badge/index.js.map +1 -1
- package/lib/module/components/bump-chart/index.js +1236 -0
- package/lib/module/components/bump-chart/index.js.map +1 -0
- package/lib/module/components/compare/index.js +576 -0
- package/lib/module/components/compare/index.js.map +1 -0
- package/lib/module/components/mirror-area-chart/index.js +1113 -0
- package/lib/module/components/mirror-area-chart/index.js.map +1 -0
- package/lib/module/components/sankey-chart/index.js +933 -0
- package/lib/module/components/sankey-chart/index.js.map +1 -0
- package/lib/module/components/sankey-chart/sankey-layout.js +530 -0
- package/lib/module/components/sankey-chart/sankey-layout.js.map +1 -0
- package/lib/module/icons/index.js +15 -3
- 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/module/utils/chart.js +101 -0
- package/lib/module/utils/chart.js.map +1 -1
- package/lib/typescript/src/components/animated-badge/index.d.ts +5 -0
- package/lib/typescript/src/components/animated-badge/index.d.ts.map +1 -1
- package/lib/typescript/src/components/bump-chart/index.d.ts +267 -0
- package/lib/typescript/src/components/bump-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/compare/index.d.ts +183 -0
- package/lib/typescript/src/components/compare/index.d.ts.map +1 -0
- package/lib/typescript/src/components/mirror-area-chart/index.d.ts +263 -0
- package/lib/typescript/src/components/mirror-area-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/sankey-chart/index.d.ts +307 -0
- package/lib/typescript/src/components/sankey-chart/index.d.ts.map +1 -0
- package/lib/typescript/src/components/sankey-chart/sankey-layout.d.ts +107 -0
- package/lib/typescript/src/components/sankey-chart/sankey-layout.d.ts.map +1 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/chart.d.ts +40 -0
- package/lib/typescript/src/utils/chart.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/animated-badge/index.tsx +35 -2
- package/src/components/bump-chart/index.tsx +1455 -0
- package/src/components/compare/index.tsx +650 -0
- package/src/components/mirror-area-chart/index.tsx +1333 -0
- package/src/components/sankey-chart/index.tsx +1165 -0
- package/src/components/sankey-chart/sankey-layout.ts +645 -0
- package/src/icons/index.tsx +20 -6
- package/src/index.ts +62 -0
- package/src/utils/chart.ts +116 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Children","createContext","forwardRef","isValidElement","useContext","useEffect","useImperativeHandle","useMemo","useRef","useState","Platform","Pressable","View","Animated","Easing","useAnimatedProps","useDerivedValue","useReducedMotion","useSharedValue","withTiming","Svg","G","Path","Rect","useCSSVariable","ChartAccessibilityData","Text","compactNumber","flowPath","seriesColorAt","useSeriesColor","cn","useDirection","useSkeletonHandoff","sankeyLayout","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","AnimatedPath","createAnimatedComponent","AnimatedRect","AnimatedG","DEFAULT_HEIGHT","DEFAULT_NODE_WIDTH","DEFAULT_NODE_PADDING","DEFAULT_ITERATIONS","CURVE","LINK_OPACITY","LINK_ACTIVE_OPACITY","LINK_DIM_OPACITY","DEFAULT_DURATION","STAGGER","SELECT_DURATION","LABEL_GAP","MIN_TARGET","SKELETON_COLUMNS","HIDDEN","OS","accessibilityElementsHidden","importantForAccessibility","SankeyChartContext","useChart","component","context","Error","useSankeyChart","nodes","layout","activeId","placed","find","node","id","undefined","activeNode","activeValue","incoming","outgoing","position","indexOf","link","links","target","value","source","SankeyChartRoot","className","height","nodeWidth","nodePadding","align","iterations","curve","color","animationDuration","staggerDelay","status","activeIdProp","onActiveIdChange","onDropLinks","accessibilityLabel","accessibilityHint","accessibilityLabelForDatum","onAccessibilityDatumPress","children","props","ref","width","setWidth","internalActive","setInternalActive","reveal","reducedMotion","direction","controlled","setActiveId","mirrored","length","map","x0","x1","dropped","c1","c2","c3","c4","c5","palette","colors","index","labelFor","names","Map","label","get","stagger","Math","max","columns","total","windows","Array","from","_","column","to","playReveal","duration","easing","linear","loading","revealed","current","replay","onLayout","event","next","round","nativeEvent","slots","svg","overlay","header","footer","labelled","forEach","child","slot","type","displayName","push","ChildSlot","Provider","style","pointerEvents","chart","data","disabled","valueOf","placedNode","progress","clock","range","raw","clamped","SankeyChartLinks","opacity","activeOpacity","dimOpacity","touching","window","layer","Ribbon","cy0","y0","cy1","y1","thickness","fill","input","settled","animatedProps","grown","d","fillOpacity","SankeyChartNodes","radius","NodeBar","x","extent","centre","y","rx","SankeyChartLabels","formatValue","showValue","minHeight","format","edges","includes","sort","a","b","nextEdge","edge","previousEdge","found","datum","after","before","trailing","name","selected","slack","top","min","accessibilityRole","accessibilityState","hitSlop","bottom","onPress","justifyContent","left","alignItems","size","weight","numberOfLines","textAlign","muted","SankeyChartTooltip","CARD","SankeyChartSkeleton","token","mounted","shape","bar","step","band","i","ribbons","SankeyChartHeader","title","caption","SankeyChart","Object","assign","Header","Links","Nodes","Labels","Tooltip","Skeleton"],"sourceRoot":"../../../../src","sources":["components/sankey-chart/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Where a flow diagram's nodes and ribbons go.
|
|
5
|
+
*
|
|
6
|
+
* Kept apart from the component for the same reason the splitter's maths is:
|
|
7
|
+
* it is the part with answers that can be checked, and a test that has to
|
|
8
|
+
* mount a chart to check them is a test nobody writes twice.
|
|
9
|
+
*
|
|
10
|
+
* ## The problem the layout is solving
|
|
11
|
+
*
|
|
12
|
+
* A node's column is decided by the flow, not by the caller — a stage that
|
|
13
|
+
* receives from another has to be drawn after it or the ribbon runs backwards.
|
|
14
|
+
* Its height is its value. Neither of those is a choice. What is left over is
|
|
15
|
+
* the *order within a column*, and that is the whole difficulty: the same graph
|
|
16
|
+
* drawn in two orders is the same numbers with a different number of crossings,
|
|
17
|
+
* and crossings are the only thing that makes one of these unreadable.
|
|
18
|
+
*
|
|
19
|
+
* There is no cheap exact answer — minimising crossings is the kind of problem
|
|
20
|
+
* that is only solved by trying — so the order is settled by relaxation. Every
|
|
21
|
+
* node is pulled towards the average height of what it connects to, the pull
|
|
22
|
+
* weakens each round, and nodes that end up overlapping are pushed apart. Six
|
|
23
|
+
* rounds is where the picture stops visibly improving.
|
|
24
|
+
*
|
|
25
|
+
* ## Why it never throws
|
|
26
|
+
*
|
|
27
|
+
* A flow that loops back on itself has no left-to-right reading at all, and the
|
|
28
|
+
* textbook answer is to refuse the graph. A chart cannot refuse: the data is
|
|
29
|
+
* usually arriving from somewhere nobody in the room controls, and a screen
|
|
30
|
+
* that crashes on a bad row is worse than one that draws the rows it can. So a
|
|
31
|
+
* link that closes a loop is dropped, counted, and reported on the layout —
|
|
32
|
+
* the caller can say so, and the rest of the diagram is still true.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/** Which column a node is pushed into when the flow leaves a choice. */
|
|
36
|
+
|
|
37
|
+
const EMPTY = {
|
|
38
|
+
nodes: [],
|
|
39
|
+
links: [],
|
|
40
|
+
columns: 0,
|
|
41
|
+
dropped: 0
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/** The most of the height the gaps in one column may take between them. */
|
|
45
|
+
const MAX_PADDING_SHARE = 0.5;
|
|
46
|
+
function ascendingBreadth(a, b) {
|
|
47
|
+
return a.y0 - b.y0;
|
|
48
|
+
}
|
|
49
|
+
function ascendingSourceBreadth(a, b) {
|
|
50
|
+
return ascendingBreadth(a.source, b.source) || a.index - b.index;
|
|
51
|
+
}
|
|
52
|
+
function ascendingTargetBreadth(a, b) {
|
|
53
|
+
return ascendingBreadth(a.target, b.target) || a.index - b.index;
|
|
54
|
+
}
|
|
55
|
+
function sumValues(links) {
|
|
56
|
+
let total = 0;
|
|
57
|
+
for (const link of links) total += link.value;
|
|
58
|
+
return total;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* The links worth drawing, with the ones that close a loop taken out.
|
|
63
|
+
*
|
|
64
|
+
* Depth-first, colouring a node grey while it is on the stack: a link to a grey
|
|
65
|
+
* node is a link back into the run currently being walked, which is the
|
|
66
|
+
* definition of a loop. Dropping that one link is the smallest cut that breaks
|
|
67
|
+
* it, and it keeps every other link in the cycle — so a diagram of mostly-good
|
|
68
|
+
* data loses one ribbon rather than a whole branch.
|
|
69
|
+
*
|
|
70
|
+
* Iterative rather than recursive: a deep chain of stages is ordinary data, and
|
|
71
|
+
* a blown call stack is not an acceptable failure for one.
|
|
72
|
+
*/
|
|
73
|
+
function withoutCycles(nodes, links) {
|
|
74
|
+
const WHITE = 0;
|
|
75
|
+
const GREY = 1;
|
|
76
|
+
const BLACK = 2;
|
|
77
|
+
const state = new Uint8Array(nodes.length);
|
|
78
|
+
const back = new Set();
|
|
79
|
+
for (const root of nodes) {
|
|
80
|
+
if (state[root.slot] !== WHITE) continue;
|
|
81
|
+
// Each frame is a node and how far through its outgoing links we are.
|
|
82
|
+
const stack = [{
|
|
83
|
+
node: root,
|
|
84
|
+
cursor: 0
|
|
85
|
+
}];
|
|
86
|
+
state[root.slot] = GREY;
|
|
87
|
+
while (stack.length) {
|
|
88
|
+
const frame = stack[stack.length - 1];
|
|
89
|
+
const outgoing = frame.node.sourceLinks;
|
|
90
|
+
if (frame.cursor >= outgoing.length) {
|
|
91
|
+
state[frame.node.slot] = BLACK;
|
|
92
|
+
stack.pop();
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const link = outgoing[frame.cursor];
|
|
96
|
+
frame.cursor += 1;
|
|
97
|
+
if (back.has(link.index)) continue;
|
|
98
|
+
const next = link.target;
|
|
99
|
+
if (state[next.slot] === GREY) {
|
|
100
|
+
back.add(link.index);
|
|
101
|
+
} else if (state[next.slot] === WHITE) {
|
|
102
|
+
state[next.slot] = GREY;
|
|
103
|
+
stack.push({
|
|
104
|
+
node: next,
|
|
105
|
+
cursor: 0
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!back.size) return {
|
|
111
|
+
kept: links,
|
|
112
|
+
dropped: 0
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
kept: links.filter(link => !back.has(link.index)),
|
|
116
|
+
dropped: back.size
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** How far a node is from the start of the flow, the long way round. */
|
|
121
|
+
function computeDepths(nodes) {
|
|
122
|
+
let current = new Set(nodes);
|
|
123
|
+
let next = new Set();
|
|
124
|
+
let x = 0;
|
|
125
|
+
while (current.size) {
|
|
126
|
+
for (const node of current) {
|
|
127
|
+
node.depth = x;
|
|
128
|
+
for (const link of node.sourceLinks) next.add(link.target);
|
|
129
|
+
}
|
|
130
|
+
// The graph is acyclic by here, so this cannot run away — the guard is for
|
|
131
|
+
// the case where it is not, which is a bug rather than bad data.
|
|
132
|
+
if (++x > nodes.length) break;
|
|
133
|
+
current = next;
|
|
134
|
+
next = new Set();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** And how far it is from the end of it. */
|
|
139
|
+
function computeToSink(nodes) {
|
|
140
|
+
let current = new Set(nodes);
|
|
141
|
+
let next = new Set();
|
|
142
|
+
let x = 0;
|
|
143
|
+
while (current.size) {
|
|
144
|
+
for (const node of current) {
|
|
145
|
+
node.toSink = x;
|
|
146
|
+
for (const link of node.targetLinks) next.add(link.source);
|
|
147
|
+
}
|
|
148
|
+
if (++x > nodes.length) break;
|
|
149
|
+
current = next;
|
|
150
|
+
next = new Set();
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Which column a node belongs in.
|
|
156
|
+
*
|
|
157
|
+
* `left` reads the flow from where things start, `right` from where they end,
|
|
158
|
+
* and the two disagree about everything in between. `justify` is the default
|
|
159
|
+
* because it does the one thing a reader expects of the edges: every node that
|
|
160
|
+
* feeds nothing is pushed to the last column, so the diagram ends in a straight
|
|
161
|
+
* line of destinations rather than a ragged one.
|
|
162
|
+
*/
|
|
163
|
+
function layerOf(node, columns, align) {
|
|
164
|
+
switch (align) {
|
|
165
|
+
case 'left':
|
|
166
|
+
return node.depth;
|
|
167
|
+
case 'right':
|
|
168
|
+
return columns - 1 - node.toSink;
|
|
169
|
+
case 'center':
|
|
170
|
+
{
|
|
171
|
+
if (node.targetLinks.length) return node.depth;
|
|
172
|
+
if (!node.sourceLinks.length) return 0;
|
|
173
|
+
let least = Infinity;
|
|
174
|
+
for (const link of node.sourceLinks) least = Math.min(least, link.target.depth);
|
|
175
|
+
return least - 1;
|
|
176
|
+
}
|
|
177
|
+
default:
|
|
178
|
+
return node.sourceLinks.length ? node.depth : columns - 1;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* The height a target would sit at for its ribbon from `source` to run flat.
|
|
184
|
+
*
|
|
185
|
+
* Every link leaving a node is stacked against its neighbours, so "flat" is not
|
|
186
|
+
* the node's own height — it is that height plus whatever is stacked above this
|
|
187
|
+
* particular ribbon at one end, minus what is stacked above it at the other.
|
|
188
|
+
*/
|
|
189
|
+
function targetTop(source, target, padding) {
|
|
190
|
+
let y = source.y0 - (source.sourceLinks.length - 1) * padding / 2;
|
|
191
|
+
for (const link of source.sourceLinks) {
|
|
192
|
+
if (link.target === target) break;
|
|
193
|
+
y += link.width + padding;
|
|
194
|
+
}
|
|
195
|
+
for (const link of target.targetLinks) {
|
|
196
|
+
if (link.source === source) break;
|
|
197
|
+
y -= link.width;
|
|
198
|
+
}
|
|
199
|
+
return y;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/** The same reading, taken from the target's end. */
|
|
203
|
+
function sourceTop(source, target, padding) {
|
|
204
|
+
let y = target.y0 - (target.targetLinks.length - 1) * padding / 2;
|
|
205
|
+
for (const link of target.targetLinks) {
|
|
206
|
+
if (link.source === source) break;
|
|
207
|
+
y += link.width + padding;
|
|
208
|
+
}
|
|
209
|
+
for (const link of source.sourceLinks) {
|
|
210
|
+
if (link.target === target) break;
|
|
211
|
+
y -= link.width;
|
|
212
|
+
}
|
|
213
|
+
return y;
|
|
214
|
+
}
|
|
215
|
+
function reorderNodeLinks(node) {
|
|
216
|
+
for (const link of node.targetLinks) {
|
|
217
|
+
link.source.sourceLinks.sort(ascendingTargetBreadth);
|
|
218
|
+
}
|
|
219
|
+
for (const link of node.sourceLinks) {
|
|
220
|
+
link.target.targetLinks.sort(ascendingSourceBreadth);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** Push nodes down until none of them overlaps the one above it. */
|
|
225
|
+
function resolveDown(column, y, from, alpha, padding) {
|
|
226
|
+
let edge = y;
|
|
227
|
+
for (let i = from; i < column.length; i += 1) {
|
|
228
|
+
const node = column[i];
|
|
229
|
+
const shift = (edge - node.y0) * alpha;
|
|
230
|
+
if (shift > 1e-6) {
|
|
231
|
+
node.y0 += shift;
|
|
232
|
+
node.y1 += shift;
|
|
233
|
+
}
|
|
234
|
+
edge = node.y1 + padding;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/** And up, for the ones that have run off the bottom. */
|
|
239
|
+
function resolveUp(column, y, from, alpha, padding) {
|
|
240
|
+
let edge = y;
|
|
241
|
+
for (let i = from; i >= 0; i -= 1) {
|
|
242
|
+
const node = column[i];
|
|
243
|
+
const shift = (node.y1 - edge) * alpha;
|
|
244
|
+
if (shift > 1e-6) {
|
|
245
|
+
node.y0 -= shift;
|
|
246
|
+
node.y1 -= shift;
|
|
247
|
+
}
|
|
248
|
+
edge = node.y0 - padding;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Four passes, pivoting on the middle node of the column.
|
|
254
|
+
*
|
|
255
|
+
* Starting from the middle rather than the top is what keeps a column centred:
|
|
256
|
+
* resolving downwards from the top pushes the whole column towards the bottom
|
|
257
|
+
* every round, and after six rounds everything is piled against the floor. The
|
|
258
|
+
* last two passes are the ones that catch a column that has been pushed past
|
|
259
|
+
* an edge, and they run outside-in for the same reason.
|
|
260
|
+
*/
|
|
261
|
+
function resolveCollisions(column, alpha, padding, height) {
|
|
262
|
+
const middle = column.length >> 1;
|
|
263
|
+
const pivot = column[middle];
|
|
264
|
+
if (!pivot) return;
|
|
265
|
+
resolveUp(column, pivot.y0 - padding, middle - 1, alpha, padding);
|
|
266
|
+
resolveDown(column, pivot.y1 + padding, middle + 1, alpha, padding);
|
|
267
|
+
resolveUp(column, height, column.length - 1, alpha, padding);
|
|
268
|
+
resolveDown(column, 0, 0, alpha, padding);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Lays out a flow diagram.
|
|
273
|
+
*
|
|
274
|
+
* Returns positions in points inside a `width` by `height` box. An input that
|
|
275
|
+
* cannot be drawn — no nodes, no room, nothing carrying a value — comes back
|
|
276
|
+
* empty rather than as a diagram of zeroes.
|
|
277
|
+
*/
|
|
278
|
+
export function sankeyLayout(nodeInput, linkInput, options) {
|
|
279
|
+
const {
|
|
280
|
+
width,
|
|
281
|
+
height,
|
|
282
|
+
align,
|
|
283
|
+
iterations
|
|
284
|
+
} = options;
|
|
285
|
+
const nodeWidth = Math.max(0, options.nodeWidth);
|
|
286
|
+
const requestedPadding = Math.max(0, options.nodePadding);
|
|
287
|
+
if (!nodeInput.length || !(width > 0) || !(height > 0)) return EMPTY;
|
|
288
|
+
const nodes = [];
|
|
289
|
+
const byId = new Map();
|
|
290
|
+
for (const [index, input] of nodeInput.entries()) {
|
|
291
|
+
// A repeated id would give the links two nodes to mean; the first wins, so
|
|
292
|
+
// the diagram is the one the earlier row described rather than a mix.
|
|
293
|
+
if (byId.has(input.id)) continue;
|
|
294
|
+
const node = {
|
|
295
|
+
id: input.id,
|
|
296
|
+
index,
|
|
297
|
+
slot: nodes.length,
|
|
298
|
+
fixedValue: typeof input.value === 'number' && Number.isFinite(input.value) && input.value >= 0 ? input.value : undefined,
|
|
299
|
+
value: 0,
|
|
300
|
+
depth: 0,
|
|
301
|
+
toSink: 0,
|
|
302
|
+
layer: 0,
|
|
303
|
+
x0: 0,
|
|
304
|
+
x1: 0,
|
|
305
|
+
y0: 0,
|
|
306
|
+
y1: 0,
|
|
307
|
+
sourceLinks: [],
|
|
308
|
+
targetLinks: []
|
|
309
|
+
};
|
|
310
|
+
nodes.push(node);
|
|
311
|
+
byId.set(input.id, node);
|
|
312
|
+
}
|
|
313
|
+
let dropped = 0;
|
|
314
|
+
const links = [];
|
|
315
|
+
for (const [inputIndex, input] of linkInput.entries()) {
|
|
316
|
+
const source = byId.get(input.source);
|
|
317
|
+
const target = byId.get(input.target);
|
|
318
|
+
const value = input.value;
|
|
319
|
+
// A link to nowhere, a link to itself, and a link carrying nothing are all
|
|
320
|
+
// undrawable for different reasons and all silently skipped.
|
|
321
|
+
if (!source || !target || source === target) {
|
|
322
|
+
dropped += 1;
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0) {
|
|
326
|
+
dropped += 1;
|
|
327
|
+
continue;
|
|
328
|
+
}
|
|
329
|
+
links.push({
|
|
330
|
+
index: links.length,
|
|
331
|
+
input: inputIndex,
|
|
332
|
+
source,
|
|
333
|
+
target,
|
|
334
|
+
value,
|
|
335
|
+
width: 0,
|
|
336
|
+
y0: 0,
|
|
337
|
+
y1: 0
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
for (const link of links) {
|
|
341
|
+
link.source.sourceLinks.push(link);
|
|
342
|
+
link.target.targetLinks.push(link);
|
|
343
|
+
}
|
|
344
|
+
const cut = withoutCycles(nodes, links);
|
|
345
|
+
if (cut.dropped) {
|
|
346
|
+
dropped += cut.dropped;
|
|
347
|
+
for (const node of nodes) {
|
|
348
|
+
node.sourceLinks = [];
|
|
349
|
+
node.targetLinks = [];
|
|
350
|
+
}
|
|
351
|
+
cut.kept.forEach((link, index) => {
|
|
352
|
+
link.index = index;
|
|
353
|
+
link.source.sourceLinks.push(link);
|
|
354
|
+
link.target.targetLinks.push(link);
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
const kept = cut.kept;
|
|
358
|
+
for (const node of nodes) {
|
|
359
|
+
node.value = node.fixedValue ?? Math.max(sumValues(node.sourceLinks), sumValues(node.targetLinks));
|
|
360
|
+
}
|
|
361
|
+
computeDepths(nodes);
|
|
362
|
+
computeToSink(nodes);
|
|
363
|
+
let columnCount = 0;
|
|
364
|
+
for (const node of nodes) columnCount = Math.max(columnCount, node.depth);
|
|
365
|
+
columnCount += 1;
|
|
366
|
+
const columns = Array.from({
|
|
367
|
+
length: columnCount
|
|
368
|
+
}, () => []);
|
|
369
|
+
// One column has nowhere to spread to, so its node sits at the left edge
|
|
370
|
+
// rather than dividing by a gap that does not exist.
|
|
371
|
+
const kx = columnCount > 1 ? (width - nodeWidth) / (columnCount - 1) : 0;
|
|
372
|
+
for (const node of nodes) {
|
|
373
|
+
const layer = Math.max(0, Math.min(columnCount - 1, Math.floor(layerOf(node, columnCount, align))));
|
|
374
|
+
node.layer = layer;
|
|
375
|
+
node.x0 = layer * kx;
|
|
376
|
+
node.x1 = node.x0 + nodeWidth;
|
|
377
|
+
columns[layer].push(node);
|
|
378
|
+
}
|
|
379
|
+
let tallest = 0;
|
|
380
|
+
for (const column of columns) tallest = Math.max(tallest, column.length);
|
|
381
|
+
|
|
382
|
+
/*
|
|
383
|
+
* The gap asked for is a maximum, not a promise. A column of twelve nodes at
|
|
384
|
+
* a padding of twelve is 132 points of gap, which on a phone is most of the
|
|
385
|
+
* chart — so a crowded column gives up its spacing rather than its bars,
|
|
386
|
+
* because a bar is the reading and the gap is only the separation.
|
|
387
|
+
*
|
|
388
|
+
* Hence the share as well as the count. Dividing the whole height by the gaps
|
|
389
|
+
* is the obvious cap and it is the wrong one: at twelve nodes in 120 points it
|
|
390
|
+
* hands every point to the gaps and leaves the bars exactly nothing, so the
|
|
391
|
+
* chart goes blank at precisely the crowding this is meant to survive. Half
|
|
392
|
+
* the height is the most the gaps may ever take between them.
|
|
393
|
+
*/
|
|
394
|
+
const padding = tallest > 1 ? Math.min(requestedPadding, height * MAX_PADDING_SHARE / (tallest - 1)) : requestedPadding;
|
|
395
|
+
|
|
396
|
+
/*
|
|
397
|
+
* One scale for every column, taken from whichever column it fits worst.
|
|
398
|
+
* A scale per column would draw two nodes of the same value at two different
|
|
399
|
+
* heights, which is the one thing this chart cannot do and still be read.
|
|
400
|
+
*/
|
|
401
|
+
let ky = Infinity;
|
|
402
|
+
for (const column of columns) {
|
|
403
|
+
if (!column.length) continue;
|
|
404
|
+
let total = 0;
|
|
405
|
+
for (const node of column) total += node.value;
|
|
406
|
+
if (total <= 0) continue;
|
|
407
|
+
ky = Math.min(ky, (height - (column.length - 1) * padding) / total);
|
|
408
|
+
}
|
|
409
|
+
if (!Number.isFinite(ky) || ky <= 0) return {
|
|
410
|
+
...EMPTY,
|
|
411
|
+
columns: columnCount,
|
|
412
|
+
dropped
|
|
413
|
+
};
|
|
414
|
+
for (const column of columns) {
|
|
415
|
+
let y = 0;
|
|
416
|
+
for (const node of column) {
|
|
417
|
+
node.y0 = y;
|
|
418
|
+
node.y1 = y + node.value * ky;
|
|
419
|
+
y = node.y1 + padding;
|
|
420
|
+
for (const link of node.sourceLinks) link.width = link.value * ky;
|
|
421
|
+
}
|
|
422
|
+
// Whatever the column did not use is shared out as extra space between its
|
|
423
|
+
// nodes, which centres a short column instead of hanging it from the top.
|
|
424
|
+
const slack = (height - y + padding) / (column.length + 1);
|
|
425
|
+
column.forEach((node, i) => {
|
|
426
|
+
node.y0 += slack * (i + 1);
|
|
427
|
+
node.y1 += slack * (i + 1);
|
|
428
|
+
});
|
|
429
|
+
for (const node of column) {
|
|
430
|
+
node.sourceLinks.sort(ascendingTargetBreadth);
|
|
431
|
+
node.targetLinks.sort(ascendingSourceBreadth);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
const rounds = Math.max(0, Math.floor(iterations));
|
|
435
|
+
for (let i = 0; i < rounds; i += 1) {
|
|
436
|
+
/*
|
|
437
|
+
* The pull weakens and the shove strengthens as the rounds go by. Early on
|
|
438
|
+
* the nodes are still finding their neighbourhood and a firm pull is what
|
|
439
|
+
* gets them there; by the end the arrangement is settled and the only thing
|
|
440
|
+
* left worth doing is making sure nothing overlaps.
|
|
441
|
+
*/
|
|
442
|
+
const alpha = 0.99 ** i;
|
|
443
|
+
const beta = Math.max(1 - alpha, (i + 1) / rounds);
|
|
444
|
+
for (let c = columnCount - 2; c >= 0; c -= 1) {
|
|
445
|
+
const column = columns[c];
|
|
446
|
+
for (const node of column) {
|
|
447
|
+
let weighted = 0;
|
|
448
|
+
let weight = 0;
|
|
449
|
+
for (const link of node.sourceLinks) {
|
|
450
|
+
// A ribbon that spans three columns is three times as expensive to
|
|
451
|
+
// bend as one that spans a single column, so it pulls three times
|
|
452
|
+
// as hard on where its ends sit.
|
|
453
|
+
const span = link.value * (link.target.layer - node.layer);
|
|
454
|
+
weighted += sourceTop(node, link.target, padding) * span;
|
|
455
|
+
weight += span;
|
|
456
|
+
}
|
|
457
|
+
if (!(weight > 0)) continue;
|
|
458
|
+
const shift = (weighted / weight - node.y0) * alpha;
|
|
459
|
+
node.y0 += shift;
|
|
460
|
+
node.y1 += shift;
|
|
461
|
+
reorderNodeLinks(node);
|
|
462
|
+
}
|
|
463
|
+
column.sort(ascendingBreadth);
|
|
464
|
+
resolveCollisions(column, beta, padding, height);
|
|
465
|
+
}
|
|
466
|
+
for (let c = 1; c < columnCount; c += 1) {
|
|
467
|
+
const column = columns[c];
|
|
468
|
+
for (const node of column) {
|
|
469
|
+
let weighted = 0;
|
|
470
|
+
let weight = 0;
|
|
471
|
+
for (const link of node.targetLinks) {
|
|
472
|
+
const span = link.value * (node.layer - link.source.layer);
|
|
473
|
+
weighted += targetTop(link.source, node, padding) * span;
|
|
474
|
+
weight += span;
|
|
475
|
+
}
|
|
476
|
+
if (!(weight > 0)) continue;
|
|
477
|
+
const shift = (weighted / weight - node.y0) * alpha;
|
|
478
|
+
node.y0 += shift;
|
|
479
|
+
node.y1 += shift;
|
|
480
|
+
reorderNodeLinks(node);
|
|
481
|
+
}
|
|
482
|
+
column.sort(ascendingBreadth);
|
|
483
|
+
resolveCollisions(column, beta, padding, height);
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/*
|
|
488
|
+
* The ribbons are stacked against each node's edge in the order they were
|
|
489
|
+
* sorted into, and each one is recorded by its centre — which is where a
|
|
490
|
+
* stroked or filled ribbon of that thickness wants to be anchored.
|
|
491
|
+
*/
|
|
492
|
+
for (const node of nodes) {
|
|
493
|
+
let out = node.y0;
|
|
494
|
+
for (const link of node.sourceLinks) {
|
|
495
|
+
link.y0 = out + link.width / 2;
|
|
496
|
+
out += link.width;
|
|
497
|
+
}
|
|
498
|
+
let into = node.y0;
|
|
499
|
+
for (const link of node.targetLinks) {
|
|
500
|
+
link.y1 = into + link.width / 2;
|
|
501
|
+
into += link.width;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
const order = new Map(nodes.map((node, i) => [node, i]));
|
|
505
|
+
return {
|
|
506
|
+
columns: columnCount,
|
|
507
|
+
dropped,
|
|
508
|
+
nodes: nodes.map(node => ({
|
|
509
|
+
id: node.id,
|
|
510
|
+
index: node.index,
|
|
511
|
+
layer: node.layer,
|
|
512
|
+
value: node.value,
|
|
513
|
+
x0: node.x0,
|
|
514
|
+
x1: node.x1,
|
|
515
|
+
y0: node.y0,
|
|
516
|
+
y1: node.y1
|
|
517
|
+
})),
|
|
518
|
+
links: kept.map((link, index) => ({
|
|
519
|
+
index,
|
|
520
|
+
input: link.input,
|
|
521
|
+
source: order.get(link.source),
|
|
522
|
+
target: order.get(link.target),
|
|
523
|
+
value: link.value,
|
|
524
|
+
width: link.width,
|
|
525
|
+
y0: link.y0,
|
|
526
|
+
y1: link.y1
|
|
527
|
+
}))
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
//# sourceMappingURL=sankey-layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["EMPTY","nodes","links","columns","dropped","MAX_PADDING_SHARE","ascendingBreadth","a","b","y0","ascendingSourceBreadth","source","index","ascendingTargetBreadth","target","sumValues","total","link","value","withoutCycles","WHITE","GREY","BLACK","state","Uint8Array","length","back","Set","root","slot","stack","node","cursor","frame","outgoing","sourceLinks","pop","has","next","add","push","size","kept","filter","computeDepths","current","x","depth","computeToSink","toSink","targetLinks","layerOf","align","least","Infinity","Math","min","targetTop","padding","y","width","sourceTop","reorderNodeLinks","sort","resolveDown","column","from","alpha","edge","i","shift","y1","resolveUp","resolveCollisions","height","middle","pivot","sankeyLayout","nodeInput","linkInput","options","iterations","nodeWidth","max","requestedPadding","nodePadding","byId","Map","input","entries","id","fixedValue","Number","isFinite","undefined","layer","x0","x1","set","inputIndex","get","cut","forEach","columnCount","Array","kx","floor","tallest","ky","slack","rounds","beta","c","weighted","weight","span","out","into","order","map"],"sourceRoot":"../../../../src","sources":["components/sankey-chart/sankey-layout.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
* outline could only ignore. All four are drawn here rather than mapped.
|
|
53
53
|
*/
|
|
54
54
|
import { createContext, useContext } from 'react';
|
|
55
|
-
import { View } from 'react-native';
|
|
55
|
+
import { Platform, View } from 'react-native';
|
|
56
56
|
import { HugeiconsIcon } from '@hugeicons/react-native';
|
|
57
57
|
import Svg, { G, Path } from 'react-native-svg';
|
|
58
58
|
import { useDirection } from "../hooks/use-direction.js";
|
|
@@ -160,8 +160,20 @@ function useResolvedColor(explicit, fallback) {
|
|
|
160
160
|
return explicit ?? inherited ?? fallback;
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
/**
|
|
164
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Props for icons that must never be announced by a screen reader.
|
|
165
|
+
*
|
|
166
|
+
* Two sets, because the two platforms take the instruction differently.
|
|
167
|
+
* `accessibilityElementsHidden` and `importantForAccessibility` are native
|
|
168
|
+
* props: on web they reach the DOM `<svg>` untranslated, where React warns
|
|
169
|
+
* about the casing of the second one and neither has any effect — so the glyph
|
|
170
|
+
* stays in the accessibility tree inside every button and field that already
|
|
171
|
+
* carries its own name, and every icon on the page logs an error while it does.
|
|
172
|
+
* `aria-hidden` is what says it there.
|
|
173
|
+
*/
|
|
174
|
+
const decorative = Platform.OS === 'web' ? {
|
|
175
|
+
'aria-hidden': true
|
|
176
|
+
} : {
|
|
165
177
|
accessibilityElementsHidden: true,
|
|
166
178
|
importantForAccessibility: 'no-hide-descendants'
|
|
167
179
|
};
|