@dpuse/dpuse-tool-d3-visualiser 0.0.30 → 0.0.32
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 +104 -88
- package/dist/array-Cv4-2llb.js +16 -0
- package/dist/array-Cv4-2llb.js.map +1 -0
- package/dist/axis-DjmZ9QYe.js +75 -0
- package/dist/axis-DjmZ9QYe.js.map +1 -0
- package/dist/band-DbExrcif.js +57 -0
- package/dist/band-DbExrcif.js.map +1 -0
- package/dist/{billboardJs-DJFb72FS.js → billboardJs-jmaH9Gag.js} +17 -15
- package/dist/{billboardJs-DJFb72FS.js.map → billboardJs-jmaH9Gag.js.map} +1 -1
- package/dist/d3BarChart-DEzayAyh.js +49 -0
- package/dist/d3BarChart-DEzayAyh.js.map +1 -0
- package/dist/dpuse-tool-d3-visualiser.es.js +27 -6
- package/dist/dpuse-tool-d3-visualiser.es.js.map +1 -1
- package/dist/{drag-B46QGUMq.js → drag-DLokvdmv.js} +22 -22
- package/dist/{drag-B46QGUMq.js.map → drag-DLokvdmv.js.map} +1 -1
- package/dist/{erdDiagram-CxejXoNh.js → erdDiagram-Ds-nrw7Q.js} +3 -3
- package/dist/{erdDiagram-CxejXoNh.js.map → erdDiagram-Ds-nrw7Q.js.map} +1 -1
- package/dist/linear-D3BD7E1p.js +592 -0
- package/dist/linear-D3BD7E1p.js.map +1 -0
- package/dist/{link-RZgae8Z2.js → link-DKK0Q0lG.js} +19 -28
- package/dist/link-DKK0Q0lG.js.map +1 -0
- package/dist/math-Dc0ICuib.js +962 -0
- package/dist/math-Dc0ICuib.js.map +1 -0
- package/dist/{networkDiagram-QWVy8iRy.js → networkDiagram-HS-SgOZ0.js} +5 -5
- package/dist/{networkDiagram-QWVy8iRy.js.map → networkDiagram-HS-SgOZ0.js.map} +1 -1
- package/dist/{observablePlot-D7o8-dnK.js → observablePlot-B1CSEvcU.js} +1558 -1607
- package/dist/observablePlot-B1CSEvcU.js.map +1 -0
- package/dist/{sankeyDiagram-DlIuwzOl.js → sankeyDiagram-BXTYCHPV.js} +2 -2
- package/dist/{sankeyDiagram-DlIuwzOl.js.map → sankeyDiagram-BXTYCHPV.js.map} +1 -1
- package/dist/{src-B7SGbtRQ.js → src-Br_t1-IV.js} +7 -7
- package/dist/{src-B7SGbtRQ.js.map → src-Br_t1-IV.js.map} +1 -1
- package/dist/src-Du_hPZAX.js +804 -0
- package/dist/src-Du_hPZAX.js.map +1 -0
- package/dist/string-CnCj7THX.js +394 -0
- package/dist/string-CnCj7THX.js.map +1 -0
- package/dist/tanStackCharts-vvQteV9z.js +2343 -0
- package/dist/tanStackCharts-vvQteV9z.js.map +1 -0
- package/dist/{treeDiagram-Bi5VXDVy.js → treeDiagram-DemHfVnX.js} +2 -2
- package/dist/{treeDiagram-Bi5VXDVy.js.map → treeDiagram-DemHfVnX.js.map} +1 -1
- package/dist/types/src/d3BarChart.d.ts +7 -0
- package/dist/types/src/index.d.ts +5 -0
- package/dist/types/src/tanStackCharts.d.ts +8 -0
- package/dist/types/tests/d3BarChart.test.d.ts +1 -0
- package/dist/types/tests/tanStackCharts.test.d.ts +1 -0
- package/package.json +6 -1
- package/dist/axis-B7xlWKkC.js +0 -1621
- package/dist/axis-B7xlWKkC.js.map +0 -1
- package/dist/link-RZgae8Z2.js.map +0 -1
- package/dist/observablePlot-D7o8-dnK.js.map +0 -1
- package/dist/src-DnMaAyIP.js +0 -1194
- package/dist/src-DnMaAyIP.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./select-BIuoFcZG.js";
|
|
2
2
|
import { n as t, r as n, t as r } from "./sum-BAZU479z.js";
|
|
3
|
-
import { t as i } from "./link-
|
|
3
|
+
import { t as i } from "./link-DKK0Q0lG.js";
|
|
4
4
|
//#region node_modules/d3-sankey/src/align.js
|
|
5
5
|
function a(e, t) {
|
|
6
6
|
return e.sourceLinks.length ? e.depth : t - 1;
|
|
@@ -357,4 +357,4 @@ function k(t, n, r = {}) {
|
|
|
357
357
|
//#endregion
|
|
358
358
|
export { k as renderSankeyDiagram };
|
|
359
359
|
|
|
360
|
-
//# sourceMappingURL=sankeyDiagram-
|
|
360
|
+
//# sourceMappingURL=sankeyDiagram-BXTYCHPV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sankeyDiagram-DlIuwzOl.js","names":[],"sources":["../node_modules/d3-sankey/src/align.js","../node_modules/d3-sankey/src/constant.js","../node_modules/d3-sankey/src/sankey.js","../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../src/palette.ts","../src/sankeyDiagram.ts"],"sourcesContent":["import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport type ColorModeId = 'dark' | 'light';\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n// Fixed-order categorical palette validated for adjacent-pair CVD/normal-vision contrast in both modes. Every node in a\n// Sankey diagram carries a direct text label, so identity never relies on colour alone - slots may cycle past 8.\n\nexport const CATEGORICAL_PALETTE: readonly { readonly dark: string; readonly light: string }[] = [\n { dark: '#3987e5', light: '#2a78d6' }, // blue\n { dark: '#d95926', light: '#eb6834' }, // orange\n { dark: '#199e70', light: '#1baf7a' }, // aqua\n { dark: '#c98500', light: '#eda100' }, // yellow\n { dark: '#d55181', light: '#e87ba4' }, // magenta\n { dark: '#008300', light: '#008300' }, // green\n { dark: '#9085e9', light: '#4a3aa7' }, // violet\n { dark: '#e66767', light: '#e34948' } // red\n];\n\nexport const INK: Readonly<Record<ColorModeId, { readonly muted: string; readonly primary: string; readonly secondary: string }>> = {\n dark: { muted: '#898781', primary: '#ffffff', secondary: '#c3c2b7' },\n light: { muted: '#898781', primary: '#0b0b0b', secondary: '#52514e' }\n};\n\nexport const SURFACE: Readonly<Record<ColorModeId, { readonly border: string; readonly chart: string }>> = {\n dark: { border: 'rgba(255,255,255,0.10)', chart: '#1a1a19' },\n light: { border: 'rgba(11,11,11,0.10)', chart: '#fcfcfb' }\n};\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function categoricalColor(index: number, colorModeId: ColorModeId): string {\n const slot = CATEGORICAL_PALETTE[((index % CATEGORICAL_PALETTE.length) + CATEGORICAL_PALETTE.length) % CATEGORICAL_PALETTE.length];\n if (slot == null) throw new Error('Categorical palette is empty.');\n return colorModeId === 'dark' ? slot.dark : slot.light;\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { sankey, type SankeyGraph, type SankeyLink as SankeyLinkExtra, sankeyLinkHorizontal, type SankeyNode as SankeyNodeExtra } from 'd3-sankey';\n\n// ── Local\nimport { categoricalColor, type ColorModeId, INK, SURFACE } from '@/palette';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface SankeyDiagramNode {\n id: string;\n name: string;\n}\n\nexport interface SankeyDiagramLink {\n source: string;\n target: string;\n value: number;\n}\n\nexport interface SankeyDiagramData {\n links: SankeyDiagramLink[];\n nodes: SankeyDiagramNode[];\n}\n\nexport interface SankeyDiagramOptions {\n colorModeId?: ColorModeId;\n nodePadding?: number;\n nodeWidth?: number;\n}\n\nexport interface SankeyDiagramHandle {\n resize: () => void;\n svg: SVGSVGElement;\n}\n\ntype LaidOutNode = SankeyDiagramNode & SankeyNodeExtra<SankeyDiagramNode, SankeyDiagramLink>;\ntype LaidOutLink = SankeyLinkExtra<SankeyDiagramNode, SankeyDiagramLink>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_NODE_WIDTH = 16;\nconst DEFAULT_NODE_PADDING = 12;\nconst DEFAULT_HEIGHT = 480;\nconst DEFAULT_WIDTH = 640;\nconst LABEL_MARGIN = 6;\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderSankeyDiagram(data: SankeyDiagramData, renderTo: HTMLElement, options: SankeyDiagramOptions = {}): SankeyDiagramHandle {\n const colorModeId = options.colorModeId ?? 'light';\n const ink = INK[colorModeId];\n const surface = SURFACE[colorModeId];\n\n if (getComputedStyle(renderTo).position === 'static') renderTo.style.position = 'relative';\n\n const tooltip = select(renderTo)\n .append('div')\n .attr('role', 'tooltip')\n .style('position', 'absolute')\n .style('pointer-events', 'none')\n .style('z-index', '1')\n .style('opacity', '0')\n .style('transition', 'opacity 120ms ease')\n .style('padding', '4px 8px')\n .style('border-radius', '4px')\n .style('font', '12px system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .style('white-space', 'nowrap')\n .style('background', surface.chart)\n .style('color', ink.primary)\n .style('border', `1px solid ${surface.border}`)\n .style('box-shadow', '0 2px 8px rgba(0,0,0,0.15)');\n\n function showTooltip(event: MouseEvent, text: string): void {\n const bounds = renderTo.getBoundingClientRect();\n tooltip\n .html(text)\n .style('left', `${String(event.clientX - bounds.left + 12)}px`)\n .style('top', `${String(event.clientY - bounds.top + 12)}px`)\n .style('opacity', '1');\n }\n\n function hideTooltip(): void {\n tooltip.style('opacity', '0');\n }\n\n function draw(): SVGSVGElement {\n select(renderTo).selectAll('svg').remove();\n\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const graph: SankeyGraph<SankeyDiagramNode, SankeyDiagramLink> = {\n links: data.links.map((link) => ({ ...link })),\n nodes: data.nodes.map((node) => ({ ...node }))\n };\n\n const layout = sankey<SankeyDiagramNode, SankeyDiagramLink>()\n .nodeId((node) => node.id)\n .nodeWidth(options.nodeWidth ?? DEFAULT_NODE_WIDTH)\n .nodePadding(options.nodePadding ?? DEFAULT_NODE_PADDING)\n .extent([\n [1, 1],\n [width - 1, height - 1]\n ]);\n\n const { links, nodes } = layout(graph) as { links: LaidOutLink[]; nodes: LaidOutNode[] };\n\n const svgSelection = select(renderTo)\n .insert('svg', 'div')\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('font-family', 'system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .attr('font-size', 12);\n\n const linkPath = sankeyLinkHorizontal<SankeyDiagramNode, SankeyDiagramLink>();\n\n svgSelection\n .append('g')\n .attr('fill', 'none')\n .selectAll('path')\n .data(links)\n .join('path')\n .attr('d', linkPath)\n .attr('stroke', (link) => categoricalColor(nodes.indexOf(link.source as LaidOutNode), colorModeId))\n .attr('stroke-opacity', 0.35)\n .attr('stroke-width', (link) => Math.max(1, link.width ?? 1))\n .on('mouseenter', (event: MouseEvent, link) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.6);\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, link) => {\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mouseleave', (event: MouseEvent) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.35);\n hideTooltip();\n });\n\n const nodeGroup = svgSelection.append('g').selectAll('g').data(nodes).join('g');\n\n nodeGroup\n .append('rect')\n .attr('x', (node) => node.x0 ?? 0)\n .attr('y', (node) => node.y0 ?? 0)\n .attr('width', (node) => (node.x1 ?? 0) - (node.x0 ?? 0))\n .attr('height', (node) => Math.max(1, (node.y1 ?? 0) - (node.y0 ?? 0)))\n .attr('rx', 2)\n .attr('fill', (_node, index) => categoricalColor(index, colorModeId))\n .on('mouseenter', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mouseleave', hideTooltip);\n\n nodeGroup\n .append('text')\n .attr('x', (node) => ((node.x0 ?? 0) < width / 2 ? (node.x1 ?? 0) + LABEL_MARGIN : (node.x0 ?? 0) - LABEL_MARGIN))\n .attr('y', (node) => ((node.y0 ?? 0) + (node.y1 ?? 0)) / 2)\n .attr('dy', '0.35em')\n .attr('text-anchor', (node) => ((node.x0 ?? 0) < width / 2 ? 'start' : 'end'))\n .attr('fill', ink.primary)\n .text((node) => node.name);\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create Sankey diagram SVG element.');\n return svgNode;\n }\n\n let svg = draw();\n\n return {\n resize: () => {\n svg = draw();\n },\n get svg() {\n return svg;\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sankeyDiagram-BXTYCHPV.js","names":[],"sources":["../node_modules/d3-sankey/src/align.js","../node_modules/d3-sankey/src/constant.js","../node_modules/d3-sankey/src/sankey.js","../node_modules/d3-sankey/src/sankeyLinkHorizontal.js","../src/palette.ts","../src/sankeyDiagram.ts"],"sourcesContent":["import {min} from \"d3-array\";\n\nfunction targetDepth(d) {\n return d.target.depth;\n}\n\nexport function left(node) {\n return node.depth;\n}\n\nexport function right(node, n) {\n return n - 1 - node.height;\n}\n\nexport function justify(node, n) {\n return node.sourceLinks.length ? node.depth : n - 1;\n}\n\nexport function center(node) {\n return node.targetLinks.length ? node.depth\n : node.sourceLinks.length ? min(node.sourceLinks, targetDepth) - 1\n : 0;\n}\n","export default function constant(x) {\n return function() {\n return x;\n };\n}\n","import {max, min, sum} from \"d3-array\";\nimport {justify} from \"./align.js\";\nimport constant from \"./constant.js\";\n\nfunction ascendingSourceBreadth(a, b) {\n return ascendingBreadth(a.source, b.source) || a.index - b.index;\n}\n\nfunction ascendingTargetBreadth(a, b) {\n return ascendingBreadth(a.target, b.target) || a.index - b.index;\n}\n\nfunction ascendingBreadth(a, b) {\n return a.y0 - b.y0;\n}\n\nfunction value(d) {\n return d.value;\n}\n\nfunction defaultId(d) {\n return d.index;\n}\n\nfunction defaultNodes(graph) {\n return graph.nodes;\n}\n\nfunction defaultLinks(graph) {\n return graph.links;\n}\n\nfunction find(nodeById, id) {\n const node = nodeById.get(id);\n if (!node) throw new Error(\"missing: \" + id);\n return node;\n}\n\nfunction computeLinkBreadths({nodes}) {\n for (const node of nodes) {\n let y0 = node.y0;\n let y1 = y0;\n for (const link of node.sourceLinks) {\n link.y0 = y0 + link.width / 2;\n y0 += link.width;\n }\n for (const link of node.targetLinks) {\n link.y1 = y1 + link.width / 2;\n y1 += link.width;\n }\n }\n}\n\nexport default function Sankey() {\n let x0 = 0, y0 = 0, x1 = 1, y1 = 1; // extent\n let dx = 24; // nodeWidth\n let dy = 8, py; // nodePadding\n let id = defaultId;\n let align = justify;\n let sort;\n let linkSort;\n let nodes = defaultNodes;\n let links = defaultLinks;\n let iterations = 6;\n\n function sankey() {\n const graph = {nodes: nodes.apply(null, arguments), links: links.apply(null, arguments)};\n computeNodeLinks(graph);\n computeNodeValues(graph);\n computeNodeDepths(graph);\n computeNodeHeights(graph);\n computeNodeBreadths(graph);\n computeLinkBreadths(graph);\n return graph;\n }\n\n sankey.update = function(graph) {\n computeLinkBreadths(graph);\n return graph;\n };\n\n sankey.nodeId = function(_) {\n return arguments.length ? (id = typeof _ === \"function\" ? _ : constant(_), sankey) : id;\n };\n\n sankey.nodeAlign = function(_) {\n return arguments.length ? (align = typeof _ === \"function\" ? _ : constant(_), sankey) : align;\n };\n\n sankey.nodeSort = function(_) {\n return arguments.length ? (sort = _, sankey) : sort;\n };\n\n sankey.nodeWidth = function(_) {\n return arguments.length ? (dx = +_, sankey) : dx;\n };\n\n sankey.nodePadding = function(_) {\n return arguments.length ? (dy = py = +_, sankey) : dy;\n };\n\n sankey.nodes = function(_) {\n return arguments.length ? (nodes = typeof _ === \"function\" ? _ : constant(_), sankey) : nodes;\n };\n\n sankey.links = function(_) {\n return arguments.length ? (links = typeof _ === \"function\" ? _ : constant(_), sankey) : links;\n };\n\n sankey.linkSort = function(_) {\n return arguments.length ? (linkSort = _, sankey) : linkSort;\n };\n\n sankey.size = function(_) {\n return arguments.length ? (x0 = y0 = 0, x1 = +_[0], y1 = +_[1], sankey) : [x1 - x0, y1 - y0];\n };\n\n sankey.extent = function(_) {\n return arguments.length ? (x0 = +_[0][0], x1 = +_[1][0], y0 = +_[0][1], y1 = +_[1][1], sankey) : [[x0, y0], [x1, y1]];\n };\n\n sankey.iterations = function(_) {\n return arguments.length ? (iterations = +_, sankey) : iterations;\n };\n\n function computeNodeLinks({nodes, links}) {\n for (const [i, node] of nodes.entries()) {\n node.index = i;\n node.sourceLinks = [];\n node.targetLinks = [];\n }\n const nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d]));\n for (const [i, link] of links.entries()) {\n link.index = i;\n let {source, target} = link;\n if (typeof source !== \"object\") source = link.source = find(nodeById, source);\n if (typeof target !== \"object\") target = link.target = find(nodeById, target);\n source.sourceLinks.push(link);\n target.targetLinks.push(link);\n }\n if (linkSort != null) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(linkSort);\n targetLinks.sort(linkSort);\n }\n }\n }\n\n function computeNodeValues({nodes}) {\n for (const node of nodes) {\n node.value = node.fixedValue === undefined\n ? Math.max(sum(node.sourceLinks, value), sum(node.targetLinks, value))\n : node.fixedValue;\n }\n }\n\n function computeNodeDepths({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.depth = x;\n for (const {target} of node.sourceLinks) {\n next.add(target);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeHeights({nodes}) {\n const n = nodes.length;\n let current = new Set(nodes);\n let next = new Set;\n let x = 0;\n while (current.size) {\n for (const node of current) {\n node.height = x;\n for (const {source} of node.targetLinks) {\n next.add(source);\n }\n }\n if (++x > n) throw new Error(\"circular link\");\n current = next;\n next = new Set;\n }\n }\n\n function computeNodeLayers({nodes}) {\n const x = max(nodes, d => d.depth) + 1;\n const kx = (x1 - x0 - dx) / (x - 1);\n const columns = new Array(x);\n for (const node of nodes) {\n const i = Math.max(0, Math.min(x - 1, Math.floor(align.call(null, node, x))));\n node.layer = i;\n node.x0 = x0 + i * kx;\n node.x1 = node.x0 + dx;\n if (columns[i]) columns[i].push(node);\n else columns[i] = [node];\n }\n if (sort) for (const column of columns) {\n column.sort(sort);\n }\n return columns;\n }\n\n function initializeNodeBreadths(columns) {\n const ky = min(columns, c => (y1 - y0 - (c.length - 1) * py) / sum(c, value));\n for (const nodes of columns) {\n let y = y0;\n for (const node of nodes) {\n node.y0 = y;\n node.y1 = y + node.value * ky;\n y = node.y1 + py;\n for (const link of node.sourceLinks) {\n link.width = link.value * ky;\n }\n }\n y = (y1 - y + py) / (nodes.length + 1);\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n node.y0 += y * (i + 1);\n node.y1 += y * (i + 1);\n }\n reorderLinks(nodes);\n }\n }\n\n function computeNodeBreadths(graph) {\n const columns = computeNodeLayers(graph);\n py = Math.min(dy, (y1 - y0) / (max(columns, c => c.length) - 1));\n initializeNodeBreadths(columns);\n for (let i = 0; i < iterations; ++i) {\n const alpha = Math.pow(0.99, i);\n const beta = Math.max(1 - alpha, (i + 1) / iterations);\n relaxRightToLeft(columns, alpha, beta);\n relaxLeftToRight(columns, alpha, beta);\n }\n }\n\n // Reposition each node based on its incoming (target) links.\n function relaxLeftToRight(columns, alpha, beta) {\n for (let i = 1, n = columns.length; i < n; ++i) {\n const column = columns[i];\n for (const target of column) {\n let y = 0;\n let w = 0;\n for (const {source, value} of target.targetLinks) {\n let v = value * (target.layer - source.layer);\n y += targetTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - target.y0) * alpha;\n target.y0 += dy;\n target.y1 += dy;\n reorderNodeLinks(target);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n // Reposition each node based on its outgoing (source) links.\n function relaxRightToLeft(columns, alpha, beta) {\n for (let n = columns.length, i = n - 2; i >= 0; --i) {\n const column = columns[i];\n for (const source of column) {\n let y = 0;\n let w = 0;\n for (const {target, value} of source.sourceLinks) {\n let v = value * (target.layer - source.layer);\n y += sourceTop(source, target) * v;\n w += v;\n }\n if (!(w > 0)) continue;\n let dy = (y / w - source.y0) * alpha;\n source.y0 += dy;\n source.y1 += dy;\n reorderNodeLinks(source);\n }\n if (sort === undefined) column.sort(ascendingBreadth);\n resolveCollisions(column, beta);\n }\n }\n\n function resolveCollisions(nodes, alpha) {\n const i = nodes.length >> 1;\n const subject = nodes[i];\n resolveCollisionsBottomToTop(nodes, subject.y0 - py, i - 1, alpha);\n resolveCollisionsTopToBottom(nodes, subject.y1 + py, i + 1, alpha);\n resolveCollisionsBottomToTop(nodes, y1, nodes.length - 1, alpha);\n resolveCollisionsTopToBottom(nodes, y0, 0, alpha);\n }\n\n // Push any overlapping nodes down.\n function resolveCollisionsTopToBottom(nodes, y, i, alpha) {\n for (; i < nodes.length; ++i) {\n const node = nodes[i];\n const dy = (y - node.y0) * alpha;\n if (dy > 1e-6) node.y0 += dy, node.y1 += dy;\n y = node.y1 + py;\n }\n }\n\n // Push any overlapping nodes up.\n function resolveCollisionsBottomToTop(nodes, y, i, alpha) {\n for (; i >= 0; --i) {\n const node = nodes[i];\n const dy = (node.y1 - y) * alpha;\n if (dy > 1e-6) node.y0 -= dy, node.y1 -= dy;\n y = node.y0 - py;\n }\n }\n\n function reorderNodeLinks({sourceLinks, targetLinks}) {\n if (linkSort === undefined) {\n for (const {source: {sourceLinks}} of targetLinks) {\n sourceLinks.sort(ascendingTargetBreadth);\n }\n for (const {target: {targetLinks}} of sourceLinks) {\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n function reorderLinks(nodes) {\n if (linkSort === undefined) {\n for (const {sourceLinks, targetLinks} of nodes) {\n sourceLinks.sort(ascendingTargetBreadth);\n targetLinks.sort(ascendingSourceBreadth);\n }\n }\n }\n\n // Returns the target.y0 that would produce an ideal link from source to target.\n function targetTop(source, target) {\n let y = source.y0 - (source.sourceLinks.length - 1) * py / 2;\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y += width + py;\n }\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y -= width;\n }\n return y;\n }\n\n // Returns the source.y0 that would produce an ideal link from source to target.\n function sourceTop(source, target) {\n let y = target.y0 - (target.targetLinks.length - 1) * py / 2;\n for (const {source: node, width} of target.targetLinks) {\n if (node === source) break;\n y += width + py;\n }\n for (const {target: node, width} of source.sourceLinks) {\n if (node === target) break;\n y -= width;\n }\n return y;\n }\n\n return sankey;\n}\n","import {linkHorizontal} from \"d3-shape\";\n\nfunction horizontalSource(d) {\n return [d.source.x1, d.y0];\n}\n\nfunction horizontalTarget(d) {\n return [d.target.x0, d.y1];\n}\n\nexport default function() {\n return linkHorizontal()\n .source(horizontalSource)\n .target(horizontalTarget);\n}\n","// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport type ColorModeId = 'dark' | 'light';\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n// Fixed-order categorical palette validated for adjacent-pair CVD/normal-vision contrast in both modes. Every node in a\n// Sankey diagram carries a direct text label, so identity never relies on colour alone - slots may cycle past 8.\n\nexport const CATEGORICAL_PALETTE: readonly { readonly dark: string; readonly light: string }[] = [\n { dark: '#3987e5', light: '#2a78d6' }, // blue\n { dark: '#d95926', light: '#eb6834' }, // orange\n { dark: '#199e70', light: '#1baf7a' }, // aqua\n { dark: '#c98500', light: '#eda100' }, // yellow\n { dark: '#d55181', light: '#e87ba4' }, // magenta\n { dark: '#008300', light: '#008300' }, // green\n { dark: '#9085e9', light: '#4a3aa7' }, // violet\n { dark: '#e66767', light: '#e34948' } // red\n];\n\nexport const INK: Readonly<Record<ColorModeId, { readonly muted: string; readonly primary: string; readonly secondary: string }>> = {\n dark: { muted: '#898781', primary: '#ffffff', secondary: '#c3c2b7' },\n light: { muted: '#898781', primary: '#0b0b0b', secondary: '#52514e' }\n};\n\nexport const SURFACE: Readonly<Record<ColorModeId, { readonly border: string; readonly chart: string }>> = {\n dark: { border: 'rgba(255,255,255,0.10)', chart: '#1a1a19' },\n light: { border: 'rgba(11,11,11,0.10)', chart: '#fcfcfb' }\n};\n\n// ── Helpers ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function categoricalColor(index: number, colorModeId: ColorModeId): string {\n const slot = CATEGORICAL_PALETTE[((index % CATEGORICAL_PALETTE.length) + CATEGORICAL_PALETTE.length) % CATEGORICAL_PALETTE.length];\n if (slot == null) throw new Error('Categorical palette is empty.');\n return colorModeId === 'dark' ? slot.dark : slot.light;\n}\n","// ── External Dependencies & Registrations\nimport { select } from 'd3-selection';\nimport { sankey, type SankeyGraph, type SankeyLink as SankeyLinkExtra, sankeyLinkHorizontal, type SankeyNode as SankeyNodeExtra } from 'd3-sankey';\n\n// ── Local\nimport { categoricalColor, type ColorModeId, INK, SURFACE } from '@/palette';\n\n// ── Types ────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport interface SankeyDiagramNode {\n id: string;\n name: string;\n}\n\nexport interface SankeyDiagramLink {\n source: string;\n target: string;\n value: number;\n}\n\nexport interface SankeyDiagramData {\n links: SankeyDiagramLink[];\n nodes: SankeyDiagramNode[];\n}\n\nexport interface SankeyDiagramOptions {\n colorModeId?: ColorModeId;\n nodePadding?: number;\n nodeWidth?: number;\n}\n\nexport interface SankeyDiagramHandle {\n resize: () => void;\n svg: SVGSVGElement;\n}\n\ntype LaidOutNode = SankeyDiagramNode & SankeyNodeExtra<SankeyDiagramNode, SankeyDiagramLink>;\ntype LaidOutLink = SankeyLinkExtra<SankeyDiagramNode, SankeyDiagramLink>;\n\n// ── Constants ────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nconst DEFAULT_NODE_WIDTH = 16;\nconst DEFAULT_NODE_PADDING = 12;\nconst DEFAULT_HEIGHT = 480;\nconst DEFAULT_WIDTH = 640;\nconst LABEL_MARGIN = 6;\n\n// ── Actions ──────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nexport function renderSankeyDiagram(data: SankeyDiagramData, renderTo: HTMLElement, options: SankeyDiagramOptions = {}): SankeyDiagramHandle {\n const colorModeId = options.colorModeId ?? 'light';\n const ink = INK[colorModeId];\n const surface = SURFACE[colorModeId];\n\n if (getComputedStyle(renderTo).position === 'static') renderTo.style.position = 'relative';\n\n const tooltip = select(renderTo)\n .append('div')\n .attr('role', 'tooltip')\n .style('position', 'absolute')\n .style('pointer-events', 'none')\n .style('z-index', '1')\n .style('opacity', '0')\n .style('transition', 'opacity 120ms ease')\n .style('padding', '4px 8px')\n .style('border-radius', '4px')\n .style('font', '12px system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .style('white-space', 'nowrap')\n .style('background', surface.chart)\n .style('color', ink.primary)\n .style('border', `1px solid ${surface.border}`)\n .style('box-shadow', '0 2px 8px rgba(0,0,0,0.15)');\n\n function showTooltip(event: MouseEvent, text: string): void {\n const bounds = renderTo.getBoundingClientRect();\n tooltip\n .html(text)\n .style('left', `${String(event.clientX - bounds.left + 12)}px`)\n .style('top', `${String(event.clientY - bounds.top + 12)}px`)\n .style('opacity', '1');\n }\n\n function hideTooltip(): void {\n tooltip.style('opacity', '0');\n }\n\n function draw(): SVGSVGElement {\n select(renderTo).selectAll('svg').remove();\n\n const width = renderTo.clientWidth || DEFAULT_WIDTH;\n const height = renderTo.clientHeight || DEFAULT_HEIGHT;\n\n const graph: SankeyGraph<SankeyDiagramNode, SankeyDiagramLink> = {\n links: data.links.map((link) => ({ ...link })),\n nodes: data.nodes.map((node) => ({ ...node }))\n };\n\n const layout = sankey<SankeyDiagramNode, SankeyDiagramLink>()\n .nodeId((node) => node.id)\n .nodeWidth(options.nodeWidth ?? DEFAULT_NODE_WIDTH)\n .nodePadding(options.nodePadding ?? DEFAULT_NODE_PADDING)\n .extent([\n [1, 1],\n [width - 1, height - 1]\n ]);\n\n const { links, nodes } = layout(graph) as { links: LaidOutLink[]; nodes: LaidOutNode[] };\n\n const svgSelection = select(renderTo)\n .insert('svg', 'div')\n .attr('viewBox', `0 0 ${String(width)} ${String(height)}`)\n .attr('width', '100%')\n .attr('height', '100%')\n .attr('font-family', 'system-ui, -apple-system, \"Segoe UI\", sans-serif')\n .attr('font-size', 12);\n\n const linkPath = sankeyLinkHorizontal<SankeyDiagramNode, SankeyDiagramLink>();\n\n svgSelection\n .append('g')\n .attr('fill', 'none')\n .selectAll('path')\n .data(links)\n .join('path')\n .attr('d', linkPath)\n .attr('stroke', (link) => categoricalColor(nodes.indexOf(link.source as LaidOutNode), colorModeId))\n .attr('stroke-opacity', 0.35)\n .attr('stroke-width', (link) => Math.max(1, link.width ?? 1))\n .on('mouseenter', (event: MouseEvent, link) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.6);\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, link) => {\n const source = link.source as LaidOutNode;\n const target = link.target as LaidOutNode;\n showTooltip(event, `${source.name} → ${target.name}<br>${link.value.toLocaleString()}`);\n })\n .on('mouseleave', (event: MouseEvent) => {\n select(event.currentTarget as SVGPathElement).attr('stroke-opacity', 0.35);\n hideTooltip();\n });\n\n const nodeGroup = svgSelection.append('g').selectAll('g').data(nodes).join('g');\n\n nodeGroup\n .append('rect')\n .attr('x', (node) => node.x0 ?? 0)\n .attr('y', (node) => node.y0 ?? 0)\n .attr('width', (node) => (node.x1 ?? 0) - (node.x0 ?? 0))\n .attr('height', (node) => Math.max(1, (node.y1 ?? 0) - (node.y0 ?? 0)))\n .attr('rx', 2)\n .attr('fill', (_node, index) => categoricalColor(index, colorModeId))\n .on('mouseenter', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mousemove', (event: MouseEvent, node) => {\n showTooltip(event, `${node.name}<br>${(node.value ?? 0).toLocaleString()}`);\n })\n .on('mouseleave', hideTooltip);\n\n nodeGroup\n .append('text')\n .attr('x', (node) => ((node.x0 ?? 0) < width / 2 ? (node.x1 ?? 0) + LABEL_MARGIN : (node.x0 ?? 0) - LABEL_MARGIN))\n .attr('y', (node) => ((node.y0 ?? 0) + (node.y1 ?? 0)) / 2)\n .attr('dy', '0.35em')\n .attr('text-anchor', (node) => ((node.x0 ?? 0) < width / 2 ? 'start' : 'end'))\n .attr('fill', ink.primary)\n .text((node) => node.name);\n\n const svgNode = svgSelection.node();\n if (svgNode == null) throw new Error('Failed to create Sankey diagram SVG element.');\n return svgNode;\n }\n\n let svg = draw();\n\n return {\n resize: () => {\n svg = draw();\n },\n get svg() {\n return svg;\n }\n };\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./select-BIuoFcZG.js";
|
|
2
|
-
import {
|
|
2
|
+
import { a as t, d as n, i as r, n as i, u as a } from "./src-Du_hPZAX.js";
|
|
3
3
|
//#region node_modules/d3-interpolate/src/zoom.js
|
|
4
4
|
var o = 1e-12;
|
|
5
5
|
function s(e) {
|
|
@@ -144,7 +144,7 @@ function C(e, t, n) {
|
|
|
144
144
|
return e.translate(i > r ? (r + i) / 2 : Math.min(0, r) || Math.max(0, i), o > a ? (a + o) / 2 : Math.min(0, a) || Math.max(0, o));
|
|
145
145
|
}
|
|
146
146
|
function w() {
|
|
147
|
-
var o = v, s = y, c = C, l = x, h = S, w = [0, Infinity], T = [[-Infinity, -Infinity], [Infinity, Infinity]], E = 250, D = u, O =
|
|
147
|
+
var o = v, s = y, c = C, l = x, h = S, w = [0, Infinity], T = [[-Infinity, -Infinity], [Infinity, Infinity]], E = 250, D = u, O = a("start", "zoom", "end"), k, A, j, M = 500, N = 150, P = 0, F = 10;
|
|
148
148
|
function I(e) {
|
|
149
149
|
e.property("__zoom", b).on("wheel.zoom", U, { passive: !1 }).on("mousedown.zoom", W).on("dblclick.zoom", G).filter(h).on("touchstart.zoom", K).on("touchmove.zoom", q).on("touchend.zoom touchcancel.zoom", J).style("-webkit-tap-highlight-color", "rgba(0,0,0,0)");
|
|
150
150
|
}
|
|
@@ -240,10 +240,10 @@ function w() {
|
|
|
240
240
|
r.wheel = null, r.end();
|
|
241
241
|
}
|
|
242
242
|
}
|
|
243
|
-
function W(
|
|
243
|
+
function W(a, ...s) {
|
|
244
244
|
if (j || !o.apply(this, arguments)) return;
|
|
245
|
-
var l =
|
|
246
|
-
a
|
|
245
|
+
var l = a.currentTarget, u = V(this, s, !0).event(a), d = e(a.view).on("mousemove.zoom", h, !0).on("mouseup.zoom", v, !0), f = n(a, l), p = a.clientX, m = a.clientY;
|
|
246
|
+
r(a.view), g(a), u.mouse = [f, this.__zoom.invert(f)], i(this), u.start();
|
|
247
247
|
function h(e) {
|
|
248
248
|
if (_(e), !u.moved) {
|
|
249
249
|
var t = e.clientX - p, r = e.clientY - m;
|
|
@@ -252,7 +252,7 @@ function w() {
|
|
|
252
252
|
u.event(e).zoom("mouse", c(R(u.that.__zoom, u.mouse[0] = n(e, l), u.mouse[1]), u.extent, T));
|
|
253
253
|
}
|
|
254
254
|
function v(e) {
|
|
255
|
-
d.on("mousemove.zoom mouseup.zoom", null),
|
|
255
|
+
d.on("mousemove.zoom mouseup.zoom", null), t(e.view, u.moved), _(e), u.event(e).end();
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
function G(t, ...r) {
|
|
@@ -329,4 +329,4 @@ function w() {
|
|
|
329
329
|
//#endregion
|
|
330
330
|
export { w as t };
|
|
331
331
|
|
|
332
|
-
//# sourceMappingURL=src-
|
|
332
|
+
//# sourceMappingURL=src-Br_t1-IV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"src-B7SGbtRQ.js","names":["interpolateZoom","select","pointer","constant"],"sources":["../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"src-Br_t1-IV.js","names":["interpolateZoom","select","pointer","constant"],"sources":["../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js"],"sourcesContent":["var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5],"mappings":"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"}
|