@d3plus/core 3.1.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +5095 -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 +10 -9
  163. package/types/src/utils/D3plusConfig.d.ts +1 -1
  164. package/umd/d3plus-core.full.js +10174 -4755
  165. package/umd/d3plus-core.full.js.map +1 -1
  166. package/umd/d3plus-core.full.min.js +842 -764
  167. package/umd/d3plus-core.js +1 -1
  168. package/umd/d3plus-core.min.js +1 -1
package/es/index.js CHANGED
@@ -2,3 +2,5 @@ export { AreaPlot, BarChart, BoxWhisker, BumpChart, Donut, Geomap, LinePlot, Mat
2
2
  export { Axis, AxisBottom, AxisLeft, AxisRight, AxisTop, ColorScale, Legend, Message, TextBox, Timeline, Tooltip } from "./src/components/index.js";
3
3
  export { Area, Bar, Box, Circle, Image, Line, Path, Rect, Shape, Whisker } from "./src/shapes/index.js";
4
4
  export { accessor, BaseClass, configPrep, constant, RESET } from "./src/utils/index.js";
5
+
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../index.ts"],"sourcesContent":["export {\n AreaPlot,\n BarChart,\n BoxWhisker,\n BumpChart,\n Donut,\n Geomap,\n LinePlot,\n Matrix,\n Network,\n Pack,\n Pie,\n Plot,\n Priestley,\n Radar,\n RadialMatrix,\n Rings,\n Sankey,\n StackedArea,\n Tree,\n Treemap,\n Viz,\n} from \"./src/charts/index.js\";\n\nexport {\n Axis,\n AxisBottom,\n AxisLeft,\n AxisRight,\n AxisTop,\n ColorScale,\n Legend,\n Message,\n TextBox,\n Timeline,\n Tooltip,\n} from \"./src/components/index.js\";\n\nexport {\n Area,\n Bar,\n Box,\n Circle,\n Image,\n Line,\n Path,\n Rect,\n Shape,\n Whisker,\n} from \"./src/shapes/index.js\";\n\nexport {\n accessor,\n BaseClass,\n configPrep,\n constant,\n RESET,\n} from \"./src/utils/index.js\";\n\nexport type {\n D3plusConfig,\n AxisConfig,\n TooltipConfig,\n} from \"./src/utils/index.js\";\n"],"names":["AreaPlot","BarChart","BoxWhisker","BumpChart","Donut","Geomap","LinePlot","Matrix","Network","Pack","Pie","Plot","Priestley","Radar","RadialMatrix","Rings","Sankey","StackedArea","Tree","Treemap","Viz","Axis","AxisBottom","AxisLeft","AxisRight","AxisTop","ColorScale","Legend","Message","TextBox","Timeline","Tooltip","Area","Bar","Box","Circle","Image","Line","Path","Rect","Shape","Whisker","accessor","BaseClass","configPrep","constant","RESET"],"mappings":"AAAA,SACEA,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,KAAK,EACLC,MAAM,EACNC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,IAAI,EACJC,SAAS,EACTC,KAAK,EACLC,YAAY,EACZC,KAAK,EACLC,MAAM,EACNC,WAAW,EACXC,IAAI,EACJC,OAAO,EACPC,GAAG,QACE,wBAAwB;AAE/B,SACEC,IAAI,EACJC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,OAAO,EACPC,UAAU,EACVC,MAAM,EACNC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,OAAO,QACF,4BAA4B;AAEnC,SACEC,IAAI,EACJC,GAAG,EACHC,GAAG,EACHC,MAAM,EACNC,KAAK,EACLC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,KAAK,EACLC,OAAO,QACF,wBAAwB;AAE/B,SACEC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,KAAK,QACA,uBAAuB"}
@@ -81,3 +81,5 @@ new d3plus.Plot()
81
81
  .discrete("x")
82
82
  .shape("Area")
83
83
  */ export { AreaPlot as default };
84
+
85
+ //# sourceMappingURL=AreaPlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/AreaPlot.ts"],"sourcesContent":["import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n Creates an area plot based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .baseline(0)\n .discrete(\"x\")\n .shape(\"Area\")\n*/\nexport default class AreaPlot extends Plot {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n super();\n this._baseline = 0;\n this._discrete = \"x\";\n this._shape = constant(\"Area\");\n }\n}\n"],"names":["constant","default","Plot","AreaPlot","_baseline","_discrete","_shape"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,QAAQ,QAAO,oBAAoB;AAE3C,SAAQC,WAAWC,IAAI,QAAO,YAAY;AAU3B,IAAA,AAAMC,yBAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,SAAS,GAAG;QACjB,MAAKC,SAAS,GAAG;QACjB,MAAKC,MAAM,GAAGN,SAAS;;;WATNG;EAAiBD;AARtC;;;;;;;AAOA,GACA,SAAqBC,sBAWpB"}
@@ -88,3 +88,5 @@ new d3plus.Plot()
88
88
  .discrete("x")
89
89
  .shape("Bar")
90
90
  */ export { BarChart as default };
91
+
92
+ //# sourceMappingURL=BarChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/BarChart.ts"],"sourcesContent":["import type {DataPoint} from \"@d3plus/data\";\nimport {constant} from \"../utils/index.js\";\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n Creates a bar chart based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .baseline(0)\n .discrete(\"x\")\n .shape(\"Bar\")\n*/\nexport default class BarChart extends Plot {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n super();\n this._baseline = 0;\n this._discrete = \"x\";\n const defaultLegend = this._legend;\n this._legend = (config: Record<string, unknown>, arr: DataPoint[]) => {\n const legendIds = arr\n .map(this._groupBy[this._legendDepth].bind(this))\n .sort()\n .join();\n const barIds = this._filteredData\n .map(this._groupBy[this._legendDepth].bind(this))\n .sort()\n .join();\n if (legendIds === barIds) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n this._shape = constant(\"Bar\");\n }\n}\n"],"names":["constant","default","Plot","BarChart","_baseline","_discrete","defaultLegend","_legend","config","arr","legendIds","map","_groupBy","_legendDepth","bind","sort","join","barIds","_filteredData","_shape"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAQA,QAAQ,QAAO,oBAAoB;AAC3C,SAAQC,WAAWC,IAAI,QAAO,YAAY;AAU3B,IAAA,AAAMC,yBAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,SAAS,GAAG;QACjB,MAAKC,SAAS,GAAG;QACjB,IAAMC,gBAAgB,MAAKC,OAAO;QAClC,MAAKA,OAAO,GAAG,SAACC,QAAiCC;YAC/C,IAAMC,YAAYD,IACfE,GAAG,CAAC,MAAKC,QAAQ,CAAC,MAAKC,YAAY,CAAC,CAACC,IAAI,SACzCC,IAAI,GACJC,IAAI;YACP,IAAMC,SAAS,MAAKC,aAAa,CAC9BP,GAAG,CAAC,MAAKC,QAAQ,CAAC,MAAKC,YAAY,CAAC,CAACC,IAAI,SACzCC,IAAI,GACJC,IAAI;YACP,IAAIN,cAAcO,QAAQ,OAAO;YACjC,OAAOX,cAAcQ,IAAI,QAAON,QAAQC;QAC1C;QACA,MAAKU,MAAM,GAAGnB,SAAS;;;WAtBNG;EAAiBD;AARtC;;;;;;;AAOA,GACA,SAAqBC,sBAwBpB"}
@@ -88,3 +88,5 @@ var BoxWhisker = /*#__PURE__*/ function(Plot) {
88
88
  /**
89
89
  Creates a simple box and whisker based on an array of data.
90
90
  */ export { BoxWhisker as default };
91
+
92
+ //# sourceMappingURL=BoxWhisker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/BoxWhisker.ts"],"sourcesContent":["import {assign} from \"@d3plus/dom\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n Creates a simple box and whisker based on an array of data.\n*/\nexport default class BoxWhisker extends Plot {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n super();\n this._discrete = \"x\";\n this._shape = constant(\"Box\");\n\n this._tooltipConfig = assign(this._tooltipConfig, {\n title: (\n d: DataPoint & {__d3plus__?: boolean; data?: DataPoint; i?: number},\n i: number,\n ) => {\n if (!d) return \"\";\n while (d.__d3plus__ && d.data) {\n d = d.data as DataPoint & {\n __d3plus__?: boolean;\n data?: DataPoint;\n i?: number;\n };\n i = d.i as number;\n }\n if (this._label) return this._label(d, i);\n const l = this._ids(d, i).slice(0, this._drawDepth);\n return l[l.length - 1];\n },\n });\n }\n}\n"],"names":["assign","constant","default","Plot","BoxWhisker","_discrete","_shape","_tooltipConfig","title","d","i","__d3plus__","data","_label","l","_ids","slice","_drawDepth","length"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,MAAM,QAAO,cAAc;AAEnC,SAAQC,QAAQ,QAAO,oBAAoB;AAE3C,SAAQC,WAAWC,IAAI,QAAO,YAAY;AAK3B,IAAA,AAAMC,2BAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,SAAS,GAAG;QACjB,MAAKC,MAAM,GAAGL,SAAS;QAEvB,MAAKM,cAAc,GAAGP,OAAO,MAAKO,cAAc,EAAE;YAChDC,OAAO,SAAPA,MACEC,GACAC;gBAEA,IAAI,CAACD,GAAG,OAAO;gBACf,MAAOA,EAAEE,UAAU,IAAIF,EAAEG,IAAI,CAAE;oBAC7BH,IAAIA,EAAEG,IAAI;oBAKVF,IAAID,EAAEC,CAAC;gBACT;gBACA,IAAI,MAAKG,MAAM,EAAE,OAAO,MAAKA,MAAM,CAACJ,GAAGC;gBACvC,IAAMI,IAAI,MAAKC,IAAI,CAACN,GAAGC,GAAGM,KAAK,CAAC,GAAG,MAAKC,UAAU;gBAClD,OAAOH,CAAC,CAACA,EAAEI,MAAM,GAAG,EAAE;YACxB;QACF;;;WA5BiBd;EAAmBD;AAHxC;;AAEA,GACA,SAAqBC,wBA8BpB"}
@@ -143,3 +143,5 @@ new d3plus.Plot()
143
143
  .ySort((a, b) => b.y - a.y)
144
144
  .y2Sort((a, b) => b.y - a.y)
145
145
  */ export { BumpChart as default };
146
+
147
+ //# sourceMappingURL=BumpChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/BumpChart.ts"],"sourcesContent":["import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n Creates a bump chart based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .discrete(\"x\")\n .shape(\"Line\")\n .y2(d => this._y(d))\n .yConfig({\n tickFormat: val => {\n const data = this._formattedData;\n const xDomain = this._xDomain;\n const startData = data.filter(d => d.x === xDomain[0]);\n const d = startData.find(d => d.y === val);\n return this._drawLabel(d, d.i);\n }\n })\n .y2Config({\n tickFormat: val => {\n const data = this._formattedData;\n const xDomain = this._xDomain;\n const endData = data.filter(d => d.x === xDomain[xDomain.length - 1]);\n const d = endData.find(d => d.y === val);\n return this._drawLabel(d, d.i);\n }\n })\n .ySort((a, b) => b.y - a.y)\n .y2Sort((a, b) => b.y - a.y)\n*/\nexport default class BumpChart extends Plot {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n super();\n this._discrete = \"x\";\n this._shape = constant(\"Line\");\n this.y2((d: Record<string, unknown>) => this._y(d));\n\n this.yConfig({\n tickFormat: (val: number) => {\n const data = this._formattedData;\n const xMin =\n data[0].x instanceof Date ? data[0].x.getTime() : data[0].x;\n const startData = data.filter(\n (d: Record<string, unknown>) =>\n (d.x instanceof Date ? (d.x as Date).getTime() : d.x) === xMin,\n );\n const d = startData.find((d: Record<string, unknown>) => d.y === val);\n return d ? this._drawLabel(d, d.i) : \"\";\n },\n });\n this.y2Config({\n tickFormat: (val: number) => {\n const data = this._formattedData;\n const xMax =\n data[data.length - 1].x instanceof Date\n ? data[data.length - 1].x.getTime()\n : data[data.length - 1].x;\n const endData = data.filter(\n (d: Record<string, unknown>) =>\n (d.x instanceof Date ? (d.x as Date).getTime() : d.x) === xMax,\n );\n const d = endData.find((d: Record<string, unknown>) => d.y === val);\n return d ? this._drawLabel(d, d.i) : \"\";\n },\n });\n this.ySort(\n (a: Record<string, unknown>, b: Record<string, unknown>) =>\n this._y(b) - this._y(a),\n );\n this.y2Sort(\n (a: Record<string, unknown>, b: Record<string, unknown>) =>\n this._y(b) - this._y(a),\n );\n }\n}\n"],"names":["constant","default","Plot","BumpChart","_discrete","_shape","y2","d","_y","yConfig","tickFormat","val","data","_formattedData","xMin","x","Date","getTime","startData","filter","find","y","_drawLabel","i","y2Config","xMax","length","endData","ySort","a","b","y2Sort"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,QAAQ,QAAO,oBAAoB;AAE3C,SAAQC,WAAWC,IAAI,QAAO,YAAY;AA8B3B,IAAA,AAAMC,0BAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,SAAS,GAAG;QACjB,MAAKC,MAAM,GAAGL,SAAS;QACvB,MAAKM,EAAE,CAAC,SAACC;mBAA+B,MAAKC,EAAE,CAACD;;QAEhD,MAAKE,OAAO,CAAC;YACXC,YAAY,SAAZA,WAAaC;gBACX,IAAMC,OAAO,MAAKC,cAAc;gBAChC,IAAMC,OACJF,AAAS,YAATA,IAAI,CAAC,EAAE,CAACG,CAAC,EAAYC,QAAOJ,IAAI,CAAC,EAAE,CAACG,CAAC,CAACE,OAAO,KAAKL,IAAI,CAAC,EAAE,CAACG,CAAC;gBAC7D,IAAMG,YAAYN,KAAKO,MAAM,CAC3B,SAACZ;2BACC,AAACA,CAAAA,AAAG,YAAHA,EAAEQ,CAAC,EAAYC,QAAO,AAACT,EAAEQ,CAAC,CAAUE,OAAO,KAAKV,EAAEQ,CAAC,AAADA,MAAOD;;gBAE9D,IAAMP,IAAIW,UAAUE,IAAI,CAAC,SAACb;2BAA+BA,EAAEc,CAAC,KAAKV;;gBACjE,OAAOJ,IAAI,MAAKe,UAAU,CAACf,GAAGA,EAAEgB,CAAC,IAAI;YACvC;QACF;QACA,MAAKC,QAAQ,CAAC;YACZd,YAAY,SAAZA,WAAaC;gBACX,IAAMC,OAAO,MAAKC,cAAc;gBAChC,IAAMY,OACJb,AAAuB,YAAvBA,IAAI,CAACA,KAAKc,MAAM,GAAG,EAAE,CAACX,CAAC,EAAYC,QAC/BJ,IAAI,CAACA,KAAKc,MAAM,GAAG,EAAE,CAACX,CAAC,CAACE,OAAO,KAC/BL,IAAI,CAACA,KAAKc,MAAM,GAAG,EAAE,CAACX,CAAC;gBAC7B,IAAMY,UAAUf,KAAKO,MAAM,CACzB,SAACZ;2BACC,AAACA,CAAAA,AAAG,YAAHA,EAAEQ,CAAC,EAAYC,QAAO,AAACT,EAAEQ,CAAC,CAAUE,OAAO,KAAKV,EAAEQ,CAAC,AAADA,MAAOU;;gBAE9D,IAAMlB,IAAIoB,QAAQP,IAAI,CAAC,SAACb;2BAA+BA,EAAEc,CAAC,KAAKV;;gBAC/D,OAAOJ,IAAI,MAAKe,UAAU,CAACf,GAAGA,EAAEgB,CAAC,IAAI;YACvC;QACF;QACA,MAAKK,KAAK,CACR,SAACC,GAA4BC;mBAC3B,MAAKtB,EAAE,CAACsB,KAAK,MAAKtB,EAAE,CAACqB;;QAEzB,MAAKE,MAAM,CACT,SAACF,GAA4BC;mBAC3B,MAAKtB,EAAE,CAACsB,KAAK,MAAKtB,EAAE,CAACqB;;;;WA7CR1B;EAAkBD;AA5BvC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,GACA,SAAqBC,uBAgDpB"}
@@ -80,3 +80,5 @@ var Donut = /*#__PURE__*/ function(Pie) {
80
80
  /**
81
81
  Extends the Pie visualization to create a donut chart.
82
82
  */ export { Donut as default };
83
+
84
+ //# sourceMappingURL=Donut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Donut.ts"],"sourcesContent":["import {min} from \"d3-array\";\nimport {default as Pie} from \"./Pie.js\";\n\n/**\n Extends the Pie visualization to create a donut chart.\n*/\nexport default class Donut extends Pie {\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n super();\n\n this._innerRadius = () =>\n min([\n this._width - this._margin.left - this._margin.right,\n this._height - this._margin.top - this._margin.bottom,\n ])! / 4;\n this._padPixel = 2;\n }\n}\n"],"names":["min","default","Pie","Donut","_innerRadius","_width","_margin","left","right","_height","top","bottom","_padPixel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,GAAG,QAAO,WAAW;AAC7B,SAAQC,WAAWC,GAAG,QAAO,WAAW;AAKzB,IAAA,AAAMC,sBAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAQjB,MAAKC,YAAY,GAAG;mBAClBJ,IAAI;gBACF,MAAKK,MAAM,GAAG,MAAKC,OAAO,CAACC,IAAI,GAAG,MAAKD,OAAO,CAACE,KAAK;gBACpD,MAAKC,OAAO,GAAG,MAAKH,OAAO,CAACI,GAAG,GAAG,MAAKJ,OAAO,CAACK,MAAM;aACtD,IAAK;;QACR,MAAKC,SAAS,GAAG;;;WAbAT;EAAcD;AAHnC;;AAEA,GACA,SAAqBC,mBAepB"}
@@ -762,3 +762,5 @@ If not specified, the first key in the *Array* returned from using `Object.keys`
762
762
  /**
763
763
  Creates a geographical map with zooming, panning, image tiles, and the ability to layer choropleth paths and coordinate points. See [this example](https://d3plus.org/examples/d3plus-geomap/getting-started/) for help getting started.
764
764
  */ export { Geomap as default };
765
+
766
+ //# sourceMappingURL=Geomap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Geomap.ts"],"sourcesContent":["import {extent, max, quantile} from \"d3-array\";\nimport {color} from \"d3-color\";\nimport {zoomTransform} from \"d3-zoom\";\n\nimport * as d3GeoCore from \"d3-geo\";\nimport * as d3GeoProjection from \"d3-geo-projection\";\nimport * as d3CompositeProjections from \"d3-composite-projections\";\nconst d3Geo: Record<string, (...args: unknown[]) => unknown> = Object.assign(\n {},\n d3GeoCore,\n d3GeoProjection,\n d3CompositeProjections,\n);\n\nimport * as scales from \"d3-scale\";\nimport {tile} from \"d3-tile\";\nimport {feature} from \"topojson-client\";\n\nimport {addToQueue} from \"@d3plus/data\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {assign, parseSides} from \"@d3plus/dom\";\nimport {pointDistance} from \"@d3plus/math\";\nimport {Circle, Path} from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\n\nimport Viz from \"./Viz.js\";\nimport attributions from \"./helpers/tileAttributions.js\";\n\n/**\n * @name findAttribution\n * @param {String} url\n * @private\n */\nfunction findAttribution(url: string): string | false {\n const a = attributions.find((d: {matches: string[]; text: string}) =>\n d.matches.some((m: string) => url.includes(m)),\n );\n return a ? a.text : false;\n}\n\n/**\n @name topo2feature\n Converts a specific topojson object key into a feature ready for projection.\n @param topo A valid topojson json object.\n @param key The topojson object key to be used. If undefined, the first key available will be used.\n @private\n*/\nfunction topo2feature(\n topo: Record<string, unknown>,\n key?: string,\n): Record<string, unknown> {\n const k =\n key && (topo.objects as Record<string, unknown>)[key]\n ? key\n : Object.keys(topo.objects as Record<string, unknown>)[0];\n return feature(\n topo as unknown as Parameters<typeof feature>[0],\n k,\n ) as unknown as Record<string, unknown>;\n}\n\n/**\n Creates a geographical map with zooming, panning, image tiles, and the ability to layer choropleth paths and coordinate points. See [this example](https://d3plus.org/examples/d3plus-geomap/getting-started/) for help getting started.\n*/\nexport default class Geomap extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n super();\n\n this._fitObject = false;\n this._noDataMessage = false;\n this._ocean = \"#d4dadc\";\n\n this._point = accessor(\"point\");\n this._pointSize = constant(1);\n this._pointSizeMax = 10;\n this._pointSizeMin = 5;\n this._pointSizeScale = \"linear\";\n\n this._projection = d3Geo.geoMercator();\n this._projectionPadding = parseSides(20);\n\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d: DataPoint, i: number) =>\n `${this._drawLabel(d, i)}, ${this._pointSize(d, i)}`,\n hoverOpacity: 1,\n Path: {\n ariaLabel: (d: DataPoint, i: number) => {\n const validColorScale = this._colorScale\n ? `, ${this._colorScale(d, i)}`\n : \"\";\n return `${this._drawLabel(d, i)}${validColorScale}.`;\n },\n fill: (d: DataPoint, i: number) => {\n if (this._colorScale && !this._coordData.features.includes(d)) {\n const c = this._colorScale(d);\n if (c !== undefined && c !== null) {\n if (this._colorScaleClass._colorScale) {\n return this._colorScaleClass._colorScale(c);\n } else {\n let color = this._colorScaleClass.color();\n if (color instanceof Array) color = color[color.length - 1];\n return color;\n }\n }\n }\n return this._topojsonFill(d, i);\n },\n on: {\n mouseenter: (\n d: DataPoint,\n i: number,\n x: DataPoint,\n event: MouseEvent,\n ) =>\n !this._coordData.features.includes(d)\n ? this._on.mouseenter.bind(this)(d, i, x, event)\n : null,\n \"mousemove.shape\": (\n d: DataPoint,\n i: number,\n x: DataPoint,\n event: MouseEvent,\n ) =>\n !this._coordData.features.includes(d)\n ? this._on[\"mousemove.shape\"].bind(this)(d, i, x, event)\n : null,\n mouseleave: (\n d: DataPoint,\n i: number,\n x: DataPoint,\n event: MouseEvent,\n ) =>\n !this._coordData.features.includes(d)\n ? this._on.mouseleave.bind(this)(d, i, x, event)\n : null,\n },\n stroke: (d: DataPoint, i: number) => {\n const c =\n typeof this._shapeConfig.Path.fill === \"function\"\n ? this._shapeConfig.Path.fill(d, i)\n : this._shapeConfig.Path.fill;\n return color(c)!.darker();\n },\n strokeWidth: 1,\n },\n });\n\n this._tiles = true;\n this._tileGen = tile();\n this.tileUrl(\n \"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}@2x.png\",\n );\n\n this._topojson = false;\n this._topojsonFill = constant(\"#f5f5f3\");\n this._topojsonFilter = (d: Record<string, unknown>) =>\n ![\"010\"].includes(d.id as string);\n this._topojsonId = accessor(\"id\");\n\n this._zoom = true;\n this._zoomSet = false;\n }\n\n /**\n Renders map tiles based on the current zoom level.\n @private\n */\n _renderTiles(\n transform: ReturnType<typeof zoomTransform> = zoomTransform(\n this._container.node(),\n ),\n duration: number = 0,\n ): void {\n let tileData: number[][] & {scale?: number; translate?: number[]} =\n [] as unknown as number[][] & {scale?: number; translate?: number[]};\n if (this._tiles) {\n tileData = this._tileGen\n .extent(this._zoomBehavior.translateExtent())\n .scale(this._projection.scale() * (2 * Math.PI) * transform.k)\n .translate(transform.apply(this._projection.translate()))();\n\n this._tileGroup\n .transition()\n .duration(duration)\n .attr(\"transform\", transform);\n }\n\n const images = this._tileGroup\n .selectAll(\"image.d3plus-geomap-tile\")\n .data(\n tileData,\n ([x, y, z]: [number, number, number]) => `${x}-${y}-${z}`,\n );\n\n images.exit().transition().duration(duration).attr(\"opacity\", 0).remove();\n\n const scale = tileData.scale! / transform.k;\n\n const tileEnter = images\n .enter()\n .append(\"image\")\n .attr(\"class\", \"d3plus-geomap-tile\");\n\n tileEnter\n .attr(\"opacity\", 0)\n .transition()\n .duration(duration)\n .attr(\"opacity\", 1);\n\n images\n .merge(tileEnter)\n .attr(\"width\", scale)\n .attr(\"height\", scale)\n .attr(\"xlink:href\", ([x, y, z]: [number, number, number]) =>\n this._tileUrl\n .replace(\"{s}\", [\"a\", \"b\", \"c\"][(Math.random() * 3) | 0])\n .replace(\"{z}\", `${z}`)\n .replace(\"{x}\", `${x}`)\n .replace(\"{y}\", `${y}`),\n )\n .attr(\n \"x\",\n ([x]: [number]) =>\n x * scale + tileData.translate![0] * scale - transform.x / transform.k,\n )\n .attr(\n \"y\",\n ([, y]: [number, number]) =>\n y * scale + tileData.translate![1] * scale - transform.y / transform.k,\n );\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback?: () => void): this {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n this._container = this._select.selectAll(\"svg.d3plus-geomap\").data([0]);\n this._container = this._container\n .enter()\n .append(\"svg\")\n .attr(\"class\", \"d3plus-geomap\")\n .attr(\"opacity\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top)\n .style(\"background-color\", this._ocean || \"transparent\")\n .merge(this._container);\n this._container\n .transition(this._transition)\n .attr(\"opacity\", 1)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top);\n\n const ocean = this._container\n .selectAll(\"rect.d3plus-geomap-ocean\")\n .data([0]);\n ocean\n .enter()\n .append(\"rect\")\n .attr(\"class\", \"d3plus-geomap-ocean\")\n .merge(ocean)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"fill\", this._ocean || \"transparent\");\n\n this._tileGroup = this._container\n .selectAll(\"g.d3plus-geomap-tileGroup\")\n .data([0]);\n this._tileGroup = this._tileGroup\n .enter()\n .append(\"g\")\n .attr(\"class\", \"d3plus-geomap-tileGroup\")\n .merge(this._tileGroup);\n\n this._zoomGroup = this._container\n .selectAll(\"g.d3plus-geomap-zoomGroup\")\n .data([0]);\n this._zoomGroup = this._zoomGroup\n .enter()\n .append(\"g\")\n .attr(\"class\", \"d3plus-geomap-zoomGroup\")\n .merge(this._zoomGroup);\n\n let pathGroup = this._zoomGroup\n .selectAll(\"g.d3plus-geomap-paths\")\n .data([0]);\n pathGroup = pathGroup\n .enter()\n .append(\"g\")\n .attr(\"class\", \"d3plus-geomap-paths\")\n .merge(pathGroup);\n\n const coordData: {type: string; features: Record<string, unknown>[]} =\n (this._coordData = this._topojson\n ? (topo2feature(this._topojson, this._topojsonKey) as {\n type: string;\n features: Record<string, unknown>[];\n })\n : {type: \"FeatureCollection\", features: []});\n\n if (this._topojsonFilter)\n coordData.features = coordData.features.filter(this._topojsonFilter);\n\n const path = (this._path = (d3Geo.geoPath as any)().projection(this._projection));\n\n const pointData = this._filteredData.filter(\n (d: DataPoint, i: number) => this._point(d, i) instanceof Array,\n );\n\n const pathData = this._filteredData\n .filter(\n (d: DataPoint, i: number) => !(this._point(d, i) instanceof Array),\n )\n .reduce((obj: Record<string, DataPoint>, d: DataPoint) => {\n obj[this._id(d)] = d;\n return obj;\n }, {});\n\n const topoData = coordData.features.reduce(\n (arr: Record<string, unknown>[], feature: Record<string, unknown>) => {\n const id = this._topojsonId(feature);\n arr.push({\n __d3plus__: true,\n data: pathData[id],\n feature,\n id,\n });\n return arr;\n },\n [],\n );\n\n const scaleName = `scale${this._pointSizeScale.charAt(0).toUpperCase()}${this._pointSizeScale.slice(1)}`;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const r = (scales as any)[scaleName]()\n .domain(\n extent(pointData, (d: DataPoint, i: number) => this._pointSize(d, i)),\n )\n .range([this._pointSizeMin, this._pointSizeMax]);\n\n if (!this._zoomSet) {\n const fitData = this._fitObject\n ? (topo2feature(this._fitObject, this._fitKey) as {\n type: string;\n features: Record<string, unknown>[];\n })\n : coordData;\n\n this._extentBounds = {\n type: \"FeatureCollection\",\n features: this._fitFilter\n ? fitData.features.filter(this._fitFilter)\n : fitData.features.slice(),\n };\n this._extentBounds.features = this._extentBounds.features.reduce(\n (\n arr: Record<string, unknown>[],\n d: {\n type: string;\n id: string;\n geometry: {type: string; coordinates: number[][][][]};\n },\n ) => {\n if (d.geometry) {\n const reduced: {\n type: string;\n id: string;\n geometry: {type: string; coordinates: number[][][][]};\n } = {\n type: d.type,\n id: d.id,\n geometry: {\n coordinates: d.geometry.coordinates,\n type: d.geometry.type,\n },\n };\n\n if (\n d.geometry.type === \"MultiPolygon\" &&\n d.geometry.coordinates.length > 1\n ) {\n const areas: number[] = [],\n distances: number[] = [];\n\n d.geometry.coordinates.forEach((c: number[][][]) => {\n reduced.geometry.coordinates = [c];\n areas.push(path.area(reduced));\n });\n\n reduced.geometry.coordinates = [\n d.geometry.coordinates[areas.indexOf(max(areas)!)],\n ];\n const center = path.centroid(reduced);\n\n d.geometry.coordinates.forEach((c: number[][][]) => {\n reduced.geometry.coordinates = [c];\n distances.push(pointDistance(path.centroid(reduced), center));\n });\n\n const distCutoff = quantile(\n areas.reduce((arr: number[], dist: number, i: number) => {\n if (dist) arr.push(areas[i] / dist);\n return arr;\n }, []),\n 0.9,\n );\n\n reduced.geometry.coordinates = d.geometry.coordinates.filter(\n (c: number[][][], i: number) => {\n const dist = distances[i];\n return dist === 0 || areas[i] / dist >= distCutoff!;\n },\n );\n }\n\n arr.push(reduced);\n }\n return arr;\n },\n [],\n );\n\n if (!this._extentBounds.features.length && pointData.length) {\n const bounds: (number | undefined)[][] = [\n [undefined, undefined],\n [undefined, undefined],\n ];\n pointData.forEach((d: DataPoint, i: number) => {\n const point = this._projection(this._point(d, i));\n if (bounds[0][0] === void 0 || point[0] < bounds[0][0])\n bounds[0][0] = point[0];\n if (bounds[1][0] === void 0 || point[0] > bounds[1][0])\n bounds[1][0] = point[0];\n if (bounds[0][1] === void 0 || point[1] < bounds[0][1])\n bounds[0][1] = point[1];\n if (bounds[1][1] === void 0 || point[1] > bounds[1][1])\n bounds[1][1] = point[1];\n });\n\n this._extentBounds = {\n type: \"FeatureCollection\",\n features: [\n {\n type: \"Feature\",\n geometry: {\n type: \"MultiPoint\",\n coordinates: bounds.map((b: (number | undefined)[]) =>\n this._projection.invert(b),\n ),\n },\n },\n ],\n };\n const maxSize = max(pointData, (d: DataPoint, i: number) =>\n r(this._pointSize(d, i)),\n );\n this._projectionPadding.top += maxSize;\n this._projectionPadding.right += maxSize;\n this._projectionPadding.bottom += maxSize;\n this._projectionPadding.left += maxSize;\n }\n\n this._zoomBehavior\n .extent([\n [0, 0],\n [width, height],\n ])\n .scaleExtent([1, this._zoomMax])\n .translateExtent([\n [0, 0],\n [width, height],\n ]);\n\n this._zoomSet = true;\n }\n\n this._projection = this._projection.fitExtent(\n this._extentBounds.features.length\n ? [\n [this._projectionPadding.left, this._projectionPadding.top],\n [\n width - this._projectionPadding.right,\n height - this._projectionPadding.bottom,\n ],\n ]\n : [\n [0, 0],\n [width, height],\n ],\n this._extentBounds.features.length\n ? this._extentBounds\n : {type: \"Sphere\"},\n );\n\n this._shapes.push(\n new Path()\n .data(topoData as DataPoint[])\n .d((d: Record<string, unknown>) => path(d.feature))\n .select(pathGroup.node())\n .x(0)\n .y(0)\n .config(configPrep.bind(this as any)(this._shapeConfig, \"shape\", \"Path\"))\n .render(),\n );\n\n let pointGroup = this._zoomGroup\n .selectAll(\"g.d3plus-geomap-pins\")\n .data([0]);\n pointGroup = pointGroup\n .enter()\n .append(\"g\")\n .attr(\"class\", \"d3plus-geomap-pins\")\n .merge(pointGroup);\n\n const circles = new Circle()\n .config(configPrep.bind(this as any)(this._shapeConfig, \"shape\", \"Circle\"))\n .data(pointData)\n .r(((d: DataPoint, i: number) => r(this._pointSize(d, i))) as any)\n .select(pointGroup.node())\n .sort(\n (a: DataPoint, b: DataPoint) => this._pointSize(b) - this._pointSize(a),\n )\n .x(\n ((d: DataPoint, i: number) =>\n this._projection(this._point(d, i))[0]) as any,\n )\n .y(\n ((d: DataPoint, i: number) =>\n this._projection(this._point(d, i))[1]) as any,\n );\n\n const events = Object.keys(this._on);\n const classEvents = events.filter((e: string) => e.includes(\".Circle\")),\n globalEvents = events.filter((e: string) => !e.includes(\".\")),\n shapeEvents = events.filter((e: string) => e.includes(\".shape\"));\n for (let e = 0; e < globalEvents.length; e++)\n circles.on(globalEvents[e], this._on[globalEvents[e]]);\n for (let e = 0; e < shapeEvents.length; e++)\n circles.on(shapeEvents[e], this._on[shapeEvents[e]]);\n for (let e = 0; e < classEvents.length; e++)\n circles.on(classEvents[e], this._on[classEvents[e]]);\n\n this._shapes.push(circles.render());\n\n return this;\n }\n\n /**\n Topojson files sometimes include small geographies that negatively impact how the library determines the default zoom level (for example, a small island or territory far off the coast that is barely visible to the eye). The fitFilter method can be used to remove specific geographies from the logic used to determine the zooming.\n\nThe *value* passed can be a single id to remove, an array of ids, or a filter function. Take a look at the [Choropleth Example](http://d3plus.org/examples/d3plus-geomap/getting-started/) to see it in action.\n */\n fitFilter(\n _?: string | string[] | ((d: Record<string, unknown>) => boolean),\n ): this | ((d: Record<string, unknown>) => boolean) {\n if (arguments.length) {\n this._zoomSet = false;\n if (typeof _ === \"function\") return ((this._fitFilter = _), this);\n if (!(_ instanceof Array)) _ = [_] as string[];\n return (\n (this._fitFilter = (d: Record<string, unknown>) =>\n (_ as string[]).includes(d.id as string)),\n this\n );\n }\n return this._fitFilter;\n }\n\n /**\n If the topojson being used to determine the zoom fit (either the main [topojson](#Geomap.topojson) object or the [fitObject](#Geomap.fitObject)) contains multiple geographical sets (for example, a file containing state and county boundaries), use this method to indentify which set to use for the zoom fit.\n\nIf not specified, the first key in the *Array* returned from using `Object.keys` on the topojson will be used.\n */\n fitKey(_?: string): this | string {\n if (arguments.length) {\n this._fitKey = _!;\n this._zoomSet = false;\n return this;\n }\n return this._fitKey;\n }\n\n /**\n The topojson to be used for the initial projection [fit extent](https://github.com/d3/d3-geo#projection_fitExtent). The value passed should either be a valid Topojson *Object* or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function needs to return the final Topojson *Object*.\n @param _ `undefined`\n @param f Topojson data or a URL to load.\n */\n fitObject(\n _?: Record<string, unknown> | string,\n f?: (data: unknown) => Record<string, unknown>,\n ): this | Record<string, unknown> {\n if (arguments.length) {\n (addToQueue as any).bind(this)(_, f, \"fitObject\");\n this._zoomSet = false;\n return this;\n }\n return this._fitObject;\n }\n\n /**\n The color visible behind any shapes drawn on the map projection. By default, a color value matching the color used in the map tiles is used to help mask the loading time needed to render the tiles. Any value CSS color value may be used, including hexidecimal, rgb, rgba, and color strings like `\"blue\"` and `\"transparent\"`.\n @param _ \"#d4dadc\"]\n */\n ocean(_?: string): this | string {\n return arguments.length ? ((this._ocean = _!), this) : this._ocean;\n }\n\n /**\n The accessor to be used when detecting coordinate points in the objects passed to the [data](https://d3plus.org/docs/#Viz.data) method. Values are expected to be in the format `[longitude, latitude]`, which is in-line with d3's expected coordinate mapping.\n */\n point(\n _?: ((d: DataPoint, i: number) => number[]) | number[],\n ): this | ((d: DataPoint, i: number) => number[]) {\n return arguments.length\n ? ((this._point = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._point;\n }\n\n /**\n The accessor or static value to be used for sizing coordinate points.\n */\n pointSize(\n _?: number | ((d: DataPoint, i: number) => number),\n ): this | number | ((d: DataPoint, i: number) => number) {\n return arguments.length\n ? ((this._pointSize = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._pointSize;\n }\n\n /**\n The maximum pixel radius used in the scale for sizing coordinate points.\n @param _ 10]\n */\n pointSizeMax(_?: number): this | number {\n return arguments.length\n ? ((this._pointSizeMax = _!), this)\n : this._pointSizeMax;\n }\n\n /**\n The minimum pixel radius used in the scale for sizing coordinate points.\n @param _ 5]\n */\n pointSizeMin(_?: number): this | number {\n return arguments.length\n ? ((this._pointSizeMin = _!), this)\n : this._pointSizeMin;\n }\n\n /**\n The map projection used when displaying topojson and coordinate points. All projections from [d3-geo](https://github.com/d3/d3-geo#projections), [d3-geo-projection](https://github.com/d3/d3-geo-projection#api-reference), and [d3-composite-projections](http://geoexamples.com/d3-composite-projections/) are accepted, either as the string name (ie. \"geoMercator\") or the generator function itself. Map tiles are only usable when the projection is set to Mercator (the default).\n @param _ \"geoMercator\"\n */\n projection(_?: string | ((...args: unknown[]) => unknown)): this | ((...args: unknown[]) => unknown) {\n if (arguments.length && _ !== \"geoMercator\") this.tiles(false);\n return arguments.length\n ? ((this._projection =\n typeof _ === \"string\"\n ? d3Geo[_]\n ? d3Geo[_]()\n : d3Geo.geoMercator()\n : _),\n this)\n : this._projection;\n }\n\n /**\n The outer padding between the edge of the visualization and the shapes drawn. The value passed can be either a single number to be used on all sides, or a CSS string pattern (ie. `\"20px 0 10px\"`).\n @param _ 20]\n */\n projectionPadding(_?: number | string): this | Record<string, number> {\n return arguments.length\n ? ((this._projectionPadding = parseSides(_!)), this)\n : this._projectionPadding;\n }\n\n /**\n An array that corresponds to the value passed to the projection's [rotate](https://github.com/d3/d3-geo#projection_rotate) function. Use this method to shift the centerpoint of a map.\n @param _ [0, 0]]\n */\n projectionRotate(_?: number[]): this | number[] {\n if (arguments.length) {\n this._projection.rotate(_);\n this.tiles(false);\n this._zoomSet = false;\n return this;\n } else {\n return this._projectionRotate;\n }\n }\n\n /**\n Toggles the visibility of the map tiles.\n @param _ true]\n */\n tiles(_?: boolean): this | boolean {\n if (arguments.length) {\n this._tiles = _!;\n const attribution = findAttribution(this._tileUrl);\n if (_! && this._attribution === \"\")\n this._attribution = attribution as string;\n else if (!_! && this._attribution === attribution) this._attribution = \"\";\n return this;\n }\n return this._tiles;\n }\n\n /**\n By default, d3plus uses the `light_all` style provided by [CARTO](https://carto.com/location-data-services/basemaps/) for it's map tiles. The [tileUrl](https://d3plus.org/docs/#Geomap.tileUrl) method changes the base URL used for fetching the tiles, as long as the string passed contains `{x}`, `{y}`, and `{z}` variables enclosed in curly brackets for the zoom logic to load the correct tiles.\n @param _ \"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"]\n */\n tileUrl(_?: string): this | string {\n if (arguments.length) {\n this._tileUrl = _!;\n if (this._tiles) this._attribution = findAttribution(_!) as string;\n if (this._tileGroup) this._renderTiles.bind(this)();\n return this;\n }\n return this._tileUrl;\n }\n\n /**\n The topojson to be used for drawing geographical paths. The value passed should either be a valid Topojson *Object* or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final Topojson *Obejct*.\n @param _ []\n @param f Topojson data or a URL to load.\n */\n topojson(\n _?: Record<string, unknown> | string,\n f?: (data: unknown) => Record<string, unknown>,\n ): this | Record<string, unknown> {\n if (arguments.length) {\n (addToQueue as any).bind(this)(_, f, \"topojson\");\n this._zoomSet = false;\n return this;\n }\n return this._topojson;\n }\n\n /**\n The function is used to set default color of the map.\n @param _ string\n */\n topojsonFill(\n _?: string | ((d: DataPoint, i: number) => string),\n ): this | string | ((d: DataPoint, i: number) => string) {\n return arguments.length\n ? ((this._topojsonFill = typeof _ === \"function\" ? _ : constant(_)),\n this,\n this)\n : this._topojsonFill;\n }\n\n /**\n If the [topojson](#Geomap.topojson) being used contains boundaries that should not be shown, this method can be used to filter them out of the final output. The *value* passed can be a single id to remove, an array of ids, or a filter function.\n */\n topojsonFilter(\n _?: string | string[] | ((d: Record<string, unknown>) => boolean),\n ): this | ((d: Record<string, unknown>) => boolean) {\n if (arguments.length) {\n this._zoomSet = false;\n if (typeof _ === \"function\") return ((this._topojsonFilter = _), this);\n if (!(_ instanceof Array)) _ = [_] as string[];\n return (\n (this._topojsonFilter = (d: Record<string, unknown>) =>\n (_ as string[]).includes(d.id as string)),\n this\n );\n }\n return this._topojsonFilter;\n }\n\n /**\n If the [topojson](#Geomap.topojson) contains multiple geographical sets (for example, a file containing state and county boundaries), use this method to indentify which set to use.\n\nIf not specified, the first key in the *Array* returned from using `Object.keys` on the topojson will be used.\n */\n topojsonKey(_?: string): this | string {\n if (arguments.length) {\n this._topojsonKey = _!;\n this._zoomSet = false;\n return this;\n }\n return this._topojsonKey;\n }\n\n /**\n The accessor used to map each topojson geometry to it's corresponding [data](https://d3plus.org/docs/#Viz.data) point.\n @param _ \"id\"\n */\n topojsonId(\n _?: string | ((d: Record<string, unknown>) => string),\n ): this | ((d: Record<string, unknown>) => string) {\n return arguments.length\n ? ((this._topojsonId = typeof _ === \"function\" ? _ : accessor(_!)),\n this,\n this)\n : this._topojsonId;\n }\n}\n"],"names":["extent","max","quantile","color","zoomTransform","d3GeoCore","d3GeoProjection","d3CompositeProjections","d3Geo","Object","assign","scales","tile","feature","addToQueue","parseSides","pointDistance","Circle","Path","accessor","configPrep","constant","Viz","attributions","findAttribution","url","a","find","d","matches","some","m","includes","text","topo2feature","topo","key","k","objects","keys","Geomap","_fitObject","_noDataMessage","_ocean","_point","_pointSize","_pointSizeMax","_pointSizeMin","_pointSizeScale","_projection","geoMercator","_projectionPadding","_shape","_shapeConfig","ariaLabel","i","_drawLabel","hoverOpacity","validColorScale","_colorScale","fill","_coordData","features","c","undefined","_colorScaleClass","Array","length","_topojsonFill","on","mouseenter","x","event","_on","bind","mouseleave","stroke","darker","strokeWidth","_tiles","_tileGen","tileUrl","_topojson","_topojsonFilter","id","_topojsonId","_zoom","_zoomSet","_renderTiles","transform","_container","node","duration","tileData","_zoomBehavior","translateExtent","scale","Math","PI","translate","apply","_tileGroup","transition","attr","images","selectAll","data","y","z","exit","remove","tileEnter","enter","append","merge","_tileUrl","replace","random","_draw","callback","height","_height","_margin","top","bottom","width","_width","left","right","_select","style","_transition","ocean","_zoomGroup","pathGroup","coordData","_topojsonKey","type","filter","path","_path","geoPath","projection","pointData","_filteredData","pathData","reduce","obj","_id","topoData","arr","push","__d3plus__","scaleName","charAt","toUpperCase","slice","r","domain","range","fitData","_fitKey","_extentBounds","_fitFilter","geometry","reduced","coordinates","areas","distances","forEach","area","indexOf","center","centroid","distCutoff","dist","bounds","point","map","b","invert","maxSize","scaleExtent","_zoomMax","fitExtent","_shapes","select","config","render","pointGroup","circles","sort","events","classEvents","e","globalEvents","shapeEvents","fitFilter","_","arguments","fitKey","fitObject","f","pointSize","pointSizeMax","pointSizeMin","tiles","projectionPadding","projectionRotate","rotate","_projectionRotate","attribution","_attribution","topojson","topojsonFill","topojsonFilter","topojsonKey","topojsonId"],"mappings":"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"}
@@ -79,3 +79,5 @@ new d3plus.Plot()
79
79
  .discrete("x")
80
80
  .shape("Line")
81
81
  */ export { LinePlot as default };
82
+
83
+ //# sourceMappingURL=LinePlot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/LinePlot.ts"],"sourcesContent":["import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n Creates a line plot based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .discrete(\"x\")\n .shape(\"Line\")\n*/\nexport default class LinePlot extends Plot {\n /**\n Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n super();\n this._discrete = \"x\";\n this._shape = constant(\"Line\");\n }\n}\n"],"names":["constant","default","Plot","LinePlot","_discrete","_shape"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAQA,QAAQ,QAAO,oBAAoB;AAE3C,SAAQC,WAAWC,IAAI,QAAO,YAAY;AAS3B,IAAA,AAAMC,yBAAN;;cAAMA;aAAAA;gCAAAA;;gBAMjB,kBANiBA;QAOjB,MAAKC,SAAS,GAAG;QACjB,MAAKC,MAAM,GAAGL,SAAS;;;WARNG;EAAiBD;AAPtC;;;;;;AAMA,GACA,SAAqBC,sBAUpB"}
@@ -337,3 +337,5 @@ function row(a, b) {
337
337
  /**
338
338
  Creates a simple rows/columns Matrix view of any dataset. See [this example](https://d3plus.org/examples/d3plus-matrix/getting-started/) for help getting started using the Matrix class.
339
339
  */ export { Matrix as default };
340
+
341
+ //# sourceMappingURL=Matrix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Matrix.ts"],"sourcesContent":["import {Axis} from \"../components/index.js\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, configPrep, getProp} from \"../utils/index.js\";\n\nimport Viz from \"./Viz.js\";\nimport prepData from \"./helpers/matrixData.js\";\n\nconst defaultAxisConfig: Record<string, unknown> = {\n align: \"start\",\n barConfig: {\n stroke: 0,\n },\n gridSize: 0,\n padding: 5,\n paddingInner: 0,\n paddingOuter: 0,\n scale: \"band\",\n tickSize: 0,\n};\n\n/**\n Creates a simple rows/columns Matrix view of any dataset. See [this example](https://d3plus.org/examples/d3plus-matrix/getting-started/) for help getting started using the Matrix class.\n*/\nexport default class Matrix extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n super();\n\n this._cellPadding = 2;\n\n this._column = accessor(\"column\");\n this._columnAxis = new Axis();\n this._columnConfig = assign({orient: \"top\"}, defaultAxisConfig);\n this._columnSort = (\n a: DataPoint[keyof DataPoint],\n b: DataPoint[keyof DataPoint],\n ) => `${a}`.localeCompare(`${b}`);\n\n this._label = (d: DataPoint, i: number) =>\n `${getProp.bind(this)(\"row\", d, i)} / ${getProp.bind(this)(\"column\", d, i)}`;\n\n const defaultMouseMoveShape = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (\n d: DataPoint,\n i: number,\n x: DataPoint,\n event: MouseEvent,\n ) => {\n defaultMouseMoveShape(d, i, x, event);\n const row = getProp.bind(this)(\"row\", d, i);\n const column = getProp.bind(this)(\"column\", d, i);\n this.hover(\n (h: DataPoint, ii: number) =>\n getProp.bind(this)(\"row\", h, ii) === row ||\n getProp.bind(this)(\"column\", h, ii) === column,\n );\n };\n\n this._row = accessor(\"row\");\n this._rowAxis = new Axis();\n this._rowConfig = assign({orient: \"left\"}, defaultAxisConfig);\n this._rowSort = (\n a: DataPoint[keyof DataPoint],\n b: DataPoint[keyof DataPoint],\n ) => `${a}`.localeCompare(`${b}`);\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback?: () => void): this {\n const {rowValues, columnValues, shapeData} = prepData.bind(this)(\n this._filteredData,\n );\n\n if (!rowValues.length || !columnValues.length) return this;\n\n const height = this._height - this._margin.top - this._margin.bottom,\n parent = this._select,\n transition = this._transition,\n width = this._width - this._margin.left - this._margin.right;\n\n const hidden = {opacity: 0};\n const visible = {opacity: 1};\n\n const columnRotation = width / columnValues.length < 120;\n\n const selectElem = (name: string, opts: Record<string, unknown>) =>\n elem(\n `g.d3plus-Matrix-${name}`,\n Object.assign({parent, transition}, opts),\n ).node();\n\n this._rowAxis\n .select(selectElem(\"row\", {enter: hidden, update: hidden}))\n .domain(rowValues)\n .height(\n height -\n this._margin.top -\n this._margin.bottom -\n this._padding.bottom -\n this._padding.top,\n )\n .maxSize(width / 4)\n .width(width)\n .config(this._rowConfig)\n .render();\n\n const rowPadding = this._rowAxis.outerBounds().width;\n this._padding.left += rowPadding;\n let columnTransform = `translate(0, ${this._margin.top})`;\n const hiddenTransform = Object.assign({transform: columnTransform}, hidden);\n\n this._columnAxis\n .select(\n selectElem(\"column\", {enter: hiddenTransform, update: hiddenTransform}),\n )\n .domain(columnValues)\n .range([\n this._margin.left + this._padding.left,\n width - this._margin.right + this._padding.right,\n ])\n .height(height)\n .maxSize(height / 4)\n .width(width)\n .labelRotation(columnRotation)\n .config(this._columnConfig)\n .render();\n\n const columnPadding = this._columnAxis.outerBounds().height;\n this._padding.top += columnPadding;\n\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const rowTransform = `translate(${this._margin.left}, ${this._margin.top})`;\n columnTransform = `translate(0, ${this._margin.top})`;\n const visibleTransform = Object.assign(\n {transform: columnTransform},\n visible,\n );\n\n this._rowAxis\n .select(\n selectElem(\"row\", {\n update: Object.assign({transform: rowTransform}, visible),\n }),\n )\n .height(\n height - this._margin.top - this._margin.bottom - this._padding.bottom,\n )\n .maxSize(rowPadding)\n .range([columnPadding + this._columnAxis.padding(), undefined])\n .render();\n\n this._columnAxis\n .select(selectElem(\"column\", {update: visibleTransform}))\n .range([\n this._margin.left + this._padding.left + this._rowAxis.padding(),\n width - this._margin.right + this._padding.right,\n ])\n .maxSize(columnPadding)\n .render();\n\n const rowScale = this._rowAxis._getPosition.bind(this._rowAxis);\n const columnScale = this._columnAxis._getPosition.bind(this._columnAxis);\n const cellHeight =\n rowValues.length > 1\n ? rowScale(rowValues[1]) - rowScale(rowValues[0])\n : this._rowAxis.height();\n const cellWidth =\n columnValues.length > 1\n ? columnScale(columnValues[1]) - columnScale(columnValues[0])\n : this._columnAxis.width();\n\n const transform = `translate(0, ${this._margin.top})`;\n const rectConfig = (configPrep as any).bind(this as any)(\n this._shapeConfig,\n \"shape\",\n \"Rect\",\n );\n\n this._shapes.push(\n new Rect()\n .data(shapeData as any)\n .select(\n elem(\"g.d3plus-Matrix-cells\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config({\n height: cellHeight - this._cellPadding,\n width: cellWidth - this._cellPadding,\n x: (d: any) =>\n columnScale(d.column) + cellWidth / 2,\n y: (d: any) => rowScale(d.row) + cellHeight / 2,\n } as any)\n .config(rectConfig as any)\n .render(),\n );\n\n return this;\n }\n\n /**\n The pixel padding in between each cell.\n*/\n cellPadding(_?: number): this | number {\n return arguments.length\n ? ((this._cellPadding = _!), this)\n : this._cellPadding;\n }\n\n /**\n Determines which key in your data should be used for each column in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's column value.\n\n@example\nfunction column(d) {\n return d.name;\n}\n */\n column(\n _?: string | ((d: DataPoint, i: number) => DataPoint[keyof DataPoint]),\n ): this | string | ((d: DataPoint, i: number) => DataPoint[keyof DataPoint]) {\n return arguments.length\n ? ((this._column = typeof _ === \"function\" ? _ : accessor(_!)), this)\n : this._column;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the column labels.\n*/\n columnConfig(_?: Record<string, unknown>): this | Record<string, unknown> {\n return arguments.length\n ? ((this._columnConfig = assign(this._columnConfig, _!)), this)\n : this._columnConfig;\n }\n\n /**\n A manual list of IDs to be used for columns.\n*/\n columnList(\n _?: DataPoint[keyof DataPoint][],\n ): this | DataPoint[keyof DataPoint][] {\n return arguments.length ? ((this._columnList = _), this) : this._columnList;\n }\n\n /**\n A sort comparator function that is run on the unique set of column values.\n\n@example\nfunction column(a, b) {\n return a.localeCompare(b);\n}\n */\n columnSort(_?: (...args: unknown[]) => unknown): this | ((...args: unknown[]) => unknown) {\n return arguments.length ? ((this._columnSort = _), this) : this._columnSort;\n }\n\n /**\n Determines which key in your data should be used for each row in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's row value.\n\n@example\nfunction row(d) {\n return d.name;\n}\n */\n row(\n _?: string | ((d: DataPoint, i: number) => DataPoint[keyof DataPoint]),\n ): this | string | ((d: DataPoint, i: number) => DataPoint[keyof DataPoint]) {\n return arguments.length\n ? ((this._row = typeof _ === \"function\" ? _ : accessor(_!)), this)\n : this._row;\n }\n\n /**\n A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the row labels.\n*/\n rowConfig(_?: Record<string, unknown>): this | Record<string, unknown> {\n return arguments.length\n ? ((this._rowConfig = assign(this._rowConfig, _!)), this)\n : this._rowConfig;\n }\n\n /**\n A manual list of IDs to be used for rows.\n*/\n rowList(\n _?: DataPoint[keyof DataPoint][],\n ): this | DataPoint[keyof DataPoint][] {\n return arguments.length ? ((this._rowList = _), this) : this._rowList;\n }\n\n /**\n A sort comparator function that is run on the unique set of row values.\n\n@example\nfunction row(a, b) {\n return a.localeCompare(b);\n}\n */\n rowSort(_?: (...args: unknown[]) => unknown): this | ((...args: unknown[]) => unknown) {\n return arguments.length ? ((this._rowSort = _), this) : this._rowSort;\n }\n}\n"],"names":["Axis","assign","elem","Rect","accessor","configPrep","getProp","Viz","prepData","defaultAxisConfig","align","barConfig","stroke","gridSize","padding","paddingInner","paddingOuter","scale","tickSize","Matrix","_cellPadding","_column","_columnAxis","_columnConfig","orient","_columnSort","a","b","localeCompare","_label","d","i","bind","defaultMouseMoveShape","_on","x","event","row","column","hover","h","ii","_row","_rowAxis","_rowConfig","_rowSort","_draw","callback","_filteredData","rowValues","columnValues","shapeData","length","height","_height","_margin","top","bottom","parent","_select","transition","_transition","width","_width","left","right","hidden","opacity","visible","columnRotation","selectElem","name","opts","Object","node","select","enter","update","domain","_padding","maxSize","config","render","rowPadding","outerBounds","columnTransform","hiddenTransform","transform","range","labelRotation","columnPadding","rowTransform","visibleTransform","undefined","rowScale","_getPosition","columnScale","cellHeight","cellWidth","rectConfig","_shapeConfig","_shapes","push","data","y","cellPadding","_","arguments","columnConfig","columnList","_columnList","columnSort","rowConfig","rowList","_rowList","rowSort"],"mappings":"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"}
@@ -792,3 +792,5 @@ Additionally, a custom formatting function can be passed as a second argument to
792
792
  /**
793
793
  Creates a network visualization based on a defined set of nodes and edges. [Click here](http://d3plus.org/examples/d3plus-network/getting-started/) for help getting started using the Network class.
794
794
  */ export { Network as default };
795
+
796
+ //# sourceMappingURL=Network.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Network.ts"],"sourcesContent":["import {extent, groups, max, mean, min, merge} from \"d3-array\";\nimport {forceLink, forceManyBody, forceSimulation} from \"d3-force\";\nimport type {SimulationNodeDatum, SimulationLinkDatum} from \"d3-force\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {polygonHull} from \"d3-polygon\";\nimport * as scales from \"d3-scale\";\nimport {zoomTransform} from \"d3-zoom\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {addToQueue} from \"@d3plus/data\";\nimport {largestRect, pointDistance, pointRotate} from \"@d3plus/math\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/** Extended node for force simulation with extra properties.*/\ninterface NetworkNode extends SimulationNodeDatum {\n id: string;\n size?: number;\n shape?: string;\n}\n\n/** Extended link for force simulation with a size property.*/\ninterface NetworkLink extends SimulationLinkDatum<NetworkNode> {\n size?: number;\n}\n\n/**\n * Fetches the unique ID for a data point, whether it's defined by data or nodes.\n * @private\n*/\nfunction getNodeId(this: Network, d: Record<string, unknown>, i: number) {\n return `${this._id(d, i) || this._nodeGroupBy[min([this._drawDepth, this._nodeGroupBy.length - 1])](d, i)}`;\n}\n\n/**\n Creates a network visualization based on a defined set of nodes and edges. [Click here](http://d3plus.org/examples/d3plus-network/getting-started/) for help getting started using the Network class.\n*/\nexport default class Network extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n*/\n constructor() {\n super();\n this._links = [];\n this._linkSize = constant(1);\n this._linkSizeMin = 1;\n this._linkSizeScale = \"sqrt\";\n this._noDataMessage = false;\n this._nodeGroupBy = [accessor(\"id\")];\n this._nodes = [];\n this._on[\"click.shape\"] = (d: any, i: any, x: any, event: any) => {\n this._tooltipClass.data([]).render();\n\n if (this._hover && this._drawDepth >= this._groupBy.length - 1) {\n const id = getNodeId.bind(this)(d, i);\n\n if (this._focus && this._focus === id) {\n this.active(false);\n this._on.mouseenter.bind(this)(d, i, x, event);\n\n this._focus = undefined;\n this._zoomToBounds(null);\n } else {\n this.hover(false);\n\n const links = this._linkLookup[id],\n node = this._nodeLookup[id];\n\n const filterIds = [id];\n let xDomain = [node.x - node.r, node.x + node.r],\n yDomain = [node.y - node.r, node.y + node.r];\n\n links.forEach((l: any) => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.active((h: any, x: any) => {\n if (h.source && h.target)\n return (\n (h.source as DataPoint).id === id ||\n (h.target as DataPoint).id === id\n );\n else return filterIds.includes(getNodeId.bind(this)(h, x));\n });\n\n this._focus = id;\n const t = zoomTransform(this._container.node());\n xDomain = xDomain.map(d => d * t.k + t.x);\n yDomain = yDomain.map(d => d * t.k + t.y);\n this._zoomToBounds([\n [xDomain[0], yDomain[0]],\n [xDomain[1], yDomain[1]],\n ]);\n }\n }\n };\n this._on[\"click.legend\"] = (d: any, i: any, x: any, event: any) => {\n const ids = this._id(d);\n let id = this._ids(d);\n id = id[id.length - 1];\n\n if (this._hover && this._drawDepth >= this._groupBy.length - 1) {\n if (this._focus && this._focus === ids) {\n this.active(false);\n\n this._focus = undefined;\n this._zoomToBounds(null);\n } else {\n this.hover(false);\n\n const nodes = ids.map((id: any) => this._nodeLookup[id]);\n\n const filterIds = [`${id}`];\n let xDomain = [nodes[0].x - nodes[0].r, nodes[0].x + nodes[0].r],\n yDomain = [nodes[0].y - nodes[0].r, nodes[0].y + nodes[0].r];\n\n nodes.forEach((l: any) => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.active((h: any, x: any) => {\n if (h.source && h.target)\n return (\n filterIds.includes((h.source as DataPoint).id as string) &&\n filterIds.includes((h.target as DataPoint).id as string)\n );\n else {\n const myIds = this._ids(h, x);\n return filterIds.includes(`${myIds[myIds.length - 1]}`);\n }\n });\n\n this._focus = ids;\n const t = zoomTransform(this._container.node());\n xDomain = xDomain.map(d => d * t.k + t.x);\n yDomain = yDomain.map(d => d * t.k + t.y);\n this._zoomToBounds([\n [xDomain[0], yDomain[0]],\n [xDomain[1], yDomain[1]],\n ]);\n }\n\n this._on.mouseenter.bind(this)(d, i, x, event);\n this._on[\"mousemove.legend\"].bind(this)(d, i, x, event);\n }\n };\n this._on.mouseenter = () => {};\n this._on[\"mouseleave.shape\"] = () => {\n this.hover(false);\n };\n const defaultMouseMove = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d: any, i: any, x: any, event: any) => {\n defaultMouseMove(d, i, x, event);\n const id = getNodeId.bind(this)(d, i),\n links = this._linkLookup[id] || [],\n node = this._nodeLookup[id];\n\n const filterIds = [id];\n const xDomain = [node.x - node.r, node.x + node.r],\n yDomain = [node.y - node.r, node.y + node.r];\n\n links.forEach((l: any) => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.hover((h: any, x: any) => {\n if (h.source && h.target)\n return h.source.id === id || h.target.id === id;\n else return filterIds.includes(`${this._ids(h, x)[this._drawDepth]}`);\n });\n };\n this._sizeMin = 5;\n this._sizeScale = \"sqrt\";\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d: any, i: any) => {\n const validSize = this._size ? `, ${this._size(d, i)}` : \"\";\n return `${this._drawLabel(d, i)}${validSize}.`;\n },\n labelConfig: {\n duration: 0,\n fontMin: 1,\n fontResize: true,\n labelPadding: 0,\n textAnchor: \"middle\",\n verticalAlign: \"middle\",\n },\n Path: {\n fill: \"none\",\n label: false,\n stroke: \"#eee\",\n },\n });\n this._x = accessor(\"x\");\n this._y = accessor(\"y\");\n\n this._zoom = true;\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const duration = this._duration,\n height = this._height - this._margin.top - this._margin.bottom,\n transform = `translate(${this._margin.left}, ${this._margin.top})`,\n width = this._width - this._margin.left - this._margin.right;\n\n const data = this._filteredData.reduce((obj: any, d: any, i: any) => {\n obj[this._id(d, i)] = d;\n return obj;\n }, {});\n\n let nodes = this._nodes.reduce((obj: any, d: any, i: any) => {\n obj[getNodeId.bind(this)(d, i)] = d;\n return obj;\n }, {});\n\n nodes = Array.from(new Set(Object.keys(data).concat(Object.keys(nodes))))\n .map((id, i) => {\n const d = data[id],\n n = nodes[id];\n\n if (n === undefined) return false;\n\n return {\n __d3plus__: true,\n data: d || n,\n i,\n id,\n fx: d !== undefined && !isNaN(this._x(d)) ? this._x(d) : this._x(n),\n fy: d !== undefined && !isNaN(this._y(d)) ? this._y(d) : this._y(n),\n node: n,\n r: this._size\n ? d !== undefined && this._size(d) !== undefined\n ? this._size(d)\n : this._size(n)\n : this._sizeMin,\n shape:\n d !== undefined && this._shape(d) !== undefined\n ? this._shape(d)\n : this._shape(n),\n };\n })\n .filter((n): n is Exclude<typeof n, false> => !!n);\n\n const nodeLookup = (this._nodeLookup = nodes.reduce((obj: any, d: any) => {\n obj[d.id] = d;\n return obj;\n }, {}));\n\n const nodeIndices = nodes.map((n: any) => n.node);\n const links = this._links.map((l: any) => {\n const referenceType = typeof l.source;\n return {\n size: this._linkSize(l),\n source:\n referenceType === \"number\"\n ? nodes[nodeIndices.indexOf(this._nodes[l.source])]\n : referenceType === \"string\"\n ? nodeLookup[l.source]\n : nodeLookup[l.source.id],\n target:\n referenceType === \"number\"\n ? nodes[nodeIndices.indexOf(this._nodes[l.target])]\n : referenceType === \"string\"\n ? nodeLookup[l.target]\n : nodeLookup[l.target.id],\n };\n });\n\n this._linkLookup = links.reduce((obj: any, d: any) => {\n if (!obj[d.source.id]) obj[d.source.id] = [];\n obj[d.source.id].push(d.target);\n if (!obj[d.target.id]) obj[d.target.id] = [];\n obj[d.target.id].push(d.source);\n return obj;\n }, {});\n\n const missingCoords = nodes.some(\n (n: any) => n.fx === undefined || n.fy === undefined,\n );\n\n if (missingCoords) {\n const linkStrength = scales\n .scaleLinear()\n .domain(\n extent(links, (d: {size: number}) => d.size) as [number, number],\n )\n .range([0.1, 0.5]);\n\n const simulation = forceSimulation()\n .force(\n \"link\",\n forceLink(links as unknown as NetworkLink[])\n .id((d: SimulationNodeDatum) => (d as NetworkNode).id)\n .distance(1)\n .strength((d: NetworkLink) => linkStrength(d.size as number))\n .iterations(4),\n )\n .force(\"charge\", forceManyBody().strength(-1))\n .stop();\n\n const iterations = 100;\n const alphaMin = 0.001;\n const alphaDecay = 1 - Math.pow(alphaMin, 1 / iterations);\n simulation.velocityDecay(0);\n simulation.alphaMin(alphaMin);\n simulation.alphaDecay(alphaDecay);\n simulation.alphaDecay(0);\n\n simulation.nodes(nodes);\n simulation.tick(iterations).stop();\n\n const nodePositions = nodes.map((n: any) => [n.vx, n.vy] as [number, number]);\n let angle = 0,\n cx = 0,\n cy = 0;\n if (nodePositions.length === 2) {\n angle = 100;\n } else if (nodePositions.length > 2) {\n const hull = polygonHull(nodePositions) || [];\n const rect = largestRect(hull, {verbose: true})!;\n angle = rect.angle;\n cx = rect.cx;\n cy = rect.cy;\n }\n\n nodes.forEach((n: any) => {\n const p = pointRotate([n.vx, n.vy], -1 * ((Math.PI / 180) * angle), [\n cx,\n cy,\n ]);\n n.fx = p[0];\n n.fy = p[1];\n });\n }\n\n const xExtent = extent(nodes.map((n: any) => n.fx)) as unknown as [number, number],\n yExtent = extent(nodes.map((n: any) => n.fy)) as unknown as [number, number];\n\n const x = scales.scaleLinear().domain(xExtent).range([0, width]),\n y = scales.scaleLinear().domain(yExtent).range([0, height]);\n\n const nodeRatio =\n (xExtent[1] - xExtent[0]) / (yExtent[1] - yExtent[0]) || 1,\n screenRatio = width / height;\n\n if (nodeRatio > screenRatio) {\n const h = (height * screenRatio) / nodeRatio;\n y.range([(height - h) / 2, height - (height - h) / 2]);\n } else {\n const w = (width * nodeRatio) / screenRatio;\n x.range([(width - w) / 2, width - (width - w) / 2]);\n }\n\n nodes.forEach((n: any) => {\n n.x = x(n.fx);\n n.y = y(n.fy);\n });\n\n const rExtent = extent(nodes.map((n: any) => n.r)) as unknown as [number, number];\n let rMax =\n this._sizeMax ||\n (max([\n 1,\n (min(\n merge(\n nodes.map((n1: any) =>\n nodes.map((n2: any) =>\n n1 === n2 ? null : pointDistance([n1.x, n1.y], [n2.x, n2.y]),\n ),\n ),\n ),\n ) as unknown as number) / 2,\n ]) as unknown as number);\n\n const r = (scales as any)[\n `scale${this._sizeScale.charAt(0).toUpperCase()}${this._sizeScale.slice(1)}`\n ]()\n .domain(rExtent)\n .range([\n rExtent[0] === rExtent[1] ? rMax : min([rMax / 2, this._sizeMin]),\n rMax,\n ]),\n xDomain = x.domain(),\n yDomain = y.domain();\n\n const xOldSize = xDomain[1] - xDomain[0],\n yOldSize = yDomain[1] - yDomain[0];\n\n nodes.forEach((n: any) => {\n const size = r(n.r);\n if (xDomain[0] > x.invert(n.x - size)) xDomain[0] = x.invert(n.x - size);\n if (xDomain[1] < x.invert(n.x + size)) xDomain[1] = x.invert(n.x + size);\n if (yDomain[0] > y.invert(n.y - size)) yDomain[0] = y.invert(n.y - size);\n if (yDomain[1] < y.invert(n.y + size)) yDomain[1] = y.invert(n.y + size);\n });\n\n const xNewSize = xDomain[1] - xDomain[0],\n yNewSize = yDomain[1] - yDomain[0];\n\n rMax *= min([xOldSize / xNewSize, yOldSize / yNewSize])!;\n r.range([\n rExtent[0] === rExtent[1] ? rMax : min([rMax / 2, this._sizeMin]),\n rMax,\n ]);\n x.domain(xDomain);\n y.domain(yDomain);\n\n const fallbackRadius = (nodeRatio > screenRatio ? width : height) / 2;\n nodes.forEach((n: any) => {\n n.x = x(n.fx);\n n.fx = n.x;\n n.y = y(n.fy);\n n.fy = n.y;\n n.r = r(n.r) || fallbackRadius;\n n.width = n.r * 2;\n n.height = n.r * 2;\n });\n\n this._container = this._select.selectAll(\"svg.d3plus-network\").data([0]);\n\n this._container = this._container\n .enter()\n .append(\"svg\")\n .attr(\"class\", \"d3plus-network\")\n .attr(\"opacity\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top)\n .style(\"background-color\", \"transparent\")\n .merge(this._container);\n\n this._container\n .transition()\n .duration(duration)\n .attr(\"opacity\", 1)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top);\n\n const hitArea = this._container\n .selectAll(\"rect.d3plus-network-hitArea\")\n .data([0]);\n hitArea\n .enter()\n .append(\"rect\")\n .attr(\"class\", \"d3plus-network-hitArea\")\n .merge(hitArea)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"fill\", \"transparent\")\n .on(\"click\", () => {\n if (this._focus) {\n this.active(false);\n this._focus = undefined;\n this._zoomToBounds(null);\n }\n });\n\n this._zoomGroup = this._container\n .selectAll(\"g.d3plus-network-zoomGroup\")\n .data([0]);\n const parent = (this._zoomGroup = this._zoomGroup\n .enter()\n .append(\"g\")\n .attr(\"class\", \"d3plus-network-zoomGroup\")\n .merge(this._zoomGroup));\n\n const strokeExtent = extent(links, (d: {size: number}) => d.size);\n if (strokeExtent[0] !== strokeExtent[1]) {\n const strokeScale = (scales as any)[\n `scale${this._linkSizeScale.charAt(0).toUpperCase()}${this._linkSizeScale.slice(1)}`\n ]()\n .domain(strokeExtent)\n .range([this._linkSizeMin, r.range()[0]]);\n links.forEach((link: any) => {\n link.size = strokeScale(link.size);\n });\n }\n\n const linkConfig = (configPrep as any).bind(this)(this._shapeConfig, \"edge\", \"Path\");\n delete linkConfig.on;\n\n this._shapes.push(\n new shapes.Path()\n .config(linkConfig)\n .strokeWidth((d: any) => d.size)\n .activeStyle({\n \"stroke-width\": (d: any) => d.size,\n })\n .d(\n d =>\n `M${(d.source as DataPoint).x},${(d.source as DataPoint).y} ${(d.target as DataPoint).x},${(d.target as DataPoint).y}`,\n )\n .data(links)\n .select(\n elem(\"g.d3plus-network-links\", {\n parent,\n duration,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .render(),\n );\n\n const shapeConfig = {\n label: (d: any) =>\n nodes.length <= this._dataCutoff ||\n (this._hover && this._hover(d)) ||\n (this._active && this._active(d))\n ? this._drawLabel(d.data || d.node, d.i)\n : false,\n select: elem(\"g.d3plus-network-nodes\", {\n parent,\n duration,\n enter: {transform},\n update: {transform},\n }).node(),\n };\n\n groups(\n nodes as Record<string, unknown>[],\n (d: Record<string, unknown>) => d.shape as string,\n ).forEach(([key, values]) => {\n this._shapes.push(\n new (shapes as any)[key]()\n .config((configPrep as any).bind(this)(this._shapeConfig, \"shape\", key))\n .config(shapeConfig)\n .config((shapeConfig as any)[key] || {})\n .data(values)\n .render(),\n );\n });\n\n return this;\n }\n\n /**\n The hover callback function for highlighting shapes on mouseover.\n*/\n hover(_: any) {\n this._hover = _;\n\n if (this._nodes.length < this._dataCutoff) {\n this._shapes.forEach((s: any) => s.hover(_));\n if (this._legend) this._legendClass.hover(_);\n }\n\n return this;\n }\n\n /**\n A predefined *Array* of edges that connect each object passed to the [node](#Network.node) method. The `source` and `target` keys in each link need to map to the nodes in one of three ways:\n1. The index of the node in the nodes array (as in [this](http://d3plus.org/examples/d3plus-network/getting-started/) example).\n2. The actual node *Object* itself.\n3. A *String* value matching the `id` of the node.\n\nThe value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded. An optional formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final links *Array*.\n @param f Array of link objects or a URL to load links from.\n*/\n links(_: any, f?: any) {\n if (arguments.length) {\n (addToQueue as any).bind(this)(_, f, \"links\");\n return this;\n }\n return this._links;\n }\n\n /**\n Defines the thickness of the links connecting each node. The value provided can be either a pixel Number to be used for all links, or an accessor function that returns a specific data value to be used in an automatically calculated linear scale.\n*/\n linkSize(_?: any) {\n return arguments.length\n ? ((this._linkSize = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._linkSize;\n }\n\n /**\n Defines the minimum pixel stroke width used in link sizing.\n*/\n linkSizeMin(_?: any) {\n return arguments.length\n ? ((this._linkSizeMin = _), this)\n : this._linkSizeMin;\n }\n\n /**\n The type of [continuous d3-scale](https://github.com/d3/d3-scale#continuous-scales) used when calculating the pixel size of links in the network.\n*/\n linkSizeScale(_?: any) {\n return arguments.length\n ? ((this._linkSizeScale = _), this)\n : this._linkSizeScale;\n }\n\n /**\n The node group accessor(s). This method overrides the default .groupBy() function from being used with the data passed to .nodes().\n*/\n nodeGroupBy(_?: any) {\n if (!arguments.length) return this._nodeGroupBy;\n if (!(_ instanceof Array)) _ = [_];\n return (\n (this._nodeGroupBy = _.map((k: any) => {\n if (typeof k === \"function\") return k;\n else {\n if (!this._aggs[k]) {\n this._aggs[k] = (a: any, c: any) => {\n const v = Array.from(new Set(a.map(c)));\n return v.length === 1 ? v[0] : v;\n };\n }\n return accessor(k);\n }\n })),\n this\n );\n }\n\n /**\n The list of nodes to be used for drawing the network. The value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final node *Array*.\n @param f Array of node objects or a URL to load nodes from.\n*/\n nodes(_: any, f?: any) {\n if (arguments.length) {\n (addToQueue as any).bind(this)(_, f, \"nodes\");\n return this;\n }\n return this._nodes;\n }\n\n /**\n The size accessor for each node in the network.\n*/\n size(_?: any) {\n return arguments.length\n ? ((this._size = typeof _ === \"function\" || !_ ? _ : accessor(_)), this)\n : this._size;\n }\n\n /**\n Defines the maximum pixel radius used in size scaling. By default, the maximum size is determined by half the distance of the two closest nodes.\n*/\n sizeMax(_?: any) {\n return arguments.length ? ((this._sizeMax = _), this) : this._sizeMax;\n }\n\n /**\n Defines the minimum pixel radius used in size scaling.\n*/\n sizeMin(_?: any) {\n return arguments.length ? ((this._sizeMin = _), this) : this._sizeMin;\n }\n\n /**\n The type of [continuous d3-scale](https://github.com/d3/d3-scale#continuous-scales) used when calculating the pixel size of nodes in the network.\n*/\n sizeScale(_?: any) {\n return arguments.length ? ((this._sizeScale = _), this) : this._sizeScale;\n }\n\n /**\n The x position accessor for each node. The data passed to .data() takes priority over the .nodes() data array. By default, the x and y positions are determined dynamically based on default force layout properties.\n*/\n x(_?: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._x = _;\n else {\n this._x = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = mean;\n }\n return this;\n } else return this._x;\n }\n\n /**\n The y position accessor for each node. The data passed to .data() takes priority over the .nodes() data array. By default, the x and y positions are determined dynamically based on default force layout properties.\n*/\n y(_?: any) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._y = _;\n else {\n this._y = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = mean;\n }\n return this;\n } else return this._y;\n }\n}\n"],"names":["extent","groups","max","mean","min","merge","forceLink","forceManyBody","forceSimulation","polygonHull","scales","zoomTransform","assign","elem","addToQueue","largestRect","pointDistance","pointRotate","shapes","accessor","configPrep","constant","Viz","getNodeId","d","i","_id","_nodeGroupBy","_drawDepth","length","Network","_links","_linkSize","_linkSizeMin","_linkSizeScale","_noDataMessage","_nodes","_on","x","event","_tooltipClass","data","render","_hover","_groupBy","id","bind","_focus","active","mouseenter","undefined","_zoomToBounds","hover","links","_linkLookup","node","_nodeLookup","filterIds","xDomain","r","yDomain","y","forEach","l","push","h","source","target","includes","t","_container","map","k","ids","_ids","nodes","myIds","defaultMouseMove","_sizeMin","_sizeScale","_shape","_shapeConfig","ariaLabel","validSize","_size","_drawLabel","labelConfig","duration","fontMin","fontResize","labelPadding","textAnchor","verticalAlign","Path","fill","label","stroke","_x","_y","_zoom","_draw","callback","_duration","height","_height","_margin","top","bottom","transform","left","width","_width","right","_filteredData","reduce","obj","Array","from","Set","Object","keys","concat","n","__d3plus__","fx","isNaN","fy","shape","filter","nodeLookup","nodeIndices","referenceType","size","indexOf","missingCoords","some","linkStrength","scaleLinear","domain","range","simulation","force","distance","strength","iterations","stop","alphaMin","alphaDecay","Math","pow","velocityDecay","tick","nodePositions","vx","vy","angle","cx","cy","hull","rect","verbose","p","PI","xExtent","yExtent","nodeRatio","screenRatio","w","rExtent","rMax","_sizeMax","n1","n2","charAt","toUpperCase","slice","xOldSize","yOldSize","invert","xNewSize","yNewSize","fallbackRadius","_select","selectAll","enter","append","attr","style","transition","hitArea","on","_zoomGroup","parent","strokeExtent","strokeScale","link","linkConfig","_shapes","config","strokeWidth","activeStyle","select","update","shapeConfig","_dataCutoff","_active","key","values","_","s","_legend","_legendClass","f","arguments","linkSize","linkSizeMin","linkSizeScale","nodeGroupBy","_aggs","a","c","v","sizeMax","sizeMin","sizeScale"],"mappings":"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"}
@@ -304,3 +304,5 @@ function sum(d) {
304
304
  /**
305
305
  Uses the [d3 pack layout](https://github.com/d3/d3-hierarchy#pack) to creates Circle Packing chart based on an array of data.
306
306
  */ export { Pack as default };
307
+
308
+ //# sourceMappingURL=Pack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Pack.ts"],"sourcesContent":["import {hierarchy, pack} from \"d3-hierarchy\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {nestGroups} from \"@d3plus/data\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport {Circle} from \"../shapes/index.js\";\nimport Viz from \"./Viz.js\";\n\nconst recursionCircles = (\n d: Record<string, unknown>,\n arr: Record<string, unknown>[] = [],\n) => {\n if (d.values) {\n (d.values as Record<string, unknown>[]).forEach(h => {\n arr.push(h);\n recursionCircles(h, arr);\n });\n } else {\n arr.push(d);\n }\n return arr;\n};\n\n/**\n Uses the [d3 pack layout](https://github.com/d3/d3-hierarchy#pack) to creates Circle Packing chart based on an array of data.\n*/\nexport default class Pack extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n*/\n constructor() {\n super();\n\n this._layoutPadding = 1;\n\n const defaultLegend = this._legend;\n this._legend = (config: any, arr: any) => {\n if (arr.length === this._filteredData.length) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n\n this._on.mouseenter = () => {};\n\n const defaultMouseMoveLegend = this._on[\"mousemove.legend\"];\n this._on[\"mousemove.legend\"] = (d: any, i: any, x: any, event: any) => {\n defaultMouseMoveLegend(d, i, x, event);\n\n const ids = this._ids(d, i);\n const hoverData = recursionCircles(d);\n\n this.hover((h: any) => {\n const hover = Object.keys(h)\n .filter(key => key !== \"value\")\n .every(key => d[key] && d[key].includes(h[key]));\n\n if (hover) hoverData.push(h);\n else if (ids.includes(h.key))\n hoverData.push(...recursionCircles(h, [h]));\n\n return hoverData.includes(h);\n });\n };\n const defaultMouseMoveShape = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d: any, i: any, x: any, event: any) => {\n if (d.__d3plusTooltip__) defaultMouseMoveShape(d, i, x, event);\n const hoverData = recursionCircles(d, [d]);\n this.hover((h: any) => hoverData.includes(h));\n };\n\n this._pack = pack();\n this._packOpacity = constant(0.25);\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n Circle: {\n label: (d: any) => (d.parent && !d.children ? d.id : false),\n labelConfig: {\n fontResize: true,\n },\n opacity: (d: any) => d.__d3plusOpacity__,\n },\n });\n this._sort = (a: any, b: any) => b.value - a.value;\n this._sum = accessor(\"value\");\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n*/\n _draw(callback?: () => void) {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const diameter = Math.min(height, width);\n const transform = `translate(${(width - diameter) / 2}, ${(height - diameter) / 2})`;\n\n const nestedData = nestGroups(\n this._filteredData,\n this._groupBy.slice(0, this._drawDepth + 1),\n );\n\n const packData = this._pack\n .padding(this._layoutPadding)\n .size([diameter, diameter])(\n hierarchy(\n {key: (nestedData as unknown as Record<string, unknown>).key, values: nestedData} as Record<\n string,\n unknown\n >,\n (d: Record<string, unknown>) => d.values as Record<string, unknown>[],\n )\n .sum(this._sum)\n .sort(this._sort),\n )\n .descendants()\n .filter((d: any, i: any) => {\n d.__d3plus__ = true;\n d.i = i;\n d.id = d.parent ? d.parent.data.key : \"root\";\n d.data.__d3plusOpacity__ = d.height ? this._packOpacity(d.data, i) : 1;\n d.data.__d3plusTooltip__ = !d.height ? true : false;\n return !d.children || d.children.length > 1;\n });\n\n this._shapes.push(\n new Circle()\n .data(packData)\n .select(\n elem(\"g.d3plus-Pack\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", \"Circle\"))\n .render(),\n );\n\n return this;\n }\n\n /**\n The hover callback function for highlighting shapes on mouseover.\n*/\n hover(_: any) {\n this._hover = _;\n this._shapes.forEach((s: any) => s.hover(_));\n\n if (this._legend) this._legendClass.hover(_);\n return this;\n }\n\n /**\n The inner and outer padding for the pack layout.\n*/\n layoutPadding(_: any) {\n return arguments.length\n ? ((this._layoutPadding = _), this)\n : this._layoutPadding;\n }\n\n /**\n The opacity of nested circles within the pack layout.\n*/\n packOpacity(_: any) {\n return arguments.length\n ? ((this._packOpacity = typeof _ === \"function\" ? _ : constant(_)), this)\n : this._packOpacity;\n }\n\n /**\n Sort comparator function for the pack layout. Defaults to descending order by the associated input data's numeric value attribute.\n\n@example\nfunction comparator(a, b) {\n return b.value - a.value;\n}\n*/\n sort(_: any) {\n return arguments.length ? ((this._sort = _), this) : this._sort;\n }\n\n /**\n The sum accessor used for sizing each circle in the pack layout.\n\n@example\nfunction sum(d) {\n return d.sum;\n}\n*/\n sum(_: any) {\n return arguments.length\n ? ((this._sum = typeof _ === \"function\" ? _ : accessor(_)), this)\n : this._sum;\n }\n}\n"],"names":["hierarchy","pack","assign","elem","nestGroups","accessor","configPrep","constant","Circle","Viz","recursionCircles","d","arr","values","forEach","h","push","Pack","_layoutPadding","defaultLegend","_legend","config","length","_filteredData","bind","_on","mouseenter","defaultMouseMoveLegend","i","x","event","ids","_ids","hoverData","hover","Object","keys","filter","key","every","includes","defaultMouseMoveShape","__d3plusTooltip__","_pack","_packOpacity","_shape","_shapeConfig","label","parent","children","id","labelConfig","fontResize","opacity","__d3plusOpacity__","_sort","a","b","value","_sum","_draw","callback","height","_height","_margin","top","bottom","width","_width","left","right","diameter","Math","min","transform","nestedData","_groupBy","slice","_drawDepth","packData","padding","size","sum","sort","descendants","__d3plus__","data","_shapes","select","_select","enter","update","node","render","_","_hover","s","_legendClass","layoutPadding","arguments","packOpacity"],"mappings":"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"}
@@ -228,3 +228,5 @@ If \`padAngle\` is defined, the \`padPixel\` value will not be considered.
228
228
  /**
229
229
  Uses the [d3 pie layout](https://github.com/d3/d3-shape#pies) to creates SVG arcs based on an array of data.
230
230
  */ export { Pie as default };
231
+
232
+ //# sourceMappingURL=Pie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/charts/Pie.ts"],"sourcesContent":["import {min} from \"d3-array\";\nimport {arc, pie} from \"d3-shape\";\n\nimport {Path} from \"../shapes/index.js\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport type {DataPoint} from \"@d3plus/data\";\nimport {accessor, configPrep} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n Uses the [d3 pie layout](https://github.com/d3/d3-shape#pies) to creates SVG arcs based on an array of data.\n*/\nexport default class Pie extends Viz {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n\n /**\n Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n super();\n\n const defaultLegend = this._legend;\n this._legend = (config: Record<string, unknown>, arr: DataPoint[]) => {\n if (arr.length === this._filteredData.length) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n this._legendSort = (a: DataPoint, b: DataPoint) =>\n this._value(b) - this._value(a);\n\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d: DataPoint, i: number) =>\n this._pieData\n ? `${++this._pieData[i].index}. ${this._drawLabel(d, i)}, ${this._value(d, i)}.`\n : \"\",\n Path: {\n labelConfig: {\n fontResize: true,\n },\n },\n });\n this._innerRadius = 0;\n this._legendSort = (a: DataPoint, b: DataPoint) =>\n this._value(b) - this._value(a);\n this._padPixel = 0;\n this._pie = pie();\n this._sort = (a: DataPoint, b: DataPoint) =>\n this._value(b) - this._value(a);\n this._value = accessor(\"value\");\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback?: () => void): this {\n (super._draw as (...args: unknown[]) => unknown)(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const outerRadius = min([width, height])! / 2;\n\n const pieData = (this._pieData = this._pie\n .padAngle(this._padAngle || this._padPixel / outerRadius)\n .sort(this._sort)\n .value(this._value)(this._filteredData));\n\n pieData.forEach((d: Record<string, unknown>, i: number) => {\n d.__d3plus__ = true;\n d.i = i;\n });\n\n const arcData = arc()\n .innerRadius(this._innerRadius)\n .outerRadius(outerRadius);\n\n const transform = `translate(${width / 2 + this._margin.left}, ${height / 2 + this._margin.top})`;\n this._shapes.push(\n new Path()\n .data(pieData)\n .d(arcData as unknown as (d: DataPoint) => string)\n .select(\n elem(\"g.d3plus-Pie\", {\n parent: this._select,\n enter: {transform},\n update: {transform},\n }).node(),\n )\n .config({\n id: (d: DataPoint) => this._ids(d).join(\"-\"),\n x: 0,\n y: 0,\n })\n .label(this._drawLabel)\n .config((configPrep as any).bind(this as any)(this._shapeConfig, \"shape\", \"Path\"))\n .render(),\n );\n\n return this;\n }\n\n /**\n The pixel value, or function that returns a pixel value, that is used as the inner radius of the Pie (creating a Donut).\n*/\n innerRadius(_?: number | (() => number)): this | number | (() => number) {\n return arguments.length\n ? ((this._innerRadius = _), this)\n : this._innerRadius;\n }\n\n /**\n The padding between each arc, set as a radian value between \\`0\\` and \\`1\\`.\n\nIf set, this will override any previously set padPixel value.\n*/\n padAngle(_?: number): this | number {\n return arguments.length ? ((this._padAngle = _), this) : this._padAngle;\n }\n\n /**\n The padding between each arc, set as a pixel number value.\n\nBy default the value is \\`0\\`, which shows no padding between each arc.\n\nIf \\`padAngle\\` is defined, the \\`padPixel\\` value will not be considered.\n*/\n padPixel(_?: number): this | number {\n return arguments.length ? ((this._padPixel = _!), this) : this._padPixel;\n }\n\n /**\n A comparator function that sorts the Pie slices.\n*/\n sort(_?: (...args: unknown[]) => unknown): this | ((...args: unknown[]) => unknown) {\n return arguments.length ? ((this._sort = _), this) : this._sort;\n }\n\n /**\n The accessor key for each data point used to calculate the size of each Pie section.\n */\n value(\n _?: string | ((d: DataPoint, i: number) => number),\n ): this | string | ((d: DataPoint, i: number) => number) {\n return arguments.length\n ? ((this._value = typeof _ === \"function\" ? _ : accessor(_!)), this)\n : this._value;\n }\n}\n"],"names":["min","arc","pie","Path","assign","elem","accessor","configPrep","Viz","Pie","defaultLegend","_legend","config","arr","length","_filteredData","bind","_legendSort","a","b","_value","_shapeConfig","ariaLabel","d","i","_pieData","index","_drawLabel","labelConfig","fontResize","_innerRadius","_padPixel","_pie","_sort","_draw","callback","height","_height","_margin","top","bottom","width","_width","left","right","outerRadius","pieData","padAngle","_padAngle","sort","value","forEach","__d3plus__","arcData","innerRadius","transform","_shapes","push","data","select","parent","_select","enter","update","node","id","_ids","join","x","y","label","render","_","arguments","padPixel"],"mappings":"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"}
@@ -2110,3 +2110,5 @@ Additionally, each config object can also contain an optional "layer" key, which
2110
2110
  /**
2111
2111
  Creates an x/y plot based on an array of data.
2112
2112
  */ export { Plot as default };
2113
+
2114
+ //# sourceMappingURL=Plot.js.map