@d3plus/core 3.1.1 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +4197 -507
  164. package/umd/d3plus-core.full.js.map +1 -1
  165. package/umd/d3plus-core.full.min.js +792 -765
  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/components/AxisRight.ts"],"sourcesContent":["import {default as Axis} from \"./Axis.js\";\n\n/**\n Shorthand method for creating an axis where the ticks are drawn to the right of the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n*/\nexport default class AxisRight extends Axis {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n super();\n this.orient(\"right\");\n }\n}\n"],"names":["default","Axis","AxisRight","orient"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,WAAWC,IAAI,QAAO,YAAY;AAK3B,IAAA,AAAMC,0BAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,MAAM,CAAC;;;WAPKD;EAAkBD;AAHvC;;AAEA,GACA,SAAqBC,uBASpB"}
@@ -73,3 +73,5 @@ var AxisTop = /*#__PURE__*/ function(Axis) {
73
73
  /**
74
74
  Shorthand method for creating an axis where the ticks are drawn above the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.
75
75
  */ export { AxisTop as default };
76
+
77
+ //# sourceMappingURL=AxisTop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/AxisTop.ts"],"sourcesContent":["import {default as Axis} from \"./Axis.js\";\n\n/**\n Shorthand method for creating an axis where the ticks are drawn above the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n*/\nexport default class AxisTop extends Axis {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n super();\n this.orient(\"top\");\n }\n}\n"],"names":["default","Axis","AxisTop","orient"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,WAAWC,IAAI,QAAO,YAAY;AAK3B,IAAA,AAAMC,wBAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,MAAM,CAAC;;;WAPKD;EAAgBD;AAHrC;;AAEA,GACA,SAAqBC,qBASpB"}
@@ -839,3 +839,5 @@ var ColorScale = /*#__PURE__*/ function(BaseClass) {
839
839
  /**
840
840
  Creates an SVG color scale based on an array of data.
841
841
  */ export { ColorScale as default };
842
+
843
+ //# sourceMappingURL=ColorScale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/ColorScale.ts"],"sourcesContent":["import {extent, max, min, quantile, range, deviation} from \"d3-array\";\nimport {interpolateRgb} from \"d3-interpolate\";\nimport {scaleLinear, scaleThreshold} from \"d3-scale\";\nimport {select} from \"d3-selection\";\nimport {transition} from \"d3-transition\";\n\nimport {colorContrast, colorDefaults, colorLighter} from \"@d3plus/color\";\nimport {unique} from \"@d3plus/data\";\nimport {assign, backgroundColor, elem, textWidth} from \"@d3plus/dom\";\nimport type {D3Selection} from \"@d3plus/dom\";\nimport {formatAbbreviate} from \"@d3plus/format\";\nimport {ckmeans} from \"@d3plus/math\";\n\nimport type {DataPoint} from \"@d3plus/data\";\n\nimport {Axis, TextBox} from \"../components/index.js\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, BaseClass, constant} from \"../utils/index.js\";\n\nimport Legend from \"./Legend.js\";\n\n/**\n Creates an SVG color scale based on an array of data.\n*/\nexport default class ColorScale extends BaseClass {\n _select!: D3Selection;\n _axisClass: Axis;\n \n _axisConfig: Record<string, unknown>;\n _axisTest: Axis;\n _align: string;\n _buckets: number | number[];\n _bucketAxis: boolean;\n _bucketFormat: (\n tick: number,\n i: number,\n ticks: number[],\n allValues: number[],\n ) => string;\n _bucketJoiner: (a: string, b: string) => string;\n _centered: boolean;\n _color: string | string[];\n _colorMax: string;\n _colorMid: string;\n _colorMin: string;\n \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _colorScale: any;\n _data: DataPoint[];\n _domain: number[] | undefined;\n _duration: number;\n _group!: D3Selection;\n _height: number;\n _labelClass: TextBox;\n \n _labelConfig: Record<string, unknown>;\n _labelMin: string | undefined;\n _labelMax: string | undefined;\n _legendClass: Legend;\n \n _legendConfig: Record<string, unknown>;\n _midpoint: number;\n _orient: string;\n _outerBounds: Record<string, number>;\n _padding: number;\n _rectClass: Rect;\n \n _rectConfig: Record<string, unknown>;\n _scale: string;\n _size: number;\n \n _value: (d: DataPoint, i?: number) => unknown;\n _width: number;\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._axisClass = new Axis();\n this._axisConfig = {\n gridSize: 0,\n };\n this._axisTest = new Axis();\n this._align = \"middle\";\n this._buckets = 5;\n this._bucketAxis = false;\n this._bucketFormat = (\n tick: number,\n i: number,\n ticks: number[],\n allValues: number[],\n ): string => {\n const format = (this._axisConfig.tickFormat\n ? this._axisConfig.tickFormat\n : formatAbbreviate) as (v: number | undefined) => string;\n\n const next = ticks[i + 1];\n const prev = i ? ticks[i - 1] : false;\n const last = i === ticks.length - 1;\n if (tick === next || last) {\n const suffix = last && tick < max(allValues)! ? \"+\" : \"\";\n return `${format(tick)}${suffix}`;\n } else {\n const mod = next ? next / 100 : tick / 100;\n\n const pow =\n mod >= 1 || mod <= -1\n ? Math.round(mod).toString().length - 1\n : mod\n .toString()\n .split(\".\")[1]\n .replace(/([1-9])[1-9].*$/, \"$1\").length * -1;\n const ten = Math.pow(10, pow);\n\n const prevValue =\n prev === tick && i === 1\n ? format(\n min([\n tick + ten,\n allValues.find((d: number) => d > tick && d < next),\n ] as number[]),\n )\n : format(tick);\n\n const nextValue =\n tick && i === 1\n ? format(next)\n : format(\n max([\n next - ten,\n allValues.reverse().find((d: number) => d > tick && d < next),\n ] as number[]),\n );\n\n return this._bucketJoiner(prevValue, nextValue);\n }\n };\n this._bucketJoiner = (a: string, b: string) =>\n a !== b ? `${a} - ${b}` : `${a}`;\n this._centered = true;\n this._color = [\"#54478C\", \"#2C699A\", \"#0DB39E\", \"#83E377\", \"#EFEA5A\"];\n this._colorMax = colorDefaults.on;\n this._colorMid = colorDefaults.light;\n this._colorMin = colorDefaults.off;\n this._data = [];\n this._duration = 600;\n this._height = 200;\n this._labelClass = new TextBox();\n this._labelConfig = {\n fontColor: () => {\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n return colorContrast(bg);\n },\n fontSize: 12,\n };\n this._legendClass = new Legend();\n this._legendConfig = {\n shapeConfig: {\n stroke: colorDefaults.dark,\n strokeWidth: 1,\n },\n };\n this._midpoint = 0;\n this._orient = \"bottom\";\n this._outerBounds = {width: 0, height: 0, x: 0, y: 0};\n this._padding = 5;\n this._rectClass = new Rect().parent(\n this as unknown as Record<string, unknown>,\n );\n this._rectConfig = {\n stroke: \"#999\",\n strokeWidth: 1,\n };\n this._scale = \"linear\";\n this._size = 10;\n this._value = accessor(\"value\");\n this._width = 400;\n }\n\n /**\n Renders the current ColorScale to the page.\n @param callback Optional callback invoked after rendering completes.\n*/\n render(callback?: (...args: unknown[]) => unknown): this {\n if (this._select === void 0)\n this.select(\n select(\"body\")\n .append(\"svg\")\n .attr(\"width\", `${this._width}px`)\n .attr(\"height\", `${this._height}px`)\n .node() as unknown as HTMLElement,\n );\n\n const horizontal = [\"bottom\", \"top\"].includes(this._orient);\n\n const height = horizontal ? \"height\" : \"width\",\n width = horizontal ? \"width\" : \"height\",\n x = horizontal ? \"x\" : \"y\",\n y = horizontal ? \"y\" : \"x\";\n\n // Shape <g> Group\n this._group = elem(\"g.d3plus-ColorScale\", {parent: this._select});\n\n const allValues = (this._data\n .map(this._value)\n .filter((d: unknown) => d !== null && typeof d === \"number\") as number[])\n .sort((a: number, b: number) => a - b);\n\n const domain = this._domain || extent(allValues);\n const negative = (domain as number[])[0] < this._midpoint;\n const positive = (domain as number[])[1] > this._midpoint;\n const diverging = negative && positive;\n\n const numBuckets = min([\n this._buckets instanceof Array ? this._buckets.length : this._buckets,\n diverging && this._scale !== \"jenks\"\n ? 2 * Math.floor(unique(allValues).length / 2) - 1\n : unique(allValues).length,\n ])!;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let colors: any =\n diverging &&\n (!this._color ||\n (this._color instanceof Array &&\n !this._color.includes(this._colorMid)))\n ? undefined\n : this._color,\n labels: number[] | undefined,\n ticks: number[] | undefined;\n\n if (colors && !(colors instanceof Array)) {\n colors = range(0, numBuckets, 1)\n .map((i: number) => colorLighter(colors, (i + 1) / numBuckets))\n .reverse();\n }\n\n if (this._scale === \"jenks\") {\n const buckets = min([\n colors ? colors.length : numBuckets,\n numBuckets,\n allValues.length,\n ])!;\n\n let jenks: number[][] = [];\n\n if (this._buckets instanceof Array) {\n ticks = this._buckets;\n } else {\n if (diverging && this._centered) {\n const half = Math.floor(buckets / 2);\n const residual = buckets % 2;\n\n const negatives = allValues.filter((d: number) => d < this._midpoint);\n const negativesDeviation = deviation(negatives);\n\n const positives = allValues\n .concat(this._midpoint)\n .filter((d: number) => d >= this._midpoint);\n const positivesDeviation = deviation(positives);\n\n const isNegativeMax =\n negativesDeviation! > positivesDeviation! ? 1 : 0;\n const isPositiveMax =\n positivesDeviation! > negativesDeviation! ? 1 : 0;\n\n const negativeJenks = ckmeans(\n negatives,\n min([half + residual * isNegativeMax, negatives.length])!,\n );\n const positiveJenks = ckmeans(\n positives,\n min([half + residual * isPositiveMax, positives.length])!,\n );\n\n jenks = negativeJenks.concat(positiveJenks);\n } else {\n jenks = ckmeans(allValues, buckets);\n }\n\n ticks = jenks.map((c: number[]) => c[0]);\n }\n\n const tickSet = new Set(ticks);\n\n if (ticks.length !== tickSet.size) labels = Array.from(tickSet);\n\n if (!colors) {\n if (diverging) {\n colors = [this._colorMin, this._colorMid, this._colorMax];\n const negatives = ticks\n .slice(0, buckets)\n .filter(\n (d: number, i: number) =>\n d < this._midpoint && ticks![i + 1] <= this._midpoint,\n );\n const spanning = ticks\n .slice(0, buckets)\n .filter(\n (d: number, i: number) =>\n d <= this._midpoint && ticks![i + 1] > this._midpoint,\n );\n const positives = ticks\n .slice(0, buckets)\n .filter((d: number) => d > this._midpoint);\n const negativeColors = negatives.map((_d: number, i: number) =>\n !i ? colors[0] : colorLighter(colors[0], i / negatives.length),\n );\n const spanningColors = spanning.map(() => colors[1]);\n const positiveColors = positives.map((_d: number, i: number) =>\n i === positives.length - 1\n ? colors[2]\n : colorLighter(colors[2], 1 - (i + 1) / positives.length),\n );\n colors = negativeColors.concat(spanningColors).concat(positiveColors);\n } else {\n colors = range(0, numBuckets, 1)\n .map((i: number) => colorLighter(this._colorMax, i / numBuckets))\n .reverse();\n }\n }\n\n if (ticks.length <= buckets) colors = colors.slice(-ticks.length);\n\n colors = [colors[0]].concat(colors);\n\n this._colorScale = scaleThreshold().domain(ticks).range(colors);\n } else {\n let buckets = this._buckets instanceof Array ? this._buckets : undefined;\n if (diverging && !colors) {\n const half = Math.floor(numBuckets / 2);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const negativeColorScale = (interpolateRgb as any).gamma(2.2)(\n this._colorMin,\n this._colorMid,\n );\n const negativeColors = range(0, half, 1).map((i: number) =>\n negativeColorScale(i / half),\n );\n const spanningColors = (numBuckets % 2 ? [0] : []).map(\n () => this._colorMid,\n );\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const positiveColorScale = (interpolateRgb as any).gamma(2.2)(\n this._colorMax,\n this._colorMid,\n );\n const positiveColors = range(0, half, 1)\n .map((i: number) => positiveColorScale(i / half))\n .reverse();\n colors = negativeColors.concat(spanningColors).concat(positiveColors);\n if (!buckets) {\n const step = (colors.length - 1) / 2;\n buckets = [\n (domain as number[])[0],\n this._midpoint,\n (domain as number[])[1],\n ];\n buckets = range(\n (domain as number[])[0],\n this._midpoint,\n -((domain as number[])[0] - this._midpoint) / step,\n )\n .concat(\n range(\n this._midpoint,\n (domain as number[])[1],\n ((domain as number[])[1] - this._midpoint) / step,\n ),\n )\n .concat([(domain as number[])[1]]);\n }\n } else {\n if (!colors) {\n if (this._scale === \"buckets\" || this._scale === \"quantile\") {\n colors = range(0, numBuckets, 1).map((i: number) =>\n colorLighter(\n negative ? this._colorMin : this._colorMax,\n i / numBuckets,\n ),\n );\n if (positive) colors = colors.reverse();\n } else {\n colors = negative\n ? [this._colorMin, colorLighter(this._colorMin, 0.8)]\n : [colorLighter(this._colorMax, 0.8), this._colorMax];\n }\n }\n if (!buckets) {\n if (this._scale === \"quantile\") {\n const step = 1 / (colors.length - 1);\n buckets = range(0, 1 + step / 2, step).map((d: number) =>\n quantile(allValues, d),\n ) as number[];\n } else if (diverging && this._color && this._centered) {\n const midIndex = colors.indexOf(this._colorMid);\n const negativeStep =\n (this._midpoint - (domain as number[])[0]) / midIndex;\n const positiveStep =\n ((domain as number[])[1] - this._midpoint) /\n (colors.length - midIndex);\n const negativeBuckets = range(\n (domain as number[])[0],\n this._midpoint,\n negativeStep,\n );\n const positiveBuckets = range(\n this._midpoint,\n (domain as number[])[1] + positiveStep / 2,\n positiveStep,\n );\n\n buckets = negativeBuckets.concat(positiveBuckets);\n } else {\n const step =\n ((domain as number[])[1] - (domain as number[])[0]) /\n (colors.length - 1);\n buckets = range(\n (domain as number[])[0],\n (domain as number[])[1] + step / 2,\n step,\n );\n }\n }\n }\n\n if (this._scale === \"buckets\" || this._scale === \"quantile\") {\n ticks = buckets;\n colors = [colors[0]].concat(colors);\n } else if (this._scale === \"log\") {\n const negativeBuckets = (buckets as number[]).filter((d: number) => d < 0);\n if (negativeBuckets.length) {\n const minVal = negativeBuckets[0];\n const newNegativeBuckets = negativeBuckets.map(\n (d: number) => -Math.pow(Math.abs(minVal), d / minVal),\n );\n negativeBuckets.forEach((bucket: number, i: number) => {\n (buckets as number[])[(buckets as number[]).indexOf(bucket)] =\n newNegativeBuckets[i];\n });\n }\n const positiveBuckets = (buckets as number[]).filter((d: number) => d > 0);\n if (positiveBuckets.length) {\n const maxVal = positiveBuckets[positiveBuckets.length - 1];\n const newPositiveBuckets = positiveBuckets.map((d: number) =>\n Math.pow(maxVal, d / maxVal),\n );\n positiveBuckets.forEach((bucket: number, i: number) => {\n (buckets as number[])[(buckets as number[]).indexOf(bucket)] =\n newPositiveBuckets[i];\n });\n }\n if ((buckets as number[]).includes(0))\n (buckets as number[])[(buckets as number[]).indexOf(0)] = 1;\n }\n\n const scaleFn = this._scale === \"buckets\" || this._scale === \"quantile\"\n ? scaleThreshold\n : scaleLinear;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._colorScale = (scaleFn as (...args: unknown[]) => any)()\n .domain(buckets)\n .range(colors);\n }\n\n if (this._colorScale.clamp) this._colorScale.clamp(true);\n\n const gradient =\n this._bucketAxis ||\n ![\"buckets\", \"jenks\", \"quantile\"].includes(this._scale);\n const t = transition().duration(this._duration);\n const groupParams: Record<string, unknown> = {\n enter: {opacity: 0},\n exit: {opacity: 0},\n parent: this._group,\n transition: t,\n update: {opacity: 1},\n };\n const labelGroup = elem(\n \"g.d3plus-ColorScale-labels\",\n Object.assign({condition: gradient}, groupParams),\n );\n const rectGroup = elem(\n \"g.d3plus-ColorScale-Rect\",\n Object.assign({condition: gradient}, groupParams),\n );\n const legendGroup = elem(\n \"g.d3plus-ColorScale-legend\",\n Object.assign({condition: !gradient}, groupParams),\n );\n\n if (gradient) {\n const offsets: Record<string, number> = {x: 0, y: 0};\n\n const axisDomain = (domain as number[]).slice();\n if (this._bucketAxis) {\n const last = axisDomain[axisDomain.length - 1];\n const prev = axisDomain[axisDomain.length - 2];\n const mod = last ? last / 10 : prev / 10;\n\n const pow =\n mod >= 1 || mod <= -1\n ? Math.round(mod).toString().length - 1\n : mod\n .toString()\n .split(\".\")[1]\n .replace(/([1-9])[1-9].*$/, \"$1\").length * -1;\n const ten = Math.pow(10, pow);\n axisDomain[axisDomain.length - 1] = last + ten;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const axisConfig: Record<string, any> = assign(\n {\n domain: horizontal ? axisDomain : axisDomain.slice().reverse(),\n duration: this._duration,\n height: this._height,\n labels: labels || ticks,\n orient: this._orient,\n padding: this._padding,\n scale: this._scale === \"log\" ? \"log\" : \"linear\",\n ticks,\n width: this._width,\n },\n this._axisConfig,\n );\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const labelConfig: Record<string, any> = assign(\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n height: (this as any)[`_${height}`] / 2,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n width: (this as any)[`_${width}`] / 2,\n },\n this._labelConfig,\n );\n\n this._labelClass.config(labelConfig);\n const labelData: string[] = [];\n\n if (horizontal && this._labelMin) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const labelCSS: Record<string, any> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"font-family\": (this._labelClass.fontFamily() as any)(this._labelMin),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"font-size\": (this._labelClass.fontSize() as any)(this._labelMin),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"font-weight\": (this._labelClass.fontWeight() as any)(this._labelMin),\n };\n\n if (labelCSS[\"font-family\"] instanceof Array)\n labelCSS[\"font-family\"] = labelCSS[\"font-family\"][0];\n let labelMinWidth = textWidth(this._labelMin, labelCSS);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (labelMinWidth && labelMinWidth < (this as any)[`_${width}`] / 2) {\n labelData.push(this._labelMin);\n labelMinWidth += this._padding;\n if (horizontal) offsets.x += labelMinWidth;\n axisConfig[width] -= labelMinWidth;\n }\n }\n if (horizontal && this._labelMax) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const labelCSS: Record<string, any> = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"font-family\": (this._labelClass.fontFamily() as any)(this._labelMax),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"font-size\": (this._labelClass.fontSize() as any)(this._labelMax),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"font-weight\": (this._labelClass.fontWeight() as any)(this._labelMax),\n };\n\n if (labelCSS[\"font-family\"] instanceof Array)\n labelCSS[\"font-family\"] = labelCSS[\"font-family\"][0];\n let labelMaxWidth = textWidth(this._labelMax, labelCSS);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (labelMaxWidth && labelMaxWidth < (this as any)[`_${width}`] / 2) {\n labelData.push(this._labelMax);\n labelMaxWidth += this._padding;\n if (!horizontal) offsets.y += labelMaxWidth;\n axisConfig[width] -= labelMaxWidth;\n }\n }\n\n this._axisTest\n .select(\n elem(\"g.d3plus-ColorScale-axisTest\", {\n enter: {opacity: 0},\n parent: this._group,\n }).node(),\n )\n .config(axisConfig)\n .duration(0)\n .render();\n\n const axisBounds = this._axisTest.outerBounds();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._outerBounds[width] = (this as any)[`_${width}`] - this._padding * 2;\n this._outerBounds[height] = axisBounds[height] + this._size;\n\n this._outerBounds[x] = this._padding;\n this._outerBounds[y] = this._padding;\n if (this._align === \"middle\")\n this._outerBounds[y] =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((this as any)[`_${height}`] - this._outerBounds[height]) / 2;\n else if (this._align === \"end\")\n this._outerBounds[y] =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this as any)[`_${height}`] -\n this._padding -\n this._outerBounds[height];\n\n const axisGroupOffset =\n this._outerBounds[y] +\n ([\"bottom\", \"right\"].includes(this._orient) ? this._size : 0) -\n (axisConfig.padding || this._axisClass.padding());\n const transform = `translate(${offsets.x + (horizontal ? 0 : axisGroupOffset)}, ${offsets.y + (horizontal ? axisGroupOffset : 0)})`;\n this._axisClass\n .select(\n elem(\n \"g.d3plus-ColorScale-axis\",\n assign(groupParams, {\n condition: true,\n enter: {transform},\n update: {transform},\n }),\n ).node(),\n )\n .config(axisConfig)\n .align(\"start\")\n .render();\n\n const axisScale = this._axisTest._getPosition.bind(this._axisTest);\n const scaleRange = this._axisTest._getRange();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let defs: any = this._group.selectAll(\"defs\").data([0]);\n const defsEnter = defs.enter().append(\"defs\");\n defsEnter.append(\"linearGradient\").attr(\"id\", `gradient-${this._uuid}`);\n defs = defsEnter.merge(defs);\n defs\n .select(\"linearGradient\")\n .attr(`${x}1`, horizontal ? \"0%\" : \"100%\")\n .attr(`${x}2`, horizontal ? \"100%\" : \"0%\")\n .attr(`${y}1`, \"0%\")\n .attr(`${y}2`, \"0%\");\n const stops = defs\n .select(\"linearGradient\")\n .selectAll(\"stop\")\n .data(colors);\n const scaleDomain = this._colorScale.domain();\n const offsetScale = scaleLinear()\n .domain(scaleRange as number[])\n .range(horizontal ? [0, 100] : [100, 0]);\n\n stops\n .enter()\n .append(\"stop\")\n .merge(stops as never)\n .attr(\n \"offset\",\n (_d: unknown, i: number) =>\n `${i <= scaleDomain.length - 1 ? offsetScale(axisScale(scaleDomain[i])) : 100}%`,\n )\n .attr(\"stop-color\", String);\n\n /** determines the width of buckets*/\n const bucketWidth = (d: number, i: number): number => {\n const next = ticks![i + 1] || axisDomain[axisDomain.length - 1];\n return Math.abs(axisScale(next) - axisScale(d));\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const rectConfig: Record<string, any> = assign(\n {\n duration: this._duration,\n fill: ticks\n ? (d: number) => this._colorScale(d)\n : `url(#gradient-${this._uuid})`,\n [x]: ticks\n ? (d: number, i: number) =>\n axisScale(d) +\n bucketWidth(d, i) / 2 -\n ([\"left\", \"right\"].includes(this._orient)\n ? bucketWidth(d, i)\n : 0)\n : (scaleRange[0] as number) + ((scaleRange[1] as number) - (scaleRange[0] as number)) / 2 + offsets[x],\n [y]:\n this._outerBounds[y] +\n ([\"top\", \"left\"].includes(this._orient) ? axisBounds[height] : 0) +\n this._size / 2 +\n offsets[y],\n [width]: ticks ? bucketWidth : (scaleRange[1] as number) - (scaleRange[0] as number),\n [height]: this._size,\n },\n this._rectConfig,\n );\n\n this._rectClass\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .data((ticks || [0]) as any)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .id(((_d: unknown, i: number) => i) as any)\n .select(rectGroup.node())\n .config(rectConfig)\n .render();\n\n labelConfig.height = this._outerBounds[height];\n labelConfig.width = this._outerBounds[width];\n this._labelClass\n .config(labelConfig)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .data(labelData as any)\n .select(labelGroup.node())\n .x(((d: DataPoint) =>\n (d as unknown as string) === this._labelMax\n ? rectConfig.x + rectConfig.width / 2 + this._padding\n : this._outerBounds.x) as unknown as number)\n .y(\n ((d: DataPoint) =>\n rectConfig.y -\n (this._labelClass.fontSize() as (d: DataPoint) => number)(d) /\n 2) as unknown as number,\n )\n .text(((d: DataPoint) => d) as unknown as string)\n .rotate(horizontal ? 0 : this._orient === \"right\" ? 90 : -90)\n .render();\n } else {\n elem(\n \"g.d3plus-ColorScale-axis\",\n Object.assign({condition: gradient}, groupParams),\n );\n\n let legendData = ticks!.reduce((arr: {color: string; id: string}[], tick: number, i: number) => {\n const label = this._bucketFormat.bind(this)(tick, i, ticks!, allValues);\n arr.push({color: colors[i + 1], id: label});\n\n return arr;\n }, []);\n if (!horizontal) legendData = legendData.reverse();\n\n const legendConfig = assign(\n {\n align: horizontal\n ? \"center\"\n : ({start: \"left\", middle: \"center\", end: \"right\"} as Record<string, string>)[this._align],\n direction: horizontal ? \"row\" : \"column\",\n duration: this._duration,\n height: this._height,\n padding: this._padding,\n shapeConfig: assign(\n {duration: this._duration} as Record<string, unknown>,\n (this._axisConfig.shapeConfig || {}) as Record<string, unknown>,\n ),\n title: this._axisConfig.title,\n titleConfig: (this._axisConfig.titleConfig || {}) as Record<string, unknown>,\n width: this._width,\n verticalAlign: horizontal\n ? ({start: \"top\", middle: \"middle\", end: \"bottom\"} as Record<string, string>)[this._align]\n : \"middle\",\n } as Record<string, unknown>,\n this._legendConfig,\n );\n\n this._legendClass\n .data(legendData)\n .select(legendGroup.node())\n .config(legendConfig)\n .render();\n\n this._outerBounds = this._legendClass.outerBounds();\n }\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n }\n\n /**\n The [ColorScale](http://d3plus.org/docs/#ColorScale) is constructed by combining an [Axis](http://d3plus.org/docs/#Axis) for the ticks/labels and a [Rect](http://d3plus.org/docs/#Rect) for the actual color box (or multiple boxes, as in a jenks scale). Because of this, there are separate configs for the [Axis](http://d3plus.org/docs/#Axis) class used to display the text ([axisConfig](http://d3plus.org/docs/#ColorScale.axisConfig)) and the [Rect](http://d3plus.org/docs/#Rect) class used to draw the color breaks ([rectConfig](http://d3plus.org/docs/#ColorScale.rectConfig)). This method acts as a pass-through to the config method of the [Axis](http://d3plus.org/docs/#Axis). An example usage of this method can be seen [here](http://d3plus.org/examples/d3plus-legend/colorScale-dark/).\n*/\n axisConfig(): Record<string, unknown>;\n axisConfig(_: Record<string, unknown>): this;\n axisConfig(_?: Record<string, unknown>): unknown {\n return arguments.length\n ? ((this._axisConfig = assign(this._axisConfig, _!)), this)\n : this._axisConfig;\n }\n\n /**\n The horizontal alignment.\n*/\n align(): string;\n align(_: string): this;\n align(_?: string): unknown {\n return arguments.length ? ((this._align = _!), this) : this._align;\n }\n\n /**\n The number of discrete buckets to create in a bucketed color scale. Will be overridden by any custom Array of colors passed to the `color` method. Optionally, users can supply an Array of values used to separate buckets, such as `[0, 10, 25, 50, 90]` for a percentage scale. This value would create 4 buckets, with each value representing the break point between each bucket (so 5 values makes 4 buckets).\n*/\n buckets(): number | number[];\n buckets(_: number | number[]): this;\n buckets(_?: number | number[]): unknown {\n return arguments.length ? ((this._buckets = _!), this) : this._buckets;\n }\n\n /**\n Determines whether or not to use an Axis to display bucket scales (both \"buckets\" and \"jenks\"). When set to `false`, bucketed scales will use the `Legend` class to display squares for each range of data. When set to `true`, bucketed scales will be displayed on an `Axis`, similar to \"linear\" scales.\n*/\n bucketAxis(): boolean;\n bucketAxis(_: boolean): this;\n bucketAxis(_?: boolean): unknown {\n return arguments.length\n ? ((this._bucketAxis = _!), this)\n : this._bucketAxis;\n }\n\n /**\n A function for formatting the labels associated to each bucket in a bucket-type scale (\"jenks\", \"quantile\", etc). The function is passed four arguments: the start value of the current bucket, it's index in the full Array of buckets, the full Array of buckets, and an Array of every value present in the data used to construct the buckets. Keep in mind that the end value for the bucket is not actually the next bucket in the list, but includes every value up until that next bucket value (less than, but not equal to). By default, d3plus will make the end value slightly less than it's current value, so that it does not overlap with the start label for the next bucket.\n*/\n bucketFormat(): (\n tick: number,\n i: number,\n ticks: number[],\n allValues: number[],\n ) => string;\n bucketFormat(\n _: (\n tick: number,\n i: number,\n ticks: number[],\n allValues: number[],\n ) => string,\n ): this;\n bucketFormat(\n _?: (\n tick: number,\n i: number,\n ticks: number[],\n allValues: number[],\n ) => string,\n ): unknown {\n return arguments.length\n ? ((this._bucketFormat = _!), this)\n : this._bucketFormat;\n }\n\n /**\n A function that receives the minimum and maximum values of a bucket, and is expected to return the full label.\n*/\n bucketJoiner(): (a: string, b: string) => string;\n bucketJoiner(_: (a: string, b: string) => string): this;\n bucketJoiner(_?: (a: string, b: string) => string): unknown {\n return arguments.length\n ? ((this._bucketJoiner = _!), this)\n : this._bucketJoiner;\n }\n\n /**\n Determines whether or not to display a midpoint centered Axis. Does not apply to quantile scales.\n*/\n centered(): boolean;\n centered(_: boolean): this;\n centered(_?: boolean): unknown {\n return arguments.length ? ((this._centered = _!), this) : this._centered;\n }\n\n /**\n Overrides the default internal logic of `colorMin`, `colorMid`, and `colorMax` to only use just this specified color. If a single color is given as a String, then the scale is interpolated by lightening that color. Otherwise, the function expects an Array of color values to be used in order for the scale.\n*/\n color(): string | string[];\n color(_: string | string[]): this;\n color(_?: string | string[]): unknown {\n return arguments.length ? ((this._color = _!), this) : this._color;\n }\n\n /**\n Defines the color to be used for numbers greater than the value of the `midpoint` on the scale (defaults to `0`). Colors in between this value and the value of `colorMid` will be interpolated, unless a custom Array of colors has been specified using the `color` method.\n*/\n colorMax(): string;\n colorMax(_: string): this;\n colorMax(_?: string): unknown {\n return arguments.length ? ((this._colorMax = _!), this) : this._colorMax;\n }\n\n /**\n Defines the color to be used for the midpoint of a diverging scale, based on the current value of the `midpoint` method (defaults to `0`). Colors in between this value and the values of `colorMin` and `colorMax` will be interpolated, unless a custom Array of colors has been specified using the `color` method.\n*/\n colorMid(): string;\n colorMid(_: string): this;\n colorMid(_?: string): unknown {\n return arguments.length ? ((this._colorMid = _!), this) : this._colorMid;\n }\n\n /**\n Defines the color to be used for numbers less than the value of the `midpoint` on the scale (defaults to `0`). Colors in between this value and the value of `colorMid` will be interpolated, unless a custom Array of colors has been specified using the `color` method.\n*/\n colorMin(): string;\n colorMin(_: string): this;\n colorMin(_?: string): unknown {\n return arguments.length ? ((this._colorMin = _!), this) : this._colorMin;\n }\n\n /**\n The data array used to create shapes. A shape key will be drawn for each object in the array.\n*/\n data(): DataPoint[];\n data(_: DataPoint[]): this;\n data(_?: DataPoint[]): unknown {\n return arguments.length ? ((this._data = _!), this) : this._data;\n }\n\n /**\n In a linear scale, this Array of 2 values defines the min and max values used in the color scale. Any values outside of this range will be mapped to the nearest color value.\n*/\n domain(): number[] | undefined;\n domain(_: number[]): this;\n domain(_?: number[]): unknown {\n return arguments.length ? ((this._domain = _), this) : this._domain;\n }\n\n /**\n Transition duration of the ColorScale.\n*/\n duration(): number;\n duration(_: number): this;\n duration(_?: number): unknown {\n return arguments.length ? ((this._duration = _!), this) : this._duration;\n }\n\n /**\n Overall height of the ColorScale.\n*/\n height(): number;\n height(_: number): this;\n height(_?: number): unknown {\n return arguments.length ? ((this._height = _!), this) : this._height;\n }\n\n /**\n A pass-through for the [TextBox](http://d3plus.org/docs/#TextBox) class used to style the labelMin and labelMax text.\n*/\n labelConfig(): Record<string, unknown>;\n labelConfig(_: Record<string, unknown>): this;\n labelConfig(_?: Record<string, unknown>): unknown {\n return arguments.length\n ? ((this._labelConfig = assign(this._labelConfig, _!)), this)\n : this._labelConfig;\n }\n\n /**\n Defines a text label to be displayed off of the end of the minimum point in the scale (currently only available in horizontal orientation).\n*/\n labelMin(): string | undefined;\n labelMin(_: string): this;\n labelMin(_?: string): unknown {\n return arguments.length ? ((this._labelMin = _), this) : this._labelMin;\n }\n\n /**\n Defines a text label to be displayed off of the end of the maximum point in the scale (currently only available in horizontal orientation).\n*/\n labelMax(): string | undefined;\n labelMax(_: string): this;\n labelMax(_?: string): unknown {\n return arguments.length ? ((this._labelMax = _), this) : this._labelMax;\n }\n\n /**\n The [ColorScale](http://d3plus.org/docs/#ColorScale) is constructed by combining an [Axis](http://d3plus.org/docs/#Axis) for the ticks/labels and a [Rect](http://d3plus.org/docs/#Rect) for the actual color box (or multiple boxes, as in a jenks scale). Because of this, there are separate configs for the [Axis](http://d3plus.org/docs/#Axis) class used to display the text ([axisConfig](http://d3plus.org/docs/#ColorScale.axisConfig)) and the [Rect](http://d3plus.org/docs/#Rect) class used to draw the color breaks ([rectConfig](http://d3plus.org/docs/#ColorScale.rectConfig)). This method acts as a pass-through to the config method of the [Axis](http://d3plus.org/docs/#Axis). An example usage of this method can be seen [here](http://d3plus.org/examples/d3plus-legend/colorScale-dark/).\n*/\n legendConfig(): Record<string, unknown>;\n legendConfig(_: Record<string, unknown>): this;\n legendConfig(_?: Record<string, unknown>): unknown {\n return arguments.length\n ? ((this._legendConfig = assign(this._legendConfig, _!)), this)\n : this._legendConfig;\n }\n\n /**\n The number value to be used as the anchor for `colorMid`, and defines the center point of the diverging color scale.\n*/\n midpoint(): number;\n midpoint(_: number): this;\n midpoint(_?: number): unknown {\n return arguments.length ? ((this._midpoint = _!), this) : this._midpoint;\n }\n\n /**\n The flow orientation of the ColorScale items.\n*/\n orient(): string;\n orient(_: string): this;\n orient(_?: string): unknown {\n return arguments.length ? ((this._orient = _!), this) : this._orient;\n }\n\n /**\n Returns the outer bounds of the ColorScale content. Must be called after rendering.\n @example\n{\"width\": 180, \"height\": 24, \"x\": 10, \"y\": 20}\n*/\n outerBounds(): Record<string, number> {\n return this._outerBounds;\n }\n\n /**\n The padding between each key.\n*/\n padding(): number;\n padding(_: number): this;\n padding(_?: number): unknown {\n return arguments.length ? ((this._padding = _!), this) : this._padding;\n }\n\n /**\n The [ColorScale](http://d3plus.org/docs/#ColorScale) is constructed by combining an [Axis](http://d3plus.org/docs/#Axis) for the ticks/labels and a [Rect](http://d3plus.org/docs/#Rect) for the actual color box (or multiple boxes, as in a jenks scale). Because of this, there are separate configs for the [Axis](http://d3plus.org/docs/#Axis) class used to display the text ([axisConfig](http://d3plus.org/docs/#ColorScale.axisConfig)) and the [Rect](http://d3plus.org/docs/#Rect) class used to draw the color breaks ([rectConfig](http://d3plus.org/docs/#ColorScale.rectConfig)). This method acts as a pass-through to the config method of the [Rect](http://d3plus.org/docs/#Rect). An example usage of this method can be seen [here](http://d3plus.org/examples/d3plus-legend/colorScale-dark/).\n*/\n rectConfig(): Record<string, unknown>;\n rectConfig(_: Record<string, unknown>): this;\n rectConfig(_?: Record<string, unknown>): unknown {\n return arguments.length\n ? ((this._rectConfig = assign(this._rectConfig, _!)), this)\n : this._rectConfig;\n }\n\n /**\n Scale of the ColorScale.\n*/\n scale(): string;\n scale(_: string): this;\n scale(_?: string): unknown {\n return arguments.length ? ((this._scale = _!), this) : this._scale;\n }\n\n /**\n The SVG container element for this visualization. 3 selector or DOM element.\n*/\n select(): D3Selection;\n select(_: string | HTMLElement): this;\n select(_?: string | HTMLElement): unknown {\n return arguments.length\n ? ((this._select = select(_ as never) as unknown as D3Selection), this)\n : this._select;\n }\n\n /**\n The height of horizontal color scales, and width when positioned vertical.\n*/\n size(): number;\n size(_: number): this;\n size(_?: number): unknown {\n return arguments.length ? ((this._size = _!), this) : this._size;\n }\n\n /**\n The value accessor used to determine each data point's position on the color scale.\n\n@example\nfunction value(d) {\n return d.value;\n}\n*/\n value(): (d: DataPoint, i?: number) => DataPoint[keyof DataPoint];\n value(\n _: ((d: DataPoint, i?: number) => DataPoint[keyof DataPoint]) | string,\n ): this;\n value(\n _?: ((d: DataPoint, i?: number) => DataPoint[keyof DataPoint]) | string,\n ): unknown {\n return arguments.length\n ? ((this._value = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._value;\n }\n\n /**\n Overall width of the ColorScale.\n*/\n width(): number;\n width(_: number): this;\n width(_?: number): unknown {\n return arguments.length ? ((this._width = _!), this) : this._width;\n }\n}\n"],"names":["extent","max","min","quantile","range","deviation","interpolateRgb","scaleLinear","scaleThreshold","select","transition","colorContrast","colorDefaults","colorLighter","unique","assign","backgroundColor","elem","textWidth","formatAbbreviate","ckmeans","Axis","TextBox","Rect","accessor","BaseClass","constant","Legend","ColorScale","_select","_axisClass","_axisConfig","_axisTest","_align","_buckets","_bucketAxis","_bucketFormat","_bucketJoiner","_centered","_color","_colorMax","_colorMid","_colorMin","_colorScale","_data","_domain","_duration","_group","_height","_labelClass","_labelConfig","_labelMin","_labelMax","_legendClass","_legendConfig","_midpoint","_orient","_outerBounds","_padding","_rectClass","_rectConfig","_scale","_size","_value","_width","gridSize","tick","i","ticks","allValues","format","tickFormat","next","prev","last","length","suffix","mod","pow","Math","round","toString","split","replace","ten","prevValue","find","d","nextValue","reverse","a","b","on","light","off","fontColor","bg","node","fontSize","shapeConfig","stroke","dark","strokeWidth","width","height","x","y","parent","render","callback","append","attr","horizontal","includes","map","filter","sort","domain","negative","positive","diverging","numBuckets","Array","floor","colors","undefined","labels","buckets","jenks","half","residual","negatives","negativesDeviation","positives","concat","positivesDeviation","isNegativeMax","isPositiveMax","negativeJenks","positiveJenks","c","tickSet","Set","size","from","slice","spanning","negativeColors","_d","spanningColors","positiveColors","negativeColorScale","gamma","positiveColorScale","step","midIndex","indexOf","negativeStep","positiveStep","negativeBuckets","positiveBuckets","minVal","newNegativeBuckets","abs","forEach","bucket","maxVal","newPositiveBuckets","scaleFn","clamp","gradient","t","duration","groupParams","enter","opacity","exit","update","labelGroup","Object","condition","rectGroup","legendGroup","offsets","axisDomain","axisConfig","orient","padding","scale","labelConfig","config","labelData","labelCSS","fontFamily","fontWeight","labelMinWidth","push","labelMaxWidth","axisBounds","outerBounds","axisGroupOffset","transform","align","axisScale","_getPosition","bind","scaleRange","_getRange","defs","selectAll","data","defsEnter","_uuid","merge","stops","scaleDomain","offsetScale","String","bucketWidth","rectConfig","fill","id","text","rotate","legendData","reduce","arr","label","color","legendConfig","start","middle","end","direction","title","titleConfig","verticalAlign","setTimeout","_","arguments","bucketAxis","bucketFormat","bucketJoiner","centered","colorMax","colorMid","colorMin","labelMin","labelMax","midpoint","value"],"mappings":"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"}
@@ -618,3 +618,5 @@ var Legend = /*#__PURE__*/ function(BaseClass) {
618
618
  /**
619
619
  Creates an SVG legend based on an array of data.
620
620
  */ export { Legend as default };
621
+
622
+ //# sourceMappingURL=Legend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Legend.ts"],"sourcesContent":["import {max, sum} from \"d3-array\";\nimport {select} from \"d3-selection\";\n\nimport {colorContrast} from \"@d3plus/color\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {assign, backgroundColor, elem, rtl as detectRTL, textWidth} from \"@d3plus/dom\";\nimport type {D3Selection} from \"@d3plus/dom\";\nimport {textWrap} from \"@d3plus/text\";\n\nimport {TextBox} from \"../components/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, BaseClass, configPrep, constant} from \"../utils/index.js\";\n\nconst padding = 5;\n\n/**\n Creates an SVG legend based on an array of data.\n*/\nexport default class Legend extends BaseClass {\n _titleClass: TextBox;\n _align: string;\n _data: DataPoint[];\n _direction: string;\n _duration: number;\n _height: number;\n \n _id: (d: DataPoint, i?: number) => unknown;\n _label: (d: DataPoint, i?: number) => unknown;\n _lineData: Record<string, unknown>[];\n _outerBounds: Record<string, number>;\n _padding: number;\n _shape: (d: DataPoint, i?: number) => unknown;\n _select!: D3Selection;\n _shapes: unknown[];\n _shapeConfig: Record<string, unknown>;\n _titleConfig: Record<string, unknown>;\n _verticalAlign: string;\n _width: number;\n _rtl: boolean;\n _group!: D3Selection;\n _titleGroup!: D3Selection;\n _shapeGroup!: D3Selection;\n _titleHeight: number;\n _titleWidth: number;\n _title: string | undefined;\n _wrapLines: (() => void) | undefined;\n _wrapRows: (() => void) | undefined;\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._titleClass = new TextBox();\n\n this._align = \"center\";\n this._data = [];\n this._direction = \"row\";\n this._duration = 600;\n this._height = 200;\n this._id = accessor(\"id\");\n this._label = accessor(\"id\");\n this._lineData = [];\n this._outerBounds = {width: 0, height: 0, x: 0, y: 0};\n this._padding = 5;\n this._shape = constant(\"Rect\");\n this._shapes = [];\n this._shapeConfig = {\n fill: accessor(\"color\"),\n height: constant(12),\n hitArea: (dd: DataPoint, i: number) => {\n const d = this._lineData[i],\n h = max([d.height as number, d.shapeHeight as number]);\n return {\n width: (d.width as number) + (d.shapeWidth as number),\n height: h,\n x: -(d.shapeWidth as number) / 2,\n y: -h! / 2,\n };\n },\n labelBounds: (dd: DataPoint, i: number) => {\n const d = this._lineData[i];\n let x = (d.shapeWidth as number) / 2;\n if (d.shape === \"Circle\") x -= (d.shapeR as number) / 2;\n const height = max([d.shapeHeight as number, d.height as number]);\n const rtlMod = this._rtl\n ? (d.shapeWidth as number) + (d.width as number) + this._padding * 2\n : 0;\n return {\n width: d.width as number,\n height,\n x: x + padding - rtlMod,\n y: -height! / 2,\n };\n },\n labelConfig: {\n fontColor: () => {\n const bg = this._select ? backgroundColor(this._select.node()) : \"rgb(255, 255, 255)\";\n return colorContrast(bg);\n },\n fontFamily: this._titleClass.fontFamily(),\n fontResize: false,\n fontSize: constant(10),\n verticalAlign: \"middle\",\n },\n opacity: 1,\n r: constant(6),\n width: constant(12),\n x: (d: DataPoint, i: number) => {\n const datum = this._lineData[i];\n const y = datum.y;\n const pad =\n this._align === \"left\" ||\n (this._align === \"right\" && this._direction === \"column\")\n ? 0\n : this._align === \"center\"\n ? (this._outerBounds.width -\n this._rowWidth(\n this._lineData.filter(\n (l: Record<string, unknown>) => y === l.y,\n ),\n )) /\n 2\n : this._outerBounds.width -\n this._rowWidth(\n this._lineData.filter((l: Record<string, unknown>) => y === l.y),\n );\n const prevWords = this._lineData\n .slice(0, i)\n .filter((l: Record<string, unknown>) => y === l.y);\n const rtlMod = this._rtl ? (datum.width as number) + this._padding : 0;\n return (\n this._rowWidth(prevWords) +\n this._padding * (prevWords.length ? (datum.sentence ? 2 : 1) : 0) +\n this._outerBounds.x +\n (datum.shapeWidth as number) / 2 +\n pad +\n rtlMod\n );\n },\n y: (d: DataPoint, i: number) => {\n const ld = this._lineData[i];\n return (\n (ld.y as number) +\n this._titleHeight +\n this._outerBounds.y +\n max(\n this._lineData\n .filter((l: Record<string, unknown>) => ld.y === l.y)\n .map((l: Record<string, unknown>) => l.height as number)\n .concat(\n this._data.map((l: DataPoint, x: number) =>\n this._fetchConfig(\"height\", l, x) as number,\n ),\n ),\n )! /\n 2\n );\n },\n };\n this._titleConfig = {\n fontSize: 12,\n };\n this._verticalAlign = \"middle\";\n this._width = 400;\n this._rtl = false;\n this._titleHeight = 0;\n this._titleWidth = 0;\n }\n\n /**\n @param key The configuration key.\n @param d The data point.\n @param i The data index.\n @private\n */\n _fetchConfig(key: string, d: DataPoint, i: number): unknown {\n const labelConfig = this._shapeConfig.labelConfig as Record<string, unknown> | undefined;\n const val =\n this._shapeConfig[key] !== undefined\n ? this._shapeConfig[key]\n : labelConfig?.[key];\n if (!val && key === \"lineHeight\")\n return (this._fetchConfig(\"fontSize\", d, i) as number) * 1.4;\n return typeof val === \"function\" ? (val as (d: DataPoint, i: number) => unknown)(d, i) : val;\n }\n\n /**\n @param row The legend row data.\n @private\n */\n _rowHeight(row: Record<string, unknown>[]): number {\n return (\n max(\n row\n .map((d: Record<string, unknown>) => d.height as number)\n .concat(row.map((d: Record<string, unknown>) => d.shapeHeight as number)),\n )! + this._padding\n );\n }\n\n /**\n @param row The legend row data.\n @private\n */\n _rowWidth(row: Record<string, unknown>[]): number {\n return sum(\n row.map((d: Record<string, unknown>, i: number) => {\n const p = this._padding * (i === row.length - 1 ? 0 : d.width ? 2 : 1);\n return (d.shapeWidth as number) + (d.width as number) + p;\n }),\n );\n }\n\n /**\n Renders the current Legend to the page.\n @param callback Optional callback invoked after rendering completes.\n*/\n render(callback?: (...args: unknown[]) => unknown): this {\n if (this._select === void 0)\n this.select(\n select(\"body\")\n .append(\"svg\")\n .attr(\"width\", `${this._width}px`)\n .attr(\"height\", `${this._height}px`)\n .node(),\n );\n\n // Legend Container <g> Groups\n this._group = elem(\"g.d3plus-Legend\", {parent: this._select});\n this._titleGroup = elem(\"g.d3plus-Legend-title\", {parent: this._group});\n this._shapeGroup = elem(\"g.d3plus-Legend-shape\", {parent: this._group});\n\n let availableHeight = this._height;\n this._titleHeight = 0;\n this._titleWidth = 0;\n if (this._title) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const f = (this._titleConfig.fontFamily || (this._titleClass.fontFamily() as any)()) as string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n s = (this._titleConfig.fontSize || (this._titleClass.fontSize() as any)()) as number;\n let lH = (this._titleConfig.lineHeight || this._titleClass.lineHeight()) as ((...args: unknown[]) => number) | number | undefined;\n lH = typeof lH === \"function\" ? lH() : (lH ?? s * 1.4);\n\n const res = textWrap()\n .fontFamily(f)\n .fontSize(s)\n .lineHeight(lH)\n .width(this._width)\n .height(this._height)(this._title);\n this._titleHeight = lH + res.lines.length + this._padding;\n this._titleWidth = max(res.widths)!;\n availableHeight -= this._titleHeight;\n }\n\n // Calculate Text Sizes\n this._lineData = this._data.map((d: DataPoint, i: number) => {\n const label = this._label(d, i);\n const shape = this._shape(d, i);\n const r = this._fetchConfig(\"r\", d, i) as number;\n\n let res: Record<string, unknown> = {\n data: d,\n i,\n id: this._id(d, i),\n shape,\n shapeR: r,\n shapeWidth:\n shape === \"Circle\" ? r * 2 : this._fetchConfig(\"width\", d, i),\n shapeHeight:\n shape === \"Circle\" ? r * 2 : this._fetchConfig(\"height\", d, i),\n y: 0,\n };\n\n if (!label) {\n res.sentence = false;\n res.words = [];\n res.height = 0;\n res.width = 0;\n return res;\n }\n\n const f = this._fetchConfig(\"fontFamily\", d, i) as string,\n lh = this._fetchConfig(\"lineHeight\", d, i) as number,\n s = this._fetchConfig(\"fontSize\", d, i) as number;\n\n const h = availableHeight - (this._data.length + 1) * this._padding,\n w = this._width;\n\n const newRes = textWrap()\n .fontFamily(f)\n .fontSize(s)\n .lineHeight(lh)\n .width(w)\n .height(h)(label as string);\n\n res = Object.assign(res, newRes);\n\n res.width =\n Math.ceil(\n max(\n (res.lines as string[]).map((t: string) =>\n textWidth(t, {\"font-family\": f, \"font-size\": s}),\n ),\n ) as unknown as number,\n ) +\n padding * 2;\n res.height = Math.ceil((res.lines as string[]).length * (lh + 1));\n res.og = {height: res.height, width: res.width};\n res.f = f;\n res.s = s;\n res.lh = lh;\n\n return res;\n });\n\n let spaceNeeded: number;\n const availableWidth = this._width - this._padding * 2;\n spaceNeeded = this._rowWidth(this._lineData);\n\n if (this._direction === \"column\" || spaceNeeded > availableWidth) {\n let lines = 1,\n newRows: Record<string, unknown>[][] = [];\n\n const maxLines = max(\n this._lineData.map((d: Record<string, unknown>) => (d.words as unknown[]).length),\n );\n this._wrapLines = function (this: Legend) {\n lines++;\n\n if (lines > maxLines!) return;\n\n const wrappable =\n lines === 1\n ? this._lineData.slice()\n :\n this._lineData\n .filter(\n (d: Record<string, unknown>) =>\n (d.width as number) + (d.shapeWidth as number) + this._padding * (d.width ? 2 : 1) >\n availableWidth && (d.words as unknown[]).length >= lines,\n )\n .sort(\n (a: Record<string, unknown>, b: Record<string, unknown>) =>\n (b.sentence as string).length - (a.sentence as string).length,\n );\n\n if (wrappable.length && availableHeight > (wrappable[0].height as number) * lines) {\n let truncated = false;\n for (let x = 0; x < wrappable.length; x++) {\n const label = wrappable[x];\n const og = label.og as Record<string, number>;\n const h = og.height * lines,\n w = og.width * (1.5 * (1 / lines));\n const res = textWrap()\n .fontFamily(label.f as string)\n .fontSize(label.s as number)\n .lineHeight(label.lh as number)\n .width(w)\n .height(h)(label.sentence as string);\n if (!res.truncated) {\n label.width =\n Math.ceil(\n max(\n res.lines.map((t: string) =>\n textWidth(t, {\n \"font-family\": label.f as string,\n \"font-size\": label.s as number,\n }),\n ),\n )!,\n ) + (label.s as number);\n label.height = res.lines.length * ((label.lh as number) + 1);\n } else {\n truncated = true;\n break;\n }\n }\n if (!truncated) this._wrapRows!();\n } else {\n newRows = [];\n return;\n }\n };\n\n this._wrapRows = function (this: Legend) {\n newRows = [];\n let row = 1,\n rowWidth = 0;\n for (let i = 0; i < this._lineData.length; i++) {\n const d = this._lineData[i],\n w = (d.width as number) + this._padding * (d.width ? 2 : 1) + (d.shapeWidth as number);\n if (\n sum(\n newRows.map((row: Record<string, unknown>[]) =>\n max(row, (d: Record<string, unknown>) =>\n max([d.height as number, d.shapeHeight as number]),\n ),\n ),\n ) > availableHeight\n ) {\n newRows = [];\n break;\n }\n if (w > availableWidth) {\n newRows = [];\n this._wrapLines!();\n break;\n } else if (rowWidth + w < availableWidth) {\n rowWidth += w;\n } else if (this._direction !== \"column\") {\n rowWidth = w;\n row++;\n }\n if (!newRows[row - 1]) newRows[row - 1] = [];\n newRows[row - 1].push(d);\n if (this._direction === \"column\") {\n rowWidth = 0;\n row++;\n }\n }\n };\n\n this._wrapRows();\n\n if (\n !newRows.length ||\n sum(newRows, this._rowHeight.bind(this)) + this._padding >\n availableHeight\n ) {\n spaceNeeded =\n sum(\n this._lineData.map(\n (d: Record<string, unknown>) => (d.shapeWidth as number) + this._padding,\n ),\n ) - this._padding;\n for (let i = 0; i < this._lineData.length; i++) {\n this._lineData[i].width = 0;\n this._lineData[i].height = 0;\n }\n this._wrapRows();\n }\n\n if (\n newRows.length &&\n sum(newRows, this._rowHeight.bind(this)) + this._padding <\n availableHeight\n ) {\n newRows.forEach((row: Record<string, unknown>[], i: number) => {\n row.forEach((d: Record<string, unknown>) => {\n if (i) {\n d.y = sum(newRows.slice(0, i), this._rowHeight.bind(this));\n }\n });\n });\n spaceNeeded = max(\n newRows,\n this._rowWidth.bind(this),\n ) as unknown as number;\n }\n }\n\n const innerHeight =\n max(\n this._lineData,\n (d: Record<string, unknown>, i: number) =>\n max([d.height as number, this._fetchConfig(\"height\", d.data as DataPoint, i) as number])! + (d.y as number),\n )! + this._titleHeight,\n innerWidth = max([spaceNeeded, this._titleWidth])!;\n\n this._outerBounds.width = innerWidth;\n this._outerBounds.height = innerHeight;\n\n let xOffset = this._padding,\n yOffset = this._padding;\n if (this._align === \"center\") xOffset = (this._width - innerWidth) / 2;\n else if (this._align === \"right\")\n xOffset = this._width - this._padding - innerWidth;\n if (this._verticalAlign === \"middle\")\n yOffset = (this._height - innerHeight) / 2;\n else if (this._verticalAlign === \"bottom\")\n yOffset = this._height - this._padding - innerHeight;\n this._outerBounds.x = xOffset;\n this._outerBounds.y = yOffset;\n\n this._titleClass\n .data(this._title ? [{text: this._title}] : [])\n .duration(this._duration)\n .select(this._titleGroup.node())\n .textAnchor(({left: \"start\", center: \"middle\", right: \"end\"} as Record<string, string>)[this._align])\n .width(this._width - this._padding * 2)\n .x(this._padding)\n .y(this._outerBounds.y)\n .config(this._titleConfig)\n .render();\n\n this._shapes = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const baseConfig = configPrep.bind(this as any)(this._shapeConfig, \"legend\"),\n config = {\n id: (d: Record<string, unknown>) => d.id,\n label: (d: Record<string, unknown>) => d.label,\n lineHeight: (d: Record<string, unknown>) => d.lH,\n };\n\n const data = this._data.map((d: DataPoint, i: number) => {\n const obj: Record<string, unknown> = {\n __d3plus__: true,\n data: d,\n i,\n id: this._id(d, i),\n label: this._lineData[i].width ? this._label(d, i) : false,\n lH: this._fetchConfig(\"lineHeight\", d, i),\n shape: this._shape(d, i),\n };\n\n return obj;\n });\n\n // Legend Shapes\n this._shapes = [];\n ([\"Circle\", \"Rect\"] as const).forEach((Shape: string) => {\n this._shapes.push(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n new (shapes as Record<string, new () => any>)[Shape]()\n .parent(this)\n .data(data.filter((d: Record<string, unknown>) => d.shape === Shape))\n .duration(this._duration)\n .labelConfig({padding: 0})\n .select(this._shapeGroup.node())\n .verticalAlign(\"top\")\n .config(assign({}, baseConfig, config))\n .render(),\n );\n });\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n }\n\n /**\n The active method for all shapes.\n*/\n active(_: unknown): this {\n this._shapes.forEach((s: unknown) =>\n (s as Record<string, (...args: unknown[]) => unknown>).active(_),\n );\n return this;\n }\n\n /**\n The horizontal alignment.\n*/\n align(): string;\n align(_: string): this;\n align(_?: string): string | this {\n return arguments.length ? ((this._align = _!), this) : this._align;\n }\n\n /**\n The data array used to create shapes. A shape key will be drawn for each object in the array.\n*/\n data(): DataPoint[];\n data(_: DataPoint[]): this;\n data(_?: DataPoint[]): DataPoint[] | this {\n return arguments.length ? ((this._data = _!), this) : this._data;\n }\n\n /**\n The flow direction of the legend items.\n*/\n direction(): string;\n direction(_: string): this;\n direction(_?: string): string | this {\n return arguments.length ? ((this._direction = _!), this) : this._direction;\n }\n\n /**\n Transition duration of the legend.\n*/\n duration(): number;\n duration(_: number): this;\n duration(_?: number): number | this {\n return arguments.length ? ((this._duration = _!), this) : this._duration;\n }\n\n /**\n Overall height of the legend.\n*/\n height(): number;\n height(_: number): this;\n height(_?: number): number | this {\n return arguments.length ? ((this._height = _!), this) : this._height;\n }\n\n /**\n The hover method for all shapes.\n*/\n hover(_: unknown): this {\n this._shapes.forEach((s: unknown) =>\n (s as Record<string, (...args: unknown[]) => unknown>).hover(_),\n );\n return this;\n }\n\n /**\n The unique id accessor for each legend entry.\n\n@example\nfunction value(d) {\n return d.id;\n}\n*/\n id(): (d: DataPoint, i?: number) => unknown;\n id(_: (d: DataPoint, i?: number) => unknown): this;\n id(_?: (d: DataPoint, i?: number) => unknown): ((d: DataPoint, i?: number) => unknown) | this {\n return arguments.length ? ((this._id = _!), this) : this._id;\n }\n\n /**\n The label accessor for each legend entry. Uses the id accessor by default.\n*/\n label(): (d: DataPoint, i?: number) => unknown;\n label(_: ((d: DataPoint, i?: number) => unknown) | unknown): this;\n label(_?: ((d: DataPoint, i?: number) => unknown) | unknown): ((d: DataPoint, i?: number) => unknown) | this {\n return arguments.length\n ? ((this._label = typeof _ === \"function\" ? _ as (d: DataPoint, i?: number) => unknown : constant(_)), this)\n : this._label;\n }\n\n /**\n Returns the outer bounds of the legend content. Must be called after rendering.\n @example\n{\"width\": 180, \"height\": 24, \"x\": 10, \"y\": 20}\n*/\n outerBounds(): Record<string, number> {\n return this._outerBounds;\n }\n\n /**\n The padding between each key.\n*/\n padding(): number;\n padding(_: number): this;\n padding(_?: number): number | this {\n return arguments.length ? ((this._padding = _!), this) : this._padding;\n }\n\n /**\n The SVG container element as a d3 selector or DOM element.\n*/\n select(): D3Selection;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n select(_: any): this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n select(_?: any): D3Selection | this {\n if (arguments.length) {\n this._select = select(_);\n this._rtl = detectRTL();\n return this;\n }\n return this._select;\n }\n\n /**\n The shape type used for each legend entry.\n*/\n shape(): (d: DataPoint, i?: number) => unknown;\n shape(_: ((d: DataPoint, i?: number) => unknown) | unknown): this;\n shape(_?: ((d: DataPoint, i?: number) => unknown) | unknown): ((d: DataPoint, i?: number) => unknown) | this {\n return arguments.length\n ? ((this._shape = typeof _ === \"function\" ? _ as (d: DataPoint, i?: number) => unknown : constant(_)), this)\n : this._shape;\n }\n\n /**\n Methods that correspond to the key/value pairs for each shape.\n*/\n shapeConfig(): Record<string, unknown>;\n shapeConfig(_: Record<string, unknown>): this;\n shapeConfig(_?: Record<string, unknown>): Record<string, unknown> | this {\n return arguments.length\n ? ((this._shapeConfig = assign(this._shapeConfig, _!)), this)\n : this._shapeConfig;\n }\n\n /**\n Title of the legend.\n*/\n title(): string | undefined;\n title(_: string): this;\n title(_?: string): string | undefined | this {\n return arguments.length ? ((this._title = _), this) : this._title;\n }\n\n /**\n Title configuration of the legend.\n*/\n titleConfig(): Record<string, unknown>;\n titleConfig(_: Record<string, unknown>): this;\n titleConfig(_?: Record<string, unknown>): Record<string, unknown> | this {\n return arguments.length\n ? ((this._titleConfig = assign(this._titleConfig, _!)), this)\n : this._titleConfig;\n }\n\n /**\n The vertical alignment.\n*/\n verticalAlign(): string;\n verticalAlign(_: string): this;\n verticalAlign(_?: string): string | this {\n return arguments.length\n ? ((this._verticalAlign = _!), this)\n : this._verticalAlign;\n }\n\n /**\n Overall width of the legend.\n*/\n width(): number;\n width(_: number): this;\n width(_?: number): number | this {\n return arguments.length ? ((this._width = _!), this) : this._width;\n }\n}\n"],"names":["max","sum","select","colorContrast","assign","backgroundColor","elem","rtl","detectRTL","textWidth","textWrap","TextBox","shapes","accessor","BaseClass","configPrep","constant","padding","Legend","_titleClass","_align","_data","_direction","_duration","_height","_id","_label","_lineData","_outerBounds","_padding","_shape","_select","_shapes","_shapeConfig","_titleConfig","_verticalAlign","_width","_rtl","_group","_titleGroup","_shapeGroup","_titleHeight","_titleWidth","_title","_wrapLines","_wrapRows","width","height","x","y","fill","hitArea","dd","i","d","h","shapeHeight","shapeWidth","labelBounds","shape","shapeR","rtlMod","labelConfig","fontColor","bg","node","fontFamily","fontResize","fontSize","verticalAlign","opacity","r","datum","pad","_rowWidth","filter","l","prevWords","slice","length","sentence","ld","map","concat","_fetchConfig","key","val","undefined","_rowHeight","row","p","render","callback","append","attr","parent","availableHeight","f","s","lH","lineHeight","res","lines","widths","label","data","id","words","lh","w","newRes","Object","Math","ceil","t","og","spaceNeeded","availableWidth","newRows","maxLines","wrappable","sort","a","b","truncated","rowWidth","push","bind","forEach","innerHeight","innerWidth","xOffset","yOffset","text","duration","textAnchor","left","center","right","config","baseConfig","obj","__d3plus__","Shape","setTimeout","active","_","align","arguments","direction","hover","outerBounds","shapeConfig","title","titleConfig"],"mappings":"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"}
@@ -101,3 +101,5 @@ var Message = /*#__PURE__*/ function() {
101
101
  Displays a message using plain HTML.
102
102
  @private
103
103
  */ export { Message as default };
104
+
105
+ //# sourceMappingURL=Message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Message.ts"],"sourcesContent":["import {select} from \"d3-selection\";\n\nimport {stylize} from \"@d3plus/dom\";\nimport type {D3Selection} from \"@d3plus/dom\";\n\ninterface HideOptions {\n duration?: number;\n callback?: (() => void) | null;\n}\n\ninterface RenderOptions {\n callback?: (() => void) | null;\n container?: string;\n duration?: number;\n html?: string;\n mask?: string | false;\n \n style?: Record<string, unknown>;\n}\n\n/**\n Displays a message using plain HTML.\n @private\n*/\nexport default class Message {\n _isVisible: boolean;\n mask!: D3Selection;\n elem!: D3Selection;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n this._isVisible = false;\n }\n\n /**\n Removes the message from the page.\n */\n exit(elem: D3Selection, duration: number): void {\n elem\n .transition()\n .duration(duration)\n .style(\"opacity\", 0)\n .transition()\n .remove();\n\n this._isVisible = false;\n }\n\n /**\n Removes the message from the page.\n */\n hide({duration = 600, callback}: HideOptions = {}): this {\n this.mask.call(this.exit.bind(this), duration);\n this.elem.call(this.exit.bind(this), duration);\n\n if (callback) setTimeout(callback, duration + 100);\n\n this._isVisible = false;\n\n return this;\n }\n\n /**\n Draws the message given the specified configuration.\n*/\n render({\n callback,\n container = \"body\",\n duration = 600,\n html = \"Please Wait\",\n mask = \"rgba(0, 0, 0, 0.05)\",\n style = {},\n }: RenderOptions = {}): this {\n const parent = select(container);\n\n this.mask = parent\n .selectAll(\"div.d3plus-Mask\")\n .data(mask ? [mask] : []) as unknown as D3Selection;\n\n this.mask = this.mask\n .enter()\n .append(\"div\")\n .attr(\"class\", \"d3plus-Mask\")\n .style(\"opacity\", 1)\n .merge(this.mask) as unknown as D3Selection;\n\n this.mask.exit().call(this.exit.bind(this), duration);\n\n stylize(this.mask, {\n \"background-color\": \"transparent\",\n bottom: \"0px\",\n left: \"0px\",\n position: \"absolute\",\n right: \"0px\",\n top: \"0px\",\n });\n\n this.elem = parent\n .selectAll(\"div.d3plus-Message\")\n .data([html]) as unknown as D3Selection;\n\n this.elem = (\n this.elem\n .enter()\n .append(\"div\")\n .attr(\"class\", \"d3plus-Message\")\n .style(\"opacity\", 1)\n .merge(this.elem) as unknown as D3Selection\n ).html(String);\n\n stylize(this.elem, style as Record<string, string | number | boolean | null>);\n\n if (callback) setTimeout(callback, 100);\n\n this._isVisible = true;\n\n return this;\n }\n}\n"],"names":["select","stylize","Message","_isVisible","mask","elem","exit","duration","transition","style","remove","hide","callback","call","bind","setTimeout","render","container","html","parent","selectAll","data","enter","append","attr","merge","bottom","left","position","right","top","String"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,MAAM,QAAO,eAAe;AAEpC,SAAQC,OAAO,QAAO,cAAc;AAsBrB,IAAA,AAAMC,wBAAN;;aAAMA;gCAAAA;QACnBC,uBAAAA,cAAAA,KAAAA;QACAC,uBAAAA,QAAAA,KAAAA;QACAC,uBAAAA,QAAAA,KAAAA;QAOE,IAAI,CAACF,UAAU,GAAG;;kBAVDD;;YAanB;;EAEA,GACAI,KAAAA;mBAAAA,SAAAA,KAAKD,IAAiB,EAAEE,QAAgB;gBACtCF,KACGG,UAAU,GACVD,QAAQ,CAACA,UACTE,KAAK,CAAC,WAAW,GACjBD,UAAU,GACVE,MAAM;gBAET,IAAI,CAACP,UAAU,GAAG;YACpB;;;YAEA;;EAEA,GACAQ,KAAAA;mBAAAA,SAAAA;oBAAK,OAAA,iEAA0C,CAAC,mBAA3C,KAACJ,UAAAA,sCAAW,qBAAKK,WAAjB,KAAiBA;gBACpB,IAAI,CAACR,IAAI,CAACS,IAAI,CAAC,IAAI,CAACP,IAAI,CAACQ,IAAI,CAAC,IAAI,GAAGP;gBACrC,IAAI,CAACF,IAAI,CAACQ,IAAI,CAAC,IAAI,CAACP,IAAI,CAACQ,IAAI,CAAC,IAAI,GAAGP;gBAErC,IAAIK,UAAUG,WAAWH,UAAUL,WAAW;gBAE9C,IAAI,CAACJ,UAAU,GAAG;gBAElB,OAAO,IAAI;YACb;;;YAEA;;AAEF,GACEa,KAAAA;mBAAAA,SAAAA;oBAAO,OAAA,iEAOY,CAAC,GANlBJ,WADK,KACLA,2BADK,KAELK,WAAAA,wCAAY,yCAFP,KAGLV,UAAAA,sCAAW,iCAHN,KAILW,MAAAA,8BAAO,uCAJF,KAKLd,MAAAA,8BAAO,gDALF,KAMLK,OAAAA,gCAAQ,CAAC;gBAET,IAAMU,SAASnB,OAAOiB;gBAEtB,IAAI,CAACb,IAAI,GAAGe,OACTC,SAAS,CAAC,mBACVC,IAAI,CAACjB,OAAO;oBAACA;iBAAK,GAAG,EAAE;gBAE1B,IAAI,CAACA,IAAI,GAAG,IAAI,CAACA,IAAI,CAClBkB,KAAK,GACLC,MAAM,CAAC,OACPC,IAAI,CAAC,SAAS,eACdf,KAAK,CAAC,WAAW,GACjBgB,KAAK,CAAC,IAAI,CAACrB,IAAI;gBAElB,IAAI,CAACA,IAAI,CAACE,IAAI,GAAGO,IAAI,CAAC,IAAI,CAACP,IAAI,CAACQ,IAAI,CAAC,IAAI,GAAGP;gBAE5CN,QAAQ,IAAI,CAACG,IAAI,EAAE;oBACjB,oBAAoB;oBACpBsB,QAAQ;oBACRC,MAAM;oBACNC,UAAU;oBACVC,OAAO;oBACPC,KAAK;gBACP;gBAEA,IAAI,CAACzB,IAAI,GAAGc,OACTC,SAAS,CAAC,sBACVC,IAAI,CAAC;oBAACH;iBAAK;gBAEd,IAAI,CAACb,IAAI,GAAG,AACV,IAAI,CAACA,IAAI,CACNiB,KAAK,GACLC,MAAM,CAAC,OACPC,IAAI,CAAC,SAAS,kBACdf,KAAK,CAAC,WAAW,GACjBgB,KAAK,CAAC,IAAI,CAACpB,IAAI,EAClBa,IAAI,CAACa;gBAEP9B,QAAQ,IAAI,CAACI,IAAI,EAAEI;gBAEnB,IAAIG,UAAUG,WAAWH,UAAU;gBAEnC,IAAI,CAACT,UAAU,GAAG;gBAElB,OAAO,IAAI;YACb;;;WAhGmBD;;AAJrB;;;AAGA,GACA,SAAqBA,qBAiGpB"}
@@ -594,3 +594,5 @@ var TextBox = /*#__PURE__*/ function(BaseClass) {
594
594
  /**
595
595
  Creates a wrapped text box for each point in an array of data. See [this example](https://d3plus.org/examples/d3plus-text/getting-started/) for help getting started using the TextBox class.
596
596
  */ export { TextBox as default };
597
+
598
+ //# sourceMappingURL=TextBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/TextBox.ts"],"sourcesContent":["import {max, min, sum} from \"d3-array\";\nimport {select} from \"d3-selection\";\n\n// side-effect import: registers .transition() on d3 selections\nimport \"d3-transition\";\n\nimport type {DataPoint} from \"@d3plus/data\";\nimport {fontExists, parseSides, rtl as detectRTL, textWidth} from \"@d3plus/dom\";\nimport type {D3Selection} from \"@d3plus/dom\";\nimport {\n fontFamily,\n strip,\n textSplit,\n textWrap,\n} from \"@d3plus/text\";\n\nimport {accessor, BaseClass, constant} from \"../utils/index.js\";\n\nconst defaultHtmlLookup: Record<string, string> = {\n i: \"font-style: italic;\",\n em: \"font-style: italic;\",\n b: \"font-weight: bold;\",\n strong: \"font-weight: bold;\",\n};\n\n/** Internal shape produced by the data reduce in render(). */\ninterface TextBoxDatum {\n aH: string;\n data: DataPoint;\n i: number;\n lines: string[];\n fC: string;\n fStroke: string;\n fSW: number;\n fF: string;\n fO: number;\n fW: number | string;\n id: string;\n tA: string;\n vA: string;\n widths: number[];\n fS: number;\n lH: number;\n w: number;\n h: number;\n r: number;\n x: number;\n y: number;\n}\n\n/**\n Creates a wrapped text box for each point in an array of data. See [this example](https://d3plus.org/examples/d3plus-text/getting-started/) for help getting started using the TextBox class.\n*/\nexport default class TextBox extends BaseClass {\n _select!: D3Selection;\n\n _data!: DataPoint[];\n\n _ariaHidden: (d: DataPoint, i?: number) => string;\n _delay: number;\n _duration: number;\n _ellipsis: (text: string, line: number) => string;\n\n _fontColor: (d: DataPoint, i?: number) => string;\n\n _fontFamily: (d: DataPoint, i?: number) => string;\n\n _fontMax: (d: DataPoint, i?: number) => number;\n\n _fontMin: (d: DataPoint, i?: number) => number;\n\n _fontOpacity: (d: DataPoint, i?: number) => number;\n\n _fontResize: (d: DataPoint, i?: number) => boolean;\n\n _fontSize: (d: DataPoint, i?: number) => number;\n\n _fontStroke: (d: DataPoint, i?: number) => string;\n\n _fontStrokeWidth: (d: DataPoint, i?: number) => number;\n\n _fontWeight: (d: DataPoint, i?: number) => number | string;\n\n _height: (d: DataPoint, i?: number) => number;\n\n _html: Record<string, string> | false;\n _id: (d: DataPoint, i: number) => string;\n _lineHeight: (d: DataPoint, i?: number) => number;\n\n _maxLines: (d: DataPoint, i?: number) => number | null;\n\n _on: Record<string, (...args: unknown[]) => unknown>;\n\n _overflow: (d: DataPoint, i?: number) => boolean;\n\n _padding: (d: DataPoint, i?: number) => number | string;\n\n _pointerEvents: (d: DataPoint, i?: number) => string;\n\n _rotate: (d: DataPoint, i?: number) => number;\n _rotateAnchor: (d: TextBoxDatum, i?: number) => [number, number];\n\n _split: (text: string, i?: number) => string[];\n\n _text: (d: DataPoint, i?: number) => string | undefined;\n\n _textAnchor: (d: DataPoint, i?: number) => string;\n\n _verticalAlign: (d: DataPoint, i?: number) => string;\n\n _width: (d: DataPoint, i?: number) => number;\n\n _x: (d: DataPoint, i?: number) => number;\n\n _y: (d: DataPoint, i?: number) => number;\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._ariaHidden = constant(\"false\");\n this._delay = 0;\n this._duration = 0;\n this._ellipsis = (text: string, line: number) =>\n line ? `${text.replace(/\\.|,$/g, \"\")}...` : \"\";\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontColor = constant(\"black\") as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontFamily = constant(fontFamily) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontMax = constant(50) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontMin = constant(8) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontOpacity = constant(1) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontResize = constant(false) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontSize = constant(10) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontStroke = constant(\"transparent\") as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontStrokeWidth = constant(0) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._fontWeight = constant(400) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._height = accessor(\"height\", 200) as any;\n this._html = defaultHtmlLookup;\n this._id = (d: DataPoint, i: number) => (d.id as string) || `${i}`;\n this._lineHeight = (d: DataPoint, i?: number) => this._fontSize(d, i) * 1.2;\n this._maxLines = constant(null);\n this._on = {};\n this._overflow = constant(false);\n this._padding = constant(0);\n this._pointerEvents = constant(\"auto\");\n this._rotate = constant(0);\n this._rotateAnchor = (d: TextBoxDatum) => {\n return [d.w / 2, d.h / 2];\n };\n this._split = textSplit;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._text = accessor(\"text\") as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._textAnchor = constant(\"start\") as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._verticalAlign = constant(\"top\") as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._width = accessor(\"width\", 200) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._x = accessor(\"x\", 0) as any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._y = accessor(\"y\", 0) as any;\n }\n\n /**\n Renders the text boxes. If a *callback* is specified, it will be called once the shapes are done drawing.\n @param callback Optional callback invoked after rendering completes.\n*/\n render(callback?: (...args: unknown[]) => unknown): this {\n if (this._select === void 0)\n this.select(\n select(\"body\")\n .append(\"svg\")\n .style(\"width\", `${window.innerWidth}px`)\n .style(\"height\", `${window.innerHeight}px`)\n .node() as unknown as HTMLElement,\n );\n\n const that = this;\n\n const boxes = this._select.selectAll(\".d3plus-textBox\").data(\n this._data.reduce((arr: TextBoxDatum[], d: DataPoint, i: number) => {\n let t = this._text(d, i);\n if (t === void 0) return arr;\n t = `${t}`.trim();\n\n const resize = this._fontResize(d, i);\n const lHRatio = this._lineHeight(d, i) / this._fontSize(d, i);\n\n let fS = resize ? this._fontMax(d, i) : this._fontSize(d, i),\n lH = resize ? fS * lHRatio : this._lineHeight(d, i),\n line = 1,\n lineData: string[] = [],\n sizes: number[],\n wrapResults: { lines: string[]; truncated: boolean; widths: number[] } = { lines: [], truncated: false, widths: [] };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const style: Record<string, any> = {\n \"font-family\": fontExists(this._fontFamily(d, i)),\n \"font-size\": fS,\n \"font-weight\": this._fontWeight(d, i),\n \"line-height\": lH,\n };\n\n const padding = parseSides(this._padding(d, i));\n\n const h = this._height(d, i) - (padding.top + padding.bottom),\n w = this._width(d, i) - (padding.left + padding.right);\n\n const wrapper = textWrap()\n .fontFamily(style[\"font-family\"])\n .fontSize(fS)\n .fontWeight(style[\"font-weight\"])\n .lineHeight(lH)\n .maxLines(this._maxLines(d, i))\n .height(h)\n .overflow(this._overflow(d, i))\n .width(w)\n .split(this._split);\n\n const fMax = this._fontMax(d, i),\n fMin = this._fontMin(d, i),\n vA = this._verticalAlign(d, i),\n words = this._split(t, i);\n\n /**\n Figures out the lineData to be used for wrapping.\n @private\n*/\n function checkSize(): void {\n const truncate = () => {\n if (line < 1) lineData = [that._ellipsis(\"\", line)];\n else lineData[line - 1] = that._ellipsis(lineData[line - 1], line);\n };\n\n // Constraint the font size\n fS = max([fS, fMin])!;\n fS = min([fS, fMax])!;\n\n if (resize) {\n lH = fS * lHRatio;\n wrapper.fontSize(fS).lineHeight(lH);\n style[\"font-size\"] = fS;\n style[\"line-height\"] = lH;\n }\n\n wrapResults = wrapper(t!);\n lineData = wrapResults.lines.filter((l: string) => l !== \"\");\n line = lineData.length;\n\n if (wrapResults.truncated) {\n if (resize) {\n fS--;\n if (fS < fMin) {\n fS = fMin;\n truncate();\n return;\n } else checkSize();\n } else truncate();\n }\n }\n\n if (w > fMin && (h > lH || (resize && h > fMin * lHRatio))) {\n if (resize) {\n sizes = textWidth(words, style) as number[];\n\n const areaMod = 1.165 + (w / h) * 0.1,\n boxArea = w * h,\n maxWidth = max(sizes) as number,\n textArea = sum(sizes, (d: number) => d * lH) * areaMod;\n\n if (maxWidth > w || textArea > boxArea) {\n const areaRatio = Math.sqrt(boxArea / textArea),\n widthRatio = w / maxWidth;\n const sizeRatio = min([areaRatio, widthRatio])!;\n fS = Math.floor(fS * sizeRatio);\n }\n\n const heightMax = Math.floor(h * 0.8);\n if (fS > heightMax) fS = heightMax;\n }\n\n checkSize();\n }\n\n if (lineData.length) {\n const tH = line * lH;\n const r = this._rotate(d, i);\n let yP =\n r === 0\n ? vA === \"top\"\n ? 0\n : vA === \"middle\"\n ? h / 2 - tH / 2\n : h - tH\n : 0;\n yP -= lH * 0.1;\n\n arr.push({\n aH: this._ariaHidden(d, i),\n data: d,\n i,\n lines: lineData,\n fC: this._fontColor(d, i),\n fStroke: this._fontStroke(d, i),\n fSW: this._fontStrokeWidth(d, i),\n fF: style[\"font-family\"] as string,\n fO: this._fontOpacity(d, i),\n fW: style[\"font-weight\"],\n id: this._id(d, i),\n tA: this._textAnchor(d, i),\n vA: this._verticalAlign(d, i),\n widths: wrapResults.widths,\n fS,\n lH,\n w,\n h,\n r,\n x: this._x(d, i) + padding.left,\n y: this._y(d, i) + yP + padding.top,\n });\n }\n\n return arr;\n\n }, []),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (d: unknown) => this._id((d as TextBoxDatum).data, (d as TextBoxDatum).i),\n );\n\n const t = this._select.transition().duration(this._duration);\n\n if (this._duration === 0) {\n boxes.exit().remove();\n } else {\n boxes.exit().transition().delay(this._duration).remove();\n\n boxes\n .exit()\n .selectAll(\"text\")\n .transition(t)\n .attr(\"opacity\", 0)\n .style(\"opacity\", 0);\n }\n\n /**\n * Applies translate and rotate to a text element.\n * @param {D3Selection} text\n * @private\n*/\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function rotate(text: any): void {\n text.attr(\"transform\", (d: TextBoxDatum, i: number) => {\n const rotateAnchor = that._rotateAnchor(d, i);\n return `translate(${d.x}, ${d.y}) rotate(${d.r}, ${rotateAnchor[0]}, ${rotateAnchor[1]})`;\n });\n }\n\n const update = boxes\n .enter()\n .append(\"g\")\n .attr(\"class\", \"d3plus-textBox\")\n .attr(\"id\", (d: TextBoxDatum) => `d3plus-textBox-${strip(d.id)}`)\n .call(rotate)\n .merge(boxes as never);\n\n const rtl = detectRTL();\n\n update\n .order()\n .style(\"pointer-events\", (d: TextBoxDatum) => this._pointerEvents(d.data, d.i))\n .each(function (this: SVGElement, d: TextBoxDatum) {\n /**\n Sets the inner text content of each <text> element.\n @private\n*/\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function textContent(text: any): void {\n let tag: string | false = false;\n\n text[that._html ? \"html\" : \"text\"]((t: string) => {\n let cleaned = t.trimEnd()\n .replace(/&([^;&]*)/g, (str: string, a: string) =>\n a === \"amp\" ? str : `&amp;${a}`,\n ) // replaces all non-HTML ampersands with escaped entity\n .replace(/<([^A-z^/]+)/g, (_str: string, a: string) => `&lt;${a}`)\n .replace(/<$/g, \"&lt;\") // replaces all non-HTML left angle brackets with escaped entity\n .replace(\n /(<[^>^/]+>)([^<^>]+)$/g,\n (_str: string, a: string, b: string) =>\n `${a}${b}${a.replace(\"<\", \"</\")}`,\n ) // ands end tag to lines before mid-HTML break\n .replace(\n /^([^<^>]+)(<\\/[^>]+>)/g,\n (_str: string, a: string, b: string) =>\n `${b.replace(\"</\", \"<\")}${a}${b}`,\n ); // ands start tag to lines after mid-HTML break\n\n const tagRegex = new RegExp(/<([A-z]+)[^>]*>([^<^>]+)<\\/[^>]+>/g);\n if (cleaned.match(tagRegex)) {\n const htmlLookup = that._html as Record<string, string>;\n cleaned = cleaned.replace(\n tagRegex,\n (_str: string, a: string, b: string) => {\n tag = htmlLookup[a] ? a : false;\n if (tag) {\n const style = htmlLookup[tag];\n if (t.includes(`</${tag}>`)) tag = false;\n return `<tspan style=\"${style}\">${b}</tspan>`;\n }\n return b;\n },\n );\n } else if (tag && tag.length) {\n const htmlLookup = that._html as Record<string, string>;\n cleaned = `<tspan style=\"${htmlLookup[tag]}\">${cleaned}</tspan>`;\n }\n\n return cleaned;\n });\n }\n\n /**\n Styles to apply to each <text> element.\n @private\n*/\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function textStyle(text: any): void {\n text\n .attr(\"aria-hidden\", d.aH)\n .attr(\"dir\", rtl ? \"rtl\" : \"ltr\")\n .attr(\"fill\", d.fC)\n .attr(\"stroke\", d.fStroke)\n .attr(\"stroke-width\", d.fSW)\n .attr(\"text-anchor\", d.tA)\n .attr(\"font-family\", d.fF)\n .style(\"font-family\", d.fF)\n .attr(\"font-size\", `${d.fS}px`)\n .style(\"font-size\", `${d.fS}px`)\n .attr(\"font-weight\", d.fW)\n .style(\"font-weight\", d.fW)\n .attr(\n \"x\",\n `${d.tA === \"middle\" ? d.w / 2 : rtl ? (d.tA === \"start\" ? d.w : 0) : d.tA === \"end\" ? d.w : 2 * Math.sin((Math.PI * d.r) / 180)}px`,\n )\n .attr(\"y\", (_t: unknown, i: number) =>\n d.r === 0 || d.vA === \"top\"\n ? `${(i + 1) * d.lH - (d.lH - d.fS)}px`\n : d.vA === \"middle\"\n ? `${(d.h + d.fS) / 2 - (d.lH - d.fS) + (i - d.lines.length / 2 + 0.5) * d.lH}px`\n : `${d.h - 2 * (d.lH - d.fS) - (d.lines.length - (i + 1)) * d.lH + 2 * Math.cos((Math.PI * d.r) / 180)}px`,\n );\n }\n\n const texts = select(this).selectAll(\"text\").data(d.lines);\n\n if (that._duration === 0) {\n texts.call(textContent).call(textStyle);\n\n texts.exit().remove();\n\n texts\n .enter()\n .append(\"text\")\n .attr(\"dominant-baseline\", \"alphabetic\")\n .style(\"baseline-shift\", \"0%\")\n .attr(\"unicode-bidi\", \"bidi-override\")\n .call(textContent)\n .call(textStyle)\n .attr(\"opacity\", d.fO)\n .style(\"opacity\", d.fO);\n } else {\n texts.call(textContent).transition(t).call(textStyle);\n\n texts.exit().transition(t).attr(\"opacity\", 0).remove();\n\n texts\n .enter()\n .append(\"text\")\n .attr(\"dominant-baseline\", \"alphabetic\")\n .style(\"baseline-shift\", \"0%\")\n .attr(\"opacity\", 0)\n .style(\"opacity\", 0)\n .call(textContent)\n .call(textStyle)\n .merge(texts as never)\n .transition(t)\n .delay(that._delay)\n .call(textStyle)\n .attr(\"opacity\", d.fO)\n .style(\"opacity\", d.fO);\n }\n })\n .transition(t)\n .call(rotate);\n\n const events = Object.keys(this._on),\n on = events.reduce((obj: Record<string, (...args: unknown[]) => unknown>, e: string) => {\n obj[e] = (...args: unknown[]) => this._on[e]((args[0] as TextBoxDatum).data, args[1]);\n return obj;\n }, {});\n for (let e = 0; e < events.length; e++) update.on(events[e], on[events[e]]);\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n }\n\n /**\n The aria-hidden attribute.\n*/\n ariaHidden(): (d: DataPoint, i?: number) => string;\n ariaHidden(_: string | ((d: DataPoint, i?: number) => string)): this;\n ariaHidden(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return _ !== undefined\n ? ((this._ariaHidden = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._ariaHidden;\n }\n\n /**\n The data array used to draw text boxes. A text box will be drawn for each object in the array.\n*/\n data(): DataPoint[];\n data(_: DataPoint[]): this;\n data(_?: DataPoint[]): DataPoint[] | this {\n return arguments.length ? ((this._data = _!), this) : this._data;\n }\n\n /**\n The animation delay in milliseconds.\n*/\n delay(): number;\n delay(_: number): this;\n delay(_?: number): number | this {\n return arguments.length ? ((this._delay = _!), this) : this._delay;\n }\n\n /**\n The animation duration in milliseconds.\n*/\n duration(): number;\n duration(_: number): this;\n duration(_?: number): number | this {\n return arguments.length ? ((this._duration = _!), this) : this._duration;\n }\n\n /**\n The function that handles truncated lines. It should return the new value for the line, and is passed 2 arguments: the String of text for the line in question, and the number of the line. By default, an ellipsis is added to the end of any line except if it is the first word that cannot fit (in that case, an empty string is returned).\n\n@example <caption>default accessor</caption>\nfunction(text, line) {\n return line ? text.replace(/\\.|,$/g, \"\") + \"...\" : \"\";\n}\n*/\n ellipsis(): (text: string, line: number) => string;\n ellipsis(_: ((text: string, line: number) => string) | string): this;\n ellipsis(_?: ((text: string, line: number) => string) | string): unknown {\n return arguments.length\n ? ((this._ellipsis = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._ellipsis;\n }\n\n /**\n The font color as an accessor function or static string. Inferred from the [DOM selection](#textBox.select) by default.\n*/\n fontColor(): (d: DataPoint, i?: number) => string;\n fontColor(_: string | ((d: DataPoint, i?: number) => string)): this;\n fontColor(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return arguments.length\n ? ((this._fontColor = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontColor;\n }\n\n /**\n Defines the font-family to be used. The value passed can be either a *String* name of a font, a comma-separated list of font-family fallbacks, an *Array* of fallbacks, or a *Function* that returns either a *String* or an *Array*. If supplying multiple fallback fonts, the [fontExists](#fontExists) function will be used to determine the first available font on the client's machine.\n*/\n fontFamily(): (d: DataPoint, i?: number) => string;\n fontFamily(_: string | ((d: DataPoint, i?: number) => string)): this;\n fontFamily(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return arguments.length\n ? ((this._fontFamily = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontFamily;\n }\n\n /**\n The maximum font size in pixels, used when [dynamically resizing fonts](#textBox.fontResize).\n*/\n fontMax(): (d: DataPoint, i?: number) => number;\n fontMax(_: number | ((d: DataPoint, i?: number) => number)): this;\n fontMax(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._fontMax = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontMax;\n }\n\n /**\n The minimum font size in pixels, used when [dynamically resizing fonts](#textBox.fontResize).\n*/\n fontMin(): (d: DataPoint, i?: number) => number;\n fontMin(_: number | ((d: DataPoint, i?: number) => number)): this;\n fontMin(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._fontMin = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontMin;\n }\n\n /**\n The font opacity as an accessor function or static number between 0 and 1.\n*/\n fontOpacity(): (d: DataPoint, i?: number) => number;\n fontOpacity(_: number | ((d: DataPoint, i?: number) => number)): this;\n fontOpacity(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._fontOpacity = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontOpacity;\n }\n\n /**\n Toggles font resizing, which can either be defined as a static boolean for all data points, or an accessor function that returns a boolean. See [this example](http://d3plus.org/examples/d3plus-text/resizing-text/) for a side-by-side comparison.\n*/\n fontResize(): (d: DataPoint, i?: number) => boolean;\n fontResize(_: boolean | ((d: DataPoint, i?: number) => boolean)): this;\n fontResize(_?: boolean | ((d: DataPoint, i?: number) => boolean)): unknown {\n return arguments.length\n ? ((this._fontResize = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontResize;\n }\n\n /**\n The font size in pixels. Inferred from the [DOM selection](#textBox.select) by default.\n*/\n fontSize(): (d: DataPoint, i?: number) => number;\n fontSize(_: number | ((d: DataPoint, i?: number) => number)): this;\n fontSize(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._fontSize = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontSize;\n }\n\n /**\n The font stroke color for the rendered text.\n*/\n fontStroke(): (d: DataPoint, i?: number) => string;\n fontStroke(_: string | ((d: DataPoint, i?: number) => string)): this;\n fontStroke(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return arguments.length\n ? ((this._fontStroke = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontStroke;\n }\n\n /**\n The font stroke width for the rendered text.\n*/\n fontStrokeWidth(): (d: DataPoint, i?: number) => number;\n fontStrokeWidth(_: number | ((d: DataPoint, i?: number) => number)): this;\n fontStrokeWidth(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._fontStrokeWidth = typeof _ === \"function\" ? _ : constant(_!)),\n this)\n : this._fontStrokeWidth;\n }\n\n /**\n The font weight. Inferred from the [DOM selection](#textBox.select) by default.\n*/\n fontWeight(): (d: DataPoint, i?: number) => number | string;\n fontWeight(_: number | string | ((d: DataPoint, i?: number) => number | string)): this;\n fontWeight(_?: number | string | ((d: DataPoint, i?: number) => number | string)): unknown {\n return arguments.length\n ? ((this._fontWeight = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._fontWeight;\n }\n\n /**\n The height for each text box.\n\n@example <caption>default accessor</caption>\nfunction(d) {\n return d.height || 200;\n}\n*/\n height(): (d: DataPoint, i?: number) => number;\n height(_: number | ((d: DataPoint, i?: number) => number)): this;\n height(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._height = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._height;\n }\n\n /**\n Configures the ability to render simple HTML tags. Defaults to supporting `<b>`, `<strong>`, `<i>`, and `<em>`, set to false to disable or provide a mapping of tags to svg styles\n*/\n html(): Record<string, string> | false;\n html(_: Record<string, string> | boolean): this;\n html(_?: Record<string, string> | boolean): unknown {\n return arguments.length\n ? ((this._html =\n typeof _ === \"boolean\" ? (_ ? defaultHtmlLookup : false) : _!),\n this)\n : this._html;\n }\n\n /**\n The unique id for each text box.\n\n@example <caption>default accessor</caption>\nfunction(d, i) {\n return d.id || i + \"\";\n}\n*/\n id(): (d: DataPoint, i: number) => string;\n id(_: string | ((d: DataPoint, i: number) => string)): this;\n id(_?: string | ((d: DataPoint, i: number) => string)): unknown {\n return arguments.length\n ? ((this._id = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._id;\n }\n\n /**\n The line height, which is 1.2 times the [font size](#textBox.fontSize) by default.\n*/\n lineHeight(): (d: DataPoint, i?: number) => number;\n lineHeight(_: ((d: DataPoint, i?: number) => number) | number): this;\n lineHeight(_?: ((d: DataPoint, i?: number) => number) | number): unknown {\n return arguments.length\n ? ((this._lineHeight = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._lineHeight;\n }\n\n /**\n Restricts the maximum number of lines to wrap onto, which is null (unlimited) by default.\n*/\n maxLines(): (d: DataPoint, i?: number) => number | null;\n maxLines(_: number | null | ((d: DataPoint, i?: number) => number | null)): this;\n maxLines(_?: number | null | ((d: DataPoint, i?: number) => number | null)): unknown {\n return arguments.length\n ? ((this._maxLines = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._maxLines;\n }\n\n /**\n Whether text is allowed to overflow its bounding box.\n*/\n overflow(): (d: DataPoint, i?: number) => boolean;\n overflow(_: boolean | ((d: DataPoint, i?: number) => boolean)): this;\n overflow(_?: boolean | ((d: DataPoint, i?: number) => boolean)): unknown {\n return arguments.length\n ? ((this._overflow = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._overflow;\n }\n\n /**\n The padding as a CSS shorthand string or number. Defaults to 0.\n*/\n padding(): (d: DataPoint, i?: number) => number | string;\n padding(_: number | string | ((d: DataPoint, i?: number) => number | string)): this;\n padding(_?: number | string | ((d: DataPoint, i?: number) => number | string)): unknown {\n return arguments.length\n ? ((this._padding = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._padding;\n }\n\n /**\n The pointer-events CSS property for each text box.\n*/\n pointerEvents(): (d: DataPoint, i?: number) => string;\n pointerEvents(_: string | ((d: DataPoint, i?: number) => string)): this;\n pointerEvents(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return arguments.length\n ? ((this._pointerEvents = typeof _ === \"function\" ? _ : constant(_!)),\n this)\n : this._pointerEvents;\n }\n\n /**\n The rotation angle in degrees for each text box.\n*/\n rotate(): (d: DataPoint, i?: number) => number;\n rotate(_: number | ((d: DataPoint, i?: number) => number)): this;\n rotate(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._rotate = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._rotate;\n }\n\n /**\n The anchor point around which to rotate the text box.\n*/\n rotateAnchor(): (d: DataPoint, i?: number) => [number, number];\n rotateAnchor(\n _: ((d: DataPoint, i?: number) => [number, number]) | [number, number],\n ): this;\n rotateAnchor(\n _?: ((d: DataPoint, i?: number) => [number, number]) | [number, number],\n ): unknown {\n return arguments.length\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ? ((this._rotateAnchor = (typeof _ === \"function\" ? _ : constant(_!)) as any), this)\n : this._rotateAnchor;\n }\n\n /**\n The SVG container element as a d3 selector or DOM element. If not specified, an SVG element will be added to the page.\n*/\n select(): D3Selection;\n select(_: string | HTMLElement): this;\n select(_?: string | HTMLElement): unknown {\n return arguments.length\n ? ((this._select = select(_ as never) as unknown as D3Selection), this)\n : this._select;\n }\n\n /**\n The word split function, which when passed a string is expected to return that string split into an array of words.\n*/\n split(): (text: string, i?: number) => string[];\n split(_: (text: string, i?: number) => string[]): this;\n split(_?: (text: string, i?: number) => string[]): unknown {\n return arguments.length ? ((this._split = _!), this) : this._split;\n }\n\n /**\n The text content for each box.\n\n@example <caption>default accessor</caption>\nfunction(d) {\n return d.text;\n}\n*/\n text(): (d: DataPoint, i?: number) => string | undefined;\n text(_: string | ((d: DataPoint, i?: number) => string | undefined)): this;\n text(_?: string | ((d: DataPoint, i?: number) => string | undefined)): unknown {\n return arguments.length\n ? ((this._text = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._text;\n }\n\n /**\n The horizontal text anchor, analagous to the SVG [text-anchor](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/text-anchor) property.\n*/\n textAnchor(): (d: DataPoint, i?: number) => string;\n textAnchor(_: string | ((d: DataPoint, i?: number) => string)): this;\n textAnchor(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return arguments.length\n ? ((this._textAnchor = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._textAnchor;\n }\n\n /**\n The vertical alignment. Accepts `\"top\"`, `\"middle\"`, and `\"bottom\"`.\n*/\n verticalAlign(): (d: DataPoint, i?: number) => string;\n verticalAlign(_: string | ((d: DataPoint, i?: number) => string)): this;\n verticalAlign(_?: string | ((d: DataPoint, i?: number) => string)): unknown {\n return arguments.length\n ? ((this._verticalAlign = typeof _ === \"function\" ? _ : constant(_!)),\n this)\n : this._verticalAlign;\n }\n\n /**\n The width for each text box.\n\n@example <caption>default accessor</caption>\nfunction(d) {\n return d.width || 200;\n}\n*/\n width(): (d: DataPoint, i?: number) => number;\n width(_: number | ((d: DataPoint, i?: number) => number)): this;\n width(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._width = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._width;\n }\n\n /**\n The x position for each text box. The number given should correspond to the left side of the textBox.\n\n@example <caption>default accessor</caption>\nfunction(d) {\n return d.x || 0;\n}\n*/\n x(): (d: DataPoint, i?: number) => number;\n x(_: number | ((d: DataPoint, i?: number) => number)): this;\n x(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._x = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._x;\n }\n\n /**\n The y position for each text box. The number given should correspond to the top side of the textBox.\n\n@example <caption>default accessor</caption>\nfunction(d) {\n return d.y || 0;\n}\n*/\n y(): (d: DataPoint, i?: number) => number;\n y(_: number | ((d: DataPoint, i?: number) => number)): this;\n y(_?: number | ((d: DataPoint, i?: number) => number)): unknown {\n return arguments.length\n ? ((this._y = typeof _ === \"function\" ? _ : constant(_!)), this)\n : this._y;\n }\n}\n"],"names":["max","min","sum","select","fontExists","parseSides","rtl","detectRTL","textWidth","fontFamily","strip","textSplit","textWrap","accessor","BaseClass","constant","defaultHtmlLookup","i","em","b","strong","TextBox","_select","_data","_ariaHidden","_delay","_duration","_ellipsis","_fontColor","_fontFamily","_fontMax","_fontMin","_fontOpacity","_fontResize","_fontSize","_fontStroke","_fontStrokeWidth","_fontWeight","_height","_html","_id","_lineHeight","_maxLines","_on","_overflow","_padding","_pointerEvents","_rotate","_rotateAnchor","_split","_text","_textAnchor","_verticalAlign","_width","_x","_y","text","line","replace","d","id","w","h","render","callback","append","style","window","innerWidth","innerHeight","node","that","boxes","selectAll","data","reduce","arr","t","trim","resize","lHRatio","fS","lH","lineData","sizes","wrapResults","lines","truncated","widths","padding","top","bottom","left","right","wrapper","fontSize","fontWeight","lineHeight","maxLines","height","overflow","width","split","fMax","fMin","vA","words","checkSize","truncate","filter","l","length","areaMod","boxArea","maxWidth","textArea","areaRatio","Math","sqrt","widthRatio","sizeRatio","floor","heightMax","tH","r","yP","push","aH","fC","fStroke","fSW","fF","fO","fW","tA","x","y","transition","duration","exit","remove","delay","attr","rotate","rotateAnchor","update","enter","call","merge","order","each","textContent","tag","cleaned","trimEnd","str","a","_str","tagRegex","RegExp","match","htmlLookup","includes","textStyle","sin","PI","_t","cos","texts","events","Object","keys","on","obj","e","args","setTimeout","ariaHidden","_","undefined","arguments","ellipsis","fontColor","fontMax","fontMin","fontOpacity","fontResize","fontStroke","fontStrokeWidth","html","pointerEvents","textAnchor","verticalAlign"],"mappings":"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"}
@@ -691,3 +691,5 @@ var Timeline = /*#__PURE__*/ function(Axis) {
691
691
  /**
692
692
  Creates an interactive timeline brush component for selecting time periods within a visualization.
693
693
  */ export { Timeline as default };
694
+
695
+ //# sourceMappingURL=Timeline.js.map