@unovis/ts 1.7.0-Phoenix.0 → 1.7.0-pre.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/components/area/config.d.ts +2 -0
- package/components/area/config.js +1 -1
- package/components/area/config.js.map +1 -1
- package/components/area/index.js +6 -3
- package/components/area/index.js.map +1 -1
- package/components/crosshair/config.d.ts +1 -1
- package/components/crosshair/config.js.map +1 -1
- package/components/crosshair/index.d.ts +1 -1
- package/components/crosshair/index.js.map +1 -1
- package/components/free-brush/types.js +1 -0
- package/components/free-brush/types.js.map +1 -1
- package/components/graph/index.d.ts +1 -0
- package/components/graph/index.js +35 -14
- package/components/graph/index.js.map +1 -1
- package/components/graph/modules/link/index.js +1 -1
- package/components/graph/modules/link/index.js.map +1 -1
- package/components/leaflet-map/leaflet.css.js +2 -2
- package/components/leaflet-map/modules/map.js +2 -2
- package/components/leaflet-map/modules/map.js.map +1 -1
- package/components/leaflet-map/renderer/mapboxgl-utils.d.ts +0 -1
- package/components/leaflet-map/renderer/mapboxgl-utils.js +1 -2
- package/components/leaflet-map/renderer/mapboxgl-utils.js.map +1 -1
- package/components/sankey/config.d.ts +25 -10
- package/components/sankey/config.js +2 -2
- package/components/sankey/config.js.map +1 -1
- package/components/sankey/index.d.ts +26 -31
- package/components/sankey/index.js +340 -115
- package/components/sankey/index.js.map +1 -1
- package/components/sankey/modules/label.d.ts +8 -5
- package/components/sankey/modules/label.js +70 -32
- package/components/sankey/modules/label.js.map +1 -1
- package/components/sankey/modules/link.d.ts +1 -0
- package/components/sankey/modules/link.js +23 -41
- package/components/sankey/modules/link.js.map +1 -1
- package/components/sankey/modules/node.d.ts +5 -4
- package/components/sankey/modules/node.js +65 -16
- package/components/sankey/modules/node.js.map +1 -1
- package/components/sankey/style.d.ts +67 -1
- package/components/sankey/style.js +77 -77
- package/components/sankey/style.js.map +1 -1
- package/components/sankey/types.d.ts +5 -2
- package/components/sankey/types.js +9 -2
- package/components/sankey/types.js.map +1 -1
- package/components/tooltip/index.js +2 -2
- package/components/tooltip/index.js.map +1 -1
- package/components/treemap/index.js +2 -4
- package/components/treemap/index.js.map +1 -1
- package/containers/single-container/config.d.ts +3 -0
- package/containers/single-container/config.js.map +1 -1
- package/containers/single-container/index.js +2 -1
- package/containers/single-container/index.js.map +1 -1
- package/containers/xy-container/config.d.ts +3 -0
- package/containers/xy-container/config.js.map +1 -1
- package/containers/xy-container/index.d.ts +1 -0
- package/containers/xy-container/index.js +13 -9
- package/containers/xy-container/index.js.map +1 -1
- package/index.js +1 -1
- package/package.json +42 -10
- package/types.js +1 -1
|
@@ -25,16 +25,19 @@ function linkPath({ x0, x1, y0, y1, width }) {
|
|
|
25
25
|
z
|
|
26
26
|
`;
|
|
27
27
|
}
|
|
28
|
+
function getLinkPathOptions(d) {
|
|
29
|
+
return {
|
|
30
|
+
x0: d.source.x1,
|
|
31
|
+
x1: d.target.x0,
|
|
32
|
+
y0: d.y0,
|
|
33
|
+
y1: d.y1,
|
|
34
|
+
width: Math.max(1, d.width),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
28
37
|
function createLinks(sel) {
|
|
29
38
|
sel.append('path').attr('class', linkPath$1)
|
|
30
39
|
.attr('d', (d, i, el) => {
|
|
31
|
-
el[i]._animState =
|
|
32
|
-
x0: d.source.x1,
|
|
33
|
-
x1: d.target.x0,
|
|
34
|
-
y0: d.y0,
|
|
35
|
-
y1: d.y1,
|
|
36
|
-
width: Math.max(1, d.width),
|
|
37
|
-
};
|
|
40
|
+
el[i]._animState = getLinkPathOptions(d);
|
|
38
41
|
return linkPath(el[i]._animState);
|
|
39
42
|
});
|
|
40
43
|
sel.append('path').attr('class', linkSelectionHelper);
|
|
@@ -42,34 +45,16 @@ function createLinks(sel) {
|
|
|
42
45
|
}
|
|
43
46
|
function updateLinks(sel, config, duration) {
|
|
44
47
|
smartTransition(sel, duration)
|
|
45
|
-
.style('opacity', (d) =>
|
|
46
|
-
var _a, _b, _c;
|
|
47
|
-
// Hide links if either connected node is collapsed
|
|
48
|
-
if (((_a = d.source._state) === null || _a === void 0 ? void 0 : _a.collapsed) || ((_b = d.target._state) === null || _b === void 0 ? void 0 : _b.collapsed))
|
|
49
|
-
return 0;
|
|
50
|
-
// Apply greyout effect
|
|
51
|
-
return ((_c = d._state) === null || _c === void 0 ? void 0 : _c.greyout) ? 0.2 : 1;
|
|
52
|
-
});
|
|
48
|
+
.style('opacity', (d) => d._state.greyout ? 0.2 : 1);
|
|
53
49
|
const linkSelection = sel.select(`.${linkPath$1}`)
|
|
54
|
-
.style('cursor', (d) => getString(d, config.linkCursor))
|
|
55
|
-
.style('pointer-events', (d) => {
|
|
56
|
-
var _a, _b;
|
|
57
|
-
// Disable pointer events for collapsed links to prevent hover interference
|
|
58
|
-
return (((_a = d.source._state) === null || _a === void 0 ? void 0 : _a.collapsed) || ((_b = d.target._state) === null || _b === void 0 ? void 0 : _b.collapsed)) ? 'none' : null;
|
|
59
|
-
});
|
|
50
|
+
.style('cursor', (d) => getString(d, config.linkCursor));
|
|
60
51
|
const selectionTransition = smartTransition(linkSelection, duration)
|
|
61
52
|
.style('fill', (link) => getColor(link, config.linkColor));
|
|
62
53
|
if (duration) {
|
|
63
54
|
selectionTransition
|
|
64
55
|
.attrTween('d', (d, i, el) => {
|
|
65
56
|
const previous = el[i]._animState;
|
|
66
|
-
const next =
|
|
67
|
-
x0: d.source.x1,
|
|
68
|
-
x1: d.target.x0,
|
|
69
|
-
y0: d.y0,
|
|
70
|
-
y1: d.y1,
|
|
71
|
-
width: Math.max(1, d.width),
|
|
72
|
-
};
|
|
57
|
+
const next = getLinkPathOptions(d);
|
|
73
58
|
const interpolator = {
|
|
74
59
|
x0: interpolateNumber(previous.x0, next.x0),
|
|
75
60
|
x1: interpolateNumber(previous.x1, next.x1),
|
|
@@ -77,26 +62,24 @@ function updateLinks(sel, config, duration) {
|
|
|
77
62
|
y1: interpolateNumber(previous.y1, next.y1),
|
|
78
63
|
width: interpolateNumber(previous.width, next.width),
|
|
79
64
|
};
|
|
80
|
-
el[i]._animState = next;
|
|
81
65
|
return function (t) {
|
|
82
|
-
|
|
66
|
+
const currentPathOptions = {
|
|
83
67
|
x0: interpolator.x0(t),
|
|
84
68
|
x1: interpolator.x1(t),
|
|
85
69
|
y0: interpolator.y0(t),
|
|
86
70
|
y1: interpolator.y1(t),
|
|
87
71
|
width: interpolator.width(t),
|
|
88
|
-
}
|
|
72
|
+
};
|
|
73
|
+
el[i]._animState = currentPathOptions;
|
|
74
|
+
return linkPath(currentPathOptions);
|
|
89
75
|
};
|
|
90
76
|
});
|
|
91
77
|
}
|
|
92
78
|
else {
|
|
93
|
-
linkSelection.attr('d', (d) =>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
y1: d.y1,
|
|
98
|
-
width: Math.max(1, d.width),
|
|
99
|
-
}));
|
|
79
|
+
linkSelection.attr('d', (d, i, el) => {
|
|
80
|
+
el[i]._animState = getLinkPathOptions(d);
|
|
81
|
+
return linkPath(el[i]._animState);
|
|
82
|
+
});
|
|
100
83
|
}
|
|
101
84
|
sel.select(`.${linkSelectionHelper}`)
|
|
102
85
|
.attr('d', (d) => linkPath({
|
|
@@ -106,12 +89,11 @@ function updateLinks(sel, config, duration) {
|
|
|
106
89
|
y1: d.y1,
|
|
107
90
|
width: Math.max(10, d.width),
|
|
108
91
|
}))
|
|
109
|
-
.style('cursor', d => getString(d, config.linkCursor))
|
|
110
|
-
.style('pointer-events', (d) => { var _a, _b; return (((_a = d.source._state) === null || _a === void 0 ? void 0 : _a.collapsed) || ((_b = d.target._state) === null || _b === void 0 ? void 0 : _b.collapsed)) ? 'none' : null; });
|
|
92
|
+
.style('cursor', d => getString(d, config.linkCursor));
|
|
111
93
|
}
|
|
112
94
|
function removeLinks(sel) {
|
|
113
95
|
sel.remove();
|
|
114
96
|
}
|
|
115
97
|
|
|
116
|
-
export { createLinks, linkPath, removeLinks, updateLinks };
|
|
98
|
+
export { createLinks, getLinkPathOptions, linkPath, removeLinks, updateLinks };
|
|
117
99
|
//# sourceMappingURL=link.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sources":["../../../../src/components/sankey/modules/link.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { interpolateNumber } from 'd3-interpolate'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { getString } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\n\n// Local Types\nimport { SankeyInputLink, SankeyInputNode, SankeyLink } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Styles\nimport * as s from '../style'\n\nexport type LinkPathOptions = {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n width: number;\n}\n\nexport function linkPath ({ x0, x1, y0, y1, width }: LinkPathOptions): string {\n const top0 = y0 - width / 2\n const top1 = y1 - width / 2\n const bottom0 = y0 + width / 2\n const bottom1 = y1 + width / 2\n const centerX = (x0 + x1) / 2\n\n return `\n M ${x0}, ${top0}\n\n C ${centerX}, ${top0}\n ${centerX}, ${top1}\n ${x1}, ${top1}\n\n L ${x1}, ${bottom1}\n\n C ${centerX}, ${bottom1}\n ${centerX}, ${bottom0}\n ${x0}, ${bottom0}\n z\n `\n}\n\nexport type LinkAnimState = { x0: number; x1: number; y0: number; y1: number; width: number }\n\nexport interface LinkElement extends SVGPathElement {\n _animState?: LinkAnimState;\n}\n\nexport function createLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.append('path').attr('class', s.linkPath)\n .attr('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n el[i]._animState = {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n return linkPath(el[i]._animState)\n })\n sel.append('path').attr('class', s.linkSelectionHelper)\n sel.style('opacity', 0)\n}\n\nexport function updateLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n duration: number\n): void {\n smartTransition(sel, duration)\n .style('opacity', (d: SankeyLink<N, L>) => {\n // Hide links if either connected node is collapsed\n if (d.source._state?.collapsed || d.target._state?.collapsed) return 0\n // Apply greyout effect\n return d._state?.greyout ? 0.2 : 1\n })\n\n const linkSelection = sel.select<SVGPathElement>(`.${s.linkPath}`)\n .style('cursor', (d: SankeyLink<N, L>) => getString(d, config.linkCursor))\n .style('pointer-events', (d: SankeyLink<N, L>) => {\n // Disable pointer events for collapsed links to prevent hover interference\n return (d.source._state?.collapsed || d.target._state?.collapsed) ? 'none' : null\n })\n\n const selectionTransition = smartTransition(linkSelection, duration)\n .style('fill', (link: SankeyLink<N, L>) => getColor(link, config.linkColor))\n\n if (duration) {\n (selectionTransition as Transition<SVGPathElement, SankeyLink<N, L>, SVGGElement, unknown>)\n .attrTween('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n const previous = el[i]._animState\n const next = {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n const interpolator = {\n x0: interpolateNumber(previous.x0, next.x0),\n x1: interpolateNumber(previous.x1, next.x1),\n y0: interpolateNumber(previous.y0, next.y0),\n y1: interpolateNumber(previous.y1, next.y1),\n width: interpolateNumber(previous.width, next.width),\n }\n el[i]._animState = next\n\n return function (t: number) {\n return linkPath({\n x0: interpolator.x0(t),\n x1: interpolator.x1(t),\n y0: interpolator.y0(t),\n y1: interpolator.y1(t),\n width: interpolator.width(t),\n })\n }\n })\n } else {\n linkSelection.attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }))\n }\n\n sel.select(`.${s.linkSelectionHelper}`)\n .attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(10, d.width),\n }))\n .style('cursor', d => getString(d, config.linkCursor))\n .style('pointer-events', (d: SankeyLink<N, L>) => (d.source._state?.collapsed || d.target._state?.collapsed) ? 'none' : null)\n}\n\nexport function removeLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.remove()\n}\n"],"names":["s.linkPath","s.linkSelectionHelper"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"link.js","sources":["../../../../src/components/sankey/modules/link.ts"],"sourcesContent":["import { Selection } from 'd3-selection'\nimport { Transition } from 'd3-transition'\nimport { interpolateNumber } from 'd3-interpolate'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { getString } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\n\n// Local Types\nimport { SankeyInputLink, SankeyInputNode, SankeyLink } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Styles\nimport * as s from '../style'\n\nexport type LinkPathOptions = {\n x0: number;\n x1: number;\n y0: number;\n y1: number;\n width: number;\n}\n\nexport function linkPath ({ x0, x1, y0, y1, width }: LinkPathOptions): string {\n const top0 = y0 - width / 2\n const top1 = y1 - width / 2\n const bottom0 = y0 + width / 2\n const bottom1 = y1 + width / 2\n const centerX = (x0 + x1) / 2\n\n return `\n M ${x0}, ${top0}\n\n C ${centerX}, ${top0}\n ${centerX}, ${top1}\n ${x1}, ${top1}\n\n L ${x1}, ${bottom1}\n\n C ${centerX}, ${bottom1}\n ${centerX}, ${bottom0}\n ${x0}, ${bottom0}\n z\n `\n}\n\nexport function getLinkPathOptions<N extends SankeyInputNode, L extends SankeyInputLink> (d: SankeyLink<N, L>): LinkPathOptions {\n return {\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(1, d.width),\n }\n}\n\nexport type LinkAnimState = { x0: number; x1: number; y0: number; y1: number; width: number }\n\nexport interface LinkElement extends SVGPathElement {\n _animState?: LinkAnimState;\n}\n\nexport function createLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.append('path').attr('class', s.linkPath)\n .attr('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n el[i]._animState = getLinkPathOptions(d)\n return linkPath(el[i]._animState)\n })\n sel.append('path').attr('class', s.linkSelectionHelper)\n sel.style('opacity', 0)\n}\n\nexport function updateLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n duration: number\n): void {\n smartTransition(sel, duration)\n .style('opacity', (d: SankeyLink<N, L>) => d._state.greyout ? 0.2 : 1)\n\n const linkSelection = sel.select<SVGPathElement>(`.${s.linkPath}`)\n .style('cursor', (d: SankeyLink<N, L>) => getString(d, config.linkCursor))\n\n const selectionTransition = smartTransition(linkSelection, duration)\n .style('fill', (link: SankeyLink<N, L>) => getColor(link, config.linkColor))\n\n if (duration) {\n (selectionTransition as Transition<SVGPathElement, SankeyLink<N, L>, SVGGElement, unknown>)\n .attrTween('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n const previous = el[i]._animState\n const next = getLinkPathOptions(d)\n\n const interpolator = {\n x0: interpolateNumber(previous.x0, next.x0),\n x1: interpolateNumber(previous.x1, next.x1),\n y0: interpolateNumber(previous.y0, next.y0),\n y1: interpolateNumber(previous.y1, next.y1),\n width: interpolateNumber(previous.width, next.width),\n }\n\n return function (t: number) {\n const currentPathOptions = {\n x0: interpolator.x0(t),\n x1: interpolator.x1(t),\n y0: interpolator.y0(t),\n y1: interpolator.y1(t),\n width: interpolator.width(t),\n }\n\n el[i]._animState = currentPathOptions\n return linkPath(currentPathOptions)\n }\n })\n } else {\n linkSelection.attr('d', (d: SankeyLink<N, L>, i: number, el: ArrayLike<LinkElement>) => {\n el[i]._animState = getLinkPathOptions(d)\n\n return linkPath(el[i]._animState)\n })\n }\n\n sel.select(`.${s.linkSelectionHelper}`)\n .attr('d', (d: SankeyLink<N, L>) => linkPath({\n x0: d.source.x1,\n x1: d.target.x0,\n y0: d.y0,\n y1: d.y1,\n width: Math.max(10, d.width),\n }))\n .style('cursor', d => getString(d, config.linkCursor))\n}\n\nexport function removeLinks<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyLink<N, L>, SVGGElement, unknown>\n): void {\n sel.remove()\n}\n"],"names":["s.linkPath","s.linkSelectionHelper"],"mappings":"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"}
|
|
@@ -2,9 +2,10 @@ import { Selection } from 'd3-selection';
|
|
|
2
2
|
import { Spacing } from "../../../types/spacing";
|
|
3
3
|
import { SankeyInputLink, SankeyInputNode, SankeyNode } from '../types';
|
|
4
4
|
import { SankeyConfigInterface } from '../config';
|
|
5
|
+
export declare const NODE_SELECTION_RECT_DELTA = 3;
|
|
5
6
|
export declare function createNodes<N extends SankeyInputNode, L extends SankeyInputLink>(sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, bleed: Spacing): void;
|
|
6
|
-
export declare function updateNodes<N extends SankeyInputNode, L extends SankeyInputLink>(sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, bleed: Spacing, hasLinks: boolean, duration: number): void;
|
|
7
|
-
export declare function renderNodeLabels<N extends SankeyInputNode, L extends SankeyInputLink>(sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, duration: number,
|
|
7
|
+
export declare function updateNodes<N extends SankeyInputNode, L extends SankeyInputLink>(sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, bleed: Spacing, hasLinks: boolean, duration: number, layerSpacing: number): void;
|
|
8
|
+
export declare function renderNodeLabels<N extends SankeyInputNode, L extends SankeyInputLink>(sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, duration: number, layerSpacing: number, sankeyMaxLayer: number, bleed: Spacing): void;
|
|
8
9
|
export declare function removeNodes<N extends SankeyInputNode, L extends SankeyInputLink>(selection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, duration: number): void;
|
|
9
|
-
export declare function onNodeMouseOver<N extends SankeyInputNode, L extends SankeyInputLink>(d: SankeyNode<N, L>, nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number): void;
|
|
10
|
-
export declare function onNodeMouseOut<N extends SankeyInputNode, L extends SankeyInputLink>(d: SankeyNode<N, L>, nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number): void;
|
|
10
|
+
export declare function onNodeMouseOver<N extends SankeyInputNode, L extends SankeyInputLink>(d: SankeyNode<N, L>, data: SankeyNode<N, L>[], nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, layerSpacing: number, bleed: Spacing): void;
|
|
11
|
+
export declare function onNodeMouseOut<N extends SankeyInputNode, L extends SankeyInputLink>(d: SankeyNode<N, L>, data: SankeyNode<N, L>[], nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>, config: SankeyConfigInterface<N, L>, width: number, layerSpacing: number, bleed: Spacing): void;
|
|
@@ -1,14 +1,24 @@
|
|
|
1
1
|
import { select } from 'd3-selection';
|
|
2
|
+
import { max } from 'd3-array';
|
|
2
3
|
import { getColor } from '../../../utils/color.js';
|
|
3
|
-
import { getString } from '../../../utils/data.js';
|
|
4
|
+
import { isNumber, getString } from '../../../utils/data.js';
|
|
4
5
|
import { smartTransition } from '../../../utils/d3.js';
|
|
5
|
-
import { SankeyEnterTransitionType, SankeyNodeAlign, SankeyExitTransitionType } from '../types.js';
|
|
6
|
-
import { renderLabel } from './label.js';
|
|
7
|
-
import { node, labelGroup, labelBackground, label, sublabel, nodeIcon, SANKEY_ICON_SIZE, hidden, labelTrimmed, forceShow } from '../style.js';
|
|
6
|
+
import { SankeyEnterTransitionType, SankeyNodeAlign, SankeySubLabelPlacement, SankeyExitTransitionType } from '../types.js';
|
|
7
|
+
import { getLabelFontSize, getSubLabelFontSize, renderLabel } from './label.js';
|
|
8
|
+
import { nodeSelectionRect, node, labelGroup, labelBackground, label, sublabel, nodeIcon, SANKEY_ICON_SIZE, hidden, labelTrimmed, forceShow } from '../style.js';
|
|
8
9
|
|
|
10
|
+
const NODE_SELECTION_RECT_DELTA = 3;
|
|
9
11
|
function createNodes(sel, config, width, bleed) {
|
|
10
12
|
const { enterTransitionType } = config;
|
|
11
13
|
// Node
|
|
14
|
+
sel.append('rect')
|
|
15
|
+
.attr('class', nodeSelectionRect)
|
|
16
|
+
.attr('width', config.nodeWidth + NODE_SELECTION_RECT_DELTA * 2)
|
|
17
|
+
.attr('height', d => d.y1 - d.y0 + NODE_SELECTION_RECT_DELTA * 2)
|
|
18
|
+
.attr('x', -NODE_SELECTION_RECT_DELTA)
|
|
19
|
+
.attr('y', -NODE_SELECTION_RECT_DELTA)
|
|
20
|
+
.style('stroke', node => getColor(node, config.nodeColor))
|
|
21
|
+
.style('opacity', 0);
|
|
12
22
|
sel.append('rect')
|
|
13
23
|
.attr('class', node)
|
|
14
24
|
.attr('width', config.nodeWidth)
|
|
@@ -42,19 +52,43 @@ function getNodeXPos(d, config, width, bleed, hasLinks) {
|
|
|
42
52
|
default: return width * 0.5 - bleed.left;
|
|
43
53
|
}
|
|
44
54
|
}
|
|
45
|
-
function
|
|
55
|
+
function getXDistanceToNextNode(sel, datum, data, // Assuming that the nodes are sorted by the x position for performance reasons
|
|
56
|
+
config, width) {
|
|
57
|
+
let yTolerance = config.labelMaxWidthTakeAvailableSpaceTolerance;
|
|
58
|
+
if (!isNumber(yTolerance)) {
|
|
59
|
+
const labelFontSize = getLabelFontSize(config, sel.node());
|
|
60
|
+
const subLabelFontSize = getSubLabelFontSize(config, sel.node());
|
|
61
|
+
const hasSecondLineSublabel = getString(datum, config.subLabel) && config.subLabelPlacement !== SankeySubLabelPlacement.Inline;
|
|
62
|
+
yTolerance = (labelFontSize + subLabelFontSize) / (hasSecondLineSublabel ? 2 : 4);
|
|
63
|
+
}
|
|
64
|
+
// Assuming that the nodes are sorted by the x position
|
|
65
|
+
const nodeOnTheRight = data.find(d => d.layer > datum.layer &&
|
|
66
|
+
d.x0 >= datum.x1 &&
|
|
67
|
+
d.y1 >= (datum.y0 - yTolerance) &&
|
|
68
|
+
d.y0 <= (datum.y1 + yTolerance));
|
|
69
|
+
return (nodeOnTheRight ? nodeOnTheRight.x0 : width) - datum.x1;
|
|
70
|
+
}
|
|
71
|
+
function updateNodes(sel, config, width, bleed, hasLinks, duration, layerSpacing) {
|
|
46
72
|
smartTransition(sel, duration)
|
|
47
73
|
.attr('transform', d => `translate(${getNodeXPos(d, config, width, bleed, hasLinks)},${d.y0})`)
|
|
48
74
|
.style('opacity', d => d._state.greyout ? 0.2 : 1);
|
|
49
75
|
// Node
|
|
76
|
+
smartTransition(sel.select(`.${nodeSelectionRect}`), duration)
|
|
77
|
+
.attr('width', config.nodeWidth + NODE_SELECTION_RECT_DELTA * 2)
|
|
78
|
+
.attr('height', d => d.y1 - d.y0 + NODE_SELECTION_RECT_DELTA * 2)
|
|
79
|
+
.attr('x', -NODE_SELECTION_RECT_DELTA)
|
|
80
|
+
.attr('y', -NODE_SELECTION_RECT_DELTA)
|
|
81
|
+
.style('stroke', (d) => getColor(d, config.nodeColor))
|
|
82
|
+
.style('opacity', d => { var _a; return ((_a = config.selectedNodeIds) === null || _a === void 0 ? void 0 : _a.includes(d.id)) ? 1 : 0; });
|
|
50
83
|
smartTransition(sel.select(`.${node}`), duration)
|
|
51
84
|
.attr('width', config.nodeWidth)
|
|
52
85
|
.attr('height', (d) => d.y1 - d.y0)
|
|
53
86
|
.style('cursor', (d) => getString(d, config.nodeCursor))
|
|
54
87
|
.style('fill', (d) => getColor(d, config.nodeColor));
|
|
55
88
|
// Label Rendering
|
|
89
|
+
const maxLayer = max(sel.data(), d => d.layer);
|
|
56
90
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
57
|
-
renderNodeLabels(sel, config, width, duration);
|
|
91
|
+
renderNodeLabels(sel, config, width, duration, layerSpacing, maxLayer, bleed);
|
|
58
92
|
// Node Icon
|
|
59
93
|
const nodeIcon$1 = sel.select(`.${nodeIcon}`);
|
|
60
94
|
if (config.nodeIcon) {
|
|
@@ -78,21 +112,26 @@ function updateNodes(sel, config, width, bleed, hasLinks, duration) {
|
|
|
78
112
|
.attr('visibility', 'hidden');
|
|
79
113
|
}
|
|
80
114
|
}
|
|
81
|
-
function renderNodeLabels(sel, config, width, duration,
|
|
115
|
+
function renderNodeLabels(sel, config, width, duration, layerSpacing, sankeyMaxLayer, bleed) {
|
|
116
|
+
var _a;
|
|
82
117
|
// Label Rendering
|
|
83
118
|
const labelGroupSelection = sel.select(`.${labelGroup}`);
|
|
84
119
|
const labelGroupEls = labelGroupSelection.nodes() || [];
|
|
85
|
-
// After rendering Label return a BBox so we can do intersection detection and hide some of
|
|
120
|
+
// After rendering Label return a BBox so we can do intersection detection and hide some of them
|
|
121
|
+
const data = sel.data();
|
|
86
122
|
const labelGroupBBoxes = labelGroupEls.map(g => {
|
|
87
123
|
const gSelection = select(g);
|
|
88
124
|
const datum = gSelection.datum();
|
|
89
|
-
|
|
125
|
+
const spacing = config.labelMaxWidthTakeAvailableSpace
|
|
126
|
+
? getXDistanceToNextNode(gSelection, datum, data, config, width)
|
|
127
|
+
: layerSpacing;
|
|
128
|
+
return renderLabel(gSelection, datum, config, width, duration, spacing, sankeyMaxLayer, bleed);
|
|
90
129
|
});
|
|
91
130
|
if (config.labelVisibility) {
|
|
92
131
|
for (const b of labelGroupBBoxes) {
|
|
93
132
|
const datum = b.selection.datum();
|
|
94
133
|
const box = { x: b.x, y: b.y, width: b.width, height: b.height };
|
|
95
|
-
b.hidden = !config.labelVisibility(datum, box,
|
|
134
|
+
b.hidden = !config.labelVisibility(datum, box, false);
|
|
96
135
|
}
|
|
97
136
|
}
|
|
98
137
|
else {
|
|
@@ -106,9 +145,11 @@ function renderNodeLabels(sel, config, width, duration, enforceNodeVisibility) {
|
|
|
106
145
|
const b0 = boxes[lastVisibleIdx];
|
|
107
146
|
const b1 = boxes[i];
|
|
108
147
|
const shouldBeHidden = b1.y < (b0.y + b0.height);
|
|
148
|
+
const b1Datum = b1.selection.datum();
|
|
109
149
|
if (shouldBeHidden) {
|
|
110
|
-
if (
|
|
150
|
+
if ((_a = config.selectedNodeIds) === null || _a === void 0 ? void 0 : _a.includes(b1Datum.id)) {
|
|
111
151
|
b0.hidden = true; // If the hovered node should be hidden, hide the previous one instead
|
|
152
|
+
}
|
|
112
153
|
else
|
|
113
154
|
b1.hidden = true;
|
|
114
155
|
}
|
|
@@ -136,21 +177,29 @@ function removeNodes(selection, config, duration) {
|
|
|
136
177
|
.remove();
|
|
137
178
|
});
|
|
138
179
|
}
|
|
139
|
-
function onNodeMouseOver(d, nodeSelection, config, width) {
|
|
180
|
+
function onNodeMouseOver(d, data, nodeSelection, config, width, layerSpacing, bleed) {
|
|
140
181
|
const labelGroup$1 = nodeSelection.raise()
|
|
141
182
|
.select(`.${labelGroup}`);
|
|
183
|
+
const spacing = config.labelMaxWidthTakeAvailableSpace
|
|
184
|
+
? getXDistanceToNextNode(nodeSelection, d, data, config, width)
|
|
185
|
+
: layerSpacing;
|
|
186
|
+
const maxLayer = max(data, d => d.layer);
|
|
142
187
|
if ((config.labelExpandTrimmedOnHover && labelGroup$1.classed(labelTrimmed)) || labelGroup$1.classed(hidden)) {
|
|
143
|
-
renderLabel(labelGroup$1, d, config, width, 0, true);
|
|
188
|
+
renderLabel(labelGroup$1, d, config, width, 0, spacing, maxLayer, bleed, true);
|
|
144
189
|
}
|
|
145
190
|
labelGroup$1.classed(forceShow, true);
|
|
146
191
|
}
|
|
147
|
-
function onNodeMouseOut(d, nodeSelection, config, width) {
|
|
192
|
+
function onNodeMouseOut(d, data, nodeSelection, config, width, layerSpacing, bleed) {
|
|
148
193
|
const labelGroup$1 = nodeSelection.select(`.${labelGroup}`);
|
|
194
|
+
const spacing = config.labelMaxWidthTakeAvailableSpace
|
|
195
|
+
? getXDistanceToNextNode(nodeSelection, d, data, config, width)
|
|
196
|
+
: layerSpacing;
|
|
149
197
|
if (config.labelExpandTrimmedOnHover || labelGroup$1.classed(hidden)) {
|
|
150
|
-
|
|
198
|
+
const maxLayer = max(data, d => d.layer);
|
|
199
|
+
renderLabel(labelGroup$1, d, config, width, 0, spacing, maxLayer, bleed, false);
|
|
151
200
|
}
|
|
152
201
|
labelGroup$1.classed(forceShow, false);
|
|
153
202
|
}
|
|
154
203
|
|
|
155
|
-
export { createNodes, onNodeMouseOut, onNodeMouseOver, removeNodes, renderNodeLabels, updateNodes };
|
|
204
|
+
export { NODE_SELECTION_RECT_DELTA, createNodes, onNodeMouseOut, onNodeMouseOver, removeNodes, renderNodeLabels, updateNodes };
|
|
156
205
|
//# sourceMappingURL=node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sources":["../../../../src/components/sankey/modules/node.ts"],"sourcesContent":["import { select, Selection } from 'd3-selection'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { getString } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\n\n// Types\nimport { Spacing } from 'types/spacing'\n\n// Local Types\nimport { SankeyEnterTransitionType, SankeyExitTransitionType, SankeyInputLink, SankeyInputNode, SankeyNode, SankeyNodeAlign } from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Helpers\nimport { renderLabel } from './label'\n\n// Styles\nimport * as s from '../style'\n\nexport function createNodes<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n bleed: Spacing\n): void {\n const { enterTransitionType } = config\n\n // Node\n sel.append('rect')\n .attr('class', s.node)\n .attr('width', config.nodeWidth)\n .attr('height', d => d.y1 - d.y0)\n .style('fill', node => getColor(node, config.nodeColor))\n\n // Labels\n const labelGroup = sel.append('g').attr('class', s.labelGroup)\n labelGroup.append('path').attr('class', s.labelBackground)\n labelGroup.append('text').attr('class', s.label)\n labelGroup.append('text').attr('class', s.sublabel)\n\n // Node icon\n sel.append('text').attr('class', s.nodeIcon)\n .attr('text-anchor', 'middle')\n .attr('dy', '0.5px')\n\n sel\n .attr('transform', d => {\n const x = (enterTransitionType === SankeyEnterTransitionType.FromAncestor && d.targetLinks?.[0]) ? d.targetLinks[0].source.x0 : d.x0\n return `translate(${sel.size() === 1 ? width * 0.5 - bleed.left : x}, ${d.y0})`\n })\n .style('opacity', 0)\n}\n\nfunction getNodeXPos<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n bleed: Spacing,\n hasLinks: boolean\n): number {\n if (hasLinks) return d.x0\n\n switch (config.nodeAlign) {\n case SankeyNodeAlign.Left: return d.x0\n case SankeyNodeAlign.Right: return width - bleed.right\n case SankeyNodeAlign.Center:\n case SankeyNodeAlign.Justify:\n default: return width * 0.5 - bleed.left\n }\n}\n\nexport function updateNodes<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n bleed: Spacing,\n hasLinks: boolean,\n duration: number\n): void {\n smartTransition(sel, duration)\n .attr('transform', d => `translate(${getNodeXPos(d, config, width, bleed, hasLinks)},${d.y0})`)\n .style('opacity', d => d._state.greyout ? 0.2 : 1)\n\n // Node\n smartTransition(sel.select(`.${s.node}`), duration)\n .attr('width', config.nodeWidth)\n .attr('height', (d: SankeyNode<N, L>) => d.y1 - d.y0)\n .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.nodeCursor))\n .style('fill', (d: SankeyNode<N, L>) => getColor(d, config.nodeColor))\n\n // Label Rendering\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n renderNodeLabels(sel, config, width, duration)\n\n // Node Icon\n const nodeIcon = sel.select(`.${s.nodeIcon}`)\n if (config.nodeIcon) {\n nodeIcon\n .attr('visibility', null)\n .attr('text-anchor', 'middle')\n .style('dominant-baseline', 'central')\n .style('stroke', (d: SankeyNode<N, L>) => getColor(d, config.nodeIconColor))\n .style('fill', (d: SankeyNode<N, L>) => getColor(d, config.nodeIconColor))\n .style('font-size', (d: SankeyNode<N, L>) => {\n const nodeHeight = d.y1 - d.y0\n return nodeHeight < s.SANKEY_ICON_SIZE ? `${nodeHeight * 0.65}px` : null\n })\n .html((d: SankeyNode<N, L>) => getString(d, config.nodeIcon))\n\n smartTransition(nodeIcon, duration)\n .attr('x', config.nodeWidth / 2)\n .attr('y', (d: SankeyNode<N, L>) => (d.y1 - d.y0) / 2)\n } else {\n nodeIcon\n .attr('visibility', 'hidden')\n }\n}\n\nexport function renderNodeLabels<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n duration: number,\n enforceNodeVisibility?: SankeyNode<N, L>\n): void {\n // Label Rendering\n const labelGroupSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, any> = sel.select(`.${s.labelGroup}`)\n const labelGroupEls = labelGroupSelection.nodes() || []\n\n // After rendering Label return a BBox so we can do intersection detection and hide some of tem\n const labelGroupBBoxes = labelGroupEls.map(g => {\n const gSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, any> = select(g)\n const datum = gSelection.datum()\n return renderLabel(gSelection, datum, config, width, duration, enforceNodeVisibility === datum)\n })\n\n if (config.labelVisibility) {\n for (const b of labelGroupBBoxes) {\n const datum = b.selection.datum() as SankeyNode<N, L>\n const box = { x: b.x, y: b.y, width: b.width, height: b.height }\n b.hidden = !config.labelVisibility(datum, box, enforceNodeVisibility === datum)\n }\n } else {\n // Detect intersecting labels\n const maxLayer = Math.max(...labelGroupBBoxes.map(b => b.layer))\n for (let layer = 0; layer <= maxLayer; layer += 1) {\n const boxes = labelGroupBBoxes.filter(b => (b.layer === layer))\n boxes.sort((a, b) => a.y - b.y)\n\n let lastVisibleIdx = 0\n for (let i = 1; i < boxes.length; i += 1) {\n const b0 = boxes[lastVisibleIdx]\n const b1 = boxes[i]\n\n const shouldBeHidden = b1.y < (b0.y + b0.height)\n if (shouldBeHidden) {\n if (b1.selection.datum() === enforceNodeVisibility) b0.hidden = true // If the hovered node should be hidden, hide the previous one instead\n else b1.hidden = true\n }\n\n if (!b1.hidden) lastVisibleIdx = i\n }\n }\n }\n\n // Hide intersecting labels\n for (const b of labelGroupBBoxes) {\n b.selection.classed(s.hidden, b.hidden)\n }\n}\n\nexport function removeNodes<N extends SankeyInputNode, L extends SankeyInputLink> (\n selection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n duration: number\n): void {\n const { exitTransitionType } = config\n\n selection.each((d, i, els) => {\n const node = select(els[i])\n const transition = smartTransition(node, duration)\n if ((exitTransitionType === SankeyExitTransitionType.ToAncestor) && d.targetLinks?.[0]) {\n transition.attr('transform', `translate(${d.targetLinks[0].source.x0},${d.y0})`)\n }\n\n transition\n .style('opacity', 0)\n .remove()\n })\n}\n\nexport function onNodeMouseOver<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): void {\n const labelGroup = nodeSelection.raise()\n .select<SVGGElement>(`.${s.labelGroup}`)\n\n if ((config.labelExpandTrimmedOnHover && labelGroup.classed(s.labelTrimmed)) || labelGroup.classed(s.hidden)) {\n renderLabel(labelGroup, d, config, width, 0, true)\n }\n labelGroup.classed(s.forceShow, true)\n}\n\nexport function onNodeMouseOut<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number\n): void {\n const labelGroup = nodeSelection.select<SVGGElement>(`.${s.labelGroup}`)\n if (config.labelExpandTrimmedOnHover || labelGroup.classed(s.hidden)) {\n renderLabel(labelGroup, d, config, width, 0)\n }\n labelGroup.classed(s.forceShow, false)\n}\n"],"names":["s.node","labelGroup","s.labelGroup","s.labelBackground","s.label","s.sublabel","s.nodeIcon","nodeIcon","s.SANKEY_ICON_SIZE","s.hidden","s.labelTrimmed","s.forceShow"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sources":["../../../../src/components/sankey/modules/node.ts"],"sourcesContent":["import { select, Selection } from 'd3-selection'\nimport { max } from 'd3-array'\n\n// Utils\nimport { getColor } from 'utils/color'\nimport { getString, isNumber } from 'utils/data'\nimport { smartTransition } from 'utils/d3'\n\n// Types\nimport { Spacing } from 'types/spacing'\n\n// Local Types\nimport {\n SankeyEnterTransitionType,\n SankeyExitTransitionType,\n SankeyInputLink,\n SankeyInputNode,\n SankeyNode,\n SankeyNodeAlign,\n SankeySubLabelPlacement,\n} from '../types'\n\n// Config\nimport { SankeyConfigInterface } from '../config'\n\n// Helpers\nimport { getLabelFontSize, getSubLabelFontSize, renderLabel } from './label'\n\n// Styles\nimport * as s from '../style'\n\nexport const NODE_SELECTION_RECT_DELTA = 3\n\nexport function createNodes<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n bleed: Spacing\n): void {\n const { enterTransitionType } = config\n\n // Node\n sel.append('rect')\n .attr('class', s.nodeSelectionRect)\n .attr('width', config.nodeWidth + NODE_SELECTION_RECT_DELTA * 2)\n .attr('height', d => d.y1 - d.y0 + NODE_SELECTION_RECT_DELTA * 2)\n .attr('x', -NODE_SELECTION_RECT_DELTA)\n .attr('y', -NODE_SELECTION_RECT_DELTA)\n .style('stroke', node => getColor(node, config.nodeColor))\n .style('opacity', 0)\n\n sel.append('rect')\n .attr('class', s.node)\n .attr('width', config.nodeWidth)\n .attr('height', d => d.y1 - d.y0)\n .style('fill', node => getColor(node, config.nodeColor))\n\n // Labels\n const labelGroup = sel.append('g').attr('class', s.labelGroup)\n labelGroup.append('path').attr('class', s.labelBackground)\n labelGroup.append('text').attr('class', s.label)\n labelGroup.append('text').attr('class', s.sublabel)\n\n // Node icon\n sel.append('text').attr('class', s.nodeIcon)\n .attr('text-anchor', 'middle')\n .attr('dy', '0.5px')\n\n sel\n .attr('transform', d => {\n const x = (enterTransitionType === SankeyEnterTransitionType.FromAncestor && d.targetLinks?.[0]) ? d.targetLinks[0].source.x0 : d.x0\n return `translate(${sel.size() === 1 ? width * 0.5 - bleed.left : x}, ${d.y0})`\n })\n .style('opacity', 0)\n}\n\nfunction getNodeXPos<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n bleed: Spacing,\n hasLinks: boolean\n): number {\n if (hasLinks) return d.x0\n\n switch (config.nodeAlign) {\n case SankeyNodeAlign.Left: return d.x0\n case SankeyNodeAlign.Right: return width - bleed.right\n case SankeyNodeAlign.Center:\n case SankeyNodeAlign.Justify:\n default: return width * 0.5 - bleed.left\n }\n}\n\nfunction getXDistanceToNextNode<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n datum: SankeyNode<N, L>,\n data: SankeyNode<N, L>[], // Assuming that the nodes are sorted by the x position for performance reasons\n config: SankeyConfigInterface<N, L>,\n width: number\n): number {\n let yTolerance = config.labelMaxWidthTakeAvailableSpaceTolerance\n if (!isNumber(yTolerance)) {\n const labelFontSize = getLabelFontSize(config, sel.node())\n const subLabelFontSize = getSubLabelFontSize(config, sel.node())\n const hasSecondLineSublabel = getString(datum, config.subLabel) && config.subLabelPlacement !== SankeySubLabelPlacement.Inline\n yTolerance = (labelFontSize + subLabelFontSize) / (hasSecondLineSublabel ? 2 : 4)\n }\n\n // Assuming that the nodes are sorted by the x position\n const nodeOnTheRight = data.find(d =>\n d.layer > datum.layer &&\n d.x0 >= datum.x1 &&\n d.y1 >= (datum.y0 - yTolerance) &&\n d.y0 <= (datum.y1 + yTolerance)\n )\n\n return (nodeOnTheRight ? nodeOnTheRight.x0 : width) - datum.x1\n}\n\nexport function updateNodes<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n bleed: Spacing,\n hasLinks: boolean,\n duration: number,\n layerSpacing: number\n): void {\n smartTransition(sel, duration)\n .attr('transform', d => `translate(${getNodeXPos(d, config, width, bleed, hasLinks)},${d.y0})`)\n .style('opacity', d => d._state.greyout ? 0.2 : 1)\n\n // Node\n smartTransition(sel.select(`.${s.nodeSelectionRect}`), duration)\n .attr('width', config.nodeWidth + NODE_SELECTION_RECT_DELTA * 2)\n .attr('height', d => d.y1 - d.y0 + NODE_SELECTION_RECT_DELTA * 2)\n .attr('x', -NODE_SELECTION_RECT_DELTA)\n .attr('y', -NODE_SELECTION_RECT_DELTA)\n .style('stroke', (d: SankeyNode<N, L>) => getColor(d, config.nodeColor))\n .style('opacity', d => config.selectedNodeIds?.includes(d.id) ? 1 : 0)\n\n smartTransition(sel.select(`.${s.node}`), duration)\n .attr('width', config.nodeWidth)\n .attr('height', (d: SankeyNode<N, L>) => d.y1 - d.y0)\n .style('cursor', (d: SankeyNode<N, L>) => getString(d, config.nodeCursor))\n .style('fill', (d: SankeyNode<N, L>) => getColor(d, config.nodeColor))\n\n // Label Rendering\n const maxLayer = max(sel.data(), d => d.layer)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n renderNodeLabels(sel, config, width, duration, layerSpacing, maxLayer, bleed)\n\n // Node Icon\n const nodeIcon = sel.select(`.${s.nodeIcon}`)\n if (config.nodeIcon) {\n nodeIcon\n .attr('visibility', null)\n .attr('text-anchor', 'middle')\n .style('dominant-baseline', 'central')\n .style('stroke', (d: SankeyNode<N, L>) => getColor(d, config.nodeIconColor))\n .style('fill', (d: SankeyNode<N, L>) => getColor(d, config.nodeIconColor))\n .style('font-size', (d: SankeyNode<N, L>) => {\n const nodeHeight = d.y1 - d.y0\n return nodeHeight < s.SANKEY_ICON_SIZE ? `${nodeHeight * 0.65}px` : null\n })\n .html((d: SankeyNode<N, L>) => getString(d, config.nodeIcon))\n\n smartTransition(nodeIcon, duration)\n .attr('x', config.nodeWidth / 2)\n .attr('y', (d: SankeyNode<N, L>) => (d.y1 - d.y0) / 2)\n } else {\n nodeIcon\n .attr('visibility', 'hidden')\n }\n}\n\nexport function renderNodeLabels<N extends SankeyInputNode, L extends SankeyInputLink> (\n sel: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n duration: number,\n layerSpacing: number,\n sankeyMaxLayer: number,\n bleed: Spacing\n): void {\n // Label Rendering\n const labelGroupSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown> = sel.select(`.${s.labelGroup}`)\n const labelGroupEls = labelGroupSelection.nodes() || []\n\n // After rendering Label return a BBox so we can do intersection detection and hide some of them\n const data = sel.data()\n const labelGroupBBoxes = labelGroupEls.map(g => {\n const gSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown> = select(g)\n const datum = gSelection.datum()\n const spacing = config.labelMaxWidthTakeAvailableSpace\n ? getXDistanceToNextNode(gSelection, datum, data, config, width)\n : layerSpacing\n\n return renderLabel(gSelection, datum, config, width, duration, spacing, sankeyMaxLayer, bleed)\n })\n\n if (config.labelVisibility) {\n for (const b of labelGroupBBoxes) {\n const datum = b.selection.datum() as SankeyNode<N, L>\n const box = { x: b.x, y: b.y, width: b.width, height: b.height }\n b.hidden = !config.labelVisibility(datum, box, false)\n }\n } else {\n // Detect intersecting labels\n const maxLayer = Math.max(...labelGroupBBoxes.map(b => b.layer))\n for (let layer = 0; layer <= maxLayer; layer += 1) {\n const boxes = labelGroupBBoxes.filter(b => (b.layer === layer))\n boxes.sort((a, b) => a.y - b.y)\n\n let lastVisibleIdx = 0\n for (let i = 1; i < boxes.length; i += 1) {\n const b0 = boxes[lastVisibleIdx]\n const b1 = boxes[i]\n\n const shouldBeHidden = b1.y < (b0.y + b0.height)\n const b1Datum = b1.selection.datum() as SankeyNode<N, L>\n if (shouldBeHidden) {\n if (config.selectedNodeIds?.includes(b1Datum.id)) {\n b0.hidden = true // If the hovered node should be hidden, hide the previous one instead\n } else b1.hidden = true\n }\n\n if (!b1.hidden) lastVisibleIdx = i\n }\n }\n }\n\n // Hide intersecting labels\n for (const b of labelGroupBBoxes) {\n b.selection.classed(s.hidden, b.hidden)\n }\n}\n\nexport function removeNodes<N extends SankeyInputNode, L extends SankeyInputLink> (\n selection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n duration: number\n): void {\n const { exitTransitionType } = config\n\n selection.each((d, i, els) => {\n const node = select(els[i])\n const transition = smartTransition(node, duration)\n if ((exitTransitionType === SankeyExitTransitionType.ToAncestor) && d.targetLinks?.[0]) {\n transition.attr('transform', `translate(${d.targetLinks[0].source.x0},${d.y0})`)\n }\n\n transition\n .style('opacity', 0)\n .remove()\n })\n}\n\nexport function onNodeMouseOver<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n data: SankeyNode<N, L>[],\n nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n layerSpacing: number,\n bleed: Spacing\n): void {\n const labelGroup = nodeSelection.raise()\n .select<SVGGElement>(`.${s.labelGroup}`)\n\n const spacing = config.labelMaxWidthTakeAvailableSpace\n ? getXDistanceToNextNode(nodeSelection, d, data, config, width)\n : layerSpacing\n\n const maxLayer = max(data, d => d.layer)\n if ((config.labelExpandTrimmedOnHover && labelGroup.classed(s.labelTrimmed)) || labelGroup.classed(s.hidden)) {\n renderLabel(labelGroup, d, config, width, 0, spacing, maxLayer, bleed, true)\n }\n labelGroup.classed(s.forceShow, true)\n}\n\nexport function onNodeMouseOut<N extends SankeyInputNode, L extends SankeyInputLink> (\n d: SankeyNode<N, L>,\n data: SankeyNode<N, L>[],\n nodeSelection: Selection<SVGGElement, SankeyNode<N, L>, SVGGElement, unknown>,\n config: SankeyConfigInterface<N, L>,\n width: number,\n layerSpacing: number,\n bleed: Spacing\n): void {\n const labelGroup = nodeSelection.select<SVGGElement>(`.${s.labelGroup}`)\n\n const spacing = config.labelMaxWidthTakeAvailableSpace\n ? getXDistanceToNextNode(nodeSelection, d, data, config, width)\n : layerSpacing\n\n if (config.labelExpandTrimmedOnHover || labelGroup.classed(s.hidden)) {\n const maxLayer = max(data, d => d.layer)\n renderLabel(labelGroup, d, config, width, 0, spacing, maxLayer, bleed, false)\n }\n labelGroup.classed(s.forceShow, false)\n}\n"],"names":["s.nodeSelectionRect","s.node","labelGroup","s.labelGroup","s.labelBackground","s.label","s.sublabel","s.nodeIcon","nodeIcon","s.SANKEY_ICON_SIZE","s.hidden","s.labelTrimmed","s.forceShow"],"mappings":"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"}
|
|
@@ -1,6 +1,71 @@
|
|
|
1
1
|
export declare const SANKEY_ICON_SIZE = 22;
|
|
2
2
|
export declare const root: string;
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const cssVarDefaults: {
|
|
4
|
+
'--vis-sankey-link-cursor': string;
|
|
5
|
+
'--vis-sankey-link-color': string;
|
|
6
|
+
'--vis-sankey-link-opacity': string;
|
|
7
|
+
'--vis-sankey-link-hover-opacity': string;
|
|
8
|
+
'--vis-sankey-node-cursor': string;
|
|
9
|
+
'--vis-sankey-node-color': string;
|
|
10
|
+
'--vis-sankey-node-label-color': string;
|
|
11
|
+
'--vis-sankey-node-opacity': string;
|
|
12
|
+
'--vis-sankey-node-hover-opacity': string;
|
|
13
|
+
'--vis-sankey-node-selection-stroke-width': string;
|
|
14
|
+
'--vis-sankey-node-selection-stroke-opacity': string;
|
|
15
|
+
'--vis-sankey-node-selection-border-radius': string;
|
|
16
|
+
'--vis-sankey-node-label-background-fill-color': string;
|
|
17
|
+
'--vis-sankey-node-label-background-stroke-color': string;
|
|
18
|
+
'--vis-sankey-node-label-background-opacity': string;
|
|
19
|
+
'--vis-sankey-node-label-cursor': string;
|
|
20
|
+
'--vis-sankey-node-label-font-weight': string;
|
|
21
|
+
'--vis-sankey-node-label-font-size': string;
|
|
22
|
+
'--vis-sankey-node-label-text-decoration': string;
|
|
23
|
+
'--vis-sankey-node-sublabel-font-size': string;
|
|
24
|
+
'--vis-sankey-node-sublabel-font-weight': string;
|
|
25
|
+
'--vis-sankey-icon-size': string;
|
|
26
|
+
'--vis-sankey-icon-color': string;
|
|
27
|
+
'--vis-sankey-icon-stroke-opacity': string;
|
|
28
|
+
'--vis-sankey-icon-font-family': string;
|
|
29
|
+
'--vis-dark-sankey-link-color': string;
|
|
30
|
+
'--vis-dark-sankey-node-color': string;
|
|
31
|
+
'--vis-dark-sankey-node-label-color': string;
|
|
32
|
+
'--vis-dark-sankey-node-label-background-fill-color': string;
|
|
33
|
+
'--vis-dark-sankey-node-label-background-stroke-color': string;
|
|
34
|
+
'--vis-dark-sankey-icon-color': string;
|
|
35
|
+
};
|
|
36
|
+
export declare const variables: {
|
|
37
|
+
sankeyLinkCursor: "--vis-sankey-link-cursor";
|
|
38
|
+
sankeyLinkColor: "--vis-sankey-link-color";
|
|
39
|
+
sankeyLinkOpacity: "--vis-sankey-link-opacity";
|
|
40
|
+
sankeyLinkHoverOpacity: "--vis-sankey-link-hover-opacity";
|
|
41
|
+
sankeyNodeCursor: "--vis-sankey-node-cursor";
|
|
42
|
+
sankeyNodeColor: "--vis-sankey-node-color";
|
|
43
|
+
sankeyNodeLabelColor: "--vis-sankey-node-label-color";
|
|
44
|
+
sankeyNodeOpacity: "--vis-sankey-node-opacity";
|
|
45
|
+
sankeyNodeHoverOpacity: "--vis-sankey-node-hover-opacity";
|
|
46
|
+
sankeyNodeSelectionStrokeWidth: "--vis-sankey-node-selection-stroke-width";
|
|
47
|
+
sankeyNodeSelectionStrokeOpacity: "--vis-sankey-node-selection-stroke-opacity";
|
|
48
|
+
sankeyNodeSelectionBorderRadius: "--vis-sankey-node-selection-border-radius";
|
|
49
|
+
sankeyNodeLabelBackgroundFillColor: "--vis-sankey-node-label-background-fill-color";
|
|
50
|
+
sankeyNodeLabelBackgroundStrokeColor: "--vis-sankey-node-label-background-stroke-color";
|
|
51
|
+
sankeyNodeLabelBackgroundOpacity: "--vis-sankey-node-label-background-opacity";
|
|
52
|
+
sankeyNodeLabelCursor: "--vis-sankey-node-label-cursor";
|
|
53
|
+
sankeyNodeLabelFontWeight: "--vis-sankey-node-label-font-weight";
|
|
54
|
+
sankeyNodeLabelFontSize: "--vis-sankey-node-label-font-size";
|
|
55
|
+
sankeyNodeLabelTextDecoration: "--vis-sankey-node-label-text-decoration";
|
|
56
|
+
sankeyNodeSublabelFontSize: "--vis-sankey-node-sublabel-font-size";
|
|
57
|
+
sankeyNodeSublabelFontWeight: "--vis-sankey-node-sublabel-font-weight";
|
|
58
|
+
sankeyIconSize: "--vis-sankey-icon-size";
|
|
59
|
+
sankeyIconColor: "--vis-sankey-icon-color";
|
|
60
|
+
sankeyIconStrokeOpacity: "--vis-sankey-icon-stroke-opacity";
|
|
61
|
+
sankeyIconFontFamily: "--vis-sankey-icon-font-family";
|
|
62
|
+
darkSankeyLinkColor: "--vis-dark-sankey-link-color";
|
|
63
|
+
darkSankeyNodeColor: "--vis-dark-sankey-node-color";
|
|
64
|
+
darkSankeyNodeLabelColor: "--vis-dark-sankey-node-label-color";
|
|
65
|
+
darkSankeyNodeLabelBackgroundFillColor: "--vis-dark-sankey-node-label-background-fill-color";
|
|
66
|
+
darkSankeyNodeLabelBackgroundStrokeColor: "--vis-dark-sankey-node-label-background-stroke-color";
|
|
67
|
+
darkSankeyIconColor: "--vis-dark-sankey-icon-color";
|
|
68
|
+
};
|
|
4
69
|
export declare const links: string;
|
|
5
70
|
export declare const nodes: string;
|
|
6
71
|
export declare const link: string;
|
|
@@ -17,4 +82,5 @@ export declare const nodeGroup: string;
|
|
|
17
82
|
export declare const node: string;
|
|
18
83
|
export declare const nodeIcon: string;
|
|
19
84
|
export declare const nodeExit: string;
|
|
85
|
+
export declare const nodeSelectionRect: string;
|
|
20
86
|
export declare const background: string;
|