@d3plus/core 3.1.1 → 3.1.2

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.
Files changed (167) hide show
  1. package/README.md +5092 -5092
  2. package/es/index.js +2 -0
  3. package/es/index.js.map +1 -0
  4. package/es/src/charts/AreaPlot.js +2 -0
  5. package/es/src/charts/AreaPlot.js.map +1 -0
  6. package/es/src/charts/BarChart.js +2 -0
  7. package/es/src/charts/BarChart.js.map +1 -0
  8. package/es/src/charts/BoxWhisker.js +2 -0
  9. package/es/src/charts/BoxWhisker.js.map +1 -0
  10. package/es/src/charts/BumpChart.js +2 -0
  11. package/es/src/charts/BumpChart.js.map +1 -0
  12. package/es/src/charts/Donut.js +2 -0
  13. package/es/src/charts/Donut.js.map +1 -0
  14. package/es/src/charts/Geomap.js +2 -0
  15. package/es/src/charts/Geomap.js.map +1 -0
  16. package/es/src/charts/LinePlot.js +2 -0
  17. package/es/src/charts/LinePlot.js.map +1 -0
  18. package/es/src/charts/Matrix.js +2 -0
  19. package/es/src/charts/Matrix.js.map +1 -0
  20. package/es/src/charts/Network.js +2 -0
  21. package/es/src/charts/Network.js.map +1 -0
  22. package/es/src/charts/Pack.js +2 -0
  23. package/es/src/charts/Pack.js.map +1 -0
  24. package/es/src/charts/Pie.js +2 -0
  25. package/es/src/charts/Pie.js.map +1 -0
  26. package/es/src/charts/Plot.js +2 -0
  27. package/es/src/charts/Plot.js.map +1 -0
  28. package/es/src/charts/Priestley.js +2 -0
  29. package/es/src/charts/Priestley.js.map +1 -0
  30. package/es/src/charts/Radar.js +2 -0
  31. package/es/src/charts/Radar.js.map +1 -0
  32. package/es/src/charts/RadialMatrix.js +2 -0
  33. package/es/src/charts/RadialMatrix.js.map +1 -0
  34. package/es/src/charts/Rings.js +2 -0
  35. package/es/src/charts/Rings.js.map +1 -0
  36. package/es/src/charts/Sankey.js +2 -0
  37. package/es/src/charts/Sankey.js.map +1 -0
  38. package/es/src/charts/StackedArea.js +2 -0
  39. package/es/src/charts/StackedArea.js.map +1 -0
  40. package/es/src/charts/Tree.js +2 -0
  41. package/es/src/charts/Tree.js.map +1 -0
  42. package/es/src/charts/Treemap.js +2 -0
  43. package/es/src/charts/Treemap.js.map +1 -0
  44. package/es/src/charts/Viz.js +2 -0
  45. package/es/src/charts/Viz.js.map +1 -0
  46. package/es/src/charts/drawSteps/drawAttribution.js +2 -0
  47. package/es/src/charts/drawSteps/drawAttribution.js.map +1 -0
  48. package/es/src/charts/drawSteps/drawBack.js +2 -0
  49. package/es/src/charts/drawSteps/drawBack.js.map +1 -0
  50. package/es/src/charts/drawSteps/drawColorScale.js +2 -0
  51. package/es/src/charts/drawSteps/drawColorScale.js.map +1 -0
  52. package/es/src/charts/drawSteps/drawLegend.js +2 -0
  53. package/es/src/charts/drawSteps/drawLegend.js.map +1 -0
  54. package/es/src/charts/drawSteps/drawSubtitle.js +2 -0
  55. package/es/src/charts/drawSteps/drawSubtitle.js.map +1 -0
  56. package/es/src/charts/drawSteps/drawTimeline.js +2 -0
  57. package/es/src/charts/drawSteps/drawTimeline.js.map +1 -0
  58. package/es/src/charts/drawSteps/drawTitle.js +2 -0
  59. package/es/src/charts/drawSteps/drawTitle.js.map +1 -0
  60. package/es/src/charts/drawSteps/drawTotal.js +2 -0
  61. package/es/src/charts/drawSteps/drawTotal.js.map +1 -0
  62. package/es/src/charts/drawSteps/zoomControls.js +2 -0
  63. package/es/src/charts/drawSteps/zoomControls.js.map +1 -0
  64. package/es/src/charts/events/click.legend.js +2 -0
  65. package/es/src/charts/events/click.legend.js.map +1 -0
  66. package/es/src/charts/events/click.shape.js +2 -0
  67. package/es/src/charts/events/click.shape.js.map +1 -0
  68. package/es/src/charts/events/mouseenter.js +2 -0
  69. package/es/src/charts/events/mouseenter.js.map +1 -0
  70. package/es/src/charts/events/mouseleave.js +2 -0
  71. package/es/src/charts/events/mouseleave.js.map +1 -0
  72. package/es/src/charts/events/mousemove.legend.js +2 -0
  73. package/es/src/charts/events/mousemove.legend.js.map +1 -0
  74. package/es/src/charts/events/mousemove.shape.js +2 -0
  75. package/es/src/charts/events/mousemove.shape.js.map +1 -0
  76. package/es/src/charts/events/touchstart.body.js +2 -0
  77. package/es/src/charts/events/touchstart.body.js.map +1 -0
  78. package/es/src/charts/helpers/matrixData.js +2 -0
  79. package/es/src/charts/helpers/matrixData.js.map +1 -0
  80. package/es/src/charts/helpers/tileAttributions.js +2 -0
  81. package/es/src/charts/helpers/tileAttributions.js.map +1 -0
  82. package/es/src/charts/index.js +2 -0
  83. package/es/src/charts/index.js.map +1 -0
  84. package/es/src/charts/plotBuffers/Bar.js +2 -0
  85. package/es/src/charts/plotBuffers/Bar.js.map +1 -0
  86. package/es/src/charts/plotBuffers/Box.js +2 -0
  87. package/es/src/charts/plotBuffers/Box.js.map +1 -0
  88. package/es/src/charts/plotBuffers/Circle.js +2 -0
  89. package/es/src/charts/plotBuffers/Circle.js.map +1 -0
  90. package/es/src/charts/plotBuffers/Line.js +2 -0
  91. package/es/src/charts/plotBuffers/Line.js.map +1 -0
  92. package/es/src/charts/plotBuffers/Rect.js +2 -0
  93. package/es/src/charts/plotBuffers/Rect.js.map +1 -0
  94. package/es/src/charts/plotBuffers/discreteBuffer.js +2 -0
  95. package/es/src/charts/plotBuffers/discreteBuffer.js.map +1 -0
  96. package/es/src/charts/plotBuffers/numericBuffer.js +2 -0
  97. package/es/src/charts/plotBuffers/numericBuffer.js.map +1 -0
  98. package/es/src/components/Axis.js +2 -0
  99. package/es/src/components/Axis.js.map +1 -0
  100. package/es/src/components/AxisBottom.js +2 -0
  101. package/es/src/components/AxisBottom.js.map +1 -0
  102. package/es/src/components/AxisLeft.js +2 -0
  103. package/es/src/components/AxisLeft.js.map +1 -0
  104. package/es/src/components/AxisRight.js +2 -0
  105. package/es/src/components/AxisRight.js.map +1 -0
  106. package/es/src/components/AxisTop.js +2 -0
  107. package/es/src/components/AxisTop.js.map +1 -0
  108. package/es/src/components/ColorScale.js +2 -0
  109. package/es/src/components/ColorScale.js.map +1 -0
  110. package/es/src/components/Legend.js +2 -0
  111. package/es/src/components/Legend.js.map +1 -0
  112. package/es/src/components/Message.js +2 -0
  113. package/es/src/components/Message.js.map +1 -0
  114. package/es/src/components/TextBox.js +2 -0
  115. package/es/src/components/TextBox.js.map +1 -0
  116. package/es/src/components/Timeline.js +2 -0
  117. package/es/src/components/Timeline.js.map +1 -0
  118. package/es/src/components/Tooltip.js +2 -0
  119. package/es/src/components/Tooltip.js.map +1 -0
  120. package/es/src/components/index.js +2 -0
  121. package/es/src/components/index.js.map +1 -0
  122. package/es/src/shapes/Area.js +2 -0
  123. package/es/src/shapes/Area.js.map +1 -0
  124. package/es/src/shapes/Bar.js +2 -0
  125. package/es/src/shapes/Bar.js.map +1 -0
  126. package/es/src/shapes/Box.js +2 -0
  127. package/es/src/shapes/Box.js.map +1 -0
  128. package/es/src/shapes/Circle.js +2 -0
  129. package/es/src/shapes/Circle.js.map +1 -0
  130. package/es/src/shapes/Image.js +2 -0
  131. package/es/src/shapes/Image.js.map +1 -0
  132. package/es/src/shapes/Line.js +2 -0
  133. package/es/src/shapes/Line.js.map +1 -0
  134. package/es/src/shapes/Path.js +2 -0
  135. package/es/src/shapes/Path.js.map +1 -0
  136. package/es/src/shapes/Rect.js +2 -0
  137. package/es/src/shapes/Rect.js.map +1 -0
  138. package/es/src/shapes/Shape.js +2 -0
  139. package/es/src/shapes/Shape.js.map +1 -0
  140. package/es/src/shapes/Whisker.js +2 -0
  141. package/es/src/shapes/Whisker.js.map +1 -0
  142. package/es/src/shapes/index.js +2 -0
  143. package/es/src/shapes/index.js.map +1 -0
  144. package/es/src/utils/AccessorFn.js +2 -0
  145. package/es/src/utils/AccessorFn.js.map +1 -0
  146. package/es/src/utils/BaseClass.js +2 -0
  147. package/es/src/utils/BaseClass.js.map +1 -0
  148. package/es/src/utils/D3plusConfig.js +2 -0
  149. package/es/src/utils/D3plusConfig.js.map +1 -0
  150. package/es/src/utils/RESET.js +2 -0
  151. package/es/src/utils/RESET.js.map +1 -0
  152. package/es/src/utils/accessor.js +2 -0
  153. package/es/src/utils/accessor.js.map +1 -0
  154. package/es/src/utils/configPrep.js +2 -0
  155. package/es/src/utils/configPrep.js.map +1 -0
  156. package/es/src/utils/constant.js +2 -0
  157. package/es/src/utils/constant.js.map +1 -0
  158. package/es/src/utils/getProp.js +2 -0
  159. package/es/src/utils/getProp.js.map +1 -0
  160. package/es/src/utils/index.js +2 -0
  161. package/es/src/utils/index.js.map +1 -0
  162. package/package.json +8 -8
  163. package/umd/d3plus-core.full.js +10174 -4755
  164. package/umd/d3plus-core.full.js.map +1 -1
  165. package/umd/d3plus-core.full.min.js +842 -764
  166. package/umd/d3plus-core.js +1 -1
  167. package/umd/d3plus-core.min.js +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Plot.ts"],"sourcesContent":["/* eslint no-cond-assign: 0*/\n\nimport {\n deviation,\n extent,\n groups,\n max,\n mean,\n merge,\n min,\n range,\n rollups,\n sum,\n} from \"d3-array\";\nimport * as scales from \"d3-scale\";\nimport * as d3Shape from \"d3-shape\";\n// @ts-ignore\nimport pkg from \"open-color/open-color.js\";\nconst {theme: openColor} = pkg;\n\nimport {\n colorAssign,\n colorContrast,\n colorDefaults,\n colorLegible,\n} from \"@d3plus/color\";\nimport {merge as d3plusMerge, unique} from \"@d3plus/data\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {assign, backgroundColor, date, elem, rtl, textWidth} from \"@d3plus/dom\";\nimport {largestRect} from \"@d3plus/math\";\nimport {formatAbbreviate} from \"@d3plus/format\";\n\nimport {\n AxisBottom,\n AxisLeft,\n AxisRight,\n AxisTop,\n TextBox,\n} from \"../components/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\n\nconst testLineShape = new shapes.Line();\nconst testTextBox = new TextBox();\nimport Viz from \"./Viz.js\";\n\nimport {default as discreteBuffer} from \"./plotBuffers/discreteBuffer.js\";\nimport {default as BarBuffer} from \"./plotBuffers/Bar.js\";\nimport {default as BoxBuffer} from \"./plotBuffers/Box.js\";\nimport {default as CircleBuffer} from \"./plotBuffers/Circle.js\";\nimport {default as LineBuffer} from \"./plotBuffers/Line.js\";\nimport {default as RectBuffer} from \"./plotBuffers/Rect.js\";\nconst defaultBuffers = {\n Bar: BarBuffer,\n Box: BoxBuffer,\n Circle: CircleBuffer,\n Line: LineBuffer,\n Rect: RectBuffer,\n};\n\n/**\n Logic for determining default sizes of shapes using the sizeScaleD3 internal function.\n @private\n*/\nfunction defaultSize(this: any, d: any) {\n return this._sizeScaleD3(this._size ? this._size(d) : null);\n}\n\n/**\n Logic for determining stackOrder ascending using groups.\n @private\n*/\nfunction stackOrderAscending(series: any) {\n const sums = series.map(stackSum);\n const keys = series.map((d: any) => d.key.split(\"_\")[0]);\n return d3Shape\n .stackOrderNone(series)\n .sort((a: any, b: any) => keys[b].localeCompare(keys[a]) || sums[a] - sums[b]);\n}\n\n/**\n Logic for determining stackOrder descending using groups.\n @private\n*/\nfunction stackOrderDescending(series: any) {\n return stackOrderAscending(series).reverse();\n}\n\n/**\n Logic for determining default sum of shapes using the stackSum function used in d3Shape.\n @private\n*/\nfunction stackSum(series: any) {\n let i = -1,\n s = 0,\n v;\n const n = series.length;\n while (++i < n) if ((v = +series[i][1])) s += v;\n return s;\n}\n\n/**\n Logic for determining default sum of shapes using the stackSum function used in d3Shape.\n @private\n*/\nfunction stackOffsetDiverging(series: any, order: any) {\n let n;\n if (!((n = series.length) > 0)) return;\n let d, dy, i, yn, yp;\n const m = series[order[0]].length;\n for (let j = 0; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n ((d[0] = yp), (d[1] = yp += dy));\n } else if (dy < 0) {\n ((d[1] = yn), (d[0] = yn += dy));\n } else {\n d[0] = yp;\n }\n }\n }\n}\n\n/**\n * Determines if a Bar label should be placed outside of the Bar.\n * @param {@} d\n * @param {*} i\n * @private\n */\nfunction outside(this: any, d: any, i: any) {\n // Force all Stacked Bars to use \"inside\" labels.\n if (this._stacked) return false;\n\n // Detect user \"outside\" or \"inside\" override.\n const labelPosition = this._labelPosition(d, i);\n if (labelPosition === \"outside\") return true;\n else if (labelPosition === \"inside\") return false;\n\n // Run \"auto\" logic based on available space.\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const nonDiscrete = this._discrete.replace(this._discrete.charAt(0), other);\n const range = (this as any)[`_${nonDiscrete}Axis`]._d3Scale.range();\n const value = (this as any)[`_${nonDiscrete}`](d, i);\n const negative = value < 0;\n const zero = (this as any)[`_${nonDiscrete}Axis`]._getPosition(0);\n const space =\n nonDiscrete === \"y\"\n ? negative\n ? range[1] - zero\n : zero - range[0]\n : negative\n ? zero - range[0]\n : range[1] - zero;\n const pos = (this as any)[`_${nonDiscrete}Axis`]._getPosition(value);\n const size = Math.abs(negative ? zero - pos : pos - zero);\n return size < space / 2;\n}\n\n/**\n Creates an x/y plot based on an array of data.\n*/\nexport default class Plot 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._axisPersist = false;\n this._annotations = [];\n this._backgroundConfig = {\n duration: 0,\n fill: \"transparent\",\n };\n this._barPadding = 0;\n this._buffer = assign({}, defaultBuffers, {Bar: false, Line: false});\n this._confidenceConfig = {\n fill: (d: any, i: any) => {\n const c =\n typeof this._shapeConfig.Line.stroke === \"function\"\n ? this._shapeConfig.Line.stroke(d, i)\n : this._shapeConfig.Line.stroke;\n return c;\n },\n fillOpacity: constant(0.5),\n };\n this._discreteCutoff = 100;\n this._groupPadding = 5;\n this._labelConnectorConfig = {\n strokeDasharray: \"1 1\",\n };\n this._labelPosition = constant(\"auto\");\n this._lineMarkerConfig = {\n fill: (d: any, i: any) => colorAssign(this._id(d, i)),\n r: constant(3),\n };\n this._lineMarkers = false;\n this._previousAnnotations = {back: [], front: []};\n this._previousShapes = [];\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n Area: {\n label: (d: any, i: any) => (this._stacked ? this._drawLabel(d, i) : false),\n labelBounds: (d: any, i: any, aes: any) => {\n let r = largestRect(aes.points, {angle: range(-20, 20, 5)});\n if (!r || r.height < 20 || r.width < 50)\n r = largestRect(aes.points, {angle: range(-80, 80, 5)});\n if (!r) return null;\n const x = min(aes.points, (d: any) => d[0]) as unknown as number;\n const y = max(\n aes.points.filter((d: any) => d[0] === x),\n (d: any) => d[1],\n ) as unknown as number;\n return {\n angle: r.angle,\n width: r.width,\n height: r.height,\n x: r.cx - r.width / 2 - x,\n y: r.cy - r.height / 2 - y,\n };\n },\n labelConfig: {\n fontMin: 6,\n fontResize: true,\n padding: 10,\n },\n },\n ariaLabel: (d: any, i: any) => {\n let ariaLabelStr = \"\";\n if (d.nested) ariaLabelStr = `${this._drawLabel(d.data, d.i)}`;\n else {\n ariaLabelStr = `${this._drawLabel(d, i)}`;\n if (this._x(d, i) !== undefined)\n ariaLabelStr += `, x: ${this._x(d, i)}`;\n if (this._y(d, i) !== undefined)\n ariaLabelStr += `, y: ${this._y(d, i)}`;\n if (this._x2(d, i) !== undefined)\n ariaLabelStr += `, x2: ${this._x2(d, i)}`;\n if (this._y2(d, i) !== undefined)\n ariaLabelStr += `, y2: ${this._y2(d, i)}`;\n }\n return `${ariaLabelStr}.`;\n },\n Bar: {\n labelBounds(this: any, d: any, i: any, s: any) {\n const padding = 1;\n\n const width = this._discrete === \"y\" ? \"width\" : \"height\";\n const height = this._discrete === \"y\" ? \"height\" : \"width\";\n\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const invert = other === \"y\";\n const nonDiscrete = this._discrete.replace(\n this._discrete.charAt(0),\n other,\n );\n const range = (this as any)[`_${nonDiscrete}Axis`]._d3Scale.range();\n const space = Math.abs(range[1] - range[0]);\n const negative = (this as any)[`_${nonDiscrete}`](d, i) < 0;\n\n if (outside.bind(this)(d, i)) {\n return {\n [width]: space - s[width],\n [height]: s[height],\n x: invert ? -s.width / 2 : negative ? -space : s.width + padding,\n y: invert\n ? negative\n ? s.height + padding\n : -space\n : -s.height / 2 + 1,\n };\n }\n return {\n [width]: s[width],\n [height]: s[height],\n x: invert\n ? -s.width / 2\n : negative\n ? this._stacked\n ? padding - s.width\n : padding - s.width\n : -padding,\n y: invert\n ? negative\n ? this._stacked\n ? padding\n : padding\n : -s.height + padding\n : -s.height / 2 + padding,\n };\n },\n labelConfig: {\n fontMax: 16,\n fontMin: 6,\n fontResize: true,\n fontColor(this: any, d: any, i: any) {\n if (outside.bind(this)(d, i)) {\n const bg: string = this._backgroundConfig.fill === \"transparent\"\n ? backgroundColor(this._select.node())\n : this._backgroundConfig.fill;\n return colorContrast(bg);\n }\n return colorContrast(\n typeof this._shapeConfig.fill === \"function\"\n ? this._shapeConfig.fill(d, i)\n : this._shapeConfig.fill,\n );\n },\n fontStroke(this: any, d: any, i: any) {\n if (outside.bind(this)(d, i)) {\n const bg: string = this._backgroundConfig.fill === \"transparent\"\n ? backgroundColor(this._select.node())\n : this._backgroundConfig.fill;\n return colorContrast(bg);\n }\n return \"transparent\";\n },\n fontStrokeWidth(this: any, d: any, i: any) {\n return outside.bind(this)(d, i) ? 0.1 : 0;\n },\n padding: 3,\n textAnchor(this: any, d: any, i: any): string {\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const invert = other === \"y\";\n const nonDiscrete: string = this._discrete.replace(\n this._discrete.charAt(0),\n other,\n );\n const negative = (this as any)[`_${nonDiscrete}`](d, i) < 0;\n const anchor = invert\n ? \"middle\"\n : outside.bind(this)(d, i)\n ? negative\n ? \"end\"\n : \"start\"\n : negative\n ? \"start\"\n : \"end\";\n return rtl()\n ? anchor === \"start\"\n ? \"end\"\n : anchor === \"end\"\n ? \"start\"\n : anchor\n : anchor;\n },\n verticalAlign(this: any, d: any, i: any): string {\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const invert = other === \"y\";\n const nonDiscrete: string = this._discrete.replace(\n this._discrete.charAt(0),\n other,\n );\n const negative = (this as any)[`_${nonDiscrete}`](d, i) < 0;\n return invert\n ? outside.bind(this)(d, i)\n ? negative\n ? \"top\"\n : \"bottom\"\n : negative\n ? \"bottom\"\n : \"top\"\n : \"middle\";\n },\n },\n },\n Circle: {\n r: defaultSize.bind(this),\n },\n Line: {\n curve: () =>\n this._discrete\n ? `monotone${this._discrete.charAt(0).toUpperCase()}`\n : \"linear\",\n fill: constant(\"none\"),\n labelConfig: {\n fontColor: (d: any, i: any) => {\n const c =\n typeof this._shapeConfig.Line.stroke === \"function\"\n ? this._shapeConfig.Line.stroke(d, i)\n : this._shapeConfig.Line.stroke;\n return colorLegible(c);\n },\n fontResize: false,\n padding: 5,\n textAnchor: \"start\",\n verticalAlign: \"middle\",\n },\n strokeWidth: constant(2),\n },\n Rect: {\n height: (d: any) => defaultSize.bind(this)(d) * 2,\n width: (d: any) => defaultSize.bind(this)(d) * 2,\n },\n });\n this._shapeOrder = [\"Area\", \"Path\", \"Bar\", \"Box\", \"Line\", \"Rect\", \"Circle\"];\n this._shapeSort = (a: any, b: any) =>\n this._shapeOrder.indexOf(a) - this._shapeOrder.indexOf(b);\n this._sizeMax = 20;\n this._sizeMin = 5;\n this._sizeScale = \"sqrt\";\n this._stackOffset = stackOffsetDiverging;\n this._stackOrder = stackOrderDescending;\n this._timelineConfig = assign(this._timelineConfig, {\n brushMin: () =>\n this._xTime || this._yTime || this._x2Time || this._y2Time ? 2 : 1,\n });\n\n this._x = accessor(\"x\");\n this._xKey = \"x\";\n this._xAxis = new AxisBottom().align(\"end\");\n this._xTest = new AxisBottom().align(\"end\").gridSize(0);\n this._xConfig = {\n gridConfig: {\n stroke: (d: any) => {\n if (this._discrete && this._discrete.charAt(0) === \"x\")\n return \"transparent\";\n const range = this._xAxis.range();\n const position = this._xAxis._getPosition.bind(this._xAxis)(d.id);\n if (range[0] === position) return \"transparent\";\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n const contrast = colorContrast(bg);\n return contrast === colorDefaults.dark ? openColor.colors.gray[200] : openColor.colors.gray[600];\n },\n },\n };\n this._xCutoff = 150;\n\n this._x2 = accessor(\"x2\");\n this._x2Key = \"x2\";\n this._x2Axis = new AxisTop().align(\"start\");\n this._x2Test = new AxisTop().align(\"start\").gridSize(0);\n this._x2Config = {};\n\n this._y = accessor(\"y\");\n this._yKey = \"y\";\n this._yAxis = new AxisLeft().align(\"start\");\n this._yKey = \"y\";\n this._yTest = new AxisLeft().align(\"start\").gridSize(0);\n this._yConfig = {\n gridConfig: {\n stroke: (d: any) => {\n if (this._discrete && this._discrete.charAt(0) === \"y\")\n return \"transparent\";\n const range = this._yAxis.range();\n const position = this._yAxis._getPosition.bind(this._yAxis)(d.id);\n if (range[range.length - 1] === position) return \"transparent\";\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n const contrast = colorContrast(bg);\n return contrast === colorDefaults.dark ? openColor.colors.gray[200] : openColor.colors.gray[600];\n },\n },\n };\n this._yCutoff = 150;\n\n this._y2 = accessor(\"y2\");\n this._y2Key = \"y2\";\n this._y2Axis = new AxisRight().align(\"end\");\n this._y2Test = new AxisLeft().align(\"end\").gridSize(0);\n this._y2Config = {};\n }\n\n /**\n Extends the preDraw behavior of the abstract Viz class.\n @private\n*/\n _preDraw() {\n // logic repeated for each axis\n [\"x\", \"y\", \"x2\", \"y2\"].forEach(k => {\n // if user has supplied a String key as the main method value\n if (this[`_${k}Key`]) {\n const str = this[`_${k}Key`];\n\n // if axis is discrete and numerical, do not sum values\n if (!this._aggs[str] && this._discrete === k) {\n this._aggs[str] = (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\n // set axis title if not discrete\n if (\n str !== k &&\n this[`_${k}Title`] === this[`_${k}Config`].title &&\n this._discrete !== k\n ) {\n this[`_${k}Title`] = str;\n this[`_${k}Config`].title = str;\n }\n }\n });\n\n super._preDraw();\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n if (!this._filteredData.length && !this._annotations.length) return this;\n\n /* Determines whether or not any of the x or y axes are a \"time\" axis.*/\n const firstElemTime = this._time\n ? this._time(this._filteredData[0], 0)\n : false;\n const x2Time = (this._x2Time =\n firstElemTime && this._x2(this._filteredData[0], 0) === firstElemTime),\n xTime = (this._xTime =\n firstElemTime && this._x(this._filteredData[0], 0) === firstElemTime),\n y2Time = (this._y2Time =\n firstElemTime && this._y2(this._filteredData[0], 0) === firstElemTime),\n yTime = (this._yTime =\n firstElemTime && this._y(this._filteredData[0], 0) === firstElemTime);\n\n const timeAxis = xTime || x2Time || yTime || y2Time;\n\n const stackGroup = (d: any, i: any) =>\n `${!timeAxis && this._time ? this._time(d, i) : \"time\"}_${\n this._stacked\n ? `${\n this._groupBy.length > 1\n ? this._ids(d, i).slice(0, -1).join(\"_\")\n : \"group\"\n }`\n : `${this._ids(d, i).join(\"_\")}`\n }`;\n\n const prepData = (d: any, i: any) => {\n const newD: Record<string, unknown> = {\n __d3plus__: true,\n data: d,\n group: stackGroup(d, i),\n i,\n hci:\n this._confidence && this._confidence[1] && this._confidence[1](d, i),\n id: this._ids(d, i)\n .slice(0, this._drawDepth + 1)\n .join(\"_\"),\n lci:\n this._confidence && this._confidence[0] && this._confidence[0](d, i),\n shape: this._shape(d, i),\n x: xTime ? date(this._x(d, i)) : this._x(d, i),\n x2: x2Time ? date(this._x2(d, i)) : this._x2(d, i),\n y: yTime ? date(this._y(d, i)) : this._y(d, i),\n y2: y2Time ? date(this._y2(d, i)) : this._y2(d, i),\n };\n newD.discrete =\n newD.shape === \"Bar\"\n ? `${newD[this._discrete]}_${newD.group}`\n : `${newD[this._discrete]}`;\n newD.id =\n newD.shape === \"Bar\" ? `${newD.id}_${newD[this._discrete]}` : newD.id;\n return newD;\n };\n\n const data = (this._formattedData = this._filteredData.map(prepData));\n const axisData = this._axisPersist ? this._data.map(prepData) : data;\n\n if (this._size) {\n const rExtent = extent(axisData, (d: Record<string, unknown>) =>\n this._size(d.data),\n );\n this._sizeScaleD3 = (scales as any)[\n `scale${this._sizeScale.charAt(0).toUpperCase()}${this._sizeScale.slice(\n 1,\n )}`\n ]()\n .domain(rExtent)\n .range([\n rExtent[0] === rExtent[1]\n ? this._sizeMax\n : min([this._sizeMax / 2, this._sizeMin]),\n this._sizeMax,\n ]);\n } else {\n this._sizeScaleD3 = () => this._sizeMin;\n }\n\n const x2Exists = axisData.some((d: any) => d.x2 !== undefined),\n y2Exists = axisData.some((d: any) => d.y2 !== undefined);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n opp = this._discrete ? (this._discrete === \"x\" ? \"y\" : \"x\") : undefined,\n opp2 = this._discrete\n ? this._discrete === \"x\"\n ? \"y2\"\n : \"x2\"\n : undefined,\n opps = [opp, opp2].filter(d => d),\n parent = this._select,\n transition = this._transition,\n width = this._width - this._margin.left - this._margin.right;\n\n /**\n Returns all unique values for a given axis.\n @param axis Which axis to return values for, \"x\" or \"y\".\n @private\n*/\n function getAxisValues(this: any, axis: string) {\n const timeData = this[`_${axis}Time`];\n const localData = timeData ? data : axisData;\n\n const filteredData = localData.filter(\n (d: any) => ![NaN, undefined, false].includes(d[axis]),\n );\n\n if (!filteredData.length) return [];\n\n const numericValue = typeof filteredData[0][axis] === \"number\";\n\n let myData =\n this._discrete === axis\n ? rollups(\n filteredData,\n (leaves: Record<string, unknown>[]) =>\n leaves.length === 1\n ? leaves[0].data\n : d3plusMerge(\n leaves.map(d => d.data) as DataPoint[],\n this._aggs,\n ),\n (d: Record<string, unknown>) => d[axis],\n )\n .sort((a: [unknown, unknown], b: [unknown, unknown]) => {\n if (this[`_${axis}Sort`])\n return this[`_${axis}Sort`](a[1], b[1]);\n const aKey =\n timeData || numericValue\n ? parseFloat(a[0] as string)\n : (a[0] as number);\n const bKey =\n timeData || numericValue\n ? parseFloat(b[0] as string)\n : (b[0] as number);\n return aKey - bKey;\n })\n .map(([key]: [unknown, unknown]) =>\n timeData\n ? date(key as string | number)\n : numericValue\n ? parseFloat(key as string)\n : key,\n )\n : unique(\n filteredData\n .sort((a: any, b: any) =>\n this[`_${axis}Sort`]\n ? this[`_${axis}Sort`](a.data, b.data)\n : a[axis] - b[axis],\n )\n .map((d: any) => d[axis]),\n (d: any) => `${d}`,\n );\n\n if (this._discrete !== axis.charAt(0) && this._confidence) {\n if (this._confidence[0])\n myData = myData.concat(localData.map((d: any) => d.lci));\n if (this._confidence[1])\n myData = myData.concat(localData.map((d: any) => d.hci));\n }\n\n return myData;\n }\n\n const xData = getAxisValues.bind(this)(\"x\");\n const x2Data = getAxisValues.bind(this)(\"x2\");\n const yData = getAxisValues.bind(this)(\"y\");\n const y2Data = getAxisValues.bind(this)(\"y2\");\n\n let discreteKeys: any[], domains: any, stackData: any[], stackKeys: any[];\n if (this._stacked) {\n const stackedData = axisData.filter((d: any) =>\n [\"Area\", \"Bar\"].includes(d.shape),\n );\n\n const groupValues = groups(\n stackedData,\n (d: Record<string, unknown>) => d.group as string,\n ).reduce((obj: Record<string, number>, [key, values]) => {\n if (!obj[key]) obj[key] = 0;\n obj[key] += sum(\n values as Record<string, number>[],\n (dd: Record<string, number>) => dd[opp as string],\n );\n return obj;\n }, {});\n\n axisData.sort((a: any, b: any) => {\n if (this[`_${this._discrete}Sort`])\n return this[`_${this._discrete}Sort`](a.data, b.data);\n const a1 = a[this._discrete],\n b1 = b[this._discrete];\n if (a1 - b1 !== 0) return a1 - b1;\n if (a.group !== b.group)\n return groupValues[b.group] - groupValues[a.group];\n return b[opp as string] - a[opp as string];\n });\n\n discreteKeys = Array.from(new Set(axisData.map((d: any) => d.discrete)));\n stackKeys = Array.from(new Set(axisData.map((d: any) => d.id)));\n\n stackData = groups(\n axisData,\n (d: Record<string, unknown>) => d.discrete,\n ).map(([, values]) => values);\n\n stackData.forEach((g: any[]) => {\n const ids = Array.from(new Set(g.map((d: any) => d.id)));\n if (ids.length < stackKeys.length) {\n stackKeys.forEach((k: any) => {\n if (!ids.includes(k)) {\n const d = axisData.filter((d: any) => d.id === k)[0];\n if (d.shape === \"Area\") {\n const group = stackGroup(d.data, d.i);\n const fillerPoint: Record<string, unknown> = {\n __d3plus__: true,\n data: d.data,\n discrete:\n d.shape === \"Bar\"\n ? `${g[0][this._discrete]}_${group}`\n : `${g[0][this._discrete]}`,\n group,\n id: d.id,\n ids: k,\n shape: d.shape,\n [this._discrete]: g[0][this._discrete],\n [opp as string]: 0,\n };\n data.push(fillerPoint);\n }\n }\n });\n }\n });\n\n if (this[`_${this._discrete}Sort`]) {\n data.sort((a: any, b: any) => this[`_${this._discrete}Sort`](a.data, b.data));\n } else {\n data.sort((a: any, b: any) => a[this._discrete] - b[this._discrete]);\n }\n\n const order = this._stackOrder;\n\n if (order instanceof Array)\n stackKeys.sort((a: any, b: any) => order.indexOf(a) - order.indexOf(b));\n else if (order === d3Shape.stackOrderNone)\n stackKeys.sort((a: any, b: any) => a.localeCompare(b));\n\n stackData = (d3Shape\n .stack()\n .keys(stackKeys)\n .offset(this._stackOffset)\n .order(order instanceof Array ? d3Shape.stackOrderNone : order)\n .value(((group: Record<string, unknown>[], key: string) => {\n const d = (group as any[]).filter((g: any) => g.id === key);\n return d.length ? (d[0] as any)[opp as string] : 0;\n }) as never) as any)(stackData);\n\n const discreteData = this._discrete === \"x\" ? xData : yData;\n\n domains = {\n [this._discrete]: this[`_${this._discrete}Time`]\n ? extent(discreteData as any[])\n : discreteData,\n [opp as string]: [\n min(stackData.map((g: any) => min(g.map((p: any) => p[0])) as unknown as number)),\n max(stackData.map((g: any) => max(g.map((p: any) => p[1])) as unknown as number)),\n ],\n };\n } else {\n const discrete = this._discrete || \"x\";\n\n if (this[`_${this._discrete}Sort`]) {\n axisData.sort((a: any, b: any) => this[`_${this._discrete}Sort`](a.data, b.data));\n } else {\n axisData.sort((a: any, b: any) => a[discrete] - b[discrete]);\n }\n\n domains = {\n x:\n (!xTime && this._discrete === \"x\") || this._xSort\n ? xData\n : extent(xData as any[]),\n x2:\n (!x2Time && this._discrete === \"x\") || this._x2Sort\n ? x2Data\n : extent(x2Data as any[]),\n y:\n (!yTime && this._discrete === \"y\") || this._ySort\n ? yData\n : extent(yData as any[]),\n y2:\n (!y2Time && this._discrete === \"y\") || this._y2Sort\n ? y2Data\n : extent(y2Data as any[]),\n };\n }\n\n /**\n * Determins default scale type and domain for a given axis.\n * @param {String} axis\n * @private\n */\n function domainScaleSetup(this: any, axis: any) {\n const scale = this[`_${axis}Time`]\n ? \"Time\"\n : this._discrete === axis || this[`_${axis}Sort`]\n ? \"Point\"\n : \"Linear\";\n\n const domain = this[`_${axis}Domain`]\n ? this[`_${axis}Domain`].slice()\n : domains[axis],\n domain2 = this[`_${axis}2Domain`]\n ? this[`_${axis}2Domain`].slice()\n : domains[`${axis}2`];\n\n if (scale !== \"Point\") {\n if (domain && domain[0] === void 0) domain[0] = domains[axis][0];\n if (domain && domain[1] === void 0) domain[1] = domains[axis][1];\n\n if (domain2 && domain2[0] === void 0)\n domain2[0] = domains[`${axis}2`][0];\n if (domain2 && domain2[1] === void 0)\n domain2[1] = domains[`${axis}2`][1];\n }\n\n return [domain, scale, domain2, scale];\n }\n\n const [xAutoDomain, xScale, x2AutoDomain, x2Scale] =\n domainScaleSetup.bind(this)(\"x\");\n const [yAutoDomain, yScale, y2AutoDomain, y2Scale] =\n domainScaleSetup.bind(this)(\"y\");\n\n const autoScale = (axis: any, fallback: any) => {\n const userScale = this[`_${axis}Config`].scale;\n if (userScale === \"auto\") {\n if (this._discrete === axis) return fallback;\n const values = axisData.map((d: any) => d[axis]);\n return deviation(values)! / mean(values)! > 3 ? \"log\" : \"linear\";\n }\n return userScale || fallback;\n };\n\n const yConfigScale = (this._yConfigScale = autoScale(\n \"y\",\n yScale,\n ).toLowerCase());\n const y2ConfigScale = (this._y2ConfigScale = autoScale(\n \"y2\",\n y2Scale,\n ).toLowerCase());\n const xConfigScale = (this._xConfigScale = autoScale(\n \"x\",\n xScale,\n ).toLowerCase());\n const x2ConfigScale = (this._x2ConfigScale = autoScale(\n \"x2\",\n x2Scale,\n ).toLowerCase());\n\n domains = {\n x: xAutoDomain,\n x2: x2AutoDomain || xAutoDomain,\n y: yAutoDomain,\n y2: y2AutoDomain || yAutoDomain,\n };\n Object.keys(domains).forEach(axis => {\n if (this[`_${axis}ConfigScale`] === \"log\" && domains[axis].includes(0)) {\n if ((min(domains[axis]) as unknown as number) < 0)\n domains[axis][1] = max(\n data\n .map((d: any) => d[axis])\n .filter((d: any) => ![NaN, undefined, false].includes(d)),\n );\n else\n domains[axis][0] = min(\n axisData\n .map((d: any) => d[axis])\n .filter((d: any) => ![NaN, undefined, false].includes(d)),\n );\n }\n });\n\n opps.forEach(opp => {\n if (this[`_${opp}Config`].domain) {\n const d = this[`_${opp}Config`].domain;\n if (this._discrete === \"x\") d.reverse();\n domains[opp!] = d;\n } else if (opp && this._baseline !== void 0) {\n const b = this._baseline;\n if (domains[opp] && domains[opp][0] > b) domains[opp][0] = b;\n else if (domains[opp] && domains[opp][1] < b) domains[opp][1] = b;\n }\n });\n\n let x = (scales as any)[`scale${xScale}`]()\n .domain(domains.x)\n .range(range(0, width + 1, width / (domains.x.length - 1))),\n x2 = (scales as any)[`scale${x2Scale}`]()\n .domain(domains.x2)\n .range(range(0, width + 1, width / (domains.x2.length - 1))),\n y = (scales as any)[`scale${yScale}`]()\n .domain(domains.y.reverse())\n .range(range(0, height + 1, height / (domains.y.length - 1))),\n y2 = (scales as any)[`scale${y2Scale}`]()\n .domain(domains.y2.reverse())\n .range(range(0, height + 1, height / (domains.y2.length - 1)));\n\n const shapeData = groups(\n data,\n (d: Record<string, unknown>) => d.shape as string,\n ).sort(([a], [b]) => this._shapeSort(a, b));\n\n const oppScale = this._discrete === \"x\" ? yScale : xScale;\n if (oppScale !== \"Point\") {\n const allShapeData = groups(\n axisData,\n (d: Record<string, unknown>) => d.shape as string,\n );\n\n allShapeData.forEach(([key, values]) => {\n if ([\"Bar\", \"Box\"].includes(key)) {\n discreteBuffer(this._discrete === \"x\" ? x : y, data, this._discrete);\n }\n if (this._buffer[key]) {\n const res = this._buffer[key].bind(this)({\n data: values,\n x,\n y,\n yScale: yConfigScale,\n xScale: xConfigScale,\n config: this._shapeConfig[key],\n });\n x = res[0];\n y = res[1];\n const res2 = this._buffer[key].bind(this)({\n data: values,\n x: x2,\n y: y2,\n yScale: y2ConfigScale,\n xScale: x2ConfigScale,\n x2: true,\n y2: true,\n config: this._shapeConfig[key],\n });\n x2 = res2[0];\n y2 = res2[1];\n }\n });\n }\n\n const xDomain = x.domain();\n const x2Domain = x2.domain();\n const yDomain = y.domain();\n const y2Domain = y2.domain();\n\n const defaultConfig = {\n barConfig: {\"stroke-width\": 0},\n gridSize: 0,\n labels: [],\n title: false,\n tickSize: 0,\n };\n\n const defaultX2Config = x2Exists ? {data: x2Data} : defaultConfig;\n const defaultY2Config = y2Exists ? {data: y2Data} : defaultConfig;\n const showX =\n this._discrete === \"x\"\n ? this._width > this._discreteCutoff && this._width > this._xCutoff\n : this._width > this._xCutoff;\n const showY =\n this._discrete === \"y\"\n ? this._height > this._discreteCutoff && this._height > this._yCutoff\n : this._height > this._yCutoff;\n\n const yC: Record<string, unknown> = {\n data: yData,\n locale: this._locale,\n rounding: this._yDomain ? \"none\" : \"outside\",\n scalePadding: y.padding ? y.padding() : 0,\n };\n if (!showX && showY) {\n yC.barConfig = {stroke: \"transparent\"};\n yC.tickSize = 0;\n yC.shapeConfig = {\n labelBounds: (d: any, i: any) => {\n const {width, y} = d.labelBounds;\n const height = this._height / 2;\n const x = i ? -height : 0;\n return {x, y, width, height};\n },\n labelConfig: {\n padding: 0,\n rotate: 0,\n },\n labelRotation: false,\n };\n }\n\n const testGroup = elem(\"g.d3plus-plot-test\", {\n enter: {opacity: 0},\n parent: this._select,\n });\n\n /**\n * Hides an axis' ticks and labels if they all exist as labels for the data to be displayed,\n * primarily occuring in simple BarChart visualizations where the both the x-axis ticks and\n * the Bar rectangles would be displaying the same text.\n */\n\n // generates an Array of String labels using the current label function for Bar shapes\n const barConfig = (configPrep as any).bind(this)(this._shapeConfig, \"shape\", \"Bar\");\n const barLabelFunction =\n barConfig.label !== undefined\n ? typeof barConfig.label === \"function\"\n ? barConfig.label\n : constant(barConfig.label)\n : this._drawLabel;\n const barLabels = axisData\n .map((d: any) => barLabelFunction(d.data, d.i))\n .filter((d: any) => typeof d === \"number\" || d)\n .map(String);\n\n // sets an axis' ticks to [] if the axis scale is \"Point\" (discrete) and every tick String\n // is also in the barLabels Array\n let x2Ticks: unknown[] | null = unique(axisData.map((d: any) => d.x2));\n x2Ticks =\n x2Scale === \"Point\" && x2Ticks.every(t => barLabels.includes(`${t}`))\n ? ([] as unknown[])\n : null;\n let xTicks: unknown[] | null = unique(axisData.map((d: any) => d.x));\n xTicks =\n xScale === \"Point\" && xTicks.every(t => barLabels.includes(`${t}`))\n ? ([] as unknown[])\n : null;\n let y2Ticks: unknown[] | null = unique(axisData.map((d: any) => d.y2));\n y2Ticks =\n y2Scale === \"Point\" && y2Ticks.every(t => barLabels.includes(`${t}`))\n ? ([] as unknown[])\n : null;\n let yTicks: unknown[] | null = unique(axisData.map((d: any) => d.y));\n yTicks =\n yScale === \"Point\" && yTicks.every(t => barLabels.includes(`${t}`))\n ? ([] as unknown[])\n : null;\n\n if (showY) {\n this._yTest\n .domain(yDomain)\n .height(height)\n .maxSize(width / 2)\n .range([undefined, undefined])\n .select(testGroup.node())\n .ticks(yTicks)\n .width(width)\n .config(yC)\n .config(this._yConfig)\n .scale(yConfigScale)\n .render();\n }\n\n let yBounds = this._yTest.outerBounds();\n let yWidth = yBounds.width\n ? yBounds.width + this._yTest.padding()\n : undefined;\n\n if (y2Exists) {\n this._y2Test\n .domain(y2Domain)\n .height(height)\n .range([undefined, undefined])\n .select(testGroup.node())\n .ticks(y2Ticks)\n .width(width)\n .config(yC)\n .config(defaultY2Config)\n .config(this._y2Config)\n .scale(y2ConfigScale)\n .render();\n }\n\n let y2Bounds = this._y2Test.outerBounds();\n let y2Width = y2Bounds.width\n ? y2Bounds.width + this._y2Test.padding()\n : undefined;\n const xC: Record<string, unknown> = {\n data: xData,\n locale: this._locale,\n rounding: this._xDomain ? \"none\" : \"outside\",\n scalePadding: x.padding ? x.padding() : 0,\n };\n if (!showY && showX) {\n xC.barConfig = {stroke: \"transparent\"};\n xC.tickSize = 0;\n xC.shapeConfig = {\n labelBounds: (d: any, i: any) => {\n const {height, y} = d.labelBounds;\n const width = this._width / 2;\n const x = i ? -width : 0;\n return {x, y, width, height};\n },\n labelConfig: {\n padding: 0,\n rotate: 0,\n textAnchor: (d: any) => (xTicks && d.id === xTicks[0] ? \"start\" : \"end\"),\n },\n labelRotation: false,\n };\n }\n\n let xRangeMax = undefined;\n\n if (showX) {\n this._xTest\n .domain(xDomain)\n .height(height)\n .maxSize(height / 2)\n .range([undefined, xRangeMax])\n .select(testGroup.node())\n .ticks(xTicks)\n .width(width)\n .config(xC)\n .config(this._xConfig)\n .scale(xConfigScale)\n .render();\n }\n\n let largestLabel: any,\n labelWidths: any[] = [];\n const showLineLabels = this._lineLabels && !y2Exists;\n if (showLineLabels) {\n const labelData = data.filter((d: any) => {\n if (d.shape !== \"Line\") return false;\n return typeof this._lineLabels === \"function\"\n ? this._lineLabels(d.data, d.i)\n : true;\n });\n\n const lineData = groups(labelData, (d: Record<string, unknown>) => d.id);\n\n if (lineData.length) {\n const userConfig = (configPrep as any).bind(this)(\n this._shapeConfig,\n \"shape\",\n \"Line\",\n );\n testLineShape.config(userConfig);\n const lineLabelConfig = testLineShape.labelConfig();\n const fontColorAccessor =\n lineLabelConfig.fontColor !== undefined\n ? lineLabelConfig.fontColor\n : testTextBox.fontColor();\n const fontSizeAccessor =\n lineLabelConfig.fontSize !== undefined\n ? lineLabelConfig.fontSize\n : testTextBox.fontSize();\n const fontWeightAccessor =\n lineLabelConfig.fontWeight !== undefined\n ? lineLabelConfig.fontWeight\n : testTextBox.fontWeight();\n const fontFamilyAccessor =\n lineLabelConfig.fontFamily !== undefined\n ? lineLabelConfig.fontFamily\n : testTextBox.fontFamily();\n const paddingAccessor =\n lineLabelConfig.padding !== undefined\n ? lineLabelConfig.padding\n : testTextBox.padding();\n const labelFunction = userConfig.label || this._drawLabel;\n\n const xEstimate = (d: any) => {\n if (xConfigScale === \"log\" && d === 0)\n d =\n xDomain[0] < 0\n ? this._xTest._d3Scale.domain()[1]\n : this._xTest._d3Scale.domain()[0];\n return this._xTest._getPosition.bind(this._xTest)(d);\n };\n\n const yEstimate = (d: any) => {\n if (yConfigScale === \"log\" && d === 0)\n d =\n yDomain[0] < 0\n ? this._yTest._d3Scale.domain()[1]\n : this._yTest._d3Scale.domain()[0];\n return this._yTest._getPosition.bind(this._yTest)(d);\n };\n\n labelWidths = lineData\n .map(\n ([lineKey, lineValues]: [unknown, Record<string, unknown>[]]) => {\n let d = lineValues[lineValues.length - 1] as Record<\n string,\n unknown\n >;\n let i;\n while (d.__d3plus__ && d.data) {\n d = d.data as Record<string, unknown>;\n i = d.i;\n }\n const label =\n typeof labelFunction === \"function\"\n ? labelFunction(d, i)\n : labelFunction;\n\n const fontColor =\n typeof fontColorAccessor === \"function\"\n ? fontColorAccessor(d, i)\n : fontColorAccessor;\n const fontSize =\n typeof fontSizeAccessor === \"function\"\n ? fontSizeAccessor(d, i)\n : fontSizeAccessor;\n const fontWeight =\n typeof fontWeightAccessor === \"function\"\n ? fontWeightAccessor(d, i)\n : fontWeightAccessor;\n let fontFamily =\n typeof fontFamilyAccessor === \"function\"\n ? fontFamilyAccessor(d, i)\n : fontFamilyAccessor;\n if (fontFamily instanceof Array)\n fontFamily = fontFamily.map(f => `'${f}'`).join(\", \");\n const labelPadding =\n typeof paddingAccessor === \"function\"\n ? paddingAccessor(d, i)\n : paddingAccessor;\n\n const labelWidth = textWidth(label, {\n \"font-size\": fontSize,\n \"font-family\": fontFamily,\n \"font-weight\": fontWeight,\n });\n\n const coords = lineValues.map((d: Record<string, unknown>) => [\n xEstimate(d.x),\n yEstimate(d.y),\n ]);\n const myMaxX = max(\n lineValues.map((d: Record<string, unknown>) => xEstimate(d.x)),\n );\n const labelY = (\n lineValues.find(\n (d: Record<string, unknown>) => xEstimate(d.x) === myMaxX,\n ) as Record<string, unknown>\n ).y;\n return {\n id: lineKey,\n labelWidth: labelWidth + labelPadding * 2,\n spaceNeeded: labelWidth + labelPadding * 4,\n value: labelY,\n yEstimate: yEstimate(labelY),\n padding: labelPadding,\n fontSize,\n fontColor,\n maxX: myMaxX,\n xValue: max(\n lineValues,\n (d: Record<string, unknown>) => d.x as number,\n ),\n coords,\n };\n },\n )\n .sort((a, b) =>\n yDomain[1] > yDomain[0]\n ? (a.value as number) - (b.value as number)\n : (b.value as number) - (a.value as number),\n )\n .filter((d, i, arr) => {\n const {fontSize, id, labelWidth, maxX, yEstimate} = d;\n const closeLabels = arr.filter(\n l =>\n l.id !== id &&\n l.coords.some(\n c =>\n (c[0] > maxX || (c[0] === maxX && l.maxX !== maxX)) &&\n c[0] <= maxX + labelWidth &&\n c[1] <= yEstimate + fontSize * 0.75 &&\n c[1] >= yEstimate - fontSize * 0.75,\n ),\n );\n return closeLabels.length === 0;\n });\n\n const maxX = max(labelWidths, d => d.maxX);\n largestLabel = max(labelWidths.map(d => d.labelWidth));\n const spaceNeeded =\n maxX === this._xTest._getRange.bind(this._xTest)()[1]\n ? max(\n labelWidths.filter(d => d.maxX === maxX),\n d => d.spaceNeeded,\n )\n : 0;\n if (spaceNeeded) {\n const labelSpace = min([spaceNeeded, width / 4]);\n xRangeMax = width - labelSpace! - this._margin.right;\n }\n }\n }\n\n if (showX && xRangeMax) {\n this._xTest\n .domain(xDomain)\n .height(height)\n .maxSize(height / 2)\n .range([undefined, xRangeMax])\n .select(testGroup.node())\n .ticks(xTicks)\n .width(width)\n .config(xC)\n .config(this._xConfig)\n .scale(xConfigScale)\n .render();\n }\n\n if (x2Exists) {\n this._x2Test\n .domain(x2Domain)\n .height(height)\n .range([undefined, xRangeMax])\n .select(testGroup.node())\n .ticks(x2Ticks)\n .width(width)\n .config(xC)\n .tickSize(0)\n .config(defaultX2Config)\n .config(this._x2Config)\n .scale(x2ConfigScale)\n .render();\n }\n\n const xTestRange = this._xTest._getRange();\n const x2TestRange = this._x2Test._getRange();\n\n const x2Bounds = this._x2Test.outerBounds();\n const x2Height = x2Exists ? x2Bounds.height + this._x2Test.padding() : 0;\n\n let xOffsetLeft = max([yWidth, xTestRange[0], x2TestRange[0]]);\n\n if (showX) {\n this._xTest.range([xOffsetLeft, undefined]).render();\n }\n\n const topOffset = showY\n ? this._yTest.shapeConfig().labelConfig.fontSize() / 2\n : 0;\n\n let xOffsetRight = max([\n y2Width,\n width - xTestRange[1],\n width - x2TestRange[1],\n ]);\n const xBounds = this._xTest.outerBounds();\n const xHeight = xBounds.height + (showY ? this._xTest.padding() : 0);\n\n this._padding.left += xOffsetLeft;\n this._padding.right += xOffsetRight;\n this._padding.bottom += xHeight;\n this._padding.top += x2Height + topOffset;\n\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const horizontalMargin = this._margin.left + this._margin.right;\n const verticalMargin = this._margin.top + this._margin.bottom;\n let yRange = [x2Height, height - (xHeight + topOffset + verticalMargin)];\n\n if (showY) {\n this._yTest\n .domain(yDomain)\n .height(height)\n .maxSize(width / 2)\n .range(yRange)\n .select(testGroup.node())\n .ticks(yTicks)\n .width(width)\n .config(yC)\n .config(this._yConfig)\n .scale(yConfigScale)\n .render();\n }\n\n yBounds = this._yTest.outerBounds();\n yWidth = yBounds.width ? yBounds.width + this._yTest.padding() : undefined;\n xOffsetLeft = max([yWidth, xTestRange[0], x2TestRange[0]]);\n\n if (y2Exists) {\n this._y2Test\n .config(yC)\n .domain(y2Domain)\n .gridSize(0)\n .height(height)\n .range(yRange)\n .select(testGroup.node())\n .width(width - max([0, xOffsetRight - y2Width])!)\n .title(false)\n .config(this._y2Config)\n .config(defaultY2Config)\n .scale(y2ConfigScale)\n .render();\n }\n\n y2Bounds = this._y2Test.outerBounds();\n y2Width = y2Bounds.width\n ? y2Bounds.width + this._y2Test.padding()\n : undefined;\n xOffsetRight = max([\n 0,\n y2Width,\n width - xTestRange[1],\n width - x2TestRange[1],\n ]);\n const xRange = [xOffsetLeft, width - (xOffsetRight + horizontalMargin)];\n\n const rectGroup = elem(\"g.d3plus-plot-background\", {parent, transition});\n\n const transform = `translate(${this._margin.left}, ${\n this._margin.top + x2Height + topOffset\n })`;\n const x2Transform = `translate(${this._margin.left}, ${\n this._margin.top + topOffset\n })`;\n\n const xGroup = elem(\"g.d3plus-plot-x-axis\", {\n parent,\n transition,\n enter: {transform},\n update: {transform, opacity: showX ? 1 : 0},\n });\n const x2Group =\n x2Exists &&\n elem(\"g.d3plus-plot-x2-axis\", {\n parent,\n transition,\n enter: {transform: x2Transform},\n update: {transform: x2Transform},\n });\n\n const xTrans = xOffsetLeft > yWidth ? xOffsetLeft - yWidth : 0;\n const yTransform = `translate(${this._margin.left + xTrans}, ${\n this._margin.top + topOffset\n })`;\n const yGroup = elem(\"g.d3plus-plot-y-axis\", {\n parent,\n transition,\n enter: {transform: yTransform},\n update: {transform: yTransform, opacity: showY ? 1 : 0},\n });\n\n const y2Transform = `translate(-${this._margin.right}, ${\n this._margin.top + topOffset\n })`;\n const y2Group =\n y2Exists &&\n elem(\"g.d3plus-plot-y2-axis\", {\n parent,\n transition,\n enter: {transform: y2Transform},\n update: {transform: y2Transform},\n });\n\n this._xAxis\n .domain(xDomain)\n .height(height - (x2Height + topOffset + verticalMargin))\n .maxSize(height / 2)\n .range(xRange)\n .select(xGroup.node())\n .ticks(xTicks)\n .width(width)\n .config(xC)\n .config(this._xConfig)\n .scale(xConfigScale)\n .render();\n\n if (x2Exists) {\n this._x2Axis\n .domain(x2Domain)\n .height(height - (xHeight + topOffset + verticalMargin))\n .range(xRange)\n .select(x2Group.node())\n .ticks(x2Ticks)\n .width(width)\n .config(xC)\n .config(defaultX2Config)\n .config(this._x2Config)\n .scale(x2ConfigScale)\n .render();\n }\n\n this._xFunc = x = (d: any, x: any) => {\n if (x === \"x2\") {\n if (x2ConfigScale === \"log\" && d === 0)\n d =\n x2Domain[0] < 0\n ? this._x2Axis._d3Scale.domain()[1]\n : this._x2Axis._d3Scale.domain()[0];\n return this._x2Axis._getPosition.bind(this._x2Axis)(d);\n } else {\n if (xConfigScale === \"log\" && d === 0)\n d =\n xDomain[0] < 0\n ? this._xAxis._d3Scale.domain()[1]\n : this._xAxis._d3Scale.domain()[0];\n return this._xAxis._getPosition.bind(this._xAxis)(d);\n }\n };\n\n yRange = [\n this._xAxis.outerBounds().y + x2Height,\n height - (xHeight + topOffset + verticalMargin),\n ];\n\n this._yAxis\n .domain(yDomain)\n .height(height)\n .maxSize(width / 2)\n .range(yRange)\n .select(yGroup.node())\n .ticks(yTicks)\n .width(xRange[xRange.length - 1])\n .config(yC)\n .config(this._yConfig)\n .scale(yConfigScale)\n .render();\n\n if (y2Exists) {\n this._y2Axis\n .config(yC)\n .domain(y2Exists ? y2Domain : yDomain)\n .gridSize(0)\n .height(height)\n .range(yRange)\n .select(y2Group.node())\n .width(width - max([0, xOffsetRight - y2Width])!)\n .title(false)\n .config(this._y2Config)\n .config(defaultY2Config)\n .scale(y2ConfigScale)\n .render();\n }\n\n let labelPositions = {};\n if (labelWidths) {\n groups(labelWidths as any[], (d: any) => d.xValue).forEach(([, values]) => {\n const minFontSize = max(values.map((d: any) => d.fontSize));\n const yBuckets = range(yRange[0], yRange[1], minFontSize).reverse();\n const bumpLimit = (yRange[1] - yRange[0]) / 8;\n\n /***/\n function bumpPrevious(this: any, d: any, i: any, arr: any) {\n if (!d.defaultY) d.defaultY = this._yAxis._getPosition(d.value);\n if (i) {\n const prev = arr[i - 1];\n const {fontSize, padding} = d;\n const y = d.newY || d.defaultY;\n const prevY = prev.newY || prev.defaultY;\n if (y - fontSize / 2 - padding < prevY) {\n const newY = yBuckets.find(n => n < prevY);\n const change = d.defaultY - newY!;\n if (change < bumpLimit) {\n prev.newY = newY;\n if (i) bumpPrevious(prev, i - 1, arr);\n }\n }\n }\n }\n\n values.forEach(bumpPrevious.bind(this));\n });\n\n labelPositions = (labelWidths as any[]).reduce((obj: any, d: any) => {\n if (d.newY) obj[d.id] = d.newY;\n return obj;\n }, {});\n }\n\n this._yFunc = y = (d: any, y: any) => {\n if (y === \"y2\") {\n if (y2ConfigScale === \"log\" && d === 0)\n d =\n y2Domain[1] < 0\n ? this._y2Axis._d3ScaleNegative.domain()[0]\n : this._y2Axis._d3Scale.domain()[1];\n return this._y2Axis._getPosition.bind(this._y2Axis)(d) - x2Height;\n } else {\n if (yConfigScale === \"log\" && d === 0)\n d =\n yDomain[1] < 0\n ? this._yAxis._d3ScaleNegative.domain()[0]\n : this._yAxis._d3Scale.domain()[1];\n return this._yAxis._getPosition.bind(this._yAxis)(d) - x2Height;\n }\n };\n\n let yOffset = this._xAxis.barConfig()[\"stroke-width\"];\n if (yOffset) yOffset /= 2;\n\n new shapes.Rect()\n .data([{}])\n .select(rectGroup.node())\n .x(xRange[0] + (xRange[1] - xRange[0]) / 2)\n .width(xRange[1] - xRange[0])\n .y(this._margin.top + topOffset + yRange[0] + (yRange[1] - yRange[0]) / 2)\n .height(yRange[1] - yRange[0])\n .config(this._backgroundConfig)\n .render();\n\n const labelConnectors = (labelWidths as any[]).filter((d: any) => d.newY !== undefined);\n if (labelConnectors.length) {\n const connectorGroup = elem(\"g.d3plus-plot-connectors\", {\n parent,\n transition,\n enter: {transform},\n update: {transform},\n }).node();\n const data = labelConnectors\n .map(d =>\n assign(\n {\n x: this._xAxis._getPosition.bind(this._xAxis)(d.xValue),\n y: d.defaultY,\n },\n d,\n ),\n )\n .concat(\n labelConnectors.map(d =>\n assign(\n {\n x:\n this._xAxis._getPosition.bind(this._xAxis)(d.xValue) +\n d.padding -\n 1,\n y: d.newY || d.defaultY,\n },\n d,\n ),\n ),\n );\n\n new shapes.Line()\n .config({\n data: data as DataPoint[],\n stroke: (d: any) => d.fontColor,\n x: (d: any) => d.x,\n y: (d: any) => d.y,\n })\n .config(this._labelConnectorConfig)\n .select(connectorGroup)\n .render();\n }\n\n const annotationGroupBack = elem(\"g.d3plus-plot-annotations\", {\n parent,\n transition,\n enter: {transform},\n update: {transform},\n }).node();\n const shapeGroup = elem(\"g.d3plus-plot-shapes\", {\n parent,\n transition,\n enter: {transform},\n update: {transform},\n }).node();\n const annotationGroupFront = elem(\"g.d3plus-plot-annotations-front\", {\n parent,\n transition,\n enter: {transform},\n update: {transform},\n }).node();\n\n Object.keys(this._previousAnnotations).forEach(layer => {\n const group =\n layer === \"front\" ? annotationGroupFront : annotationGroupBack;\n\n const annotationData = this._annotations.filter(\n (d: any) => (layer === \"back\" && !d.layer) || d.layer === layer,\n );\n const annotationShapes = annotationData.map((d: any) => d.shape);\n annotationData.forEach((annotation: any) => {\n new (shapes as any)[annotation.shape]()\n .duration(this._duration)\n .config(annotation)\n .config({\n x: (d: any) => (d.x2 ? x(d.x2, \"x2\") : x(d.x)),\n x0:\n this._discrete === \"x\"\n ? (d: any) => (d.x2 ? x(d.x2, \"x2\") : x(d.x))\n : x(domains.x[0]),\n x1:\n this._discrete === \"x\"\n ? null\n : (d: any) => (d.x2 ? x(d.x2, \"x2\") : x(d.x)),\n y: (d: any) => (d.y2 ? y(d.y2, \"y2\") : y(d.y)),\n y0:\n this._discrete === \"y\"\n ? (d: any) => (d.y2 ? y(d.y2, \"y2\") : y(d.y))\n : y(domains.y[1]) - yOffset,\n y1:\n this._discrete === \"y\"\n ? null\n : (d: any) => (d.y2 ? y(d.y2, \"y2\") : y(d.y) - yOffset),\n })\n .select(group)\n .render();\n });\n\n const exitAnnotations = this._previousAnnotations[layer].filter(\n (d: any) => !annotationShapes.includes(d),\n );\n\n exitAnnotations.forEach((shape: any) => {\n new (shapes as any)[shape]().data([]).select(group).render();\n });\n\n this._previousAnnotations[layer] = annotationShapes;\n });\n\n const discrete = this._discrete || \"x\";\n\n const shapeConfig = {\n discrete: this._discrete,\n duration: this._duration,\n label: (d: any) => this._drawLabel(d.data, d.i),\n select: shapeGroup,\n x: (d: any) => (d.x2 !== undefined ? x(d.x2, \"x2\") : x(d.x)),\n x0:\n discrete === \"x\"\n ? (d: any) => (d.x2 ? x(d.x2, \"x2\") : x(d.x))\n : x(\n typeof this._baseline === \"number\"\n ? this._baseline\n : domains.x[0],\n ),\n x1: discrete === \"x\" ? null : (d: any) => (d.x2 ? x(d.x2, \"x2\") : x(d.x)),\n y: (d: any) => (d.y2 !== undefined ? y(d.y2, \"y2\") : y(d.y)),\n y0:\n discrete === \"y\"\n ? (d: any) => (d.y2 ? y(d.y2, \"y2\") : y(d.y))\n : y(\n typeof this._baseline === \"number\"\n ? this._baseline\n : domains.y[1],\n ) - yOffset,\n y1:\n discrete === \"y\"\n ? null\n : (d: any) => (d.y2 ? y(d.y2, \"y2\") : y(d.y) - yOffset),\n };\n\n const events = Object.keys(this._on);\n shapeData.forEach(([key, values]) => {\n const d = {key, values};\n const shapeConfigInner = Object.assign({}, shapeConfig);\n if (this._stacked && [\"Area\", \"Bar\"].includes(d.key)) {\n const scale = opp === \"x\" ? x : y;\n (shapeConfigInner as any)[`${opp}`] = (shapeConfigInner as any)[`${opp}0`] = (d: any) => {\n const dataIndex = stackKeys.indexOf(d.id),\n discreteIndex = discreteKeys.indexOf(d.discrete);\n const scaleIndex = d[opp!] < 0 ? 1 : 0;\n return dataIndex >= 0\n ? scale(stackData[dataIndex][discreteIndex][scaleIndex])\n : scale(domains[opp!][opp === \"x\" ? 0 : 1]);\n };\n (shapeConfigInner as any)[`${opp}1`] = (d: any) => {\n const dataIndex = stackKeys.indexOf(d.id),\n discreteIndex = discreteKeys.indexOf(d.discrete);\n const scaleIndex = d[opp!] < 0 ? 0 : 1;\n return dataIndex >= 0\n ? scale(stackData[dataIndex][discreteIndex][scaleIndex])\n : scale(domains[opp!][opp === \"x\" ? 0 : 1]);\n };\n }\n\n const s = new (shapes as any)[d.key]().config(shapeConfigInner).data(d.values);\n\n if (d.key === \"Bar\") {\n let space;\n const scale = this._discrete === \"x\" ? x : y;\n const scaleType = this._discrete === \"x\" ? xScale : yScale;\n const vals = this._discrete === \"x\" ? xDomain : yDomain;\n const range = this._discrete === \"x\" ? xRange : yRange;\n if (scaleType !== \"Point\" && vals.length === 2) {\n const allPositions = Array.from(\n new Set(d.values.map((d: any) => scale(d[this._discrete as string]))),\n );\n allPositions.unshift(\n (range[0] as number) -\n (allPositions[0] as number) -\n (range[0] as number),\n );\n allPositions.push(\n (range[1] as number) +\n (range[1] as number) -\n (allPositions[allPositions.length - 1] as number),\n );\n space = allPositions.reduce((n: number, d, i, arr) => {\n if (i) {\n const dist = Math.abs((d as number) - (arr[i - 1] as number));\n if (dist < n) n = dist;\n }\n return n;\n }, Infinity);\n } else if (vals.length > 1) space = scale(vals[1]) - scale(vals[0]);\n else space = range[range.length - 1] - range[0];\n if (this._groupPadding < space) space -= this._groupPadding;\n\n let barSize = space || 1;\n\n const barGroups = groups(\n d.values as Record<string, unknown>[],\n (d: Record<string, unknown>) => d[this._discrete],\n (d: Record<string, unknown>) => d.group,\n );\n\n const ids = merge(\n barGroups.map(([, innerEntries]) => innerEntries.map(([k]) => k)),\n );\n const uniqueIds = Array.from(new Set(ids));\n\n if (\n max(barGroups.map(([, innerEntries]) => innerEntries.length)) === 1\n ) {\n (s as any)[this._discrete]((d: any, i: any) => (shapeConfig as any)[this._discrete](d, i));\n } else {\n barSize =\n (barSize - this._barPadding * uniqueIds.length - 1) /\n uniqueIds.length;\n\n const offset = space / 2 - barSize / 2;\n\n const xMod = scales\n .scaleLinear()\n .domain([0, uniqueIds.length - 1])\n .range([-offset, offset]);\n\n (s as any)[this._discrete](\n (d: any, i: any) =>\n (shapeConfig as any)[this._discrete](d, i) +\n xMod(uniqueIds.indexOf(d.group)),\n );\n }\n\n s.width(barSize);\n s.height(barSize);\n } else if (d.key === \"Line\") {\n s.duration(width * 1.5);\n\n if (this._confidence) {\n const areaConfig = Object.assign({}, shapeConfig);\n const discrete = this._discrete || \"x\";\n const key = discrete === \"x\" ? \"y\" : \"x\";\n const scaleFunction = discrete === \"x\" ? y : x;\n (areaConfig as any)[`${key}0`] = (d: any) =>\n scaleFunction(this._confidence[0] ? d.lci : d[key]);\n (areaConfig as any)[`${key}1`] = (d: any) =>\n scaleFunction(this._confidence[1] ? d.hci : d[key]);\n\n const area = new shapes.Area()\n .config(areaConfig)\n .data(d.values as DataPoint[]);\n const confidenceConfig = Object.assign(\n this._shapeConfig,\n this._confidenceConfig,\n );\n\n area\n .config(\n assign(\n (configPrep as any).bind(this)(confidenceConfig, \"shape\", \"Line\"),\n (configPrep as any).bind(this)(confidenceConfig, \"shape\", \"Area\"),\n ) as any,\n )\n .render();\n\n this._shapes.push(area);\n }\n\n s.config({\n discrete: shapeConfig.discrete || \"x\",\n label: showLineLabels\n ? (d: any, i: any) => {\n const visible =\n typeof this._lineLabels === \"function\"\n ? this._lineLabels(d.data, d.i)\n : true;\n if (!visible) return false;\n const labelData = labelWidths.find(l => l.id === d.id);\n if (labelData) {\n const yPos = labelData.newY || labelData.defaultY;\n const allLabels = labelWidths.filter(l => l.newY === yPos);\n if (allLabels.length > 1)\n return allLabels[0].id !== d.id\n ? false\n : `+${formatAbbreviate(\n allLabels.length,\n this._locale,\n )} ${this._translate(\"more\")}`;\n return this._drawLabel(d, i);\n }\n return false;\n }\n : false,\n labelBounds: showLineLabels\n ? (d: any, i: any, s: any) => {\n const [firstX, firstY] = s.points[0];\n const [lastX, lastY] = s.points[s.points.length - 1];\n const height = this._height / 4;\n const mod = (labelPositions as any)[d.id]\n ? lastY - (labelPositions as any)[d.id]\n : 0;\n return {\n x: lastX - firstX,\n y: lastY - firstY - height / 2 - mod,\n width: largestLabel,\n height,\n };\n }\n : false,\n });\n }\n\n const classEvents = events.filter(e => e.includes(`.${d.key}`)),\n globalEvents = events.filter(e => !e.includes(\".\")),\n shapeEvents = events.filter(e => e.includes(\".shape\"));\n for (let e = 0; e < globalEvents.length; e++)\n s.on(globalEvents[e], ((d: any, i: any, x: any, event: any) =>\n this._on[globalEvents[e]](d.data, d.i, x, event)) as any,\n );\n for (let e = 0; e < shapeEvents.length; e++)\n s.on(shapeEvents[e], ((d: any, i: any, x: any, event: any) =>\n this._on[shapeEvents[e]](d.data, d.i, x, event)) as any,\n );\n for (let e = 0; e < classEvents.length; e++)\n s.on(classEvents[e], ((d: any, i: any, x: any, event: any) =>\n this._on[classEvents[e]](d.data, d.i, x, event)) as any,\n );\n\n const userConfig = (configPrep as any).bind(this)(\n this._shapeConfig,\n \"shape\",\n d.key,\n );\n if (this._shapeConfig.duration === undefined) delete userConfig.duration;\n s.config(userConfig as any).render();\n\n this._shapes.push(s);\n\n if (d.key === \"Line\") {\n const markers = new shapes.Circle()\n .data(this._lineMarkers ? (d.values as DataPoint[]) : [])\n .config(shapeConfig)\n .config(this._lineMarkerConfig)\n .id(d => `${d.id}_${d.discrete}`);\n\n for (let e = 0; e < globalEvents.length; e++)\n markers.on(globalEvents[e], ((d: any, i: any, x: any, event: any) =>\n this._on[globalEvents[e]](d.data, d.i, x, event)) as any,\n );\n for (let e = 0; e < shapeEvents.length; e++)\n markers.on(shapeEvents[e], ((d: any, i: any, x: any, event: any) =>\n this._on[shapeEvents[e]](d.data, d.i, x, event)) as any,\n );\n for (let e = 0; e < classEvents.length; e++)\n markers.on(classEvents[e], ((d: any, i: any, x: any, event: any) =>\n this._on[classEvents[e]](d.data, d.i, x, event)) as any,\n );\n\n markers.render();\n this._shapes.push(markers);\n }\n });\n\n const dataShapes = shapeData.map(([key]) => key);\n if (dataShapes.includes(\"Line\")) {\n if (this._confidence) dataShapes.push(\"Area\");\n if (this._lineMarkers) dataShapes.push(\"Circle\");\n }\n const exitShapes = this._previousShapes.filter(\n (d: any) => !dataShapes.includes(d),\n );\n\n exitShapes.forEach((shape: any) => {\n new (shapes as any)[shape]().config(shapeConfig).data([]).render();\n });\n\n this._previousShapes = dataShapes;\n\n return this;\n }\n\n /**\n Allows drawing custom shapes to be used as annotations in the provided x/y plot. This method accepts custom config objects for the [Shape](http://d3plus.org/docs/#Shape) class, either a single config object or an array of config objects. Each config object requires an additional parameter, the \"shape\", which denotes which [Shape](http://d3plus.org/docs/#Shape) sub-class to use ([Rect](http://d3plus.org/docs/#Rect), [Line](http://d3plus.org/docs/#Line), etc).\n\nAdditionally, each config object can also contain an optional \"layer\" key, which defines whether the annotations will be displayed in \"front\" or in \"back\" of the primary visualization shapes. This value defaults to \"back\" if not present.\n*/\n annotations(_: any) {\n return arguments.length\n ? ((this._annotations = _ instanceof Array ? _ : [_]), this)\n : this._annotations;\n }\n\n /**\n Determines whether the x and y axes should have their scales persist while users filter the data, the timeline being the prime example (set this to `true` to make the axes stay consistent when the timeline changes).\n*/\n axisPersist(_: any) {\n return arguments.length\n ? ((this._axisPersist = _), this)\n : this._axisPersist;\n }\n\n /**\n A d3plus-shape configuration Object used for styling the background rectangle of the inner x/y plot (behind all of the shapes and gridlines).\n*/\n backgroundConfig(_: any) {\n return arguments.length\n ? ((this._backgroundConfig = assign(this._backgroundConfig, _)), this)\n : this._backgroundConfig;\n }\n\n /**\n The pixel space between each bar in a group of bars.\n*/\n barPadding(_: any) {\n return arguments.length ? ((this._barPadding = _), this) : this._barPadding;\n }\n\n /**\n The baseline for the x/y plot.\n*/\n baseline(_: any) {\n return arguments.length ? ((this._baseline = _), this) : this._baseline;\n }\n\n /**\n Determines whether or not to add additional padding at the ends of x or y scales. The most commone use for this is in Scatter Plots, so that the shapes do not appear directly on the axis itself. The value provided can either be `true` or `false` to toggle the behavior for all shape types, or a keyed Object for each shape type (ie. `{Bar: false, Circle: true, Line: false}`).\n*/\n buffer(_: any) {\n if (arguments.length) {\n if (!_) this._buffer = {};\n else if (_ === true) this._buffer = defaultBuffers;\n else {\n this._buffer = assign({}, this._buffer, _);\n for (const key in this._buffer) {\n if ((this._buffer as any)[key] === true)\n (this._buffer as any)[key] = (defaultBuffers as any)[key];\n }\n }\n return this;\n }\n return this._buffer;\n }\n\n /**\n The confidence interval as an array of [lower, upper] bounds.\n\n@example <caption>Can be called with accessor functions or static keys:</caption>\n var data = {id: \"alpha\", value: 10, lci: 9, hci: 11};\n ...\n // Accessor functions\n .confidence([function(d) { return d.lci }, function(d) { return d.hci }])\n\n // Or static keys\n .confidence([\"lci\", \"hci\"])\n*/\n confidence(_: any) {\n if (arguments.length && _ instanceof Array) {\n this._confidence = [];\n const lower = _[0];\n this._confidence[0] =\n typeof lower === \"function\" || !lower ? lower : accessor(lower);\n const upper = _[1];\n this._confidence[1] =\n typeof upper === \"function\" || !upper ? upper : accessor(upper);\n\n return this;\n } else return this._confidence;\n }\n\n /**\n Configuration object for shapes rendered as confidence intervals.\n*/\n confidenceConfig(_: any) {\n return arguments.length\n ? ((this._confidenceConfig = assign(this._confidenceConfig, _)), this)\n : this._confidenceConfig;\n }\n\n /**\n When the width or height of the chart is less than or equal to this pixel value, the discrete axis will not be shown. This helps produce slick sparklines. Set this value to `0` to disable the behavior entirely.\n*/\n discreteCutoff(_: any) {\n return arguments.length\n ? ((this._discreteCutoff = _), this)\n : this._discreteCutoff;\n }\n\n /**\n The pixel space between groups of bars.\n*/\n groupPadding(_: any) {\n return arguments.length\n ? ((this._groupPadding = _), this)\n : this._groupPadding;\n }\n\n /**\n The d3plus-shape config used on the Line shapes created to connect lineLabels to the end of their associated Line path.\n*/\n labelConnectorConfig(_: any) {\n return arguments.length\n ? ((this._labelConnectorConfig = assign(this._labelConnectorConfig, _)),\n this)\n : this._labelConnectorConfig;\n }\n\n /**\n The behavior to be used when calculating the position and size of each shape's label(s). The value passed can either be the _String_ name of the behavior to be used for all shapes, or an accessor _Function_ that will be provided each data point and will be expected to return the behavior to be used for that data point. The availability and options for this method depend on the default logic for each Shape. As an example, the values \"outside\" or \"inside\" can be set for Bar shapes, whose \"auto\" default will calculate the best position dynamically based on the available space.\n*/\n labelPosition(_: any) {\n return arguments.length\n ? ((this._labelPosition = typeof _ === \"function\" ? _ : constant(_)),\n this)\n : this._labelPosition;\n }\n\n /**\n Draws labels on the right side of any Line shapes that are drawn on the plot.\n*/\n lineLabels(_: any) {\n return arguments.length ? ((this._lineLabels = _), this) : this._lineLabels;\n }\n\n /**\n Shape config for the Circle shapes drawn by the lineMarkers method.\n*/\n lineMarkerConfig(_: any) {\n return arguments.length\n ? ((this._lineMarkerConfig = assign(this._lineMarkerConfig, _)), this)\n : this._lineMarkerConfig;\n }\n\n /**\n Draws circle markers on each vertex of a Line.\n*/\n lineMarkers(_: any) {\n return arguments.length\n ? ((this._lineMarkers = _), this)\n : this._lineMarkers;\n }\n\n /**\n A JavaScript [sort comparator function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) that receives each shape Class (ie. \"Circle\", \"Line\", etc) as it's comparator arguments. Shapes are drawn in groups based on their type, so you are defining the layering order for all shapes of said type.\n*/\n shapeSort(_: any) {\n return arguments.length ? ((this._shapeSort = _), this) : this._shapeSort;\n }\n\n /**\n Sets the size of bubbles to the given Number, data key, or function.\n*/\n size(_: any) {\n return arguments.length\n ? ((this._size = typeof _ === \"function\" || !_ ? _ : accessor(_)), this)\n : this._size;\n }\n\n /**\n Sets the size scale maximum to the specified number.\n*/\n sizeMax(_: any) {\n return arguments.length ? ((this._sizeMax = _), this) : this._sizeMax;\n }\n\n /**\n Sets the size scale minimum to the specified number.\n*/\n sizeMin(_: any) {\n return arguments.length ? ((this._sizeMin = _), this) : this._sizeMin;\n }\n\n /**\n Sets the size scale to the specified string.\n*/\n sizeScale(_: any) {\n return arguments.length ? ((this._sizeScale = _), this) : this._sizeScale;\n }\n\n /**\n If *value* is specified, toggles shape stacking. If *value* is not specified, returns the current stack value.\n*/\n stacked(_: any) {\n return arguments.length ? ((this._stacked = _), this) : this._stacked;\n }\n\n /**\n Sets the stack offset. If *value* is not specified, returns the current stack offset function.\n*/\n stackOffset(_: any) {\n return arguments.length\n ? ((this._stackOffset =\n typeof _ === \"function\"\n ? _\n : (d3Shape as any)[`stackOffset${_.charAt(0).toUpperCase() + _.slice(1)}`]),\n this)\n : this._stackOffset;\n }\n\n /**\n Sets the stack order. If *value* is not specified, returns the current stack order function.\n*/\n stackOrder(_: any) {\n if (arguments.length) {\n if (typeof _ === \"string\")\n this._stackOrder =\n _ === \"ascending\"\n ? stackOrderAscending\n : _ === \"descending\"\n ? stackOrderDescending\n : (d3Shape as any)[`stackOrder${_.charAt(0).toUpperCase() + _.slice(1)}`];\n else this._stackOrder = _;\n return this;\n } else return this._stackOrder;\n }\n\n /**\n Accessor function or string key for the x-axis value of each data point.\n*/\n x(_: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._x = _;\n else {\n this._x = accessor(_);\n this._xKey = _;\n }\n return this;\n } else return this._x;\n }\n\n /**\n Accessor function or string key for the secondary x-axis value of each data point.\n*/\n x2(_: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._x2 = _;\n else {\n this._x2 = accessor(_);\n this._x2Key = _;\n }\n return this;\n } else return this._x2;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the x-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n*/\n xConfig(_: any) {\n return arguments.length\n ? ((this._xConfig = assign(this._xConfig, _)), this)\n : this._xConfig;\n }\n\n /**\n When the width of the chart is less than or equal to this pixel value, and the x-axis is not the discrete axis, it will not be shown. This helps produce slick sparklines. Set this value to `0` to disable the behavior entirely.\n*/\n xCutoff(_: any) {\n return arguments.length ? ((this._xCutoff = _), this) : this._xCutoff;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the secondary x-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n*/\n x2Config(_: any) {\n return arguments.length\n ? ((this._x2Config = assign(this._x2Config, _)), this)\n : this._x2Config;\n }\n\n /**\n The x domain as an array. If either value is undefined, it will be calculated from the data.\n*/\n xDomain(_: any) {\n return arguments.length ? ((this._xDomain = _), this) : this._xDomain;\n }\n\n /**\n The x2 domain as an array. If either value is undefined, it will be calculated from the data.\n*/\n x2Domain(_: any) {\n return arguments.length ? ((this._x2Domain = _), this) : this._x2Domain;\n }\n\n /**\n Defines a custom sorting comparitor function to be used for discrete x axes.\n*/\n xSort(_: any) {\n return arguments.length ? ((this._xSort = _), this) : this._xSort;\n }\n\n /**\n Defines a custom sorting comparitor function to be used for discrete x2 axes.\n*/\n x2Sort(_: any) {\n return arguments.length ? ((this._x2Sort = _), this) : this._x2Sort;\n }\n\n /**\n Accessor function or string key for the y-axis value of each data point.\n*/\n y(_: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._y = _;\n else {\n this._y = accessor(_);\n this._yKey = _;\n }\n return this;\n } else return this._y;\n }\n\n /**\n Accessor function or string key for the secondary y-axis value of each data point.\n*/\n y2(_: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._y2 = _;\n else {\n this._y2 = accessor(_);\n this._y2Key = _;\n }\n return this;\n } else return this._y2;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the y-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n\n*Note:* If a \"domain\" array is passed to the y-axis config, it will be reversed.\n*/\n yConfig(_: any) {\n if (arguments.length) {\n if (_.domain) _.domain = _.domain.slice().reverse();\n this._yConfig = assign(this._yConfig, _);\n return this;\n }\n return this._yConfig;\n }\n\n /**\n When the height of the chart is less than or equal to this pixel value, and the y-axis is not the discrete axis, it will not be shown. This helps produce slick sparklines. Set this value to `0` to disable the behavior entirely.\n*/\n yCutoff(_: any) {\n return arguments.length ? ((this._yCutoff = _), this) : this._yCutoff;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the secondary y-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n*/\n y2Config(_: any) {\n if (arguments.length) {\n if (_.domain) _.domain = _.domain.slice().reverse();\n this._y2Config = assign(this._y2Config, _);\n return this;\n }\n return this._y2Config;\n }\n\n /**\n The y domain as an array. If either value is undefined, it will be calculated from the data.\n*/\n yDomain(_: any) {\n return arguments.length ? ((this._yDomain = _), this) : this._yDomain;\n }\n\n /**\n The y2 domain as an array. If either value is undefined, it will be calculated from the data.\n*/\n y2Domain(_: any) {\n return arguments.length ? ((this._y2Domain = _), this) : this._y2Domain;\n }\n\n /**\n Defines a custom sorting comparitor function to be used for discrete y axes.\n*/\n ySort(_: any) {\n return arguments.length ? ((this._ySort = _), this) : this._ySort;\n }\n\n /**\n Defines a custom sorting comparitor function to be used for discrete y2 axes.\n*/\n y2Sort(_: any) {\n return arguments.length ? ((this._y2Sort = _), this) : this._y2Sort;\n }\n}\n"],"names":["deviation","extent","groups","max","mean","merge","min","range","rollups","sum","scales","d3Shape","pkg","theme","openColor","colorAssign","colorContrast","colorDefaults","colorLegible","d3plusMerge","unique","assign","backgroundColor","date","elem","rtl","textWidth","largestRect","formatAbbreviate","AxisBottom","AxisLeft","AxisRight","AxisTop","TextBox","shapes","accessor","configPrep","constant","testLineShape","Line","testTextBox","Viz","default","discreteBuffer","BarBuffer","BoxBuffer","CircleBuffer","LineBuffer","RectBuffer","defaultBuffers","Bar","Box","Circle","Rect","defaultSize","d","_sizeScaleD3","_size","stackOrderAscending","series","sums","map","stackSum","keys","key","split","stackOrderNone","sort","a","b","localeCompare","stackOrderDescending","reverse","i","s","v","n","length","stackOffsetDiverging","order","dy","yn","yp","m","j","outside","_stacked","labelPosition","_labelPosition","other","_discrete","charAt","nonDiscrete","replace","_d3Scale","value","negative","zero","_getPosition","space","pos","size","Math","abs","Plot","_axisPersist","_annotations","_backgroundConfig","duration","fill","_barPadding","_buffer","_confidenceConfig","c","_shapeConfig","stroke","fillOpacity","_discreteCutoff","_groupPadding","_labelConnectorConfig","strokeDasharray","_lineMarkerConfig","_id","r","_lineMarkers","_previousAnnotations","back","front","_previousShapes","_shape","Area","label","_drawLabel","labelBounds","aes","points","angle","height","width","x","y","filter","cx","cy","labelConfig","fontMin","fontResize","padding","ariaLabel","ariaLabelStr","nested","data","_x","undefined","_y","_x2","_y2","invert","bind","fontMax","fontColor","bg","_select","node","fontStroke","fontStrokeWidth","textAnchor","anchor","verticalAlign","curve","toUpperCase","strokeWidth","_shapeOrder","_shapeSort","indexOf","_sizeMax","_sizeMin","_sizeScale","_stackOffset","_stackOrder","_timelineConfig","brushMin","_xTime","_yTime","_x2Time","_y2Time","_xKey","_xAxis","align","_xTest","gridSize","_xConfig","gridConfig","position","id","contrast","dark","colors","gray","_xCutoff","_x2Key","_x2Axis","_x2Test","_x2Config","_yKey","_yAxis","_yTest","_yConfig","_yCutoff","_y2Key","_y2Axis","_y2Test","_y2Config","_preDraw","forEach","k","str","_aggs","Array","from","Set","title","_draw","callback","_filteredData","firstElemTime","_time","x2Time","xTime","y2Time","yTime","timeAxis","stackGroup","_groupBy","_ids","slice","join","prepData","newD","__d3plus__","group","hci","_confidence","_drawDepth","lci","shape","x2","y2","discrete","_formattedData","axisData","_data","rExtent","domain","x2Exists","some","y2Exists","_height","_margin","top","bottom","opp","opp2","opps","parent","transition","_transition","_width","left","right","getAxisValues","axis","timeData","localData","filteredData","NaN","includes","numericValue","myData","leaves","aKey","parseFloat","bKey","concat","xData","x2Data","yData","y2Data","discreteKeys","domains","stackData","stackKeys","stackedData","groupValues","reduce","obj","values","dd","a1","b1","g","ids","fillerPoint","push","stack","offset","discreteData","p","_xSort","_x2Sort","_ySort","_y2Sort","domainScaleSetup","scale","domain2","xAutoDomain","xScale","x2AutoDomain","x2Scale","yAutoDomain","yScale","y2AutoDomain","y2Scale","autoScale","fallback","userScale","yConfigScale","_yConfigScale","toLowerCase","y2ConfigScale","_y2ConfigScale","xConfigScale","_xConfigScale","x2ConfigScale","_x2ConfigScale","Object","_baseline","shapeData","oppScale","allShapeData","res","config","res2","xDomain","x2Domain","yDomain","y2Domain","defaultConfig","barConfig","labels","tickSize","defaultX2Config","defaultY2Config","showX","showY","yC","locale","_locale","rounding","_yDomain","scalePadding","shapeConfig","rotate","labelRotation","testGroup","enter","opacity","barLabelFunction","barLabels","String","x2Ticks","every","t","xTicks","y2Ticks","yTicks","maxSize","select","ticks","render","yBounds","outerBounds","yWidth","y2Bounds","y2Width","xC","_xDomain","xRangeMax","largestLabel","labelWidths","showLineLabels","_lineLabels","labelData","lineData","userConfig","lineLabelConfig","fontColorAccessor","fontSizeAccessor","fontSize","fontWeightAccessor","fontWeight","fontFamilyAccessor","fontFamily","paddingAccessor","labelFunction","xEstimate","yEstimate","lineKey","lineValues","f","labelPadding","labelWidth","coords","myMaxX","labelY","find","spaceNeeded","maxX","xValue","arr","closeLabels","l","_getRange","labelSpace","xTestRange","x2TestRange","x2Bounds","x2Height","xOffsetLeft","topOffset","xOffsetRight","xBounds","xHeight","_padding","horizontalMargin","verticalMargin","yRange","xRange","rectGroup","transform","x2Transform","xGroup","update","x2Group","xTrans","yTransform","yGroup","y2Transform","y2Group","_xFunc","labelPositions","minFontSize","yBuckets","bumpLimit","bumpPrevious","defaultY","prev","newY","prevY","change","_yFunc","_d3ScaleNegative","yOffset","labelConnectors","connectorGroup","annotationGroupBack","shapeGroup","annotationGroupFront","layer","annotationData","annotationShapes","annotation","_duration","x0","x1","y0","y1","exitAnnotations","events","_on","on","globalEvents","e","event","shapeEvents","classEvents","shapeConfigInner","dataIndex","discreteIndex","scaleIndex","scaleType","vals","allPositions","unshift","dist","Infinity","barSize","barGroups","innerEntries","uniqueIds","xMod","scaleLinear","areaConfig","scaleFunction","area","confidenceConfig","_shapes","visible","yPos","allLabels","_translate","firstX","firstY","lastX","lastY","mod","markers","dataShapes","exitShapes","annotations","_","arguments","axisPersist","backgroundConfig","barPadding","baseline","buffer","confidence","lower","upper","discreteCutoff","groupPadding","labelConnectorConfig","lineLabels","lineMarkerConfig","lineMarkers","shapeSort","sizeMax","sizeMin","sizeScale","stacked","stackOffset","stackOrder","xConfig","xCutoff","x2Config","_x2Domain","xSort","x2Sort","yConfig","yCutoff","y2Config","_y2Domain","ySort","y2Sort"],"mappings":"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"}
@@ -292,3 +292,5 @@ var Priestley = /*#__PURE__*/ function(Viz) {
292
292
  /**
293
293
  Creates a priestley timeline based on an array of data.
294
294
  */ export { Priestley as default };
295
+
296
+ //# sourceMappingURL=Priestley.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Priestley.ts"],"sourcesContent":["import {min, max, range} from \"d3-array\";\nimport {scaleBand} from \"d3-scale\";\n\nimport {Axis} from \"../components/index.js\";\nimport {assign, date, elem} from \"@d3plus/dom\";\nimport {nestGroups} from \"@d3plus/data\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, configPrep} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n Creates a priestley timeline based on an array of data.\n*/\nexport default class Priestley 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._axis = new Axis().align(\"end\").orient(\"bottom\");\n this._axisConfig = {scale: \"time\"};\n this._axisTest = new Axis().align(\"end\").gridSize(0).orient(\"bottom\");\n this.end(\"end\");\n this._paddingInner = 0.05;\n this._paddingOuter = 0.05;\n this._shapeConfig = assign({}, this._shapeConfig, {\n ariaLabel: (d: any, i: any) =>\n `${this._drawLabel(d, i)}, ${this._start(d, i)} - ${this._end(d, i)}.`,\n });\n this.start(\"start\");\n }\n\n /**\n Extends the render behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n if (!this._filteredData) return this;\n\n const data = this._filteredData\n .map((data: any, i: any) => ({\n __d3plus__: true,\n data,\n end:\n this._axisConfig.scale === \"time\"\n ? date(this._end(data, i))\n : this._end(data, i),\n i,\n id: this._id(data, i),\n start:\n this._axisConfig.scale === \"time\"\n ? date(this._start(data, i))\n : this._start(data, i),\n }))\n .filter((d: any) => d.end - d.start > 0)\n .sort((a: any, b: any) => a.start - b.start);\n\n let nestedData;\n if (this._groupBy.length > 1 && this._drawDepth > 0) {\n const keyFns = [];\n for (let i = 0; i < this._drawDepth; i++)\n keyFns.push((d: any) => this._groupBy[i](d.data, d.i));\n nestedData = nestGroups(data, keyFns);\n } else nestedData = [{values: data}];\n\n let maxLane = 0;\n nestedData.forEach(g => {\n let track: any[] = [];\n g.values.forEach((d: any) => {\n track = track.map(t => (t <= d.start ? false : t));\n const i = track.indexOf(false);\n if (i < 0) {\n d.lane = maxLane + track.length;\n track.push(d.end);\n } else {\n track[i] = d.end;\n d.lane = maxLane + i;\n }\n });\n maxLane += track.length;\n });\n\n const axisConfig = {\n domain: [\n min(data, (d: {start: number | Date; end: number | Date}) => d.start) ||\n 0,\n max(data, (d: {start: number | Date; end: number | Date}) => d.end) ||\n 0,\n ],\n height: this._height - this._margin.top - this._margin.bottom,\n width: this._width - this._margin.left - this._margin.right,\n };\n\n const transform = `translate(${this._margin.left}, ${this._margin.top})`;\n\n this._axisTest\n .config(axisConfig)\n .config(this._axisConfig)\n .select(\n elem(\"g.d3plus-priestley-axis-test\", {\n parent: this._select,\n enter: {opacity: 0},\n }).node(),\n )\n .render();\n\n this._axis\n .config(axisConfig)\n .config(this._axisConfig)\n .select(\n elem(\"g.d3plus-priestley-axis\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .render();\n\n const axisPad = this._axisTest._padding;\n\n const xScale = this._axis._d3Scale;\n\n const yScale = scaleBand()\n .domain(range(0, maxLane, 1) as unknown as string[])\n .paddingInner(this._paddingInner)\n .paddingOuter(this._paddingOuter)\n .rangeRound([\n this._height -\n this._margin.bottom -\n this._axisTest.outerBounds().height -\n axisPad,\n this._margin.top + axisPad,\n ]);\n\n const bandWidth = yScale.bandwidth();\n\n this._shapes.push(\n new Rect()\n .data(data)\n .duration(this._duration)\n .height(bandWidth)\n .label((d, i) => this._drawLabel(d.data, i))\n .select(\n elem(\"g.d3plus-priestley-shapes\", {parent: this._select}).node(),\n )\n .width(d => {\n const w = Math.abs(xScale(d.end) - xScale(d.start));\n return w > 2 ? w - 2 : w;\n })\n .x(d => xScale(d.start) + (xScale(d.end) - xScale(d.start)) / 2)\n .y(d => yScale(d.lane as unknown as string)! + bandWidth / 2)\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", \"Rect\"))\n .render(),\n );\n\n return this;\n }\n\n /**\n Configuration object for the axis.\n*/\n axisConfig(_: any) {\n return arguments.length\n ? ((this._axisConfig = assign(this._axisConfig, _)), this)\n : this._axisConfig;\n }\n\n /**\n Accessor function or string key for the end date of each data point.\n*/\n end(_: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._end = _;\n else {\n this._end = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = max;\n }\n return this;\n } else return this._end;\n }\n\n /**\n The [paddingInner](https://github.com/d3/d3-scale#band_paddingInner) value of the underlining [Band Scale](https://github.com/d3/d3-scale#band-scales) used to determine the height of each bar. Values should be a ratio between 0 and 1 representing the space in between each rectangle.\n*/\n paddingInner(_: any) {\n return arguments.length\n ? ((this._paddingInner = _), this)\n : this._paddingInner;\n }\n\n /**\n The [paddingOuter](https://github.com/d3/d3-scale#band_paddingOuter) value of the underlining [Band Scale](https://github.com/d3/d3-scale#band-scales) used to determine the height of each bar. Values should be a ratio between 0 and 1 representing the space around the outer rectangles.\n*/\n paddingOuter(_: any) {\n return arguments.length\n ? ((this._paddingOuter = _), this)\n : this._paddingOuter;\n }\n\n /**\n Accessor function or string key for the start date of each data point.\n*/\n start(_: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._start = _;\n else {\n this._start = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = min;\n }\n return this;\n } else return this._start;\n }\n}\n"],"names":["min","max","range","scaleBand","Axis","assign","date","elem","nestGroups","Rect","accessor","configPrep","Viz","Priestley","_axis","align","orient","_axisConfig","scale","_axisTest","gridSize","end","_paddingInner","_paddingOuter","_shapeConfig","ariaLabel","d","i","_drawLabel","_start","_end","start","_draw","callback","_filteredData","data","map","__d3plus__","id","_id","filter","sort","a","b","nestedData","_groupBy","length","_drawDepth","keyFns","push","values","maxLane","forEach","g","track","t","indexOf","lane","axisConfig","domain","height","_height","_margin","top","bottom","width","_width","left","right","transform","config","select","parent","_select","enter","opacity","node","render","update","axisPad","_padding","xScale","_d3Scale","yScale","paddingInner","paddingOuter","rangeRound","outerBounds","bandWidth","bandwidth","_shapes","duration","_duration","label","w","Math","abs","x","y","bind","_","arguments","_aggs"],"mappings":"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"}
@@ -416,3 +416,5 @@ function value(d) {
416
416
  /**
417
417
  Creates a radar visualization based on an array of data.
418
418
  */ export { Radar as default };
419
+
420
+ //# sourceMappingURL=Radar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Radar.ts"],"sourcesContent":["import {groups, min, max, sum} from \"d3-array\";\nimport {pointer} from \"d3-selection\";\n\nimport {colorContrast} from \"@d3plus/color\";\nimport {merge} from \"@d3plus/data\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {assign, backgroundColor, elem} from \"@d3plus/dom\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport {Circle, Path, Rect} from \"../shapes/index.js\";\nimport Viz from \"./Viz.js\";\n\nconst tau = Math.PI * 2;\n\n/**\n Creates a radar visualization based on an array of data.\n*/\nexport default class Radar 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 overrides any default parameters inherited from Viz.\n @private\n*/\n constructor() {\n super();\n\n this._axisConfig = {\n shapeConfig: {\n fill: constant(\"none\"),\n labelConfig: {\n fontColor: () => {\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n return colorContrast(bg);\n },\n padding: 0,\n textAnchor: (d: any, i: any, x: any) => x.textAnchor,\n verticalAlign: \"middle\",\n },\n stroke: () => {\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n return colorContrast(bg);\n },\n strokeWidth: constant(1),\n },\n };\n this._discrete = \"metric\";\n this._levels = 6;\n this._metric = accessor(\"metric\");\n this._outerPadding = 100;\n this._shape = constant(\"Path\");\n this._value = accessor(\"value\");\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 const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const radius = min([height, width])! / 2 - this._outerPadding,\n transform = `translate(${width / 2}, ${height / 2})`;\n\n const nestedAxisData = groups(this._filteredData, this._metric),\n nestedGroupData = groups(this._filteredData, this._id, this._metric);\n\n const maxValue = max(\n nestedGroupData\n .map(([, innerEntries]) =>\n innerEntries.map(([, vals]) =>\n sum(vals, (x, i) => this._value(x, i)),\n ),\n )\n .flat(),\n );\n\n const circularAxis = Array.from(Array(this._levels).keys()).map(d => ({\n id: d,\n r: radius * ((d + 1) / this._levels),\n }));\n\n const circleConfig = (configPrep as any).bind(this as any)(\n this._axisConfig.shapeConfig,\n \"shape\",\n \"Circle\",\n );\n delete circleConfig.label;\n\n new Circle()\n .data(circularAxis)\n .select(\n elem(\"g.d3plus-Radar-radial-circles\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config(circleConfig)\n .render();\n\n const totalAxis = nestedAxisData.length;\n const polarAxis = nestedAxisData\n .map(([key, values], i) => {\n const d = {key, values};\n const width = this._outerPadding;\n const fontSize =\n (this._shapeConfig.labelConfig.fontSize &&\n this._shapeConfig.labelConfig.fontSize(d, i)) ||\n 11;\n\n const lineHeight = fontSize * 1.4;\n const height = lineHeight * 2;\n const padding = 10,\n quadrant =\n (parseInt(String(360 - ((360 / totalAxis) * i) / 90), 10) % 4) + 1,\n radians = (tau / totalAxis) * i;\n\n let angle = (360 / totalAxis) * i;\n\n let textAnchor = \"start\";\n let x = padding;\n\n if (quadrant === 2 || quadrant === 3) {\n x = -width - padding;\n textAnchor = \"end\";\n angle += 180;\n }\n\n const labelBounds = {\n x,\n y: -height / 2,\n width,\n height,\n };\n\n return {\n __d3plus__: true,\n data: merge(d.values as DataPoint[], this._aggs),\n i,\n id: d.key,\n key: d.key,\n angle,\n textAnchor,\n labelBounds,\n rotateAnchor: [-x, height / 2],\n x: radius * Math.cos(radians),\n y: radius * Math.sin(radians),\n };\n })\n .sort((a, b) => (a.key as number) - (b.key as number));\n\n new Rect()\n .data(polarAxis as unknown as DataPoint[])\n .rotate(d => d.angle || 0)\n .width(0)\n .height(0)\n .x(d => d.x)\n .y(d => d.y)\n .label(d => d.id)\n .labelBounds(d => d.labelBounds as unknown as Record<string, unknown>)\n .labelConfig(this._axisConfig.shapeConfig.labelConfig)\n .select(\n elem(\"g.d3plus-Radar-text\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .render();\n\n new Path()\n .data(polarAxis as unknown as DataPoint[])\n .d(d => `M${0},${0} ${-d.x},${-d.y}`)\n .select(\n elem(\"g.d3plus-Radar-axis\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config(\n (configPrep as any).bind(this as any)(this._axisConfig.shapeConfig, \"shape\", \"Path\"),\n )\n .render();\n\n const groupData = nestedGroupData.map(([hKey, innerEntries]) => {\n const q = innerEntries.map(([, vals], i) => {\n const value = sum(vals, (x, i) => this._value(x, i));\n const r = (value / maxValue!) * radius,\n radians = (tau / totalAxis) * i;\n return {\n x: r * Math.cos(radians),\n y: r * Math.sin(radians),\n };\n });\n\n const pathD = `M ${q[0].x} ${q[0].y} ${q\n .map(l => `L ${l.x} ${l.y}`)\n .join(\" \")} L ${q[0].x} ${q[0].y}`;\n\n return {\n arr: innerEntries.map(([, vals]) =>\n merge(vals as DataPoint[], this._aggs),\n ),\n id: hKey,\n points: q,\n d: pathD,\n __d3plus__: true,\n data: merge(\n innerEntries.map(([, vals]) =>\n merge(vals as DataPoint[], this._aggs),\n ) as DataPoint[],\n this._aggs,\n ),\n };\n });\n\n const pathConfig = (configPrep as any).bind(this as any)(\n this._shapeConfig,\n \"shape\",\n \"Path\",\n );\n const events = Object.keys(pathConfig.on as Record<string, unknown> ?? {});\n pathConfig.on = {};\n for (let e = 0; e < events.length; e++) {\n const event = events[e];\n pathConfig.on[event] = (d: any, i: any, s: any, e: any) => {\n const x = d.points.map((p: any) => p.x + width / 2);\n const y = d.points.map((p: any) => p.y + height / 2);\n const cursor = pointer(e, this._select.node());\n const xDist = x.map((p: any) => Math.abs(p - cursor[0]));\n const yDist = y.map((p: any) => Math.abs(p - cursor[1]));\n const dists = xDist.map((d: any, i: any) => d + yDist[i]);\n this._on[event].bind(this)(d.arr[dists.indexOf(min(dists))], i, s, e);\n };\n }\n\n this._shapes.push(\n new Path()\n .data(groupData as unknown as DataPoint[])\n .d(d => d.d)\n .select(\n elem(\"g.d3plus-Radar-items\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config(pathConfig)\n .render(),\n );\n\n return this;\n }\n\n /**\n Configuration object for the radial spokes, circles, and labels.\n*/\n axisConfig(_: any) {\n return arguments.length\n ? ((this._axisConfig = assign(this._axisConfig, _)), this)\n : this._axisConfig;\n }\n\n /**\n Accessor function for the metric value used as each axis.\n*/\n metric(_: any) {\n return arguments.length\n ? ((this._metric = typeof _ === \"function\" ? _ : accessor(_)), this)\n : this._metric;\n }\n\n /**\n Determines how much pixel spaces to give the outer labels.\n*/\n outerPadding(_: any) {\n return arguments.length\n ? ((this._outerPadding = _), this)\n : this._outerPadding;\n }\n\n /**\n The value accessor used to determine each data point's position along each axis.\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","min","max","sum","pointer","colorContrast","merge","assign","backgroundColor","elem","accessor","configPrep","constant","Circle","Path","Rect","Viz","tau","Math","PI","Radar","_axisConfig","shapeConfig","fill","labelConfig","fontColor","bg","_select","node","padding","textAnchor","d","i","x","verticalAlign","stroke","strokeWidth","_discrete","_levels","_metric","_outerPadding","_shape","_value","_draw","callback","event","events","e","pathConfig","on","s","points","map","p","width","y","height","cursor","xDist","abs","yDist","dists","_on","bind","arr","indexOf","_height","_margin","top","bottom","_width","left","right","radius","transform","nestedAxisData","_filteredData","nestedGroupData","_id","maxValue","innerEntries","vals","flat","circularAxis","Array","from","keys","id","r","circleConfig","label","data","select","parent","enter","update","config","render","totalAxis","length","polarAxis","key","values","fontSize","_shapeConfig","lineHeight","quadrant","parseInt","String","radians","angle","labelBounds","__d3plus__","_aggs","rotateAnchor","cos","sin","sort","a","b","rotate","groupData","hKey","q","value","pathD","l","join","Object","_shapes","push","axisConfig","_","arguments","metric","outerPadding"],"mappings":"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"}
@@ -379,3 +379,5 @@ function row(a, b) {
379
379
  /**
380
380
  Creates a radial layout of a rows/columns Matrix of any dataset. See [this example](https://d3plus.org/examples/d3plus-matrix/radial-matrix/) for help getting started using the Matrix class.
381
381
  */ export { RadialMatrix as default };
382
+
383
+ //# sourceMappingURL=RadialMatrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/RadialMatrix.ts"],"sourcesContent":["import {min} from \"d3-array\";\nimport {arc} from \"d3-shape\";\nimport type {DefaultArcObject} from \"d3-shape\";\n\nimport {colorContrast} from \"@d3plus/color\";\nimport {assign, backgroundColor, elem} from \"@d3plus/dom\";\n\n/** Extended arc datum with row/column properties for the radial matrix. */\ninterface MatrixArcDatum extends DefaultArcObject {\n row: string;\n column: string;\n}\nimport {Path} from \"../shapes/index.js\";\nimport {TextBox} from \"../components/index.js\";\nimport {accessor, configPrep, constant, getProp} from \"../utils/index.js\";\n\nimport Viz from \"./Viz.js\";\nimport prepData from \"./helpers/matrixData.js\";\n\nconst tau = Math.PI * 2;\n\n/**\n Creates a radial layout of a rows/columns Matrix of any dataset. See [this example](https://d3plus.org/examples/d3plus-matrix/radial-matrix/) for help getting started using the Matrix class.\n*/\nexport default class RadialMatrix 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._cellPadding = 2;\n\n this._column = accessor(\"column\");\n this._columnConfig = {\n shapeConfig: {\n labelConfig: {\n fontColor: () => {\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n return colorContrast(bg);\n },\n padding: 5,\n textAnchor: (d: any) =>\n [0, 180].includes(d.angle)\n ? \"middle\"\n : [2, 3].includes(d.quadrant)\n ? \"end\"\n : \"start\",\n verticalAlign: (d: any) =>\n [90, 270].includes(d.angle)\n ? \"middle\"\n : [2, 1].includes(d.quadrant)\n ? \"bottom\"\n : \"top\",\n },\n },\n };\n this._columnSort = (a: any, b: any) => `${a}`.localeCompare(`${b}`);\n this._innerRadius = (radius: any) => radius / 5;\n\n this._label = (d: any, i: any) =>\n `${getProp.bind(this)(\"row\", d, i)} / ${getProp.bind(this)(\"column\", d, i)}`;\n\n const defaultMouseMoveShape = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d: any, i: any, x: any, event: any) => {\n defaultMouseMoveShape(d, i, x, event);\n const row = getProp.bind(this)(\"row\", d, i);\n const column = getProp.bind(this)(\"column\", d, i);\n this.hover(\n (h, ii) =>\n getProp.bind(this)(\"row\", h, ii) === row ||\n getProp.bind(this)(\"column\", h, ii) === column,\n );\n };\n\n this._row = accessor(\"row\");\n this._rowSort = (a: any, b: any) => `${a}`.localeCompare(`${b}`);\n\n this._columnLabels = new TextBox();\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback?: () => void) {\n const {rowValues, columnValues, shapeData} = prepData.bind(this)(\n this._filteredData,\n );\n\n if (!rowValues.length || !columnValues.length) return this;\n\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n parent = this._select,\n transition = this._transition,\n width = this._width - this._margin.left - this._margin.right;\n\n const labelHeight = 50,\n labelWidth = 100;\n const radius = min([height - labelHeight * 2, width - labelWidth * 2])! / 2,\n transform = `translate(${width / 2 + this._margin.left}, ${height / 2 + this._margin.top})`;\n\n const flippedColumns = columnValues.slice().reverse();\n flippedColumns.unshift(flippedColumns.pop()!);\n const total = flippedColumns.length;\n\n const labelData = flippedColumns.map((key, i) => {\n const radians = (i / total) * tau;\n const angle = Math.round((radians * 180) / Math.PI);\n const quadrant = Math.floor((((angle + 90) / 90) % 4) + 1);\n\n const xMod = [0, 180].includes(angle)\n ? -labelWidth / 2\n : [2, 3].includes(quadrant)\n ? -labelWidth\n : 0;\n const yMod = [90, 270].includes(angle)\n ? -labelHeight / 2\n : [2, 1].includes(quadrant)\n ? -labelHeight\n : 0;\n\n return {\n key,\n angle,\n quadrant,\n radians,\n x: radius * Math.sin(radians + Math.PI) + xMod,\n y: radius * Math.cos(radians + Math.PI) + yMod,\n };\n });\n\n /**\n * Extracts the axis config \"labels\" Array, if it exists, it filters\n * the column labels by the values included in the Array.\n */\n const displayLabels =\n this._columnConfig.labels instanceof Array\n ? labelData.filter(d => this._columnConfig.labels.includes(d.key))\n : labelData;\n\n this._columnLabels\n .data(displayLabels)\n .x((d: any) => d.x)\n .y((d: any) => d.y)\n .text((d: any) => d.key)\n .width(labelWidth)\n .height(labelHeight)\n .config(this._columnConfig.shapeConfig.labelConfig)\n .select(\n elem(\"g.d3plus-RadialMatrix-columns\", {\n parent,\n transition,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .render();\n\n const innerRadius = this._innerRadius(radius);\n const rowHeight = (radius - innerRadius) / rowValues.length;\n const columnWidth =\n labelData.length > 1 ? labelData[1].radians - labelData[0].radians : tau;\n const flippedRows = rowValues.slice().reverse();\n\n const arcData = arc<MatrixArcDatum>()\n .padAngle(this._cellPadding / radius)\n .innerRadius(\n d =>\n innerRadius +\n flippedRows.indexOf(d.row) * rowHeight +\n this._cellPadding / 2,\n )\n .outerRadius(\n d =>\n innerRadius +\n (flippedRows.indexOf(d.row) + 1) * rowHeight -\n this._cellPadding / 2,\n )\n .startAngle(\n d =>\n labelData[columnValues.indexOf(d.column)].radians - columnWidth / 2,\n )\n .endAngle(\n d =>\n labelData[columnValues.indexOf(d.column)].radians + columnWidth / 2,\n );\n\n this._shapes.push(\n new Path()\n .data(shapeData as any)\n .d(arcData as unknown as (d: Record<string, unknown>) => string)\n .select(\n elem(\"g.d3plus-RadialMatrix-arcs\", {\n parent,\n transition,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config({\n id: (d: any) => this._ids(d).join(\"-\"),\n x: 0,\n y: 0,\n } as any)\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", \"Path\"))\n .render(),\n );\n\n return this;\n }\n\n /**\n The pixel padding in between each cell.\n*/\n cellPadding(_: any) {\n return arguments.length\n ? ((this._cellPadding = _), this)\n : this._cellPadding;\n }\n\n /**\n Determines which key in your data should be used for each column in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's column value.\n\n@example\nfunction column(d) {\n return d.name;\n}\n */\n column(_: any) {\n return arguments.length\n ? ((this._column = typeof _ === \"function\" ? _ : accessor(_)), this)\n : this._column;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the column labels.\n*/\n columnConfig(_: any) {\n return arguments.length\n ? ((this._columnConfig = assign(this._columnConfig, _)), this)\n : this._columnConfig;\n }\n\n /**\n A manual list of IDs to be used for rows.\n*/\n columnList(_: any) {\n return arguments.length ? ((this._columnList = _), this) : this._columnList;\n }\n\n /**\n A sort comparator function that is run on the unique set of column values.\n\n@example\nfunction column(a, b) {\n return a.localeCompare(b);\n}\n */\n columnSort(_: any) {\n return arguments.length ? ((this._columnSort = _), this) : this._columnSort;\n }\n\n /**\n The radius (in pixels) for the inner donut hole of the diagram. Can either be a static Number, or an accessor function that receives the outer radius as it's only argument.\n\n@example\nfunction(outerRadius) {\n return outerRadius / 5;\n}\n */\n innerRadius(_: any) {\n return arguments.length\n ? ((this._innerRadius = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._innerRadius;\n }\n\n /**\n Determines which key in your data should be used for each row in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's row value.\n\n@example\nfunction row(d) {\n return d.name;\n}\n */\n row(_: any) {\n return arguments.length\n ? ((this._row = typeof _ === \"function\" ? _ : accessor(_)), this)\n : this._row;\n }\n\n /**\n A manual list of IDs to be used for rows.\n*/\n rowList(_: any) {\n return arguments.length ? ((this._rowList = _), this) : this._rowList;\n }\n\n /**\n A sort comparator function that is run on the unique set of row values.\n\n@example\nfunction row(a, b) {\n return a.localeCompare(b);\n}\n */\n rowSort(_: any) {\n return arguments.length ? ((this._rowSort = _), this) : this._rowSort;\n }\n}\n"],"names":["min","arc","colorContrast","assign","backgroundColor","elem","Path","TextBox","accessor","configPrep","constant","getProp","Viz","prepData","tau","Math","PI","RadialMatrix","_cellPadding","_column","_columnConfig","shapeConfig","labelConfig","fontColor","bg","_select","node","padding","textAnchor","d","includes","angle","quadrant","verticalAlign","_columnSort","a","b","localeCompare","_innerRadius","radius","_label","i","bind","defaultMouseMoveShape","_on","x","event","row","column","hover","h","ii","_row","_rowSort","_columnLabels","_draw","callback","_filteredData","rowValues","columnValues","shapeData","length","height","_height","_margin","top","bottom","parent","transition","_transition","width","_width","left","right","labelHeight","labelWidth","transform","flippedColumns","slice","reverse","unshift","pop","total","labelData","map","key","radians","round","floor","xMod","yMod","sin","y","cos","displayLabels","labels","Array","filter","data","text","config","select","enter","update","render","innerRadius","rowHeight","columnWidth","flippedRows","arcData","padAngle","indexOf","outerRadius","startAngle","endAngle","_shapes","push","id","_ids","join","_shapeConfig","cellPadding","_","arguments","columnConfig","columnList","_columnList","columnSort","rowList","_rowList","rowSort"],"mappings":"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"}
@@ -784,3 +784,5 @@ Additionally, a custom formatting function can be passed as a second argument to
784
784
  /**
785
785
  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.
786
786
  */ export { Rings as default };
787
+
788
+ //# sourceMappingURL=Rings.js.map