@d3plus/core 3.1.1 → 3.1.3
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 +5092 -5092
- package/es/index.js +2 -0
- package/es/index.js.map +1 -0
- package/es/src/charts/AreaPlot.js +2 -0
- package/es/src/charts/AreaPlot.js.map +1 -0
- package/es/src/charts/BarChart.js +2 -0
- package/es/src/charts/BarChart.js.map +1 -0
- package/es/src/charts/BoxWhisker.js +2 -0
- package/es/src/charts/BoxWhisker.js.map +1 -0
- package/es/src/charts/BumpChart.js +2 -0
- package/es/src/charts/BumpChart.js.map +1 -0
- package/es/src/charts/Donut.js +2 -0
- package/es/src/charts/Donut.js.map +1 -0
- package/es/src/charts/Geomap.js +2 -0
- package/es/src/charts/Geomap.js.map +1 -0
- package/es/src/charts/LinePlot.js +2 -0
- package/es/src/charts/LinePlot.js.map +1 -0
- package/es/src/charts/Matrix.js +2 -0
- package/es/src/charts/Matrix.js.map +1 -0
- package/es/src/charts/Network.js +2 -0
- package/es/src/charts/Network.js.map +1 -0
- package/es/src/charts/Pack.js +2 -0
- package/es/src/charts/Pack.js.map +1 -0
- package/es/src/charts/Pie.js +2 -0
- package/es/src/charts/Pie.js.map +1 -0
- package/es/src/charts/Plot.js +2 -0
- package/es/src/charts/Plot.js.map +1 -0
- package/es/src/charts/Priestley.js +2 -0
- package/es/src/charts/Priestley.js.map +1 -0
- package/es/src/charts/Radar.js +2 -0
- package/es/src/charts/Radar.js.map +1 -0
- package/es/src/charts/RadialMatrix.js +2 -0
- package/es/src/charts/RadialMatrix.js.map +1 -0
- package/es/src/charts/Rings.js +2 -0
- package/es/src/charts/Rings.js.map +1 -0
- package/es/src/charts/Sankey.js +2 -0
- package/es/src/charts/Sankey.js.map +1 -0
- package/es/src/charts/StackedArea.js +2 -0
- package/es/src/charts/StackedArea.js.map +1 -0
- package/es/src/charts/Tree.js +2 -0
- package/es/src/charts/Tree.js.map +1 -0
- package/es/src/charts/Treemap.js +2 -0
- package/es/src/charts/Treemap.js.map +1 -0
- package/es/src/charts/Viz.js +2 -0
- package/es/src/charts/Viz.js.map +1 -0
- package/es/src/charts/drawSteps/drawAttribution.js +2 -0
- package/es/src/charts/drawSteps/drawAttribution.js.map +1 -0
- package/es/src/charts/drawSteps/drawBack.js +2 -0
- package/es/src/charts/drawSteps/drawBack.js.map +1 -0
- package/es/src/charts/drawSteps/drawColorScale.js +2 -0
- package/es/src/charts/drawSteps/drawColorScale.js.map +1 -0
- package/es/src/charts/drawSteps/drawLegend.js +2 -0
- package/es/src/charts/drawSteps/drawLegend.js.map +1 -0
- package/es/src/charts/drawSteps/drawSubtitle.js +2 -0
- package/es/src/charts/drawSteps/drawSubtitle.js.map +1 -0
- package/es/src/charts/drawSteps/drawTimeline.js +2 -0
- package/es/src/charts/drawSteps/drawTimeline.js.map +1 -0
- package/es/src/charts/drawSteps/drawTitle.js +2 -0
- package/es/src/charts/drawSteps/drawTitle.js.map +1 -0
- package/es/src/charts/drawSteps/drawTotal.js +2 -0
- package/es/src/charts/drawSteps/drawTotal.js.map +1 -0
- package/es/src/charts/drawSteps/zoomControls.js +2 -0
- package/es/src/charts/drawSteps/zoomControls.js.map +1 -0
- package/es/src/charts/events/click.legend.js +2 -0
- package/es/src/charts/events/click.legend.js.map +1 -0
- package/es/src/charts/events/click.shape.js +2 -0
- package/es/src/charts/events/click.shape.js.map +1 -0
- package/es/src/charts/events/mouseenter.js +2 -0
- package/es/src/charts/events/mouseenter.js.map +1 -0
- package/es/src/charts/events/mouseleave.js +2 -0
- package/es/src/charts/events/mouseleave.js.map +1 -0
- package/es/src/charts/events/mousemove.legend.js +2 -0
- package/es/src/charts/events/mousemove.legend.js.map +1 -0
- package/es/src/charts/events/mousemove.shape.js +2 -0
- package/es/src/charts/events/mousemove.shape.js.map +1 -0
- package/es/src/charts/events/touchstart.body.js +2 -0
- package/es/src/charts/events/touchstart.body.js.map +1 -0
- package/es/src/charts/helpers/matrixData.js +2 -0
- package/es/src/charts/helpers/matrixData.js.map +1 -0
- package/es/src/charts/helpers/tileAttributions.js +2 -0
- package/es/src/charts/helpers/tileAttributions.js.map +1 -0
- package/es/src/charts/index.js +2 -0
- package/es/src/charts/index.js.map +1 -0
- package/es/src/charts/plotBuffers/Bar.js +2 -0
- package/es/src/charts/plotBuffers/Bar.js.map +1 -0
- package/es/src/charts/plotBuffers/Box.js +2 -0
- package/es/src/charts/plotBuffers/Box.js.map +1 -0
- package/es/src/charts/plotBuffers/Circle.js +2 -0
- package/es/src/charts/plotBuffers/Circle.js.map +1 -0
- package/es/src/charts/plotBuffers/Line.js +2 -0
- package/es/src/charts/plotBuffers/Line.js.map +1 -0
- package/es/src/charts/plotBuffers/Rect.js +2 -0
- package/es/src/charts/plotBuffers/Rect.js.map +1 -0
- package/es/src/charts/plotBuffers/discreteBuffer.js +2 -0
- package/es/src/charts/plotBuffers/discreteBuffer.js.map +1 -0
- package/es/src/charts/plotBuffers/numericBuffer.js +2 -0
- package/es/src/charts/plotBuffers/numericBuffer.js.map +1 -0
- package/es/src/components/Axis.js +2 -0
- package/es/src/components/Axis.js.map +1 -0
- package/es/src/components/AxisBottom.js +2 -0
- package/es/src/components/AxisBottom.js.map +1 -0
- package/es/src/components/AxisLeft.js +2 -0
- package/es/src/components/AxisLeft.js.map +1 -0
- package/es/src/components/AxisRight.js +2 -0
- package/es/src/components/AxisRight.js.map +1 -0
- package/es/src/components/AxisTop.js +2 -0
- package/es/src/components/AxisTop.js.map +1 -0
- package/es/src/components/ColorScale.js +2 -0
- package/es/src/components/ColorScale.js.map +1 -0
- package/es/src/components/Legend.js +2 -0
- package/es/src/components/Legend.js.map +1 -0
- package/es/src/components/Message.js +2 -0
- package/es/src/components/Message.js.map +1 -0
- package/es/src/components/TextBox.js +2 -0
- package/es/src/components/TextBox.js.map +1 -0
- package/es/src/components/Timeline.js +2 -0
- package/es/src/components/Timeline.js.map +1 -0
- package/es/src/components/Tooltip.js +2 -0
- package/es/src/components/Tooltip.js.map +1 -0
- package/es/src/components/index.js +2 -0
- package/es/src/components/index.js.map +1 -0
- package/es/src/shapes/Area.js +2 -0
- package/es/src/shapes/Area.js.map +1 -0
- package/es/src/shapes/Bar.js +2 -0
- package/es/src/shapes/Bar.js.map +1 -0
- package/es/src/shapes/Box.js +2 -0
- package/es/src/shapes/Box.js.map +1 -0
- package/es/src/shapes/Circle.js +2 -0
- package/es/src/shapes/Circle.js.map +1 -0
- package/es/src/shapes/Image.js +2 -0
- package/es/src/shapes/Image.js.map +1 -0
- package/es/src/shapes/Line.js +2 -0
- package/es/src/shapes/Line.js.map +1 -0
- package/es/src/shapes/Path.js +2 -0
- package/es/src/shapes/Path.js.map +1 -0
- package/es/src/shapes/Rect.js +2 -0
- package/es/src/shapes/Rect.js.map +1 -0
- package/es/src/shapes/Shape.js +2 -0
- package/es/src/shapes/Shape.js.map +1 -0
- package/es/src/shapes/Whisker.js +2 -0
- package/es/src/shapes/Whisker.js.map +1 -0
- package/es/src/shapes/index.js +2 -0
- package/es/src/shapes/index.js.map +1 -0
- package/es/src/utils/AccessorFn.js +2 -0
- package/es/src/utils/AccessorFn.js.map +1 -0
- package/es/src/utils/BaseClass.js +2 -0
- package/es/src/utils/BaseClass.js.map +1 -0
- package/es/src/utils/D3plusConfig.js +2 -0
- package/es/src/utils/D3plusConfig.js.map +1 -0
- package/es/src/utils/RESET.js +2 -0
- package/es/src/utils/RESET.js.map +1 -0
- package/es/src/utils/accessor.js +2 -0
- package/es/src/utils/accessor.js.map +1 -0
- package/es/src/utils/configPrep.js +2 -0
- package/es/src/utils/configPrep.js.map +1 -0
- package/es/src/utils/constant.js +2 -0
- package/es/src/utils/constant.js.map +1 -0
- package/es/src/utils/getProp.js +2 -0
- package/es/src/utils/getProp.js.map +1 -0
- package/es/src/utils/index.js +2 -0
- package/es/src/utils/index.js.map +1 -0
- package/package.json +8 -8
- package/umd/d3plus-core.full.js +4197 -507
- package/umd/d3plus-core.full.js.map +1 -1
- package/umd/d3plus-core.full.min.js +792 -765
- package/umd/d3plus-core.js +1 -1
- package/umd/d3plus-core.min.js +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/charts/Rings.ts"],"sourcesContent":["import {extent, groups, max, min} from \"d3-array\";\nimport * as scales from \"d3-scale\";\nimport type {DataPoint} from \"@d3plus/data\";\n\nimport {assign, backgroundColor, elem} from \"@d3plus/dom\";\nimport {colorContrast} from \"@d3plus/color\";\nimport {addToQueue} from \"@d3plus/data\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n Creates a ring visualization based on a defined set of nodes and edges. [Click here](http://d3plus.org/examples/d3plus-network/simple-rings/) for help getting started using the Rings class.\n*/\nexport default class Rings extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n*/\n constructor() {\n super();\n this._links = [];\n this._linkSize = constant(1);\n this._linkSizeMin = 1;\n this._linkSizeScale = \"sqrt\";\n this._noDataMessage = false;\n this._nodes = [];\n this._on.mouseenter = () => {};\n this._on[\"mouseleave.shape\"] = () => {\n this.hover(false);\n };\n const defaultMouseMove = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d: any, i: any, x: any, event: any) => {\n defaultMouseMove(d, i, x, event);\n if (this._focus && this._focus === d.id) {\n this.hover(false);\n this._on.mouseenter.bind(this)(d, i, x, event);\n\n this._focus = undefined;\n } else {\n const id =\n this._nodeGroupBy && this._nodeGroupBy[this._drawDepth](d, i)\n ? this._nodeGroupBy[this._drawDepth](d, i)\n : this._id(d, i),\n links = this._linkLookup[id],\n node = this._nodeLookup[id];\n\n const filterIds = [node.id];\n const xDomain = [node.x - node.r, node.x + node.r],\n yDomain = [node.y - node.r, node.y + node.r];\n\n links.forEach((l: any) => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.hover((h: any, x: any) => {\n if (h.source && h.target)\n return h.source.id === node.id || h.target.id === node.id;\n else return filterIds.includes(this._ids(h, x)[this._drawDepth]);\n });\n }\n };\n this._on[\"click.shape\"] = (d: any) => {\n this._center = d.id;\n // Need to resets margins and padding because we are\n // skipping over the default render method and using\n // _draw directly.\n this._margin = {bottom: 0, left: 0, right: 0, top: 0};\n this._padding = {bottom: 0, left: 0, right: 0, top: 0};\n this._draw();\n };\n this._sizeMin = 5;\n this._sizeScale = \"sqrt\";\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d: any, i: any) => {\n const validSize = this._size ? `, ${this._size(d, i)}` : \"\";\n return `${this._drawLabel(d, i)}${validSize}.`;\n },\n labelConfig: {\n duration: 0,\n fontMin: 1,\n fontResize: true,\n labelPadding: 0,\n textAnchor: \"middle\",\n verticalAlign: \"middle\",\n },\n Path: {\n fill: \"none\",\n label: false,\n stroke: \"#eee\",\n strokeWidth: 1,\n },\n });\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const data = this._filteredData.reduce((obj: any, d: any, i: any) => {\n obj[this._id(d, i)] = d;\n return obj;\n }, {});\n\n let nodes = this._nodes;\n\n if (!this._nodes.length && this._links.length) {\n const nodeIds = Array.from(\n new Set(\n this._links.reduce(\n (ids: any, link: any) => ids.concat([link.source, link.target]),\n [],\n ),\n ),\n );\n nodes = nodeIds.map((node: any) =>\n typeof node === \"object\" ? node : {id: node},\n );\n }\n\n nodes = nodes.reduce((obj: any, d: any, i: any) => {\n obj[\n this._nodeGroupBy\n ? this._nodeGroupBy[this._drawDepth](d, i)\n : this._id(d, i)\n ] = d;\n return obj;\n }, {});\n\n nodes = Array.from(new Set(Object.keys(data).concat(Object.keys(nodes))))\n .map((id, i) => {\n const d = data[id],\n n = nodes[id];\n\n if (n === undefined) return false;\n\n return {\n __d3plus__: true,\n data: d || n,\n i,\n id,\n node: n,\n shape:\n d !== undefined && this._shape(d) !== undefined\n ? this._shape(d)\n : this._shape(n),\n };\n })\n .filter(n => n);\n\n const nodeLookup = (this._nodeLookup = nodes.reduce((obj: any, d: any) => {\n obj[d.id] = d;\n return obj;\n }, {}));\n\n const links = this._links.map((link: any) => {\n const check = [\"source\", \"target\"];\n const edge = check.reduce((result: any, check: any) => {\n result[check] =\n typeof link[check] === \"number\"\n ? nodes[link[check]]\n : nodeLookup[link[check].id || link[check]];\n return result;\n }, {} as Record<string, any>);\n edge.size = this._linkSize(link);\n return edge;\n });\n\n const linkMap = links.reduce((map: any, link: any) => {\n if (!map[link.source.id]) {\n map[link.source.id] = [];\n }\n map[link.source.id].push(link);\n if (!map[link.target.id]) {\n map[link.target.id] = [];\n }\n map[link.target.id].push(link);\n return map;\n }, {});\n\n const duration = this._duration,\n height = this._height - this._margin.top - this._margin.bottom,\n transform = `translate(${this._margin.left}, ${this._margin.top})`,\n width = this._width - this._margin.left - this._margin.right;\n\n const edges: any[] = [],\n radius = (min([height, width]) || 0) / 2,\n ringWidth = radius / 3;\n\n const primaryRing = ringWidth,\n secondaryRing = ringWidth * 2;\n\n const center = nodeLookup[this._center];\n\n center.x = width / 2;\n center.y = height / 2;\n center.r = this._sizeMin\n ? max([this._sizeMin, primaryRing * 0.65])\n : this._sizeMax\n ? min([this._sizeMax, primaryRing * 0.65])\n : primaryRing * 0.65;\n\n const claimed = [center],\n primaries: any[] = [];\n\n linkMap[this._center].forEach((edge: any) => {\n const node = edge.source.id === this._center ? edge.target : edge.source;\n node.edges = linkMap[node.id].filter(\n (link: any) =>\n link.source.id !== this._center || link.target.id !== this._center,\n );\n node.edge = edge;\n\n claimed.push(node);\n primaries.push(node);\n });\n\n primaries.sort((a, b) => a.edges.length - b.edges.length);\n\n const secondaries: any[] = [];\n let totalEndNodes = 0;\n\n primaries.forEach(p => {\n const primaryId = p.id;\n\n p.edges = p.edges.filter(\n (edge: any) =>\n (!claimed.includes(edge.source) && edge.target.id === primaryId) ||\n (!claimed.includes(edge.target) && edge.source.id === primaryId),\n );\n\n totalEndNodes += p.edges.length || 1;\n\n p.edges.forEach((edge: any) => {\n const {source, target} = edge;\n const claim = target.id === primaryId ? source : target;\n claimed.push(claim);\n });\n });\n\n const tau = Math.PI * 2;\n let offset = 0;\n\n primaries.forEach((p, i) => {\n const children = p.edges.length || 1;\n const space = (tau / totalEndNodes) * children;\n\n if (i === 0) {\n offset -= space / 2;\n }\n\n const angle = offset + space / 2 - tau / 4;\n\n p.radians = angle;\n p.x = width / 2 + primaryRing * Math.cos(angle);\n p.y = height / 2 + primaryRing * Math.sin(angle);\n\n offset += space;\n\n p.edges.forEach((edge: any, i: any) => {\n const node = edge.source.id === p.id ? edge.target : edge.source;\n const s = tau / totalEndNodes;\n const a = angle - (s * children) / 2 + s / 2 + s * i;\n\n node.radians = a;\n node.x = width / 2 + secondaryRing * Math.cos(a);\n node.y = height / 2 + secondaryRing * Math.sin(a);\n\n secondaries.push(node);\n });\n });\n\n const primaryDistance = ringWidth / 2;\n const secondaryDistance = ringWidth / 4;\n\n let primaryMax = primaryDistance / 2 - 4;\n if (primaryDistance / 2 - 4 < 8) {\n primaryMax = min([primaryDistance / 2, 8]) || 0;\n }\n\n let secondaryMax = secondaryDistance / 2 - 4;\n if (secondaryDistance / 2 - 4 < 4) {\n secondaryMax = min([secondaryDistance / 2, 4]) || 0;\n }\n\n if (secondaryMax > ringWidth / 10) {\n secondaryMax = ringWidth / 10;\n }\n\n if (secondaryMax > primaryMax && secondaryMax > 10) {\n secondaryMax = primaryMax * 0.75;\n }\n if (primaryMax > secondaryMax * 1.5) {\n primaryMax = secondaryMax * 1.5;\n }\n\n primaryMax = Math.floor(primaryMax);\n secondaryMax = Math.floor(secondaryMax);\n\n let radiusFn: any;\n\n if (this._size) {\n const domain = extent(data, (d: {size: number}) => d.size) as [\n number,\n number,\n ];\n\n if (domain[0] === domain[1]) {\n domain[0] = 0;\n }\n\n radiusFn = scales\n .scaleLinear()\n .domain(domain)\n .rangeRound([3, min([primaryMax, secondaryMax]) as number]);\n\n const val = center.size;\n center.r = radiusFn(val);\n } else {\n radiusFn = scales\n .scaleLinear()\n .domain([1, 2])\n .rangeRound([primaryMax, secondaryMax]);\n }\n\n secondaries.forEach(s => {\n s.ring = 2;\n const val = this._size ? s.size : 2;\n s.r = this._sizeMin\n ? max([this._sizeMin, radiusFn(val)])\n : this._sizeMax\n ? min([this._sizeMax, radiusFn(val)])\n : radiusFn(val);\n });\n\n primaries.forEach(p => {\n p.ring = 1;\n const val = this._size ? p.size : 1;\n p.r = this._sizeMin\n ? max([this._sizeMin, radiusFn(val)])\n : this._sizeMax\n ? min([this._sizeMax, radiusFn(val)])\n : radiusFn(val);\n });\n\n nodes = ([center] as any[]).concat(primaries).concat(secondaries);\n\n primaries.forEach(p => {\n const check = [\"source\", \"target\"];\n const {edge} = p;\n\n check.forEach((node: any) => {\n edge[node] = nodes.find((n: any) => n.id === edge[node].id);\n });\n\n edges.push(edge);\n\n linkMap[p.id].forEach((edge: any) => {\n const node = edge.source.id === p.id ? edge.target : edge.source;\n\n if (node.id !== center.id) {\n let target = secondaries.find(s => s.id === node.id);\n\n if (!target) {\n target = primaries.find(s => s.id === node.id);\n }\n\n if (target) {\n edge.spline = true;\n\n const centerX = width / 2;\n const centerY = height / 2;\n const middleRing =\n primaryRing + (secondaryRing - primaryRing) * 0.5;\n\n const check = [\"source\", \"target\"];\n\n check.forEach((node: any, i: any) => {\n edge[`${node}X`] =\n edge[node].x +\n Math.cos(\n edge[node].ring === 2\n ? edge[node].radians + Math.PI\n : edge[node].radians,\n ) *\n edge[node].r;\n edge[`${node}Y`] =\n edge[node].y +\n Math.sin(\n edge[node].ring === 2\n ? edge[node].radians + Math.PI\n : edge[node].radians,\n ) *\n edge[node].r;\n edge[`${node}BisectX`] =\n centerX + middleRing * Math.cos(edge[node].radians);\n edge[`${node}BisectY`] =\n centerY + middleRing * Math.sin(edge[node].radians);\n\n edge[node] = nodes.find((n: any) => n.id === edge[node].id);\n\n if (edge[node].edges === undefined) edge[node].edges = {};\n\n const oppId = i === 0 ? edge.target.id : edge.source.id;\n\n if (edge[node].id === p.id) {\n edge[node].edges[oppId] = {\n angle: p.radians + Math.PI,\n radius: ringWidth / 2,\n };\n } else {\n edge[node].edges[oppId] = {\n angle: target.radians,\n radius: ringWidth / 2,\n };\n }\n });\n\n edges.push(edge);\n }\n }\n });\n });\n\n nodes.forEach((node: any) => {\n if (node.id !== this._center) {\n const fontSize =\n (this._shapeConfig.labelConfig.fontSize &&\n this._shapeConfig.labelConfig.fontSize(node)) ||\n 11;\n const lineHeight = fontSize * 1.4;\n const height = lineHeight * 2;\n const padding = 5;\n const width = ringWidth - node.r;\n\n let angle = node.radians * (180 / Math.PI);\n let x = node.r + padding;\n let textAnchor = \"start\";\n\n if (angle < -90 || angle > 90) {\n x = -node.r - width - padding;\n textAnchor = \"end\";\n angle += 180;\n }\n\n node.labelBounds = {\n x,\n y: -lineHeight / 2,\n width,\n height,\n };\n\n node.rotate = angle;\n node.textAnchor = textAnchor;\n } else {\n node.labelBounds = {\n x: -primaryRing / 2,\n y: -primaryRing / 2,\n width: primaryRing,\n height: primaryRing,\n };\n }\n });\n\n this._linkLookup = links.reduce((obj: any, d: any) => {\n if (!obj[d.source.id]) obj[d.source.id] = [];\n obj[d.source.id].push(d.target);\n if (!obj[d.target.id]) obj[d.target.id] = [];\n obj[d.target.id].push(d.source);\n return obj;\n }, {});\n\n const strokeExtent = extent(links, (d: {size: number}) => d.size);\n if (strokeExtent[0] !== strokeExtent[1]) {\n const radius = min(nodes as {r: number}[], (d: {r: number}) => d.r);\n const strokeScale = (scales as any)[\n `scale${this._linkSizeScale.charAt(0).toUpperCase()}${this._linkSizeScale.slice(1)}`\n ]()\n .domain(strokeExtent)\n .range([this._linkSizeMin, radius]);\n links.forEach((link: any) => {\n link.size = strokeScale(link.size);\n });\n }\n\n const linkConfig = configPrep.bind(this as any)(this._shapeConfig, \"edge\", \"Path\");\n delete linkConfig.on;\n\n this._shapes.push(\n new shapes.Path()\n .config(linkConfig)\n .strokeWidth((d: any) => d.size)\n .id((d: any) => `${(d.source as DataPoint).id}_${(d.target as DataPoint).id}`)\n .d((d: any) =>\n d.spline\n ? `M${d.sourceX},${d.sourceY}C${d.sourceBisectX},${d.sourceBisectY} ${d.targetBisectX},${d.targetBisectY} ${d.targetX},${d.targetY}`\n : `M${(d.source as DataPoint).x},${(d.source as DataPoint).y} ${(d.target as DataPoint).x},${(d.target as DataPoint).y}`,\n )\n .data(edges)\n .select(\n elem(\"g.d3plus-rings-links\", {\n parent: this._select,\n duration,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .render(),\n );\n\n const that = this;\n\n const shapeConfig = {\n label: (d: any) =>\n nodes.length <= this._dataCutoff ||\n (this._hover && this._hover(d)) ||\n (this._active && this._active(d))\n ? this._drawLabel(d.data || d.node, d.i)\n : false,\n labelBounds: (d: any) => d.labelBounds,\n labelConfig: {\n fontColor: (d: any) =>\n d.id === this._center\n ? (configPrep.bind(that as any)(that._shapeConfig, \"shape\", d.key) as any)\n .labelConfig.fontColor(d)\n : colorContrast(\n this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\",\n ),\n fontResize: (d: any) => d.id === this._center,\n padding: 0,\n textAnchor: (d: any) =>\n nodeLookup[d.id].textAnchor ||\n (configPrep.bind(that as any)(that._shapeConfig, \"shape\", d.key) as any).labelConfig\n .textAnchor,\n verticalAlign: (d: any) => (d.id === this._center ? \"middle\" : \"top\"),\n },\n rotate: (d: any) => nodeLookup[d.id].rotate || 0,\n select: elem(\"g.d3plus-rings-nodes\", {\n parent: this._select,\n duration,\n enter: {transform},\n update: {transform},\n }).node(),\n };\n\n groups(\n nodes as Record<string, unknown>[],\n (d: Record<string, unknown>) => d.shape as string,\n ).forEach(([key, values]) => {\n this._shapes.push(\n new (shapes as any)[key]()\n .config(configPrep.bind(this as any)(this._shapeConfig, \"shape\", key))\n .config(shapeConfig)\n .data(values)\n .render(),\n );\n });\n\n return this;\n }\n\n /**\n The center node, specified by id.\n*/\n center(_: any) {\n return arguments.length ? ((this._center = _), this) : this._center;\n }\n\n /**\n The hover callback function for highlighting shapes on mouseover.\n*/\n hover(_: any) {\n this._hover = _;\n\n this._shapes.forEach((s: any) => s.hover(_));\n if (this._legend) this._legendClass.hover(_);\n\n return this;\n }\n\n /**\n A predefined *Array* of edges that connect each object passed to the [node](#Rings.node) method. The `source` and `target` keys in each link need to map to the nodes in one of three ways:\n1. The index of the node in the nodes array (as in [this](http://d3plus.org/examples/d3plus-network/getting-started/) example).\n2. The actual node *Object* itself.\n3. A *String* value matching the `id` of the node.\n\nThe value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded. An optional formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final links *Array*.\n @param f Array of link objects or a URL to load links from.\n*/\n links(_: any, f?: any) {\n if (arguments.length) {\n addToQueue.bind(this as any)(_, f, \"links\");\n return this;\n }\n return this._links;\n }\n\n /**\n Defines the thickness of the links connecting each node. The value provided can be either a pixel Number to be used for all links, or an accessor function that returns a specific data value to be used in an automatically calculated linear scale.\n*/\n linkSize(_: any) {\n return arguments.length\n ? ((this._linkSize = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._linkSize;\n }\n\n /**\n Defines the minimum pixel stroke width used in link sizing.\n*/\n linkSizeMin(_: any) {\n return arguments.length\n ? ((this._linkSizeMin = _), this)\n : this._linkSizeMin;\n }\n\n /**\n The type of [continuous d3-scale](https://github.com/d3/d3-scale#continuous-scales) used when calculating the pixel size of links in the network.\n*/\n linkSizeScale(_: any) {\n return arguments.length\n ? ((this._linkSizeScale = _), this)\n : this._linkSizeScale;\n }\n\n /**\n The node group accessor(s). This method overrides the default .groupBy() function from being used with the data passed to .nodes().\n*/\n nodeGroupBy(_: any) {\n if (!arguments.length) return this._nodeGroupBy;\n if (!(_ instanceof Array)) _ = [_];\n return (\n (this._nodeGroupBy = _.map((k: any) => {\n if (typeof k === \"function\") return k;\n else {\n if (!this._aggs[k]) {\n this._aggs[k] = (a: any, c: any) => {\n const v = Array.from(new Set(a.map(c)));\n return v.length === 1 ? v[0] : v;\n };\n }\n return accessor(k);\n }\n })),\n this\n );\n }\n\n /**\n The list of nodes to be used for drawing the rings network. The value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final node *Array*.\n @param f Array of node objects or a URL to load nodes from.\n*/\n nodes(_: any, f?: any) {\n if (arguments.length) {\n addToQueue.bind(this as any)(_, f, \"nodes\");\n return this;\n }\n return this._nodes;\n }\n\n /**\n The size accessor for each node in the rings layout.\n*/\n size(_: any) {\n return arguments.length\n ? ((this._size = typeof _ === \"function\" || !_ ? _ : accessor(_)), this)\n : this._size;\n }\n\n /**\n The size scale maximum. By default, the maximum size is determined by half the distance of the two closest nodes.\n*/\n sizeMax(_: any) {\n return arguments.length ? ((this._sizeMax = _), this) : this._sizeMax;\n }\n\n /**\n The size scale minimum.\n*/\n sizeMin(_: any) {\n return arguments.length ? ((this._sizeMin = _), this) : this._sizeMin;\n }\n\n /**\n The size scale.\n*/\n sizeScale(_: any) {\n return arguments.length ? ((this._sizeScale = _), this) : this._sizeScale;\n }\n}\n"],"names":["extent","groups","max","min","scales","assign","backgroundColor","elem","colorContrast","addToQueue","shapes","accessor","configPrep","constant","Viz","Rings","_links","_linkSize","_linkSizeMin","_linkSizeScale","_noDataMessage","_nodes","_on","mouseenter","hover","defaultMouseMove","d","i","x","event","_focus","id","bind","undefined","_nodeGroupBy","_drawDepth","_id","links","_linkLookup","node","_nodeLookup","filterIds","xDomain","r","yDomain","y","forEach","l","push","h","source","target","includes","_ids","_center","_margin","bottom","left","right","top","_padding","_draw","_sizeMin","_sizeScale","_shape","_shapeConfig","ariaLabel","validSize","_size","_drawLabel","labelConfig","duration","fontMin","fontResize","labelPadding","textAnchor","verticalAlign","Path","fill","label","stroke","strokeWidth","callback","data","_filteredData","reduce","obj","nodes","length","nodeIds","Array","from","Set","ids","link","concat","map","Object","keys","n","__d3plus__","shape","filter","nodeLookup","check","edge","result","size","linkMap","_duration","height","_height","transform","width","_width","edges","radius","ringWidth","primaryRing","secondaryRing","center","_sizeMax","claimed","primaries","sort","a","b","secondaries","totalEndNodes","p","primaryId","claim","tau","Math","PI","offset","children","space","angle","radians","cos","sin","s","primaryDistance","secondaryDistance","primaryMax","secondaryMax","floor","radiusFn","domain","scaleLinear","rangeRound","val","ring","find","spline","centerX","centerY","middleRing","oppId","fontSize","lineHeight","padding","labelBounds","rotate","strokeExtent","strokeScale","charAt","toUpperCase","slice","range","linkConfig","on","_shapes","config","sourceX","sourceY","sourceBisectX","sourceBisectY","targetBisectX","targetBisectY","targetX","targetY","select","parent","_select","enter","update","render","that","shapeConfig","_dataCutoff","_hover","_active","fontColor","key","values","_","arguments","_legend","_legendClass","f","linkSize","linkSizeMin","linkSizeScale","nodeGroupBy","k","_aggs","c","v","sizeMax","sizeMin","sizeScale"],"mappings":"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"}
|
package/es/src/charts/Sankey.js
CHANGED
|
@@ -457,3 +457,5 @@ function value(d) {
|
|
|
457
457
|
/**
|
|
458
458
|
Creates a sankey visualization based on a defined set of nodes and links. [Click here](http://d3plus.org/examples/d3plus-network/sankey-diagram/) for help getting started using the Sankey class.
|
|
459
459
|
*/ export { Sankey as default };
|
|
460
|
+
|
|
461
|
+
//# sourceMappingURL=Sankey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/charts/Sankey.ts"],"sourcesContent":["import {groups} from \"d3-array\";\nimport {\n sankey,\n sankeyCenter,\n sankeyJustify,\n sankeyLeft,\n sankeyLinkHorizontal,\n sankeyRight,\n} from \"d3-sankey\";\n\nconst sankeyAligns = {\n center: sankeyCenter,\n justify: sankeyJustify,\n left: sankeyLeft,\n right: sankeyRight,\n};\n\nimport {addToQueue} from \"@d3plus/data\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport {Path} from \"../shapes/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n Creates a sankey visualization based on a defined set of nodes and links. [Click here](http://d3plus.org/examples/d3plus-network/sankey-diagram/) for help getting started using the Sankey class.\n*/\nexport default class Sankey extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n*/\n constructor() {\n super();\n this._iterations = 6;\n this._nodeId = accessor(\"id\");\n this._nodeSort = undefined;\n this._links = accessor(\"links\");\n this._linkSort = undefined;\n this._linksSource = \"source\";\n this._linksTarget = \"target\";\n this._noDataMessage = false;\n this._nodes = accessor(\"nodes\");\n this._nodeAlign = sankeyAligns.justify;\n this._nodePadding = 8;\n this._nodeWidth = 30;\n this._on.mouseenter = () => {};\n this._on[\"mouseleave.shape\"] = () => {\n this.hover(false);\n };\n const defaultMouseMove = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d: any, i: any, x: any, event: any) => {\n defaultMouseMove(d, i, x, event);\n if (this._focus && this._focus === d.id) {\n this.hover(false);\n this._on.mouseenter.bind(this)(d, i, x, event);\n\n this._focus = undefined;\n } else {\n const id = this._nodeId(d, i),\n node = this._nodeLookup[id],\n nodeLookup = Object.keys(this._nodeLookup).reduce((all, item) => {\n (all as any)[this._nodeLookup[item] as string] = !isNaN(\n item as unknown as number,\n )\n ? parseInt(item, 10)\n : item;\n return all;\n }, {});\n\n const links = this._linkLookup[node];\n const filterIds = [id];\n\n links.forEach((l: any) => {\n filterIds.push((nodeLookup as any)[l]);\n });\n\n this.hover((h: any, x: any) => {\n if (h.source && h.target) {\n return h.source.id === id || h.target.id === id;\n } else {\n return filterIds.includes(this._nodeId(h, x));\n }\n });\n }\n };\n this._path = sankeyLinkHorizontal();\n this._sankey = sankey();\n this._shape = constant(\"Rect\");\n this._shapeConfig = assign(this._shapeConfig, {\n Path: {\n fill: \"none\",\n hoverStyle: {\n \"stroke-width\": (d: any) =>\n Math.max(\n 1,\n Math.abs(d.source.y1 - d.source.y0) * (d.value / d.source.value) -\n 2,\n ),\n },\n label: false,\n stroke: \"#DBDBDB\",\n strokeOpacity: 0.5,\n strokeWidth: (d: any) =>\n Math.max(\n 1,\n Math.abs(d.source.y1 - d.source.y0) * (d.value / d.source.value) -\n 2,\n ),\n },\n Rect: {},\n });\n this._value = constant(1);\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const _nodes = Array.isArray(this._nodes)\n ? this._nodes\n : this._links\n .reduce((all: any, d: any) => {\n if (!all.includes(d[this._linksSource]))\n all.push(d[this._linksSource]);\n if (!all.includes(d[this._linksTarget]))\n all.push(d[this._linksTarget]);\n return all;\n }, [])\n .map((id: any) => ({id}));\n\n const nodes = _nodes.map((n: any, i: any) => ({\n __d3plus__: true,\n data: n,\n i,\n id: this._nodeId(n, i),\n node: n,\n shape: \"Rect\",\n }));\n\n const nodeLookup = (this._nodeLookup = nodes.reduce((obj: any, d: any, i: any) => {\n obj[d.id] = i;\n return obj;\n }, {}));\n\n const links = this._links.map((link: any, i: any) => {\n const check = [this._linksSource, this._linksTarget];\n const linkLookup = check.reduce((result: any, item: any) => {\n result[item] = nodeLookup[link[item]];\n return result;\n }, {});\n return {\n source: linkLookup[this._linksSource],\n target: linkLookup[this._linksTarget],\n value: this._value(link, i),\n };\n });\n\n this._linkLookup = links.reduce((obj: any, d: any) => {\n if (!obj[d.source]) obj[d.source] = [];\n obj[d.source].push(d.target);\n if (!obj[d.target]) obj[d.target] = [];\n obj[d.target].push(d.source);\n return obj;\n }, {});\n\n const transform = `translate(${this._margin.left}, ${this._margin.top})`;\n\n this._sankey\n .nodeAlign(this._nodeAlign)\n .nodePadding(this._nodePadding)\n .nodeWidth(this._nodeWidth)\n .nodes(nodes)\n .nodeSort(this._nodeSort)\n .links(links)\n .linkSort(this._linkSort)\n .iterations(this._iterations)\n .size([width, height])();\n\n this._shapes.push(\n new Path()\n .config(this._shapeConfig.Path)\n .data(links)\n .d(this._path)\n .select(\n elem(\"g.d3plus-Links\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .render(),\n );\n groups(\n nodes as Record<string, unknown>[],\n (d: Record<string, unknown>) => d.shape as string,\n ).forEach(([key, values]) => {\n this._shapes.push(\n new (shapes as any)[key]()\n .data(values)\n .height((d: any) => d.y1 - d.y0)\n .width((d: any) => d.x1 - d.x0)\n .x((d: any) => (d.x1 + d.x0) / 2)\n .y((d: any) => (d.y1 + d.y0) / 2)\n .select(\n elem(\"g.d3plus-sankey-nodes\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", key))\n .render(),\n );\n });\n return this;\n }\n\n /**\n The hover callback function for highlighting shapes on mouseover.\n*/\n hover(_: any) {\n this._hover = _;\n this._shapes.forEach((s: any) => s.hover(_));\n if (this._legend) this._legendClass.hover(_);\n\n return this;\n }\n\n /**\n A pass-through for the d3-sankey [iterations](https://github.com/d3/d3-sankey?tab=readme-ov-file#sankey_iterations) function.\n*/\n iterations(_: any) {\n return arguments.length ? ((this._iterations = _), this) : this._iterations;\n }\n\n /**\n A predefined *Array* of edges that connect each object passed to the [node](#Sankey.node) method. The `source` and `target` keys in each link need to map to the nodes in one of one way:\n1. A *String* value matching the `id` of the node.\n\nThe value passed should be an *Array* of data. An optional formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final links *Array*.\n @param f Array of link objects or a URL to load links from.\n*/\n links(_: any, f?: any) {\n if (arguments.length) {\n (addToQueue as any).bind(this as any)(_, f, \"links\");\n return this;\n }\n return this._links;\n }\n\n /**\n A pass-through for the d3-sankey [linkSort](https://github.com/d3/d3-sankey?tab=readme-ov-file#sankey_linkSort) function.\n*/\n linkSort(_: any) {\n return arguments.length ? ((this._linkSort = _), this) : this._linkSort;\n }\n\n /**\n The key inside of each link Object that references the source node.\n*/\n linksSource(_: any) {\n return arguments.length\n ? ((this._linksSource = _), this)\n : this._linksSource;\n }\n\n /**\n The key inside of each link Object that references the target node.\n*/\n linksTarget(_: any) {\n return arguments.length\n ? ((this._linksTarget = _), this)\n : this._linksTarget;\n }\n\n /**\n The nodeAlign property of the sankey layout, which can be \"left\", \"right\", \"center\", or \"justify\".\n*/\n nodeAlign(_: any) {\n return arguments.length\n ? ((this._nodeAlign = typeof _ === \"function\" ? _ : (sankeyAligns as any)[_]),\n this)\n : this._nodeAlign;\n }\n\n /**\n The node id accessor(s).\n*/\n nodeId(_: any) {\n return arguments.length\n ? ((this._nodeId = typeof _ === \"function\" ? _ : accessor(_)), this)\n : this._nodeId;\n }\n\n /**\n The list of nodes to be used for drawing the network. The value passed must be an *Array* of data.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final node *Array*.\n @param f Array of node objects or a URL to load nodes from.\n*/\n nodes(_: any, f?: any) {\n if (arguments.length) {\n (addToQueue as any).bind(this as any)(_, f, \"nodes\");\n return this;\n }\n return this._nodes;\n }\n\n /**\n Padding of the node. By default, the nodePadding size is 8.\n*/\n nodePadding(_: any) {\n return arguments.length\n ? ((this._nodePadding = _), this)\n : this._nodePadding;\n }\n\n /**\n A pass-through for the d3-sankey [nodeSort](https://github.com/d3/d3-sankey?tab=readme-ov-file#sankey_nodeSort) function.\n*/\n nodeSort(_: any) {\n return arguments.length ? ((this._nodeSort = _), this) : this._nodeSort;\n }\n\n /**\n Width of the node. By default, the nodeWidth size is 30.\n*/\n nodeWidth(_: any) {\n return arguments.length ? ((this._nodeWidth = _), this) : this._nodeWidth;\n }\n\n /**\n Width of the links.\n\n@example\nfunction value(d) {\n return d.value;\n}\n*/\n value(_: any) {\n return arguments.length\n ? ((this._value = typeof _ === \"function\" ? _ : accessor(_)), this)\n : this._value;\n }\n}\n"],"names":["groups","sankey","sankeyCenter","sankeyJustify","sankeyLeft","sankeyLinkHorizontal","sankeyRight","sankeyAligns","center","justify","left","right","addToQueue","assign","elem","accessor","configPrep","constant","Path","shapes","Viz","Sankey","_iterations","_nodeId","_nodeSort","undefined","_links","_linkSort","_linksSource","_linksTarget","_noDataMessage","_nodes","_nodeAlign","_nodePadding","_nodeWidth","_on","mouseenter","hover","defaultMouseMove","d","i","x","event","_focus","id","bind","node","_nodeLookup","nodeLookup","Object","keys","reduce","all","item","isNaN","parseInt","links","_linkLookup","filterIds","forEach","l","push","h","source","target","includes","_path","_sankey","_shape","_shapeConfig","fill","hoverStyle","Math","max","abs","y1","y0","value","label","stroke","strokeOpacity","strokeWidth","Rect","_value","_draw","callback","height","_height","_margin","top","bottom","width","_width","Array","isArray","map","nodes","n","__d3plus__","data","shape","obj","link","check","linkLookup","result","transform","nodeAlign","nodePadding","nodeWidth","nodeSort","linkSort","iterations","size","_shapes","config","select","parent","_select","enter","update","render","key","values","x1","x0","y","_","_hover","s","_legend","_legendClass","arguments","length","f","linksSource","linksTarget","nodeId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,MAAM,QAAO,WAAW;AAChC,SACEC,MAAM,EACNC,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,oBAAoB,EACpBC,WAAW,QACN,YAAY;AAEnB,IAAMC,eAAe;IACnBC,QAAQN;IACRO,SAASN;IACTO,MAAMN;IACNO,OAAOL;AACT;AAEA,SAAQM,UAAU,QAAO,eAAe;AACxC,SAAQC,MAAM,EAAEC,IAAI,QAAO,cAAc;AACzC,SAAQC,QAAQ,EAAEC,UAAU,EAAEC,QAAQ,QAAO,oBAAoB;AACjE,SAAQC,IAAI,QAAO,qBAAqB;AACxC,YAAYC,YAAY,qBAAqB;AAC7C,OAAOC,SAAS,WAAW;AAKZ,IAAA,AAAMC,uBAAN;;cAAMA;aAAAA;gCAAAA;;gBAQjB,kBARiBA;QASjB,MAAKC,WAAW,GAAG;QACnB,MAAKC,OAAO,GAAGR,SAAS;QACxB,MAAKS,SAAS,GAAGC;QACjB,MAAKC,MAAM,GAAGX,SAAS;QACvB,MAAKY,SAAS,GAAGF;QACjB,MAAKG,YAAY,GAAG;QACpB,MAAKC,YAAY,GAAG;QACpB,MAAKC,cAAc,GAAG;QACtB,MAAKC,MAAM,GAAGhB,SAAS;QACvB,MAAKiB,UAAU,GAAGzB,aAAaE,OAAO;QACtC,MAAKwB,YAAY,GAAG;QACpB,MAAKC,UAAU,GAAG;QAClB,MAAKC,GAAG,CAACC,UAAU,GAAG,YAAO;QAC7B,MAAKD,GAAG,CAAC,mBAAmB,GAAG;YAC7B,MAAKE,KAAK,CAAC;QACb;QACA,IAAMC,mBAAmB,MAAKH,GAAG,CAAC,kBAAkB;QACpD,MAAKA,GAAG,CAAC,kBAAkB,GAAG,SAACI,GAAQC,GAAQC,GAAQC;YACrDJ,iBAAiBC,GAAGC,GAAGC,GAAGC;YAC1B,IAAI,MAAKC,MAAM,IAAI,MAAKA,MAAM,KAAKJ,EAAEK,EAAE,EAAE;gBACvC,MAAKP,KAAK,CAAC;gBACX,MAAKF,GAAG,CAACC,UAAU,CAACS,IAAI,QAAON,GAAGC,GAAGC,GAAGC;gBAExC,MAAKC,MAAM,GAAGlB;YAChB,OAAO;gBACL,IAAMmB,KAAK,MAAKrB,OAAO,CAACgB,GAAGC,IACzBM,OAAO,MAAKC,WAAW,CAACH,GAAG,EAC3BI,aAAaC,OAAOC,IAAI,CAAC,MAAKH,WAAW,EAAEI,MAAM,CAAC,SAACC,KAAKC;oBACrDD,GAAW,CAAC,MAAKL,WAAW,CAACM,KAAK,CAAW,GAAG,CAACC,MAChDD,QAEEE,SAASF,MAAM,MACfA;oBACJ,OAAOD;gBACT,GAAG,CAAC;gBAEN,IAAMI,QAAQ,MAAKC,WAAW,CAACX,KAAK;gBACpC,IAAMY,YAAY;oBAACd;iBAAG;gBAEtBY,MAAMG,OAAO,CAAC,SAACC;oBACbF,UAAUG,IAAI,CAAC,AAACb,UAAkB,CAACY,EAAE;gBACvC;gBAEA,MAAKvB,KAAK,CAAC,SAACyB,GAAQrB;oBAClB,IAAIqB,EAAEC,MAAM,IAAID,EAAEE,MAAM,EAAE;wBACxB,OAAOF,EAAEC,MAAM,CAACnB,EAAE,KAAKA,MAAMkB,EAAEE,MAAM,CAACpB,EAAE,KAAKA;oBAC/C,OAAO;wBACL,OAAOc,UAAUO,QAAQ,CAAC,MAAK1C,OAAO,CAACuC,GAAGrB;oBAC5C;gBACF;YACF;QACF;QACA,MAAKyB,KAAK,GAAG7D;QACb,MAAK8D,OAAO,GAAGlE;QACf,MAAKmE,MAAM,GAAGnD,SAAS;QACvB,MAAKoD,YAAY,GAAGxD,OAAO,MAAKwD,YAAY,EAAE;YAC5CnD,MAAM;gBACJoD,MAAM;gBACNC,YAAY;oBACV,gBAAgB,SAAChC;+BACfiC,KAAKC,GAAG,CACN,GACAD,KAAKE,GAAG,CAACnC,EAAEwB,MAAM,CAACY,EAAE,GAAGpC,EAAEwB,MAAM,CAACa,EAAE,IAAKrC,CAAAA,EAAEsC,KAAK,GAAGtC,EAAEwB,MAAM,CAACc,KAAK,AAAD,IAC5D;;gBAER;gBACAC,OAAO;gBACPC,QAAQ;gBACRC,eAAe;gBACfC,aAAa,SAAbA,YAAc1C;2BACZiC,KAAKC,GAAG,CACN,GACAD,KAAKE,GAAG,CAACnC,EAAEwB,MAAM,CAACY,EAAE,GAAGpC,EAAEwB,MAAM,CAACa,EAAE,IAAKrC,CAAAA,EAAEsC,KAAK,GAAGtC,EAAEwB,MAAM,CAACc,KAAK,AAAD,IAC5D;;YAER;YACAK,MAAM,CAAC;QACT;QACA,MAAKC,MAAM,GAAGlE,SAAS;;;kBAvFNI;;YA0FnB;;;AAGF,GACE+D,KAAAA;mBAAAA,SAAAA,MAAMC,QAAqB;;gBACxB,uBA/FgBhE,mBA+FV+D,SAAN,IAAK,aAA2CC;gBAEjD,IAAMC,SAAS,IAAI,CAACC,OAAO,GAAG,IAAI,CAACC,OAAO,CAACC,GAAG,GAAG,IAAI,CAACD,OAAO,CAACE,MAAM,EAClEC,QAAQ,IAAI,CAACC,MAAM,GAAG,IAAI,CAACJ,OAAO,CAAC9E,IAAI,GAAG,IAAI,CAAC8E,OAAO,CAAC7E,KAAK;gBAE9D,IAAMoB,SAAS8D,MAAMC,OAAO,CAAC,IAAI,CAAC/D,MAAM,IACpC,IAAI,CAACA,MAAM,GACX,IAAI,CAACL,MAAM,CACRyB,MAAM,CAAC,SAACC,KAAUb;oBACjB,IAAI,CAACa,IAAIa,QAAQ,CAAC1B,CAAC,CAAC,MAAKX,YAAY,CAAC,GACpCwB,IAAIS,IAAI,CAACtB,CAAC,CAAC,MAAKX,YAAY,CAAC;oBAC/B,IAAI,CAACwB,IAAIa,QAAQ,CAAC1B,CAAC,CAAC,MAAKV,YAAY,CAAC,GACpCuB,IAAIS,IAAI,CAACtB,CAAC,CAAC,MAAKV,YAAY,CAAC;oBAC/B,OAAOuB;gBACT,GAAG,EAAE,EACJ2C,GAAG,CAAC,SAACnD;2BAAa;wBAACA,IAAAA;oBAAE;;gBAE5B,IAAMoD,QAAQjE,OAAOgE,GAAG,CAAC,SAACE,GAAQzD;2BAAY;wBAC5C0D,YAAY;wBACZC,MAAMF;wBACNzD,GAAAA;wBACAI,IAAI,MAAKrB,OAAO,CAAC0E,GAAGzD;wBACpBM,MAAMmD;wBACNG,OAAO;oBACT;;gBAEA,IAAMpD,aAAc,IAAI,CAACD,WAAW,GAAGiD,MAAM7C,MAAM,CAAC,SAACkD,KAAU9D,GAAQC;oBACrE6D,GAAG,CAAC9D,EAAEK,EAAE,CAAC,GAAGJ;oBACZ,OAAO6D;gBACT,GAAG,CAAC;gBAEJ,IAAM7C,QAAQ,IAAI,CAAC9B,MAAM,CAACqE,GAAG,CAAC,SAACO,MAAW9D;oBACxC,IAAM+D,QAAQ;wBAAC,MAAK3E,YAAY;wBAAE,MAAKC,YAAY;qBAAC;oBACpD,IAAM2E,aAAaD,MAAMpD,MAAM,CAAC,SAACsD,QAAapD;wBAC5CoD,MAAM,CAACpD,KAAK,GAAGL,UAAU,CAACsD,IAAI,CAACjD,KAAK,CAAC;wBACrC,OAAOoD;oBACT,GAAG,CAAC;oBACJ,OAAO;wBACL1C,QAAQyC,UAAU,CAAC,MAAK5E,YAAY,CAAC;wBACrCoC,QAAQwC,UAAU,CAAC,MAAK3E,YAAY,CAAC;wBACrCgD,OAAO,MAAKM,MAAM,CAACmB,MAAM9D;oBAC3B;gBACF;gBAEA,IAAI,CAACiB,WAAW,GAAGD,MAAML,MAAM,CAAC,SAACkD,KAAU9D;oBACzC,IAAI,CAAC8D,GAAG,CAAC9D,EAAEwB,MAAM,CAAC,EAAEsC,GAAG,CAAC9D,EAAEwB,MAAM,CAAC,GAAG,EAAE;oBACtCsC,GAAG,CAAC9D,EAAEwB,MAAM,CAAC,CAACF,IAAI,CAACtB,EAAEyB,MAAM;oBAC3B,IAAI,CAACqC,GAAG,CAAC9D,EAAEyB,MAAM,CAAC,EAAEqC,GAAG,CAAC9D,EAAEyB,MAAM,CAAC,GAAG,EAAE;oBACtCqC,GAAG,CAAC9D,EAAEyB,MAAM,CAAC,CAACH,IAAI,CAACtB,EAAEwB,MAAM;oBAC3B,OAAOsC;gBACT,GAAG,CAAC;gBAEJ,IAAMK,YAAY,AAAC,aAAkC,OAAtB,IAAI,CAAClB,OAAO,CAAC9E,IAAI,EAAC,MAAqB,OAAjB,IAAI,CAAC8E,OAAO,CAACC,GAAG,EAAC;gBAEtE,IAAI,CAACtB,OAAO,CACTwC,SAAS,CAAC,IAAI,CAAC3E,UAAU,EACzB4E,WAAW,CAAC,IAAI,CAAC3E,YAAY,EAC7B4E,SAAS,CAAC,IAAI,CAAC3E,UAAU,EACzB8D,KAAK,CAACA,OACNc,QAAQ,CAAC,IAAI,CAACtF,SAAS,EACvBgC,KAAK,CAACA,OACNuD,QAAQ,CAAC,IAAI,CAACpF,SAAS,EACvBqF,UAAU,CAAC,IAAI,CAAC1F,WAAW,EAC3B2F,IAAI,CAAC;oBAACtB;oBAAOL;iBAAO;gBAEvB,IAAI,CAAC4B,OAAO,CAACrD,IAAI,CACf,IAAI3C,OACDiG,MAAM,CAAC,IAAI,CAAC9C,YAAY,CAACnD,IAAI,EAC7BiF,IAAI,CAAC3C,OACLjB,CAAC,CAAC,IAAI,CAAC2B,KAAK,EACZkD,MAAM,CACLtG,KAAK,kBAAkB;oBACrBuG,QAAQ,IAAI,CAACC,OAAO;oBACpBC,OAAO;wBAACb,WAAAA;oBAAS;oBACjBc,QAAQ;wBAACd,WAAAA;oBAAS;gBACpB,GAAG5D,IAAI,IAER2E,MAAM;gBAEXzH,OACEgG,OACA,SAACzD;2BAA+BA,EAAE6D,KAAK;mBACvCzC,OAAO,CAAC;6DAAE+D,iBAAKC;oBACf,MAAKT,OAAO,CAACrD,IAAI,CACf,IAAI,AAAC1C,MAAc,CAACuG,IAAI,GACrBvB,IAAI,CAACwB,QACLrC,MAAM,CAAC,SAAC/C;+BAAWA,EAAEoC,EAAE,GAAGpC,EAAEqC,EAAE;uBAC9Be,KAAK,CAAC,SAACpD;+BAAWA,EAAEqF,EAAE,GAAGrF,EAAEsF,EAAE;uBAC7BpF,CAAC,CAAC,SAACF;+BAAW,AAACA,CAAAA,EAAEqF,EAAE,GAAGrF,EAAEsF,EAAE,AAAD,IAAK;uBAC9BC,CAAC,CAAC,SAACvF;+BAAW,AAACA,CAAAA,EAAEoC,EAAE,GAAGpC,EAAEqC,EAAE,AAAD,IAAK;uBAC9BwC,MAAM,CACLtG,KAAK,yBAAyB;wBAC5BuG,QAAQ,MAAKC,OAAO;wBACpBC,OAAO;4BAACb,WAAAA;wBAAS;wBACjBc,QAAQ;4BAACd,WAAAA;wBAAS;oBACpB,GAAG5D,IAAI,IAERqE,MAAM,CAAC,AAACnG,WAAmB6B,IAAI,QAAc,MAAKwB,YAAY,EAAE,SAASqD,MACzED,MAAM;gBAEb;gBACA,OAAO,IAAI;YACb;;;YAEA;;AAEF,GACEpF,KAAAA;mBAAAA,SAAAA,MAAM0F,CAAM;gBACV,IAAI,CAACC,MAAM,GAAGD;gBACd,IAAI,CAACb,OAAO,CAACvD,OAAO,CAAC,SAACsE;2BAAWA,EAAE5F,KAAK,CAAC0F;;gBACzC,IAAI,IAAI,CAACG,OAAO,EAAE,IAAI,CAACC,YAAY,CAAC9F,KAAK,CAAC0F;gBAE1C,OAAO,IAAI;YACb;;;YAEA;;AAEF,GACEf,KAAAA;mBAAAA,SAAAA,WAAWe,CAAM;gBACf,OAAOK,UAAUC,MAAM,GAAI,CAAA,AAAC,IAAI,CAAC/G,WAAW,GAAGyG,GAAI,IAAI,AAAD,IAAK,IAAI,CAACzG,WAAW;YAC7E;;;YAEA;;;;;;AAMF,GACEkC,KAAAA;mBAAAA,SAAAA,MAAMuE,CAAM,EAAEO,CAAO;gBACnB,IAAIF,UAAUC,MAAM,EAAE;oBACnBzH,WAAmBiC,IAAI,CAAC,IAAI,EAASkF,GAAGO,GAAG;oBAC5C,OAAO,IAAI;gBACb;gBACA,OAAO,IAAI,CAAC5G,MAAM;YACpB;;;YAEA;;AAEF,GACEqF,KAAAA;mBAAAA,SAAAA,SAASgB,CAAM;gBACb,OAAOK,UAAUC,MAAM,GAAI,CAAA,AAAC,IAAI,CAAC1G,SAAS,GAAGoG,GAAI,IAAI,AAAD,IAAK,IAAI,CAACpG,SAAS;YACzE;;;YAEA;;AAEF,GACE4G,KAAAA;mBAAAA,SAAAA,YAAYR,CAAM;gBAChB,OAAOK,UAAUC,MAAM,GAClB,CAAA,AAAC,IAAI,CAACzG,YAAY,GAAGmG,GAAI,IAAI,AAAD,IAC7B,IAAI,CAACnG,YAAY;YACvB;;;YAEA;;AAEF,GACE4G,KAAAA;mBAAAA,SAAAA,YAAYT,CAAM;gBAChB,OAAOK,UAAUC,MAAM,GAClB,CAAA,AAAC,IAAI,CAACxG,YAAY,GAAGkG,GAAI,IAAI,AAAD,IAC7B,IAAI,CAAClG,YAAY;YACvB;;;YAEA;;AAEF,GACE8E,KAAAA;mBAAAA,SAAAA,UAAUoB,CAAM;gBACd,OAAOK,UAAUC,MAAM,GAClB,CAAA,AAAC,IAAI,CAACrG,UAAU,GAAG,OAAO+F,MAAM,aAAaA,IAAI,AAACxH,YAAoB,CAACwH,EAAE,EAC1E,IAAI,AAAD,IACH,IAAI,CAAC/F,UAAU;YACrB;;;YAEA;;AAEF,GACEyG,KAAAA;mBAAAA,SAAAA,OAAOV,CAAM;gBACX,OAAOK,UAAUC,MAAM,GAClB,CAAA,AAAC,IAAI,CAAC9G,OAAO,GAAG,OAAOwG,MAAM,aAAaA,IAAIhH,SAASgH,IAAK,IAAI,AAAD,IAChE,IAAI,CAACxG,OAAO;YAClB;;;YAEA;;;;;AAKF,GACEyE,KAAAA;mBAAAA,SAAAA,MAAM+B,CAAM,EAAEO,CAAO;gBACnB,IAAIF,UAAUC,MAAM,EAAE;oBACnBzH,WAAmBiC,IAAI,CAAC,IAAI,EAASkF,GAAGO,GAAG;oBAC5C,OAAO,IAAI;gBACb;gBACA,OAAO,IAAI,CAACvG,MAAM;YACpB;;;YAEA;;AAEF,GACE6E,KAAAA;mBAAAA,SAAAA,YAAYmB,CAAM;gBAChB,OAAOK,UAAUC,MAAM,GAClB,CAAA,AAAC,IAAI,CAACpG,YAAY,GAAG8F,GAAI,IAAI,AAAD,IAC7B,IAAI,CAAC9F,YAAY;YACvB;;;YAEA;;AAEF,GACE6E,KAAAA;mBAAAA,SAAAA,SAASiB,CAAM;gBACb,OAAOK,UAAUC,MAAM,GAAI,CAAA,AAAC,IAAI,CAAC7G,SAAS,GAAGuG,GAAI,IAAI,AAAD,IAAK,IAAI,CAACvG,SAAS;YACzE;;;YAEA;;AAEF,GACEqF,KAAAA;mBAAAA,SAAAA,UAAUkB,CAAM;gBACd,OAAOK,UAAUC,MAAM,GAAI,CAAA,AAAC,IAAI,CAACnG,UAAU,GAAG6F,GAAI,IAAI,AAAD,IAAK,IAAI,CAAC7F,UAAU;YAC3E;;;YAEA;;;;;;;AAOF,GACE2C,KAAAA;mBAAAA,SAAAA,MAAMkD,CAAM;gBACV,OAAOK,UAAUC,MAAM,GAClB,CAAA,AAAC,IAAI,CAAClD,MAAM,GAAG,OAAO4C,MAAM,aAAaA,IAAIhH,SAASgH,IAAK,IAAI,AAAD,IAC/D,IAAI,CAAC5C,MAAM;YACjB;;;WArUmB9D;EAAeD;AAHpC;;AAEA,GACA,SAAqBC,oBAsUpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/charts/StackedArea.ts"],"sourcesContent":["import {default as AreaPlot} from \"./AreaPlot.js\";\n\n/**\n Creates a stacked area plot based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.AreaPlot()\n .stacked(true)\n*/\nexport default class StackedArea extends AreaPlot {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n super();\n this._stacked = true;\n }\n}\n"],"names":["default","AreaPlot","StackedArea","_stacked"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,WAAWC,QAAQ,QAAO,gBAAgB;AAQnC,IAAA,AAAMC,4BAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,QAAQ,GAAG;;;WAPCD;EAAoBD;AANzC;;;;;AAKA,GACA,SAAqBC,yBASpB"}
|
package/es/src/charts/Tree.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/charts/Tree.ts"],"sourcesContent":["import {extent, min, max} from \"d3-array\";\nimport {hierarchy, tree} from \"d3-hierarchy\";\nimport {scaleLinear} from \"d3-scale\";\nimport type {DataPoint} from \"@d3plus/data\";\n\nimport {colorContrast, colorDefaults} from \"@d3plus/color\";\nimport {assign, backgroundColor, elem} from \"@d3plus/dom\";\nimport {merge, nest} from \"@d3plus/data\";\nimport {configPrep, constant} from \"../utils/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport type Shape from \"../shapes/Shape.js\";\nimport {legendLabel} from \"./drawSteps/drawLegend.js\";\n\nimport Viz from \"./Viz.js\";\n\n/**\n Uses d3's [tree layout](https://github.com/d3/d3-hierarchy#tree) to create a tidy tree chart based on an array of data.\n*/\nexport default class Tree extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n*/\n constructor() {\n super();\n\n this._orient = \"vertical\";\n this._separation = (a: any, b: any) => (a.parent === b.parent ? 1 : 2);\n\n this._legendTooltip = assign(this._legendTooltip, {\n title: legendLabel.bind(this),\n });\n this._previousShapes = [];\n\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d: any, i: any) =>\n this._treeData\n ? `${this._treeData[i].depth}. ${this._drawLabel(d, i)}.`\n : \"\",\n labelConfig: {\n fontColor: () => {\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n return colorContrast(bg);\n },\n },\n Path: {\n fill: \"none\",\n stroke: colorDefaults.missing,\n strokeWidth: 2,\n },\n r: constant(7),\n width: constant(12),\n height: constant(12),\n });\n\n this._tooltipConfig = assign(this._tooltipConfig, {\n title: (d: any, i: any, x: any) => this._drawLabel(d, i, x.depth - 1),\n });\n\n this._tree = tree();\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const isVertical = this._orient === \"vertical\";\n const isHorizontal = this._orient === \"horizontal\";\n\n const height = isVertical\n ? this._height - this._margin.top - this._margin.bottom\n : this._width - this._margin.left - this._margin.right,\n left = isVertical ? \"left\" : \"top\",\n that = this,\n transform = `translate(${this._margin.left}, ${this._margin.top})`,\n width = isHorizontal\n ? this._height - this._margin.top - this._margin.bottom\n : this._width - this._margin.left - this._margin.right;\n\n const treeData = (this._treeData = this._tree\n .separation(this._separation)\n .size([width, height])(\n hierarchy(\n {\n key: \"root\",\n values: nest(\n this._filteredData,\n this._groupBy.slice(0, this._drawDepth + 1),\n ),\n } as Record<string, unknown>,\n (d: Record<string, unknown>) =>\n d.key && d.values ? (d.values as Record<string, unknown>[]) : null,\n ).sort(this._sort),\n )\n .descendants()\n .filter((d: any) => d.depth <= this._groupBy.length && d.parent));\n\n /**\n Merges the values of a given nest branch.\n @private\n*/\n function flattenBranchData(branch: any) {\n return merge(\n branch.values.map((l: any) => (l.key && l.values ? flattenBranchData(l) : l)),\n that._aggs,\n );\n }\n\n treeData.forEach((d: any, i: any) => {\n if (d.data.key && d.data.values) d.data = flattenBranchData(d.data);\n d.__d3plus__ = true;\n d.i = i;\n });\n\n let r = this._shapeConfig.r;\n if (typeof r !== \"function\") r = constant(r);\n type TreeNode = (typeof treeData)[number];\n const rBufferRoot = max(treeData, (d: TreeNode) =>\n d.depth === 1 ? r(d.data, (d as unknown as {i: number}).i) : 0,\n );\n const rBufferEnd = max(treeData, (d: TreeNode) =>\n d.children ? 0 : r(d.data, (d as unknown as {i: number}).i),\n );\n\n const yExtent = extent(treeData, (d: TreeNode) => d.y) as unknown as [number, number];\n this._labelHeight = min([\n isVertical ? 50 : 100,\n (yExtent[1] -\n (rBufferRoot as unknown as number) -\n (rBufferEnd as unknown as number)) /\n (this._groupBy.length + 1),\n ]);\n\n this._labelWidths = nest(\n treeData as DataPoint[],\n ((d: DataPoint) => d.depth) as (\n d: DataPoint,\n ) => string | number | boolean,\n ).map(d =>\n d.values.reduce((num: number, v, i: number) => {\n const vals = d.values as DataPoint[];\n const next =\n i < vals.length - 1\n ? ((vals[i + 1] as DataPoint).x as number)\n : width + this._margin[left],\n prev = i\n ? ((vals[i - 1] as DataPoint).x as number)\n : this._margin[left];\n return min([\n num,\n next - ((v as DataPoint).x as number),\n ((v as DataPoint).x as number) - prev,\n ])!;\n }, width),\n );\n\n const yScale = scaleLinear()\n .domain(yExtent)\n .range([\n (rBufferRoot as unknown as number) + this._labelHeight,\n height - (rBufferEnd as unknown as number) - this._labelHeight,\n ]);\n\n treeData.forEach((d: any) => {\n const val = yScale(d.y);\n if (isHorizontal) {\n d.y = d.x;\n d.x = val;\n } else d.y = val;\n });\n\n const elemObject = {\n parent: this._select,\n enter: {transform},\n update: {transform},\n };\n\n this._shapes.push(\n new shapes.Path()\n .data(treeData.filter((d: any) => d.depth > 1).map((d: any) => assign({}, d)) as any)\n .select(elem(\"g.d3plus-Tree-Links\", elemObject).node())\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", \"Path\"))\n .config({\n d: (d: any) => {\n let r = this._shapeConfig.r;\n\n if (typeof r === \"function\") r = r(d.data, d.i);\n\n const px = d.parent.x - d.x + (isVertical ? 0 : r),\n py = d.parent.y - d.y + (isVertical ? r : 0),\n x = isVertical ? 0 : -r,\n y = isVertical ? -r : 0;\n\n return isVertical\n ? `M${x},${y}C${x},${(y + py) / 2} ${px},${(y + py) / 2} ${px},${py}`\n : `M${x},${y}C${(x + px) / 2},${y} ${(x + px) / 2},${py} ${px},${py}`;\n },\n id: (d: any, i: any) => this._ids(d, i)[d.depth - 1],\n } as any)\n .render(),\n );\n\n const shapeConfig = {\n id: (d: any, i: any) => this._ids(d, i)[d.depth - 1],\n label: (d: any, i: any) => {\n if (this._label) return this._label(d.data, i);\n const ids = this._ids(d, i).slice(0, d.depth);\n return ids[ids.length - 1];\n },\n labelConfig: {\n textAnchor: (d: any, i: any, x: any) =>\n isVertical\n ? \"middle\"\n : x.children && x.depth !== this._drawDepth + 1\n ? \"end\"\n : \"start\",\n verticalAlign: (d: any, i: any, x: any) =>\n isVertical ? (x.depth === 1 ? \"bottom\" : \"top\") : \"middle\",\n },\n hitArea: (d: any, i: any, s: any) => {\n const h = this._labelHeight,\n offset = s.r ? s.r : isVertical ? s.height / 2 : s.width / 2,\n w = this._labelWidths[d.depth - 1];\n\n return {\n width: isVertical ? w : offset * 2 + w,\n height: isHorizontal ? h : offset * 2 + h,\n x: isVertical\n ? -w / 2\n : d.children && d.depth !== this._groupBy.length\n ? -(offset + w)\n : -offset,\n y: isHorizontal\n ? -h / 2\n : d.children && d.depth !== this._groupBy.length\n ? -(offset + this._labelHeight)\n : -offset,\n };\n },\n labelBounds: (d: any, i: any, s: any) => {\n const h = this._labelHeight,\n height = isVertical ? \"height\" : \"width\",\n offset = s.r ? s.r : isVertical ? s.height / 2 : s.width / 2,\n w = this._labelWidths[d.depth - 1],\n width = isVertical ? \"width\" : \"height\",\n x = isVertical ? \"x\" : \"y\",\n y = isVertical ? \"y\" : \"x\";\n\n return {\n [width]: w,\n [height]: h,\n [x]: -w / 2,\n [y]:\n d.children && d.depth !== this._groupBy.length\n ? -(offset + h)\n : offset,\n };\n },\n };\n\n const shapeData = nest(treeData as any, (d: any) => this._shape(d.data));\n const dataShapes = shapeData.map((d: any) => d.key);\n const exitShapes = this._previousShapes.filter(\n (d: any) => !dataShapes.includes(d),\n );\n\n shapeData\n .concat(exitShapes.map((key: any) => ({key, values: []})))\n .forEach(({key, values}: any) => {\n this._shapes.push(\n new (shapes as unknown as Record<string, new () => Shape>)[\n key as string\n ]()\n .data(values as DataPoint[])\n .select(elem(`g.d3plus-Tree-${key}`, elemObject).node())\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", key as string | false))\n .config(shapeConfig as any)\n .render(),\n );\n });\n\n this._previousShapes = dataShapes;\n\n return this;\n }\n\n /**\n Changes the orientation of the entire Tree, either \"vertical\" (top to bottom) or \"horizontal\" (left to right).\n*/\n orient(_: any) {\n return arguments.length ? ((this._orient = _), this) : this._orient;\n }\n\n /**\n The separation function between neighboring nodes.\n\nFrom the [d3-hierarchy documentation](https://github.com/d3/d3-hierarchy#tree_separation):\n> The separation accessor is used to separate neighboring nodes. The separation function is passed two nodes a and b, and must return the desired separation. The nodes are typically siblings, though the nodes may be more distantly related if the layout decides to place such nodes adjacent.\n\n@example\nfunction separation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n*/\n separation(_: any) {\n return arguments.length ? ((this._separation = _), this) : this._separation;\n }\n}\n"],"names":["extent","min","max","hierarchy","tree","scaleLinear","colorContrast","colorDefaults","assign","backgroundColor","elem","merge","nest","configPrep","constant","shapes","legendLabel","Viz","Tree","_orient","_separation","a","b","parent","_legendTooltip","title","bind","_previousShapes","_shape","_shapeConfig","ariaLabel","d","i","_treeData","depth","_drawLabel","labelConfig","fontColor","bg","_select","node","Path","fill","stroke","missing","strokeWidth","r","width","height","_tooltipConfig","x","_tree","_draw","callback","isVertical","isHorizontal","_height","_margin","top","bottom","_width","left","right","that","transform","treeData","separation","size","key","values","_filteredData","_groupBy","slice","_drawDepth","sort","_sort","descendants","filter","length","flattenBranchData","branch","map","l","_aggs","forEach","data","__d3plus__","rBufferRoot","rBufferEnd","children","yExtent","y","_labelHeight","_labelWidths","reduce","num","v","vals","next","prev","yScale","domain","range","val","elemObject","enter","update","_shapes","push","select","config","px","py","id","_ids","render","shapeConfig","label","_label","ids","textAnchor","verticalAlign","hitArea","s","h","offset","w","labelBounds","shapeData","dataShapes","exitShapes","includes","concat","orient","_","arguments"],"mappings":"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"}
|
package/es/src/charts/Treemap.js
CHANGED
|
@@ -450,3 +450,5 @@ Can either be a string referring to a d3-hierarchy [tiling method](https://githu
|
|
|
450
450
|
/**
|
|
451
451
|
Uses the [d3 treemap layout](https://github.com/mbostock/d3/wiki/Treemap-Layout) to creates SVG rectangles based on an array of data. See [this example](https://d3plus.org/examples/d3plus-hierarchy/getting-started/) for help getting started using the treemap generator.
|
|
452
452
|
*/ export { Treemap as default };
|
|
453
|
+
|
|
454
|
+
//# sourceMappingURL=Treemap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/charts/Treemap.ts"],"sourcesContent":["import {group, sum} from \"d3-array\";\nimport {hierarchy, treemap} from \"d3-hierarchy\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify,\n} from \"d3-hierarchy\";\nconst tileMethods = {\n treemapBinary,\n treemapDice,\n treemapSlice,\n treemapSliceDice,\n treemapSquarify,\n treemapResquarify,\n};\n\nimport {merge, nestGroups} from \"@d3plus/data\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {formatAbbreviate} from \"@d3plus/format\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n Uses the [d3 treemap layout](https://github.com/mbostock/d3/wiki/Treemap-Layout) to creates SVG rectangles based on an array of data. See [this example](https://d3plus.org/examples/d3plus-hierarchy/getting-started/) for help getting started using the treemap generator.\n*/\nexport default class Treemap extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n*/\n constructor() {\n super();\n\n this._layoutPadding = 1;\n\n const defaultLegend = this._legend;\n this._legend = (config: any, arr: any) => {\n if (arr.length === this._filteredData.length) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n this._legendSort = (a: any, b: any) => this._sum(b) - this._sum(a);\n this._legendTooltip = assign({}, this._legendTooltip, {\n tbody: [],\n });\n this._shapeConfig = assign({}, this._shapeConfig, {\n ariaLabel: (d: any, i: any) => {\n const rank = this._rankData ? `${this._rankData.indexOf(d) + 1}. ` : \"\";\n return `${rank}${this._drawLabel(d, i)}, ${this._sum(d, i)}.`;\n },\n labelConfig: {\n fontMax: 32,\n fontMin: 8,\n fontResize: true,\n padding: 5,\n },\n });\n this._sort = (a: any, b: any) => {\n const aggA = isAggregated(a);\n const aggB = isAggregated(b);\n return aggA && !aggB ? 1 : !aggA && aggB ? -1 : b.value - a.value;\n };\n this._sum = accessor(\"value\");\n this._thresholdKey = this._sum;\n this._tile = treemapSquarify;\n this._tooltipConfig = assign({}, this._tooltipConfig, {\n tbody: [\n [\n () => this._translate(\"Share\"),\n (d: any, i: any, x: any) => `${formatAbbreviate(x.share * 100, this._locale)}%`,\n ],\n ],\n });\n this._treemap = treemap().round(true);\n\n const isAggregated = (leaf: any) =>\n leaf.children &&\n leaf.children.length === 1 &&\n leaf.children[0].data._isAggregation;\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const nestedData = nestGroups(\n this._filteredData,\n this._groupBy.slice(0, this._drawDepth + 1),\n );\n\n const tmapData = this._treemap\n .padding(this._layoutPadding)\n .size([\n this._width - this._margin.left - this._margin.right,\n this._height - this._margin.top - this._margin.bottom,\n ])\n .tile(this._tile)(\n hierarchy(\n {values: nestedData} as Record<string, unknown>,\n (d: Record<string, unknown>) => d.values as Record<string, unknown>[],\n )\n .sum(this._sum)\n .sort(this._sort),\n );\n\n const shapeData: any[] = [],\n that = this;\n\n /**\n Flattens and merges treemap data.\n @private\n*/\n function extractLayout(children: any) {\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.depth <= that._drawDepth) extractLayout(node.children);\n else {\n const index =\n node.data.values.length === 1\n ? that._filteredData.indexOf(node.data.values[0])\n : undefined;\n node.__d3plus__ = true;\n node.id = node.data.key;\n node.i = index > -1 ? index : undefined;\n node.data = merge(node.data.values, that._aggs);\n node.x = node.x0 + (node.x1 - node.x0) / 2;\n node.y = node.y0 + (node.y1 - node.y0) / 2;\n shapeData.push(node);\n }\n }\n }\n if (tmapData.children) extractLayout(tmapData.children);\n\n this._rankData = shapeData.sort(this._sort).map((d: any) => d.data);\n const total = tmapData.value;\n shapeData.forEach((d: any) => {\n d.share = this._sum(d.data, d.i) / total;\n });\n\n const transform = `translate(${this._margin.left}, ${this._margin.top})`;\n const rectConfig = (configPrep as any).bind(this as any)(\n this._shapeConfig,\n \"shape\",\n \"Rect\",\n );\n const fontMax = (rectConfig.labelConfig as any).fontMax;\n const fontMin = (rectConfig.labelConfig as any).fontMin;\n const padding = (rectConfig.labelConfig as any).padding;\n\n this._shapes.push(\n new Rect()\n .data(shapeData as any)\n .label(((d: any) => [\n this._drawLabel(d.data, d.i),\n `${formatAbbreviate((d.share as number) * 100, this._locale)}%`,\n ]) as unknown as (d: DataPoint) => DataPoint[keyof DataPoint])\n .select(\n elem(\"g.d3plus-Treemap\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config({\n height: (d: any) => d.y1 - d.y0,\n labelBounds: (d: any, i: any, s: any) => {\n const h = s.height;\n let sh = Math.min(fontMax, (h - padding * 2) * 0.5);\n if (sh < fontMin) sh = 0;\n return [\n {width: s.width, height: h - sh, x: -s.width / 2, y: -h / 2},\n {\n width: s.width,\n height: sh + padding * 2,\n x: -s.width / 2,\n y: h / 2 - sh - padding * 2,\n },\n ];\n },\n labelConfig: {\n textAnchor: (d: any, i: any, x: any) => {\n let line,\n parent = x;\n while (typeof line === \"undefined\" && parent) {\n if (typeof parent.l !== \"undefined\") line = parent.l;\n parent = parent.__d3plusParent__;\n }\n return line ? \"middle\" : \"start\";\n },\n verticalAlign: (d: any, i: any, x: any) => {\n let line,\n parent = x;\n while (typeof line === \"undefined\" && parent) {\n if (typeof parent.l !== \"undefined\") line = parent.l;\n parent = parent.__d3plusParent__;\n }\n return line ? \"bottom\" : \"top\";\n },\n },\n width: (d: any) => d.x1 - d.x0,\n } as any)\n .config(rectConfig)\n .render(),\n );\n\n return this;\n }\n\n /**\n * Applies the threshold algorithm for Treemaps.\n * @param {Array} data The data to process.\n * @private\n*/\n _thresholdFunction(data: any) {\n const aggs = this._aggs;\n const drawDepth = this._drawDepth;\n const groupBy = this._groupBy;\n const threshold = this._threshold;\n const thresholdKey = this._thresholdKey;\n\n const totalSum = sum(data, thresholdKey);\n\n if (threshold && thresholdKey) {\n return thresholdByDepth(data, 0);\n }\n\n /**\n Explores the data tree recursively and merges elements under the indicated threshold.\n @param branchData The current subset of the dataset to work on.\n @param depth The depth of the current branch.\n @private\n*/\n function thresholdByDepth(branchData: any[], depth: number): any[] | null {\n if (depth < drawDepth) {\n return [...group(branchData, groupBy[depth])].reduce(\n (bulk: any[], [, values]): any[] => {\n const subBranchData: any[] = thresholdByDepth(values, depth + 1) ?? [];\n return bulk.concat(subBranchData);\n },\n [],\n );\n }\n\n if (depth === drawDepth) {\n const thresholdPercent = Math.min(\n 1,\n Math.max(0, threshold(branchData)),\n );\n\n if (!isFinite(thresholdPercent) || isNaN(thresholdPercent)) return null;\n\n const removedItems: any[] = [];\n const branchDataCopy = branchData.slice();\n const thresholdValue = thresholdPercent * totalSum;\n\n let n = branchDataCopy.length;\n while (n--) {\n const datum = branchDataCopy[n];\n if (thresholdKey(datum) < thresholdValue) {\n const index = branchDataCopy.indexOf(datum);\n branchDataCopy.splice(index, 1);\n removedItems.push(datum);\n }\n }\n\n if (removedItems.length > 0) {\n const mergedItem = merge(removedItems as DataPoint[], aggs);\n mergedItem._isAggregation = true;\n mergedItem._threshold = thresholdPercent;\n branchDataCopy.push(mergedItem);\n }\n\n return branchDataCopy;\n }\n\n throw new Error(\"Depth is higher than the amount of grouping levels.\");\n }\n\n return data;\n }\n\n /**\n The inner and outer padding.\n*/\n layoutPadding(_: any) {\n return arguments.length\n ? ((this._layoutPadding = typeof _ === \"function\" ? _ : constant(_)),\n this)\n : this._layoutPadding;\n }\n\n /**\n Sort comparator function for the treemap layout. Defaults to descending order by the associated input data's numeric value attribute.\n\n@example\nfunction comparator(a, b) {\n return b.value - a.value;\n}\n*/\n sort(_: any) {\n return arguments.length ? ((this._sort = _), this) : this._sort;\n }\n\n /**\n The sum accessor used for sizing each rectangle in the treemap.\n\n@example\nfunction sum(d) {\n return d.sum;\n}\n*/\n sum(_: any) {\n if (arguments.length) {\n this._sum = typeof _ === \"function\" ? _ : accessor(_);\n this._thresholdKey = this._sum;\n return this;\n } else return this._sum;\n }\n\n /**\n The tiling method used when calculating the size and position of the rectangles.\n\nCan either be a string referring to a d3-hierarchy [tiling method](https://github.com/d3/d3-hierarchy#treemap-tiling), or a custom function in the same format.\n*/\n tile(_: any) {\n return arguments.length\n ? ((this._tile =\n typeof _ === \"string\"\n ? (tileMethods as any)[`treemap${_.charAt(0).toUpperCase()}${_.slice(1)}`] ||\n treemapSquarify\n : _),\n this)\n : this._tile;\n }\n}\n"],"names":["group","sum","hierarchy","treemap","treemapBinary","treemapDice","treemapSlice","treemapSliceDice","treemapSquarify","treemapResquarify","tileMethods","merge","nestGroups","assign","elem","formatAbbreviate","Rect","accessor","configPrep","constant","Viz","Treemap","_layoutPadding","defaultLegend","_legend","config","arr","length","_filteredData","bind","_legendSort","a","b","_sum","_legendTooltip","tbody","_shapeConfig","ariaLabel","d","i","rank","_rankData","indexOf","_drawLabel","labelConfig","fontMax","fontMin","fontResize","padding","_sort","aggA","isAggregated","aggB","value","_thresholdKey","_tile","_tooltipConfig","_translate","x","share","_locale","_treemap","round","leaf","children","data","_isAggregation","_draw","callback","nestedData","_groupBy","slice","_drawDepth","tmapData","size","_width","_margin","left","right","_height","top","bottom","tile","values","sort","shapeData","that","extractLayout","node","depth","index","undefined","__d3plus__","id","key","_aggs","x0","x1","y","y0","y1","push","map","total","forEach","transform","rectConfig","_shapes","label","select","parent","_select","enter","update","height","labelBounds","s","h","sh","Math","min","width","textAnchor","line","l","__d3plusParent__","verticalAlign","render","_thresholdFunction","aggs","drawDepth","groupBy","threshold","_threshold","thresholdKey","totalSum","thresholdByDepth","branchData","reduce","bulk","subBranchData","concat","thresholdPercent","max","isFinite","isNaN","removedItems","branchDataCopy","thresholdValue","n","datum","splice","mergedItem","Error","layoutPadding","_","arguments","charAt","toUpperCase"],"mappings":"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"}
|
package/es/src/charts/Viz.js
CHANGED
|
@@ -1828,3 +1828,5 @@ Defaults to an empty array (`[]`).
|
|
|
1828
1828
|
Creates an x/y plot based on an array of data. See [this example](https://d3plus.org/examples/d3plus-treemap/getting-started/) for help getting started using the treemap generator.
|
|
1829
1829
|
*/ // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1830
1830
|
export { Viz as default };
|
|
1831
|
+
|
|
1832
|
+
//# sourceMappingURL=Viz.js.map
|