UNPKG

@mui/x-charts-vendor

Version:

Vendored dependencies for MUI X Charts.

329 lines (327 loc) 9.41 kB
"use strict"; // https://github.com/d3/d3-sankey v0.12.3 Copyright 2019 Mike Bostock !function (n, t) { "object" == typeof exports && "undefined" != typeof module ? t(exports, require("../../../lib-vendor/d3-array/src/index.js"), require("../../../lib-vendor/d3-shape/src/index.js")) : "function" == typeof define && define.amd ? define(["exports", "d3-array", "d3-shape"], t) : t((n = n || self).d3 = n.d3 || {}, n.d3, n.d3); }(this, function (n, t, e) { "use strict"; function o(n) { return n.target.depth; } function r(n, t) { return n.sourceLinks.length ? n.depth : t - 1; } function i(n) { return function () { return n; }; } function s(n, t) { return u(n.source, t.source) || n.index - t.index; } function f(n, t) { return u(n.target, t.target) || n.index - t.index; } function u(n, t) { return n.y0 - t.y0; } function c(n) { return n.value; } function l(n) { return n.index; } function a(n) { return n.nodes; } function d(n) { return n.links; } function h(n, t) { const e = n.get(t); if (!e) throw new Error("missing: " + t); return e; } function g({ nodes: n }) { for (const t of n) { let n = t.y0, e = n; for (const e of t.sourceLinks) e.y0 = n + e.width / 2, n += e.width; for (const n of t.targetLinks) n.y1 = e + n.width / 2, e += n.width; } } function y(n) { return [n.source.x1, n.y0]; } function k(n) { return [n.target.x0, n.y1]; } n.sankey = function () { let n, e, o, y = 0, k = 0, L = 1, p = 1, w = 24, x = 8, m = l, v = r, M = a, b = d, S = 6; function z() { const r = { nodes: M.apply(null, arguments), links: b.apply(null, arguments) }; return function ({ nodes: n, links: t }) { for (const [t, e] of n.entries()) e.index = t, e.sourceLinks = [], e.targetLinks = []; const e = new Map(n.map((t, e) => [m(t, e, n), t])); for (const [n, o] of t.entries()) { o.index = n; let { source: t, target: r } = o; "object" != typeof t && (t = o.source = h(e, t)), "object" != typeof r && (r = o.target = h(e, r)), t.sourceLinks.push(o), r.targetLinks.push(o); } if (null != o) for (const { sourceLinks: t, targetLinks: e } of n) t.sort(o), e.sort(o); }(r), function ({ nodes: n }) { for (const e of n) e.value = void 0 === e.fixedValue ? Math.max(t.sum(e.sourceLinks, c), t.sum(e.targetLinks, c)) : e.fixedValue; }(r), function ({ nodes: n }) { const t = n.length; let e = new Set(n), o = new Set(), r = 0; for (; e.size;) { for (const n of e) { n.depth = r; for (const { target: t } of n.sourceLinks) o.add(t); } if (++r > t) throw new Error("circular link"); e = o, o = new Set(); } }(r), function ({ nodes: n }) { const t = n.length; let e = new Set(n), o = new Set(), r = 0; for (; e.size;) { for (const n of e) { n.height = r; for (const { source: t } of n.targetLinks) o.add(t); } if (++r > t) throw new Error("circular link"); e = o, o = new Set(); } }(r), function (o) { const r = function ({ nodes: n }) { const o = t.max(n, n => n.depth) + 1, r = (L - y - w) / (o - 1), i = new Array(o); for (const t of n) { const n = Math.max(0, Math.min(o - 1, Math.floor(v.call(null, t, o)))); t.layer = n, t.x0 = y + n * r, t.x1 = t.x0 + w, i[n] ? i[n].push(t) : i[n] = [t]; } if (e) for (const n of i) n.sort(e); return i; }(o); n = Math.min(x, (p - k) / (t.max(r, n => n.length) - 1)), function (e) { const o = t.min(e, e => (p - k - (e.length - 1) * n) / t.sum(e, c)); for (const t of e) { let e = k; for (const r of t) { r.y0 = e, r.y1 = e + r.value * o, e = r.y1 + n; for (const n of r.sourceLinks) n.width = n.value * o; } e = (p - e + n) / (t.length + 1); for (let n = 0; n < t.length; ++n) { const o = t[n]; o.y0 += e * (n + 1), o.y1 += e * (n + 1); } V(t); } }(r); for (let n = 0; n < S; ++n) { const t = Math.pow(.99, n), e = Math.max(1 - t, (n + 1) / S); E(r, t, e), j(r, t, e); } }(r), g(r), r; } function j(n, t, o) { for (let r = 1, i = n.length; r < i; ++r) { const i = n[r]; for (const n of i) { let e = 0, o = 0; for (const { source: t, value: r } of n.targetLinks) { let i = r * (n.layer - t.layer); e += _(t, n) * i, o += i; } if (!(o > 0)) continue; let r = (e / o - n.y0) * t; n.y0 += r, n.y1 += r, P(n); } void 0 === e && i.sort(u), q(i, o); } } function E(n, t, o) { for (let r = n.length - 2; r >= 0; --r) { const i = n[r]; for (const n of i) { let e = 0, o = 0; for (const { target: t, value: r } of n.sourceLinks) { let i = r * (t.layer - n.layer); e += C(n, t) * i, o += i; } if (!(o > 0)) continue; let r = (e / o - n.y0) * t; n.y0 += r, n.y1 += r, P(n); } void 0 === e && i.sort(u), q(i, o); } } function q(t, e) { const o = t.length >> 1, r = t[o]; H(t, r.y0 - n, o - 1, e), A(t, r.y1 + n, o + 1, e), H(t, p, t.length - 1, e), A(t, k, 0, e); } function A(t, e, o, r) { for (; o < t.length; ++o) { const i = t[o], s = (e - i.y0) * r; s > 1e-6 && (i.y0 += s, i.y1 += s), e = i.y1 + n; } } function H(t, e, o, r) { for (; o >= 0; --o) { const i = t[o], s = (i.y1 - e) * r; s > 1e-6 && (i.y0 -= s, i.y1 -= s), e = i.y0 - n; } } function P({ sourceLinks: n, targetLinks: t }) { if (void 0 === o) { for (const { source: { sourceLinks: n } } of t) n.sort(f); for (const { target: { targetLinks: t } } of n) t.sort(s); } } function V(n) { if (void 0 === o) for (const { sourceLinks: t, targetLinks: e } of n) t.sort(f), e.sort(s); } function _(t, e) { let o = t.y0 - (t.sourceLinks.length - 1) * n / 2; for (const { target: r, width: i } of t.sourceLinks) { if (r === e) break; o += i + n; } for (const { source: n, width: r } of e.targetLinks) { if (n === t) break; o -= r; } return o; } function C(t, e) { let o = e.y0 - (e.targetLinks.length - 1) * n / 2; for (const { source: r, width: i } of e.targetLinks) { if (r === t) break; o += i + n; } for (const { target: n, width: r } of t.sourceLinks) { if (n === e) break; o -= r; } return o; } return z.update = function (n) { return g(n), n; }, z.nodeId = function (n) { return arguments.length ? (m = "function" == typeof n ? n : i(n), z) : m; }, z.nodeAlign = function (n) { return arguments.length ? (v = "function" == typeof n ? n : i(n), z) : v; }, z.nodeSort = function (n) { return arguments.length ? (e = n, z) : e; }, z.nodeWidth = function (n) { return arguments.length ? (w = +n, z) : w; }, z.nodePadding = function (t) { return arguments.length ? (x = n = +t, z) : x; }, z.nodes = function (n) { return arguments.length ? (M = "function" == typeof n ? n : i(n), z) : M; }, z.links = function (n) { return arguments.length ? (b = "function" == typeof n ? n : i(n), z) : b; }, z.linkSort = function (n) { return arguments.length ? (o = n, z) : o; }, z.size = function (n) { return arguments.length ? (y = k = 0, L = +n[0], p = +n[1], z) : [L - y, p - k]; }, z.extent = function (n) { return arguments.length ? (y = +n[0][0], L = +n[1][0], k = +n[0][1], p = +n[1][1], z) : [[y, k], [L, p]]; }, z.iterations = function (n) { return arguments.length ? (S = +n, z) : S; }, z; }, n.sankeyCenter = function (n) { return n.targetLinks.length ? n.depth : n.sourceLinks.length ? t.min(n.sourceLinks, o) - 1 : 0; }, n.sankeyJustify = r, n.sankeyLeft = function (n) { return n.depth; }, n.sankeyLinkHorizontal = function () { return e.linkHorizontal().source(y).target(k); }, n.sankeyRight = function (n, t) { return t - 1 - n.height; }, Object.defineProperty(n, "__esModule", { value: !0 }); });