@milaboratories/miplots4 1.0.134 → 1.0.136

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 (128) hide show
  1. package/dist/{discrete/components → common}/BandAxis.d.ts +2 -2
  2. package/dist/common/BandAxis.d.ts.map +1 -0
  3. package/dist/{discrete/components → common}/BandAxis.js +3 -3
  4. package/dist/common/BandAxis.js.map +1 -0
  5. package/dist/common/ContinuousGrid.d.ts +3 -3
  6. package/dist/common/ContinuousGrid.d.ts.map +1 -1
  7. package/dist/common/ContinuousGrid.js.map +1 -1
  8. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  9. package/dist/discrete/ChartRenderer.js +192 -265
  10. package/dist/discrete/ChartRenderer.js.map +1 -1
  11. package/dist/discrete/components/Chart.js +1 -1
  12. package/dist/discrete/components/Chart.js.map +1 -1
  13. package/dist/discrete/components/Grid.d.ts +3 -3
  14. package/dist/discrete/components/Grid.d.ts.map +1 -1
  15. package/dist/discrete/components/Grid.js.map +1 -1
  16. package/dist/discrete/components/types.d.ts +5 -3
  17. package/dist/discrete/components/types.d.ts.map +1 -1
  18. package/dist/discrete/utils/index.d.ts +1 -1
  19. package/dist/discrete/utils/index.d.ts.map +1 -1
  20. package/dist/heatmap/getCells.js +48 -48
  21. package/dist/heatmap/getCells.js.map +1 -1
  22. package/dist/heatmap/utils/calculateCaptionTails.js +28 -28
  23. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  24. package/dist/histogram/ChartRenderer.js +1 -1
  25. package/dist/index.d.ts +2 -2
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/node_modules/d3-scale/src/band.js +45 -35
  28. package/dist/node_modules/d3-scale/src/band.js.map +1 -1
  29. package/dist/scatterplot/ChartRenderer.d.ts +10 -5
  30. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  31. package/dist/scatterplot/ChartRenderer.js +276 -197
  32. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  33. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +5 -3
  34. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  35. package/dist/scatterplot/ScatterplotSettingsImpl.js +53 -53
  36. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  37. package/dist/scatterplot/components/Chart.d.ts +3 -1
  38. package/dist/scatterplot/components/Chart.d.ts.map +1 -1
  39. package/dist/scatterplot/components/Chart.js +23 -19
  40. package/dist/scatterplot/components/Chart.js.map +1 -1
  41. package/dist/scatterplot/components/ChartAxis.d.ts +3 -1
  42. package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -1
  43. package/dist/scatterplot/components/ChartAxis.js +31 -27
  44. package/dist/scatterplot/components/ChartAxis.js.map +1 -1
  45. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  46. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  47. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  48. package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -1
  49. package/dist/scatterplot/components/ChartTrendsData.js +20 -17
  50. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  51. package/dist/scatterplot/components/ChartsGroup.d.ts +5 -1
  52. package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -1
  53. package/dist/scatterplot/components/ChartsGroup.js +49 -46
  54. package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
  55. package/dist/scatterplot/components/Grid.d.ts +3 -3
  56. package/dist/scatterplot/components/Grid.d.ts.map +1 -1
  57. package/dist/scatterplot/components/Grid.js +31 -27
  58. package/dist/scatterplot/components/Grid.js.map +1 -1
  59. package/dist/scatterplot/components/types.d.ts +15 -5
  60. package/dist/scatterplot/components/types.d.ts.map +1 -1
  61. package/dist/scatterplot/dots.d.ts +2 -2
  62. package/dist/scatterplot/dots.d.ts.map +1 -1
  63. package/dist/scatterplot/dots.js.map +1 -1
  64. package/dist/scatterplot/getLayersData.d.ts +3 -2
  65. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  66. package/dist/scatterplot/getLayersData.js +29 -18
  67. package/dist/scatterplot/getLayersData.js.map +1 -1
  68. package/dist/scatterplot/index.d.ts +3 -0
  69. package/dist/scatterplot/index.d.ts.map +1 -1
  70. package/dist/scatterplot/index.js +73 -59
  71. package/dist/scatterplot/index.js.map +1 -1
  72. package/dist/scatterplot/linearRegression.d.ts +4 -6
  73. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  74. package/dist/scatterplot/linearRegression.js.map +1 -1
  75. package/dist/scatterplot/utils/isNumericScale.d.ts +6 -0
  76. package/dist/scatterplot/utils/isNumericScale.d.ts.map +1 -0
  77. package/dist/scatterplot/utils/isNumericScale.js +11 -0
  78. package/dist/scatterplot/utils/isNumericScale.js.map +1 -0
  79. package/dist/scatterplot-umap/ChartRenderer.js +1 -1
  80. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  81. package/dist/scatterplot-umap/SettingsImpl.d.ts +7 -4
  82. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  83. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  84. package/dist/scatterplot-umap/components/LowerSVG.js +7 -7
  85. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  86. package/dist/types/bubble.d.ts +12 -12
  87. package/dist/types/common.d.ts +186 -21
  88. package/dist/types/common.d.ts.map +1 -1
  89. package/dist/types/common.js +36 -26
  90. package/dist/types/common.js.map +1 -1
  91. package/dist/types/dendro.d.ts +22 -22
  92. package/dist/types/discrete.d.ts +23 -53
  93. package/dist/types/discrete.d.ts.map +1 -1
  94. package/dist/types/discrete.js +35 -35
  95. package/dist/types/discrete.js.map +1 -1
  96. package/dist/types/heatmap.d.ts +12 -12
  97. package/dist/types/histogram.d.ts +4 -4
  98. package/dist/types/scatterplot-umap.d.ts +4 -34
  99. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  100. package/dist/types/scatterplot-umap.js +1 -1
  101. package/dist/types/scatterplot-umap.js.map +1 -1
  102. package/dist/types/scatterplot.d.ts +186 -32
  103. package/dist/types/scatterplot.d.ts.map +1 -1
  104. package/dist/utils/createMultilineDiscreteLabels.d.ts +4 -0
  105. package/dist/utils/createMultilineDiscreteLabels.d.ts.map +1 -0
  106. package/dist/utils/createMultilineDiscreteLabels.js +32 -0
  107. package/dist/utils/createMultilineDiscreteLabels.js.map +1 -0
  108. package/dist/utils/getFacetRowsColumns.d.ts +3 -0
  109. package/dist/utils/getFacetRowsColumns.d.ts.map +1 -0
  110. package/dist/utils/getFacetRowsColumns.js +18 -0
  111. package/dist/utils/getFacetRowsColumns.js.map +1 -0
  112. package/dist/utils/measureMultilineDiscreteLabels.d.ts +9 -0
  113. package/dist/utils/measureMultilineDiscreteLabels.d.ts.map +1 -0
  114. package/dist/utils/measureMultilineDiscreteLabels.js +63 -0
  115. package/dist/utils/measureMultilineDiscreteLabels.js.map +1 -0
  116. package/dist/utils/splitTextByWidth.d.ts.map +1 -0
  117. package/dist/{discrete/utils → utils}/splitTextByWidth.js +1 -1
  118. package/dist/utils/splitTextByWidth.js.map +1 -0
  119. package/package.json +1 -1
  120. package/dist/discrete/components/BandAxis.d.ts.map +0 -1
  121. package/dist/discrete/components/BandAxis.js.map +0 -1
  122. package/dist/discrete/utils/splitTextByWidth.d.ts.map +0 -1
  123. package/dist/discrete/utils/splitTextByWidth.js.map +0 -1
  124. package/dist/scatterplot/components/Axis.d.ts +0 -13
  125. package/dist/scatterplot/components/Axis.d.ts.map +0 -1
  126. package/dist/scatterplot/components/Axis.js +0 -59
  127. package/dist/scatterplot/components/Axis.js.map +0 -1
  128. /package/dist/{discrete/utils → utils}/splitTextByWidth.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","sources":["../../../src/scatterplot/components/Chart.tsx"],"sourcesContent":["import { memo } from 'react';\nimport type { FrameType } from '../../types';\nimport { useFunction } from '../../utils/hooks/useFunction';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { TrendsData } from '../linearRegression';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { ChartAxis } from './ChartAxis';\nimport { ChartAxisTitles } from './ChartAxisTitles';\nimport { ChartFacetTitle } from './ChartFacetTitle';\nimport { ChartLayersData } from './ChartLayersData';\nimport { ChartTrendsData } from './ChartTrendsData';\nimport { Grid } from './Grid';\nimport type {\n AesGetters,\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales\n} from './types';\n\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n dotsData: GroupedDots[keyof GroupedDots];\n trendsData: TrendsData[keyof TrendsData] | null;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n onlyPositive: {x: boolean; y: boolean};\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot, facetKey: string) => void;\n onMouseLeaveDot?: (dot: Dot, facetKey: string) => void;\n}\n\nexport const Chart = memo(({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n dotsData,\n facetSettings,\n trendsData,\n captionsSizes,\n facetTitle,\n onlyPositive,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: ChartProps) => {\n const debug = false;\n\n const {padding} = dimensions;\n \n const handleMouseEnterDot = useFunction((dot: Dot) => {\n onMouseEnterDot?.(dot, facetKey);\n });\n const handleMouseLeaveDot = useFunction((dot: Dot) => {\n onMouseLeaveDot?.(dot, facetKey);\n });\n\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n\n <ChartFacetTitle\n width={width}\n dimensions={dimensions}\n frameType={frameType}\n facetTitle={facetTitle}\n />\n \n <ChartAxisTitles\n debug={debug}\n width={width}\n height={height}\n dimensions={dimensions}\n xAxis={xAxis}\n yAxis={yAxis}\n dotsData={dotsData}\n />\n\n <Grid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n\n <ChartAxis\n debug={debug}\n width={width}\n height={height}\n dimensions={dimensions}\n scales={scales}\n xAxis={xAxis}\n yAxis={yAxis}\n facetSettings={facetSettings}\n captionsSizes={captionsSizes}\n onlyPositive={onlyPositive}\n />\n\n <ChartTrendsData\n width={width}\n scales={scales}\n trendsData={trendsData}\n aesGetters={aesGetters}\n />\n\n <ChartLayersData\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={handleMouseEnterDot}\n onMouseLeaveDot={handleMouseLeaveDot}\n />\n </g>\n );\n});\n"],"names":["Chart","memo","facetKey","width","height","dimensions","scales","xAxis","yAxis","frameType","dotsData","facetSettings","trendsData","captionsSizes","facetTitle","onlyPositive","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","padding","handleMouseEnterDot","useFunction","dot","handleMouseLeaveDot","jsxs","jsx","ChartFacetTitle","ChartAxisTitles","Grid","ChartAxis","ChartTrendsData","ChartLayersData"],"mappings":";;;;;;;;;AAyCO,MAAMA,IAAQC,EAAAA,KAAK,CAAC;AAAA,EACvB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AACJ,MAAkB;AAGd,QAAM,EAAC,SAAAC,MAAWf,GAEZgB,IAAsBC,EAAY,CAACC,MAAa;AAClD,IAAAL,KAAA,QAAAA,EAAkBK,GAAKrB;AAAA,EAC3B,CAAC,GACKsB,IAAsBF,EAAY,CAACC,MAAa;AAClD,IAAAJ,KAAA,QAAAA,EAAkBI,GAAKrB;AAAA,EAC3B,CAAC;AAED,SACIuB,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAapB,EAAW,OAAOe,EAAQ,IAAI,IAAIf,EAAW,MAAMe,EAAQ,GAAG,KACpF,UAAA;AAAA,IAAA;AAAA,IASDM,gBAAAA,EAAAA;AAAAA,MAACC;AAAA,MAAA;AAAA,QACG,OAAAxB;AAAA,QACA,YAAAE;AAAA,QACA,WAAAI;AAAA,QACA,YAAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJY,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAAzB;AAAA,QACA,QAAAC;AAAA,QACA,YAAAC;AAAA,QACA,OAAAE;AAAA,QACA,OAAAC;AAAA,QACA,UAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJgB,gBAAAA,EAAAA;AAAAA,MAACG;AAAA,MAAA;AAAA,QACG,OAAA1B;AAAA,QACA,QAAAC;AAAA,QACA,QAAQE,EAAO;AAAA,QACf,QAAQA,EAAO;AAAA,QACf,OAAOC;AAAA,QACP,OAAOC;AAAA,QACP,WAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJiB,gBAAAA,EAAAA;AAAAA,MAACI;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAA3B;AAAA,QACA,QAAAC;AAAA,QACA,YAAAC;AAAA,QACA,QAAAC;AAAA,QACA,OAAAC;AAAA,QACA,OAAAC;AAAA,QACA,eAAAG;AAAA,QACA,eAAAE;AAAA,QACA,cAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJW,gBAAAA,EAAAA;AAAAA,MAACK;AAAA,MAAA;AAAA,QACG,OAAA5B;AAAA,QACA,QAAAG;AAAA,QACA,YAAAM;AAAA,QACA,YAAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJS,gBAAAA,EAAAA;AAAAA,MAACM;AAAA,MAAA;AAAA,QACG,OAAA7B;AAAA,QACA,QAAAC;AAAA,QACA,QAAAE;AAAA,QACA,UAAAI;AAAA,QACA,YAAAM;AAAA,QACA,YAAAC;AAAA,QACA,iBAAiBI;AAAA,QACjB,iBAAiBG;AAAA,MAAA;AAAA,IAAA;AAAA,EACrB,GACJ;AAER,CAAC;"}
1
+ {"version":3,"file":"Chart.js","sources":["../../../src/scatterplot/components/Chart.tsx"],"sourcesContent":["import { memo } from 'react';\nimport type { FrameType } from '../../types';\nimport { useFunction } from '../../utils/hooks/useFunction';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { TrendsData } from '../linearRegression';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { ChartAxis } from './ChartAxis';\nimport { ChartAxisTitles } from './ChartAxisTitles';\nimport { ChartFacetTitle } from './ChartFacetTitle';\nimport { ChartLayersData } from './ChartLayersData';\nimport { ChartTrendsData } from './ChartTrendsData';\nimport { Grid } from './Grid';\nimport type {\n AesGetters,\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales\n} from './types';\nimport type { ScaleLinear } from 'd3-scale';\n\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n dotsData: GroupedDots[keyof GroupedDots];\n trendsData: TrendsData[keyof TrendsData] | null;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n onlyPositive: {x: boolean; y: boolean};\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n discreteLabelsX: Record<string, string[]>;\n discreteLabelsY: Record<string, string[]>;\n onMouseEnterDot?: (dot: Dot, facetKey: string) => void;\n onMouseLeaveDot?: (dot: Dot, facetKey: string) => void;\n}\n\nexport const Chart = memo(({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n dotsData,\n facetSettings,\n trendsData,\n captionsSizes,\n facetTitle,\n onlyPositive,\n layersData,\n aesGetters,\n discreteLabelsX,\n discreteLabelsY,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: ChartProps) => {\n const debug = false;\n\n const {padding} = dimensions;\n \n const handleMouseEnterDot = useFunction((dot: Dot) => {\n onMouseEnterDot?.(dot, facetKey);\n });\n const handleMouseLeaveDot = useFunction((dot: Dot) => {\n onMouseLeaveDot?.(dot, facetKey);\n });\n\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n\n <ChartFacetTitle\n width={width}\n dimensions={dimensions}\n frameType={frameType}\n facetTitle={facetTitle}\n />\n \n <ChartAxisTitles\n debug={debug}\n width={width}\n height={height}\n dimensions={dimensions}\n xAxis={xAxis}\n yAxis={yAxis}\n dotsData={dotsData}\n />\n\n <Grid\n width={width}\n height={height}\n scaleX={scales.x as ScaleLinear<number, number>}\n scaleY={scales.y as ScaleLinear<number, number>}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n\n <ChartAxis\n debug={debug}\n width={width}\n height={height}\n dimensions={dimensions}\n scales={scales}\n xAxis={xAxis}\n yAxis={yAxis}\n facetSettings={facetSettings}\n captionsSizes={captionsSizes}\n discreteLabelsX={discreteLabelsX}\n discreteLabelsY={discreteLabelsY}\n onlyPositive={onlyPositive}\n />\n\n <ChartTrendsData\n width={width}\n scales={scales}\n trendsData={trendsData}\n aesGetters={aesGetters}\n />\n\n <ChartLayersData\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={handleMouseEnterDot}\n onMouseLeaveDot={handleMouseLeaveDot}\n />\n </g>\n );\n});\n"],"names":["Chart","memo","facetKey","width","height","dimensions","scales","xAxis","yAxis","frameType","dotsData","facetSettings","trendsData","captionsSizes","facetTitle","onlyPositive","layersData","aesGetters","discreteLabelsX","discreteLabelsY","onMouseEnterDot","onMouseLeaveDot","padding","handleMouseEnterDot","useFunction","dot","handleMouseLeaveDot","jsxs","jsx","ChartFacetTitle","ChartAxisTitles","Grid","ChartAxis","ChartTrendsData","ChartLayersData"],"mappings":";;;;;;;;;AA4CO,MAAMA,IAAQC,EAAAA,KAAK,CAAC;AAAA,EACvB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AACJ,MAAkB;AAGd,QAAM,EAAC,SAAAC,MAAWjB,GAEZkB,IAAsBC,EAAY,CAACC,MAAa;AAClD,IAAAL,KAAA,QAAAA,EAAkBK,GAAKvB;AAAA,EAC3B,CAAC,GACKwB,IAAsBF,EAAY,CAACC,MAAa;AAClD,IAAAJ,KAAA,QAAAA,EAAkBI,GAAKvB;AAAA,EAC3B,CAAC;AAED,SACIyB,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAatB,EAAW,OAAOiB,EAAQ,IAAI,IAAIjB,EAAW,MAAMiB,EAAQ,GAAG,KACpF,UAAA;AAAA,IAAA;AAAA,IASDM,gBAAAA,EAAAA;AAAAA,MAACC;AAAA,MAAA;AAAA,QACG,OAAA1B;AAAA,QACA,YAAAE;AAAA,QACA,WAAAI;AAAA,QACA,YAAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJc,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAA3B;AAAA,QACA,QAAAC;AAAA,QACA,YAAAC;AAAA,QACA,OAAAE;AAAA,QACA,OAAAC;AAAA,QACA,UAAAE;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJkB,gBAAAA,EAAAA;AAAAA,MAACG;AAAA,MAAA;AAAA,QACG,OAAA5B;AAAA,QACA,QAAAC;AAAA,QACA,QAAQE,EAAO;AAAA,QACf,QAAQA,EAAO;AAAA,QACf,OAAOC;AAAA,QACP,OAAOC;AAAA,QACP,WAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJmB,gBAAAA,EAAAA;AAAAA,MAACI;AAAA,MAAA;AAAA,QACG;AAAA,QACA,OAAA7B;AAAA,QACA,QAAAC;AAAA,QACA,YAAAC;AAAA,QACA,QAAAC;AAAA,QACA,OAAAC;AAAA,QACA,OAAAC;AAAA,QACA,eAAAG;AAAA,QACA,eAAAE;AAAA,QACA,iBAAAK;AAAA,QACA,iBAAAC;AAAA,QACA,cAAAJ;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJa,gBAAAA,EAAAA;AAAAA,MAACK;AAAA,MAAA;AAAA,QACG,OAAA9B;AAAA,QACA,QAAAG;AAAA,QACA,YAAAM;AAAA,QACA,YAAAK;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJW,gBAAAA,EAAAA;AAAAA,MAACM;AAAA,MAAA;AAAA,QACG,OAAA/B;AAAA,QACA,QAAAC;AAAA,QACA,QAAAE;AAAA,QACA,UAAAI;AAAA,QACA,YAAAM;AAAA,QACA,YAAAC;AAAA,QACA,iBAAiBM;AAAA,QACjB,iBAAiBG;AAAA,MAAA;AAAA,IAAA;AAAA,EACrB,GACJ;AAER,CAAC;"}
@@ -10,11 +10,13 @@ interface Props {
10
10
  yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];
11
11
  facetSettings: ScatterplotSettingsImpl['facetSettings'];
12
12
  captionsSizes: CaptionsSizes;
13
+ discreteLabelsX: Record<string, string[]>;
14
+ discreteLabelsY: Record<string, string[]>;
13
15
  onlyPositive: {
14
16
  x: boolean;
15
17
  y: boolean;
16
18
  };
17
19
  }
18
- export declare const ChartAxis: import('react').MemoExoticComponent<({ debug, width, height, dimensions, scales, xAxis, yAxis, facetSettings, captionsSizes, onlyPositive, }: Props) => import("react/jsx-runtime").JSX.Element>;
20
+ export declare const ChartAxis: import('react').MemoExoticComponent<({ debug, width, height, dimensions, scales, xAxis, yAxis, facetSettings, captionsSizes, discreteLabelsX, discreteLabelsY, onlyPositive, }: Props) => import("react/jsx-runtime").JSX.Element>;
19
21
  export {};
20
22
  //# sourceMappingURL=ChartAxis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartAxis.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartAxis.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,UAAU,KAAK;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;CAC1C;AAED,eAAO,MAAM,SAAS,gJAWnB,KAAK,6CAyCN,CAAC"}
1
+ {"version":3,"file":"ChartAxis.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartAxis.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,WAAW,EACd,MAAM,SAAS,CAAC;AAMjB,UAAU,KAAK;IACX,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACzD,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,YAAY,EAAE;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;CAC1C;AAED,eAAO,MAAM,SAAS,kLAanB,KAAK,6CAiDN,CAAC"}
@@ -1,44 +1,48 @@
1
1
  import { j as o } from "../../node_modules/react/jsx-runtime.js";
2
- import { r as a } from "../../_virtual/index.js";
3
- import { DEFAULT_TICKS_SIZE as d, TITLE_LINE as y, TICK_OFFSET as n } from "../constants.js";
4
- import { Axis as h } from "./Axis.js";
5
- const L = a.memo(({
6
- debug: s,
7
- width: k,
8
- height: i,
9
- dimensions: x,
10
- scales: t,
11
- xAxis: j,
12
- yAxis: E,
2
+ import { r as A } from "../../_virtual/index.js";
3
+ import { DEFAULT_TICKS_SIZE as a, TITLE_LINE as C, TICK_OFFSET as h } from "../constants.js";
4
+ import { ContinuousAxis as k } from "../../common/ContinuousAxis.js";
5
+ import { BandAxis as j } from "../../common/BandAxis.js";
6
+ import { isNumericScale as b } from "../utils/isNumericScale.js";
7
+ const _ = A.memo(({
8
+ debug: t,
9
+ width: p,
10
+ height: e,
11
+ dimensions: l,
12
+ scales: i,
13
+ xAxis: x,
14
+ yAxis: n,
13
15
  facetSettings: r,
14
- captionsSizes: e,
15
- onlyPositive: l
16
+ captionsSizes: m,
17
+ discreteLabelsX: E,
18
+ discreteLabelsY: T,
19
+ onlyPositive: c
16
20
  }) => {
17
- const m = j.showTicks ? d : 0, c = E.showTicks ? d : 0, p = x.chartEdgeSides.includes("left") || !(r != null && r.sharedY), T = x.chartEdgeSides.includes("bottom") || !(r != null && r.sharedX);
21
+ const s = x.showTicks ? a : 0, d = n.showTicks ? a : 0, y = l.chartEdgeSides.includes("left") || !(r != null && r.sharedY), u = l.chartEdgeSides.includes("bottom") || !(r != null && r.sharedX);
18
22
  return /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
19
- T && /* @__PURE__ */ o.jsxs("g", { transform: `translate(0,${i})`, children: [
20
- /* @__PURE__ */ o.jsx(h, { scale: t.x, orient: "bottom", onlyPositive: l.x, tickSize: m }),
21
- s && /* @__PURE__ */ o.jsx(
23
+ u && /* @__PURE__ */ o.jsxs("g", { transform: `translate(0,${e})`, children: [
24
+ b(i.x) ? /* @__PURE__ */ o.jsx(k, { scale: i.x, orient: "bottom", tickSize: s, onlyPositive: c.x }) : /* @__PURE__ */ o.jsx(j, { scale: i.x, orient: "bottom", labels: E, labelsPosition: x.labelsPosition, tickSize: s }),
25
+ t && /* @__PURE__ */ o.jsx(
22
26
  "rect",
23
27
  {
24
28
  x: "0",
25
- y: m + n,
26
- width: k,
27
- height: y,
29
+ y: s + h,
30
+ width: p,
31
+ height: C,
28
32
  fill: "none",
29
33
  stroke: "black"
30
34
  }
31
35
  )
32
36
  ] }),
33
- p && /* @__PURE__ */ o.jsxs("g", { children: [
34
- /* @__PURE__ */ o.jsx(h, { scale: t.y, orient: "left", onlyPositive: l.y, tickSize: c }),
35
- s && /* @__PURE__ */ o.jsx(
37
+ y && /* @__PURE__ */ o.jsxs("g", { children: [
38
+ b(i.y) ? /* @__PURE__ */ o.jsx(k, { scale: i.y, orient: "left", tickSize: s, onlyPositive: c.x }) : /* @__PURE__ */ o.jsx(j, { scale: i.y, orient: "left", labels: T, labelsPosition: n.labelsPosition, tickSize: d }),
39
+ t && /* @__PURE__ */ o.jsx(
36
40
  "rect",
37
41
  {
38
- x: -c - n - e.yAxisCaptionsWidth,
42
+ x: -d - h - m.yAxisCaptionsWidth,
39
43
  y: "0",
40
- width: e.yAxisCaptionsWidth,
41
- height: i,
44
+ width: m.yAxisCaptionsWidth,
45
+ height: e,
42
46
  fill: "none",
43
47
  stroke: "black"
44
48
  }
@@ -47,6 +51,6 @@ const L = a.memo(({
47
51
  ] });
48
52
  });
49
53
  export {
50
- L as ChartAxis
54
+ _ as ChartAxis
51
55
  };
52
56
  //# sourceMappingURL=ChartAxis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartAxis.js","sources":["../../../src/scatterplot/components/ChartAxis.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { DEFAULT_TICKS_SIZE, TICK_OFFSET, TITLE_LINE } from '../constants';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { Axis } from './Axis';\nimport type {\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales\n} from './types';\n\ninterface Props {\n debug?: boolean;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n captionsSizes: CaptionsSizes;\n onlyPositive: {x: boolean; y: boolean};\n}\n\nexport const ChartAxis = memo(({\n debug,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n facetSettings,\n captionsSizes,\n onlyPositive,\n}: Props) => {\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n\n return (\n <>\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <Axis scale={scales.x} orient=\"bottom\" onlyPositive={onlyPositive.x} tickSize={tickSizeX} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n\n {needLeftAxis && (\n <g>\n <Axis scale={scales.y} orient=\"left\" onlyPositive={onlyPositive.y} tickSize={tickSizeY} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n </>\n );\n});\n"],"names":["ChartAxis","memo","debug","width","height","dimensions","scales","xAxis","yAxis","facetSettings","captionsSizes","onlyPositive","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","jsxs","Fragment","jsx","Axis","TICK_OFFSET","TITLE_LINE"],"mappings":";;;;AAuBO,MAAMA,IAAYC,EAAAA,KAAK,CAAC;AAAA,EAC3B,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AACJ,MAAa;AACT,QAAMC,IAAYL,EAAM,YAAYM,IAAqB,GACnDC,IAAYN,EAAM,YAAYK,IAAqB,GACnDE,IAAeV,EAAW,eAAe,SAAS,MAAM,KAAK,EAACI,KAAA,QAAAA,EAAe,UAC7EO,IAAiBX,EAAW,eAAe,SAAS,QAAQ,KAAK,EAACI,KAAA,QAAAA,EAAe;AAEvF,SACIQ,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAF,KACGC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,eAAeb,CAAM,KAC/B,UAAA;AAAA,MAAAe,gBAAAA,EAAAA,IAACC,GAAA,EAAK,OAAOd,EAAO,GAAG,QAAO,UAAS,cAAcK,EAAa,GAAG,UAAUC,EAAA,CAAW;AAAA,MACzFV,KACGiB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAE;AAAA,UACF,GAAGP,IAAYS;AAAA,UACf,OAAAlB;AAAA,UACA,QAAQmB;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,GAER;AAAA,IAGHP,4BACI,KAAA,EACG,UAAA;AAAA,MAAAI,gBAAAA,EAAAA,IAACC,GAAA,EAAK,OAAOd,EAAO,GAAG,QAAO,QAAO,cAAcK,EAAa,GAAG,UAAUG,EAAA,CAAW;AAAA,MACvFZ,KACGiB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAG,CAACL,IAAYO,IAAcX,EAAc;AAAA,UAC5C,GAAE;AAAA,UACF,OAAOA,EAAc;AAAA,UACrB,QAAAN;AAAA,UACA,MAAK;AAAA,UACL,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,EAAA,CAER;AAAA,EAAA,GAER;AAER,CAAC;"}
1
+ {"version":3,"file":"ChartAxis.js","sources":["../../../src/scatterplot/components/ChartAxis.tsx"],"sourcesContent":["import { memo } from 'react';\nimport { DEFAULT_TICKS_SIZE, TICK_OFFSET, TITLE_LINE } from '../constants';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport type {\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales\n} from './types';\nimport { ContinuousAxis } from '../../common/ContinuousAxis';\nimport { BandAxis } from '../../common/BandAxis';\nimport { isNumericScale } from '../utils/isNumericScale';\nimport type { AxisSettingsDiscrete } from '../../types';\n\ninterface Props {\n debug?: boolean;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: ScatterplotSettingsImpl['chartSettings']['xAxis'];\n yAxis: ScatterplotSettingsImpl['chartSettings']['yAxis'];\n facetSettings: ScatterplotSettingsImpl['facetSettings'];\n captionsSizes: CaptionsSizes;\n discreteLabelsX: Record<string, string[]>;\n discreteLabelsY: Record<string, string[]>;\n onlyPositive: {x: boolean; y: boolean};\n}\n\nexport const ChartAxis = memo(({\n debug,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n facetSettings,\n captionsSizes,\n discreteLabelsX,\n discreteLabelsY,\n onlyPositive,\n}: Props) => {\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n\n return (\n <>\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n {isNumericScale(scales.x) ? (\n <ContinuousAxis scale={scales.x} orient=\"bottom\" tickSize={tickSizeX} onlyPositive={onlyPositive.x} />\n ): (\n <BandAxis scale={scales.x} orient=\"bottom\" labels={discreteLabelsX} labelsPosition={(xAxis as AxisSettingsDiscrete).labelsPosition} tickSize={tickSizeX} />\n )}\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n\n {needLeftAxis && (\n <g>\n {isNumericScale(scales.y) ? (\n <ContinuousAxis scale={scales.y} orient=\"left\" tickSize={tickSizeX} onlyPositive={onlyPositive.x} />\n ): (\n <BandAxis scale={scales.y} orient=\"left\" labels={discreteLabelsY} labelsPosition={(yAxis as AxisSettingsDiscrete).labelsPosition} tickSize={tickSizeY} />\n )}\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n </>\n );\n});\n"],"names":["ChartAxis","memo","debug","width","height","dimensions","scales","xAxis","yAxis","facetSettings","captionsSizes","discreteLabelsX","discreteLabelsY","onlyPositive","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","jsxs","Fragment","isNumericScale","jsx","ContinuousAxis","BandAxis","TICK_OFFSET","TITLE_LINE"],"mappings":";;;;;;AA4BO,MAAMA,IAAYC,EAAAA,KAAK,CAAC;AAAA,EAC3B,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,cAAAC;AACJ,MAAa;AACT,QAAMC,IAAYP,EAAM,YAAYQ,IAAqB,GACnDC,IAAYR,EAAM,YAAYO,IAAqB,GACnDE,IAAeZ,EAAW,eAAe,SAAS,MAAM,KAAK,EAACI,KAAA,QAAAA,EAAe,UAC7ES,IAAiBb,EAAW,eAAe,SAAS,QAAQ,KAAK,EAACI,KAAA,QAAAA,EAAe;AAEvF,SACIU,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAF,KACGC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,eAAef,CAAM,KAC9B,UAAA;AAAA,MAAAiB,EAAef,EAAO,CAAC,IACpBgB,gBAAAA,EAAAA,IAACC,GAAA,EAAe,OAAOjB,EAAO,GAAG,QAAO,UAAS,UAAUQ,GAAW,cAAcD,EAAa,EAAA,CAAG,IAEpGS,gBAAAA,EAAAA,IAACE,GAAA,EAAS,OAAOlB,EAAO,GAAG,QAAO,UAAS,QAAQK,GAAiB,gBAAiBJ,EAA+B,gBAAgB,UAAUO,GAAW;AAAA,MAE5JZ,KACGoB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAE;AAAA,UACF,GAAGR,IAAYW;AAAA,UACf,OAAAtB;AAAA,UACA,QAAQuB;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,GAER;AAAA,IAGHT,4BACI,KAAA,EACI,UAAA;AAAA,MAAAI,EAAef,EAAO,CAAC,IACpBgB,gBAAAA,EAAAA,IAACC,GAAA,EAAe,OAAOjB,EAAO,GAAG,QAAO,QAAO,UAAUQ,GAAW,cAAcD,EAAa,EAAA,CAAG,IAElGS,gBAAAA,EAAAA,IAACE,GAAA,EAAS,OAAOlB,EAAO,GAAG,QAAO,QAAO,QAAQM,GAAiB,gBAAiBJ,EAA+B,gBAAgB,UAAUQ,GAAW;AAAA,MAE1Jd,KACGoB,gBAAAA,EAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACG,GAAG,CAACN,IAAYS,IAAcf,EAAc;AAAA,UAC5C,GAAE;AAAA,UACF,OAAOA,EAAc;AAAA,UACrB,QAAAN;AAAA,UACA,MAAK;AAAA,UACL,QAAO;AAAA,QAAA;AAAA,MAAA;AAAA,IACX,EAAA,CAER;AAAA,EAAA,GAER;AAER,CAAC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartLayersData.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartLayersData.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EACR,UAAU,EACV,WAAW,EACd,MAAM,SAAS,CAAC;AAIjB,UAAU,KAAK;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC;IACzC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACxC;AAED,eAAO,MAAM,eAAe,uIASzB,KAAK,6DAyBN,CAAC;AAEH,eAAO,MAAM,cAAc,uIASxB,KAAK,6CAmDN,CAAC;AAEH,eAAO,MAAM,eAAe,uEAIzB;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CAC1B,2DAiCC,CAAC;AAEH,eAAO,MAAM,SAAS,sGAMnB,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,GAAG;IACnD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC,6CAeC,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAK,0DAMvB;IACC,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC,4CAaC,CAAC;AAEH,eAAO,MAAM,WAAW,gFAIrB;IACC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAM,IAAI,CAAC;IAClC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAM,IAAI,CAAC;CACrC,6CAiCC,CAAC"}
1
+ {"version":3,"file":"ChartLayersData.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartLayersData.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,KAAK,EACR,UAAU,EACV,WAAW,EACd,MAAM,SAAS,CAAC;AAGjB,UAAU,KAAK;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC;IACzC,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACxC;AAID,eAAO,MAAM,eAAe,uIASzB,KAAK,6DAyBN,CAAC;AAEH,eAAO,MAAM,cAAc,uIASxB,KAAK,6CAmDN,CAAC;AAEH,eAAO,MAAM,eAAe,uEAIzB;IACC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CAC1B,2DAiCC,CAAC;AAEH,eAAO,MAAM,SAAS,sGAMnB,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC,GAAG;IACnD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC,6CAeC,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAK,0DAMvB;IACC,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CACrC,4CAaC,CAAC;AAEH,eAAO,MAAM,WAAW,gFAIrB;IACC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAM,IAAI,CAAC;IAClC,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,KAAM,IAAI,CAAC;CACrC,6CAiCC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartLayersData.js","sources":["../../../src/scatterplot/components/ChartLayersData.tsx"],"sourcesContent":["import { curveBasis, line } from 'd3-shape';\nimport { memo, useMemo, useState } from 'react';\nimport { getLineShape } from '../../utils/getLineShape';\nimport { getPointShape } from '../../utils/getPointShape';\nimport { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { Label } from '../utils/getVisibleLabels';\nimport { createLabelPositioner, getLabelMinX, getLabelMinY } from '../utils/getVisibleLabels';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\nconst LABEL_OFFSET = 3;\n\ninterface Props {\n width: number;\n height: number;\n scales: ChartScales;\n dotsData: GroupedDots[keyof GroupedDots];\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot) => void;\n onMouseLeaveDot?: (dot: Dot) => void;\n}\n\nexport const ChartLayersData = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n return layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return <ChartLayerDots\n key={layer.type + idx}\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={onMouseEnterDot}\n onMouseLeaveDot={onMouseLeaveDot}\n />;\n }\n\n if (layer.type === 'curve') {\n return <ChartCurveLayer\n key={layer.type + idx}\n layer={layer}\n scales={scales}\n aesGetters={aesGetters}\n />;\n }\n });\n});\n\nexport const ChartLayerDots = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n const {dots} = dotsData;\n\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n const hasLayerDots = useMemo(() => layersData.findIndex(layer => layer.type === 'dots') !== -1, [layersData]);\n \n const labels = useMemo<Label[]>(() =>{\n if (!hasLayerDots) return [];\n return computeLabels(\n dots,\n scales,\n width,\n height,\n aesGetters,\n );\n }, [dots, scales.x, scales.y, width, height, aesGetters, hasLayerDots]);\n\n return (\n <g>\n <ChartDots\n scales={scales}\n dotsData={dotsData}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnterDot}\n onMouseLeave={onMouseLeaveDot}\n />\n <ChartLabels\n labels={labels}\n onMouseEnter={dot => setActiveDot(dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x)},${scales.y(activeDot.y)})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx),\n aesGetters.dotColor(activeDot.idx)\n )}\n </g>\n )}\n </g>\n );\n});\n\nexport const ChartCurveLayer = memo(({\n layer,\n scales,\n aesGetters,\n}: {\n layer: ScatterplotLayerData;\n scales: ChartScales;\n aesGetters: AesGetters;\n}) => {\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x)},${scales.y(d.y)}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x))\n .y((d: Dot) => scales.y(d.y))(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n});\n\nexport const ChartDots = memo(({\n scales,\n dotsData,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: Pick<Props, 'scales' | 'dotsData' | 'aesGetters'> & {\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n const {dots} = dotsData;\n\n return (<>\n {dots.map((dot, idx) => {\n return <ChartDot\n key={idx}\n dot={dot}\n scales={scales}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />;\n })}\n </>);\n});\n\nexport const ChartDot = (({\n dot,\n scales,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: {\n dot: Dot;\n scales: ChartScales;\n aesGetters: AesGetters;\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n return (<g\n transform={`translate(${scales.x(dot.x)},${scales.y(dot.y)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => onMouseEnter?.(dot)}\n onMouseLeave={() => onMouseLeave?.(dot)}\n >\n {getPointShape(\n aesGetters.dotShape(dot.idx),\n aesGetters.dotSize(dot.idx),\n aesGetters.dotColor(dot.idx)\n )}\n </g>);\n});\n\nexport const ChartLabels = memo(({\n labels,\n onMouseEnter,\n onMouseLeave,\n}: {\n labels: Label[];\n onMouseEnter: (dot: Dot ) => void;\n onMouseLeave: (dot: Dot ) => void;\n}) => {\n return (<>\n {labels.map((label, idx) => {\n const {name, height, width} = label;\n return (\n <g key={idx} transform={`translate(${getLabelMinX(label)},${getLabelMinY(label)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseEnter={() => onMouseEnter(label.dot)}\n onMouseLeave={() => onMouseLeave(label.dot)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n );\n })}\n </>);\n});\n\nfunction computeLabels(dots: Dot[], scales: ChartScales, chartWidth: number, chartHeight: number, aesGetters: AesGetters): Label[] {\n const textMeasurer = new TextMeasurer('16px Manrope');\n const getPosition = createLabelPositioner(chartWidth, chartHeight);\n const labels: Label[] = [];\n\n for (let i = 0; i < dots.length; i++) {\n const dot = dots[i];\n if (dot.label == null) {\n continue;\n }\n const name = String(dot.label);\n const metrics = textMeasurer.getTextMetrics(name);\n const x = scales.x(dot.x);\n const y = scales.y(dot.y);\n const w = metrics.width;\n const h = (metrics.actualBoundingBoxAscent) + (metrics.actualBoundingBoxDescent);\n const p = aesGetters.dotSize(dot.idx) + LABEL_OFFSET;\n const position = getPosition(x, y, w, h, p);\n if (!position) {\n continue;\n }\n\n labels.push({\n x,\n y,\n dot,\n name,\n width: w,\n height: h,\n padding: p,\n xPosition: position[0],\n yPosition: position[1],\n } satisfies Label);\n }\n\n return labels;\n}\n"],"names":["LABEL_OFFSET","ChartLayersData","memo","width","height","scales","dotsData","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","layer","idx","jsx","ChartLayerDots","ChartCurveLayer","dots","activeDot","setActiveDot","useState","hasLayerDots","useMemo","labels","computeLabels","ChartDots","ChartLabels","dot","jsxs","getPointShape","curve","d","getLineShape","line","curveBasis","onMouseEnter","onMouseLeave","Fragment","ChartDot","label","name","getLabelMinX","getLabelMinY","chartWidth","chartHeight","textMeasurer","TextMeasurer","getPosition","createLabelPositioner","i","metrics","x","y","w","h","p","position"],"mappings":"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"}
1
+ {"version":3,"file":"ChartLayersData.js","sources":["../../../src/scatterplot/components/ChartLayersData.tsx"],"sourcesContent":["import { curveBasis, line } from 'd3-shape';\nimport { memo, useMemo, useState } from 'react';\nimport { getLineShape } from '../../utils/getLineShape';\nimport { getPointShape } from '../../utils/getPointShape';\nimport { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { Label } from '../utils/getVisibleLabels';\nimport { createLabelPositioner, getLabelMinX, getLabelMinY } from '../utils/getVisibleLabels';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\nconst LABEL_OFFSET = 3;\n\ninterface Props {\n width: number;\n height: number;\n scales: ChartScales;\n dotsData: GroupedDots[keyof GroupedDots];\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot) => void;\n onMouseLeaveDot?: (dot: Dot) => void;\n}\n\ntype PointValue = { valueOf(): number; } & string;\n\nexport const ChartLayersData = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n return layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return <ChartLayerDots\n key={layer.type + idx}\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={onMouseEnterDot}\n onMouseLeaveDot={onMouseLeaveDot}\n />;\n }\n\n if (layer.type === 'curve') {\n return <ChartCurveLayer\n key={layer.type + idx}\n layer={layer}\n scales={scales}\n aesGetters={aesGetters}\n />;\n }\n });\n});\n\nexport const ChartLayerDots = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n const {dots} = dotsData;\n\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n const hasLayerDots = useMemo(() => layersData.findIndex(layer => layer.type === 'dots') !== -1, [layersData]);\n \n const labels = useMemo<Label[]>(() =>{\n if (!hasLayerDots) return [];\n return computeLabels(\n dots,\n scales,\n width,\n height,\n aesGetters,\n );\n }, [dots, scales.x, scales.y, width, height, aesGetters, hasLayerDots]);\n\n return (\n <g>\n <ChartDots\n scales={scales}\n dotsData={dotsData}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnterDot}\n onMouseLeave={onMouseLeaveDot}\n />\n <ChartLabels\n labels={labels}\n onMouseEnter={dot => setActiveDot(dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x as PointValue)},${scales.y(activeDot.y as PointValue) as number})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx),\n aesGetters.dotColor(activeDot.idx)\n )}\n </g>\n )}\n </g>\n );\n});\n\nexport const ChartCurveLayer = memo(({\n layer,\n scales,\n aesGetters,\n}: {\n layer: ScatterplotLayerData;\n scales: ChartScales;\n aesGetters: AesGetters;\n}) => {\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x as PointValue) as number},${scales.y(d.y as PointValue) as number}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x as PointValue) as number)\n .y((d: Dot) => scales.y(d.y as PointValue) as number)(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n});\n\nexport const ChartDots = memo(({\n scales,\n dotsData,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: Pick<Props, 'scales' | 'dotsData' | 'aesGetters'> & {\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n const {dots} = dotsData;\n\n return (<>\n {dots.map((dot, idx) => {\n return <ChartDot\n key={idx}\n dot={dot}\n scales={scales}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />;\n })}\n </>);\n});\n\nexport const ChartDot = (({\n dot,\n scales,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: {\n dot: Dot;\n scales: ChartScales;\n aesGetters: AesGetters;\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n return (<g\n transform={`translate(${scales.x(dot.x as PointValue)},${scales.y(dot.y as PointValue)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => onMouseEnter?.(dot)}\n onMouseLeave={() => onMouseLeave?.(dot)}\n >\n {getPointShape(\n aesGetters.dotShape(dot.idx),\n aesGetters.dotSize(dot.idx),\n aesGetters.dotColor(dot.idx)\n )}\n </g>);\n});\n\nexport const ChartLabels = memo(({\n labels,\n onMouseEnter,\n onMouseLeave,\n}: {\n labels: Label[];\n onMouseEnter: (dot: Dot ) => void;\n onMouseLeave: (dot: Dot ) => void;\n}) => {\n return (<>\n {labels.map((label, idx) => {\n const {name, height, width} = label;\n return (\n <g key={idx} transform={`translate(${getLabelMinX(label)},${getLabelMinY(label)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseEnter={() => onMouseEnter(label.dot)}\n onMouseLeave={() => onMouseLeave(label.dot)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n );\n })}\n </>);\n});\n\nfunction computeLabels(dots: Dot[], scales: ChartScales, chartWidth: number, chartHeight: number, aesGetters: AesGetters): Label[] {\n const textMeasurer = new TextMeasurer('16px Manrope');\n const getPosition = createLabelPositioner(chartWidth, chartHeight);\n const labels: Label[] = [];\n\n for (let i = 0; i < dots.length; i++) {\n const dot = dots[i];\n if (dot.label == null) {\n continue;\n }\n const name = String(dot.label);\n const metrics = textMeasurer.getTextMetrics(name);\n const x = scales.x(dot.x as PointValue);\n const y = scales.y(dot.y as PointValue);\n const w = metrics.width;\n const h = (metrics.actualBoundingBoxAscent) + (metrics.actualBoundingBoxDescent);\n const p = aesGetters.dotSize(dot.idx) + LABEL_OFFSET;\n const position = getPosition(x as number, y as number, w, h, p);\n if (!position) {\n continue;\n }\n\n labels.push({\n x: x as number,\n y: y as number,\n dot,\n name,\n width: w,\n height: h,\n padding: p,\n xPosition: position[0],\n yPosition: position[1],\n } satisfies Label);\n }\n\n return labels;\n}\n"],"names":["LABEL_OFFSET","ChartLayersData","memo","width","height","scales","dotsData","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","layer","idx","jsx","ChartLayerDots","ChartCurveLayer","dots","activeDot","setActiveDot","useState","hasLayerDots","useMemo","labels","computeLabels","ChartDots","ChartLabels","dot","jsxs","getPointShape","curve","d","getLineShape","line","curveBasis","onMouseEnter","onMouseLeave","Fragment","ChartDot","label","name","getLabelMinX","getLabelMinY","chartWidth","chartHeight","textMeasurer","TextMeasurer","getPosition","createLabelPositioner","i","metrics","x","y","w","h","p","position"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTooltip.js","sources":["../../../src/scatterplot/components/ChartTooltip.tsx"],"sourcesContent":["import {format} from 'd3-format';\nimport { memo, useMemo } from 'react';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { useDataFrame } from '../../common/useDataFrame';\nimport type { DataFrame } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { Dot } from '../dots';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport {formatColumnValue} from '../utils/formatColumnValue';\nimport { ChartDot } from './ChartLayersData';\nimport type {\n AesGetters,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\ninterface Props {\n tooltipsData: TooltipsData<Dot>;\n dimensions: undefined | ChartDimensionsData;\n scales: undefined | ChartScales;\n keyColumn: ColumnName;\n margins: Margins;\n chartSizes: ChartSizes;\n tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];\n aesGetters: AesGetters;\n}\n\nconst ZERO_SIDE_DISTANCES = { left: 0, right: 0, top: 0, bottom: 0 };\n\nexport const ChartTooltip = memo(({\n tooltipsData,\n tooltips,\n keyColumn,\n chartSizes,\n dimensions,\n scales,\n aesGetters,\n}: Props) => {\n const dataFrame = useDataFrame();\n const padding = dimensions?.padding;\n\n const sideDistances = useMemo(() => {\n if (!dimensions || !scales || !padding) {\n return ZERO_SIDE_DISTANCES;\n }\n\n return ({\n left: dimensions.left + padding.left,\n right: chartSizes.totalWidth - (dimensions.left + padding.left),\n top: dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (dimensions.top + padding.top),\n });\n }, [dimensions, padding, chartSizes]);\n\n if (!dimensions || !scales || !padding || !tooltipsData.selectedData || !tooltips.show) {\n return null;\n }\n\n return (\n <>\n {tooltipsData.fixed && \n <g transform={`translate(${dimensions.left + padding.left}, ${dimensions.top + padding.top})`}>\n <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>\n <ChartDot\n dot={tooltipsData.selectedData}\n scales={scales}\n aesGetters={aesGetters}\n />\n </g>\n }\n <Tooltip\n content={getTooltipContent(dataFrame, tooltipsData.selectedData, tooltips?.content)}\n x={scales.x(tooltipsData.selectedData.x)}\n y={scales.y(tooltipsData.selectedData.y)}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={null}\n />\n </>\n );\n});\n\nfunction getTooltipContent(dataFrame: DataFrame, dot: Dot, columnsList: ColumnName[] = []) {\n const lines: string[] = [];\n for (const column of columnsList) {\n const columnFormatter = column?.format ? format(column.format) : undefined;\n lines.push(`${column.label}: ${formatColumnValue(dataFrame, dot.idx, column, columnFormatter)}`);\n }\n return lines;\n}\n"],"names":["ZERO_SIDE_DISTANCES","ChartTooltip","memo","tooltipsData","tooltips","keyColumn","chartSizes","dimensions","scales","aesGetters","dataFrame","useDataFrame","padding","sideDistances","useMemo","jsxs","Fragment","jsx","ChartDot","Tooltip","getTooltipContent","dot","columnsList","lines","column","columnFormatter","format","formatColumnValue"],"mappings":";;;;;;;AA8BA,MAAMA,IAAsB,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAA,GAEpDC,IAAeC,EAAAA,KAAK,CAAC;AAAA,EAC9B,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACJ,MAAa;AACT,QAAMC,IAAYC,EAAA,GACZC,IAAUL,KAAA,gBAAAA,EAAY,SAEtBM,IAAgBC,EAAAA,QAAQ,MACtB,CAACP,KAAc,CAACC,KAAU,CAACI,IACpBZ,IAGH;AAAA,IACJ,MAAMO,EAAW,OAAOK,EAAQ;AAAA,IAChC,OAAON,EAAW,cAAcC,EAAW,OAAOK,EAAQ;AAAA,IAC1D,KAAKL,EAAW,MAAMK,EAAQ;AAAA,IAC9B,QAAQN,EAAW,eAAeC,EAAW,MAAMK,EAAQ;AAAA,EAAA,GAEhE,CAACL,GAAYK,GAASN,CAAU,CAAC;AAEpC,SAAI,CAACC,KAAc,CAACC,KAAU,CAACI,KAAW,CAACT,EAAa,gBAAgB,CAACC,EAAS,OACvE,OAIPW,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAb,EAAa,SACVY,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaR,EAAW,OAAOK,EAAQ,IAAI,KAAKL,EAAW,MAAMK,EAAQ,GAAG,KACtF,UAAA;AAAA,MAAAK,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOX,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,2BAAA,CAA0B;AAAA,MACnGW,gBAAAA,EAAAA;AAAAA,QAACC;AAAA,QAAA;AAAA,UACG,KAAKf,EAAa;AAAA,UAClB,QAAAK;AAAA,UACA,YAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,GACJ;AAAA,IAEJQ,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,SAASC,EAAkBV,GAAWP,EAAa,cAAcC,KAAA,gBAAAA,EAAU,OAAO;AAAA,QAClF,GAAGI,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,GAAGK,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,QAAM;AAAA,QACN,eAAAU;AAAA,QACA,OAAOV,EAAa;AAAA,QACpB,SAASA,EAAa;AAAA,QACtB,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACf,GACJ;AAER,CAAC;AAED,SAASiB,EAAkBV,GAAsBW,GAAUC,IAA4B,CAAA,GAAI;AACvF,QAAMC,IAAkB,CAAA;AACxB,aAAWC,KAAUF,GAAa;AAC9B,UAAMG,IAAkBD,KAAA,QAAAA,EAAQ,SAASE,EAAOF,EAAO,MAAM,IAAI;AACjE,IAAAD,EAAM,KAAK,GAAGC,EAAO,KAAK,KAAKG,EAAkBjB,GAAWW,EAAI,KAAKG,GAAQC,CAAe,CAAC,EAAE;AAAA,EACnG;AACA,SAAOF;AACX;"}
1
+ {"version":3,"file":"ChartTooltip.js","sources":["../../../src/scatterplot/components/ChartTooltip.tsx"],"sourcesContent":["import {format} from 'd3-format';\nimport { memo, useMemo } from 'react';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { useDataFrame } from '../../common/useDataFrame';\nimport type { DataFrame } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { Dot } from '../dots';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport {formatColumnValue} from '../utils/formatColumnValue';\nimport { ChartDot } from './ChartLayersData';\nimport type {\n AesGetters,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\ninterface Props {\n tooltipsData: TooltipsData<Dot>;\n dimensions: undefined | ChartDimensionsData;\n scales: undefined | ChartScales;\n keyColumn: ColumnName;\n margins: Margins;\n chartSizes: ChartSizes;\n tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];\n aesGetters: AesGetters;\n}\n\nconst ZERO_SIDE_DISTANCES = { left: 0, right: 0, top: 0, bottom: 0 };\n\nexport const ChartTooltip = memo(({\n tooltipsData,\n tooltips,\n keyColumn,\n chartSizes,\n dimensions,\n scales,\n aesGetters,\n}: Props) => {\n const dataFrame = useDataFrame();\n const padding = dimensions?.padding;\n\n const sideDistances = useMemo(() => {\n if (!dimensions || !scales || !padding) {\n return ZERO_SIDE_DISTANCES;\n }\n\n return ({\n left: dimensions.left + padding.left,\n right: chartSizes.totalWidth - (dimensions.left + padding.left),\n top: dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (dimensions.top + padding.top),\n });\n }, [dimensions, padding, chartSizes]);\n\n if (!dimensions || !scales || !padding || !tooltipsData.selectedData || !tooltips.show) {\n return null;\n }\n\n return (\n <>\n {tooltipsData.fixed && \n <g transform={`translate(${dimensions.left + padding.left}, ${dimensions.top + padding.top})`}>\n <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>\n <ChartDot\n dot={tooltipsData.selectedData}\n scales={scales}\n aesGetters={aesGetters}\n />\n </g>\n }\n <Tooltip\n content={getTooltipContent(dataFrame, tooltipsData.selectedData, tooltips?.content)}\n x={scales.x(tooltipsData.selectedData.x as unknown as { valueOf(): number; } & string) as number}\n y={scales.y(tooltipsData.selectedData.y as unknown as { valueOf(): number; } & string) as number}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={null}\n />\n </>\n );\n});\n\nfunction getTooltipContent(dataFrame: DataFrame, dot: Dot, columnsList: ColumnName[] = []) {\n const lines: string[] = [];\n for (const column of columnsList) {\n const columnFormatter = column?.format ? format(column.format) : undefined;\n lines.push(`${column.label}: ${formatColumnValue(dataFrame, dot.idx, column, columnFormatter)}`);\n }\n return lines;\n}\n"],"names":["ZERO_SIDE_DISTANCES","ChartTooltip","memo","tooltipsData","tooltips","keyColumn","chartSizes","dimensions","scales","aesGetters","dataFrame","useDataFrame","padding","sideDistances","useMemo","jsxs","Fragment","jsx","ChartDot","Tooltip","getTooltipContent","dot","columnsList","lines","column","columnFormatter","format","formatColumnValue"],"mappings":";;;;;;;AA8BA,MAAMA,IAAsB,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAA,GAEpDC,IAAeC,EAAAA,KAAK,CAAC;AAAA,EAC9B,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACJ,MAAa;AACT,QAAMC,IAAYC,EAAA,GACZC,IAAUL,KAAA,gBAAAA,EAAY,SAEtBM,IAAgBC,EAAAA,QAAQ,MACtB,CAACP,KAAc,CAACC,KAAU,CAACI,IACpBZ,IAGH;AAAA,IACJ,MAAMO,EAAW,OAAOK,EAAQ;AAAA,IAChC,OAAON,EAAW,cAAcC,EAAW,OAAOK,EAAQ;AAAA,IAC1D,KAAKL,EAAW,MAAMK,EAAQ;AAAA,IAC9B,QAAQN,EAAW,eAAeC,EAAW,MAAMK,EAAQ;AAAA,EAAA,GAEhE,CAACL,GAAYK,GAASN,CAAU,CAAC;AAEpC,SAAI,CAACC,KAAc,CAACC,KAAU,CAACI,KAAW,CAACT,EAAa,gBAAgB,CAACC,EAAS,OACvE,OAIPW,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAb,EAAa,SACVY,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaR,EAAW,OAAOK,EAAQ,IAAI,KAAKL,EAAW,MAAMK,EAAQ,GAAG,KACtF,UAAA;AAAA,MAAAK,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOX,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,2BAAA,CAA0B;AAAA,MACnGW,gBAAAA,EAAAA;AAAAA,QAACC;AAAA,QAAA;AAAA,UACG,KAAKf,EAAa;AAAA,UAClB,QAAAK;AAAA,UACA,YAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,GACJ;AAAA,IAEJQ,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,SAASC,EAAkBV,GAAWP,EAAa,cAAcC,KAAA,gBAAAA,EAAU,OAAO;AAAA,QAClF,GAAGI,EAAO,EAAEL,EAAa,aAAa,CAA+C;AAAA,QACrF,GAAGK,EAAO,EAAEL,EAAa,aAAa,CAA+C;AAAA,QACrF,QAAM;AAAA,QACN,eAAAU;AAAA,QACA,OAAOV,EAAa;AAAA,QACpB,SAASA,EAAa;AAAA,QACtB,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACf,GACJ;AAER,CAAC;AAED,SAASiB,EAAkBV,GAAsBW,GAAUC,IAA4B,CAAA,GAAI;AACvF,QAAMC,IAAkB,CAAA;AACxB,aAAWC,KAAUF,GAAa;AAC9B,UAAMG,IAAkBD,KAAA,QAAAA,EAAQ,SAASE,EAAOF,EAAO,MAAM,IAAI;AACjE,IAAAD,EAAM,KAAK,GAAGC,EAAO,KAAK,KAAKG,EAAkBjB,GAAWW,EAAI,KAAKG,GAAQC,CAAe,CAAC,EAAE;AAAA,EACnG;AACA,SAAOF;AACX;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTrendsData.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartTrendsData.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACR,UAAU,EACV,WAAW,EACd,MAAM,SAAS,CAAC;AAEjB,UAAU,KAAK;IACX,UAAU,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,mFAKzB,KAAK,+DAgCN,CAAC"}
1
+ {"version":3,"file":"ChartTrendsData.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartTrendsData.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EACR,UAAU,EACV,WAAW,EACd,MAAM,SAAS,CAAC;AAGjB,UAAU,KAAK;IACX,UAAU,EAAE,UAAU,CAAC,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,mFAKzB,KAAK,+DAmCN,CAAC"}
@@ -1,24 +1,27 @@
1
1
  import { j as n } from "../../node_modules/react/jsx-runtime.js";
2
- import { l as $ } from "../../node_modules/lodash/lodash.js";
3
- import { r as g } from "../../_virtual/index.js";
2
+ import { l as g } from "../../node_modules/lodash/lodash.js";
3
+ import { r as E } from "../../_virtual/index.js";
4
4
  import { numberFormat as i } from "../../utils/numberFormat.js";
5
- const b = g.memo(({
5
+ import { isNumericScale as d } from "../utils/isNumericScale.js";
6
+ const v = E.memo(({
6
7
  width: r,
7
8
  scales: t,
8
9
  trendsData: e,
9
10
  aesGetters: o
10
- }) => e && e.map(({ idx: f, predict: x, getArea: d, bounded: h, xBounds: j, stats: y }, c) => {
11
- const [l, p] = h ? j : t.x.domain(), u = (p - l) / 15, m = x(l), a = x(p);
12
- if (isNaN(m) || isNaN(a))
11
+ }) => e && e.map(({ idx: f, predict: x, getArea: h, bounded: j, xBounds: y, stats: $ }, c) => {
12
+ if (!d(t.x) || !d(t.y))
13
13
  return null;
14
- const s = o.trendColor(f);
14
+ const [l, p] = j ? y : t.x.domain(), m = (p - l) / 15, s = x(l), a = x(p);
15
+ if (isNaN(s) || isNaN(a))
16
+ return null;
17
+ const u = o.trendColor(f);
15
18
  return /* @__PURE__ */ n.jsxs("g", { children: [
16
- /* @__PURE__ */ n.jsx("text", { y: c * 20 + 20, fill: s, x: r - 8, textAnchor: "end", children: F(y) }),
19
+ /* @__PURE__ */ n.jsx("text", { y: c * 20 + 20, fill: u, x: r - 8, textAnchor: "end", children: R($) }),
17
20
  /* @__PURE__ */ n.jsx(
18
21
  "path",
19
22
  {
20
- d: d(t.x, t.y, $.range(l, p + u / 2, u)),
21
- fill: s,
23
+ d: h(t.x, t.y, g.range(l, p + m / 2, m)),
24
+ fill: u,
22
25
  opacity: 0.2
23
26
  }
24
27
  ),
@@ -27,14 +30,14 @@ const b = g.memo(({
27
30
  {
28
31
  x1: t.x(l),
29
32
  x2: t.x(p),
30
- y1: t.y(m),
33
+ y1: t.y(s),
31
34
  y2: t.y(a),
32
- stroke: s
35
+ stroke: u
33
36
  }
34
37
  )
35
38
  ] }, c);
36
39
  }));
37
- function E(r) {
40
+ function N(r) {
38
41
  return typeof r.r2 > "u" ? null : /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
39
42
  /* @__PURE__ */ n.jsx("tspan", { children: "R" }),
40
43
  /* @__PURE__ */ n.jsx("tspan", { fontSize: "10px", dy: "-8", children: "2" }),
@@ -44,14 +47,14 @@ function E(r) {
44
47
  function C(r) {
45
48
  return typeof r.pValue > "u" ? null : /* @__PURE__ */ n.jsx("tspan", { children: `p-value = ${i(r.pValue)}` });
46
49
  }
47
- function N(r) {
50
+ function F(r) {
48
51
  if (typeof r.coefficients > "u")
49
52
  return null;
50
53
  const { slope: t, slopeError: e, intercept: o, interceptError: f } = r.coefficients;
51
54
  return /* @__PURE__ */ n.jsx("tspan", { children: /* @__PURE__ */ n.jsx("tspan", { children: `slope = ${i(t)} ± ${i(e)}, intercept = ${i(o)} ± ${i(f)}` }) });
52
55
  }
53
- function F(r) {
54
- const t = [E(r), C(r), N(r)].filter(
56
+ function R(r) {
57
+ const t = [N(r), C(r), F(r)].filter(
55
58
  (e) => e !== null
56
59
  );
57
60
  return /* @__PURE__ */ n.jsx(n.Fragment, { children: t.map((e, o) => /* @__PURE__ */ n.jsxs("tspan", { children: [
@@ -60,6 +63,6 @@ function F(r) {
60
63
  ] }, o)) });
61
64
  }
62
65
  export {
63
- b as ChartTrendsData
66
+ v as ChartTrendsData
64
67
  };
65
68
  //# sourceMappingURL=ChartTrendsData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTrendsData.js","sources":["../../../src/scatterplot/components/ChartTrendsData.tsx"],"sourcesContent":["import { range } from 'lodash';\nimport { memo, type ReactElement } from 'react';\nimport { numberFormat } from '../../utils/numberFormat';\nimport type { TrendsData } from '../linearRegression';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\ninterface Props {\n trendsData: TrendsData[keyof TrendsData] | null;\n width: number;\n scales: ChartScales;\n aesGetters: AesGetters;\n}\n\nexport const ChartTrendsData = memo(({\n width,\n scales,\n trendsData,\n aesGetters,\n}: Props) => {\n return (trendsData &&\n trendsData.map(({ idx, predict, getArea, bounded, xBounds, stats}, i) => {\n const [minX, maxX] = bounded ? xBounds : scales.x.domain();\n const step = (maxX - minX) / 15;\n const p1 = predict(minX);\n const p2 = predict(maxX);\n if (isNaN(p1) || isNaN(p2)) {\n return null;\n }\n const fillColor = aesGetters.trendColor(idx);\n return (\n <g key={i}>\n <text y={i * 20 + 20} fill={fillColor} x={width - 8} textAnchor=\"end\">\n {formatStats(stats)}\n </text>\n <path\n d={getArea(scales.x, scales.y, range(minX, maxX + step / 2, step))}\n fill={fillColor}\n opacity={0.2}\n />\n <line\n x1={scales.x(minX)}\n x2={scales.x(maxX)}\n y1={scales.y(p1)}\n y2={scales.y(p2)}\n stroke={fillColor}\n />\n </g>\n );\n })\n );\n});\n\nfunction formatR2(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.r2 === 'undefined') {\n return null;\n }\n return (\n <>\n <tspan>R</tspan>\n <tspan fontSize=\"10px\" dy=\"-8\">\n 2\n </tspan>\n <tspan dy=\"8\">{` = ${numberFormat(stats.r2)}`}</tspan>\n </>\n );\n}\n\nfunction formatPValue(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.pValue === 'undefined') {\n return null;\n }\n return <tspan>{`p-value = ${numberFormat(stats.pValue)}`}</tspan>;\n}\n\nfunction formatCoefficients(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.coefficients === 'undefined') {\n return null;\n }\n const {slope, slopeError, intercept, interceptError} = stats.coefficients;\n return (\n <tspan>\n <tspan>\n {`slope = ${numberFormat(slope)} ± ${numberFormat(slopeError)}, intercept = ${numberFormat(intercept)} ± ${numberFormat(interceptError)}`}\n </tspan>\n </tspan>\n );\n}\n\nfunction formatStats(stats: TrendsData[keyof TrendsData][number]['stats']) {\n const items = [formatR2(stats), formatPValue(stats), formatCoefficients(stats)].filter(\n value => value !== null\n ) as unknown as ReactElement[];\n return (\n <>\n {items.map((item, idx) => (\n <tspan key={idx}>\n {item}\n <tspan>{idx < items.length - 1 && ', '}</tspan>\n </tspan>\n ))}\n </>\n );\n}\n\n"],"names":["ChartTrendsData","memo","width","scales","trendsData","aesGetters","idx","predict","getArea","bounded","xBounds","stats","i","minX","maxX","step","p1","p2","fillColor","jsx","formatStats","range","formatR2","jsxs","Fragment","numberFormat","formatPValue","formatCoefficients","slope","slopeError","intercept","interceptError","items","value","item"],"mappings":"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"}
1
+ {"version":3,"file":"ChartTrendsData.js","sources":["../../../src/scatterplot/components/ChartTrendsData.tsx"],"sourcesContent":["import { range } from 'lodash';\nimport { memo, type ReactElement } from 'react';\nimport { numberFormat } from '../../utils/numberFormat';\nimport type { TrendsData } from '../linearRegression';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\nimport { isNumericScale } from '../utils/isNumericScale';\n\ninterface Props {\n trendsData: TrendsData[keyof TrendsData] | null;\n width: number;\n scales: ChartScales;\n aesGetters: AesGetters;\n}\n\nexport const ChartTrendsData = memo(({\n width,\n scales,\n trendsData,\n aesGetters,\n}: Props) => {\n return (trendsData &&\n trendsData.map(({ idx, predict, getArea, bounded, xBounds, stats}, i) => {\n if (!isNumericScale(scales.x) || !isNumericScale(scales.y)) {\n return null;\n }\n const [minX, maxX] = bounded ? xBounds : scales.x.domain();\n const step = (maxX - minX) / 15;\n const p1 = predict(minX);\n const p2 = predict(maxX);\n if (isNaN(p1) || isNaN(p2)) {\n return null;\n }\n const fillColor = aesGetters.trendColor(idx);\n return (\n <g key={i}>\n <text y={i * 20 + 20} fill={fillColor} x={width - 8} textAnchor=\"end\">\n {formatStats(stats)}\n </text>\n <path\n d={getArea(scales.x, scales.y, range(minX, maxX + step / 2, step))}\n fill={fillColor}\n opacity={0.2}\n />\n <line\n x1={scales.x(minX)}\n x2={scales.x(maxX)}\n y1={scales.y(p1)}\n y2={scales.y(p2)}\n stroke={fillColor}\n />\n </g>\n );\n })\n );\n});\n\nfunction formatR2(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.r2 === 'undefined') {\n return null;\n }\n return (\n <>\n <tspan>R</tspan>\n <tspan fontSize=\"10px\" dy=\"-8\">\n 2\n </tspan>\n <tspan dy=\"8\">{` = ${numberFormat(stats.r2)}`}</tspan>\n </>\n );\n}\n\nfunction formatPValue(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.pValue === 'undefined') {\n return null;\n }\n return <tspan>{`p-value = ${numberFormat(stats.pValue)}`}</tspan>;\n}\n\nfunction formatCoefficients(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.coefficients === 'undefined') {\n return null;\n }\n const {slope, slopeError, intercept, interceptError} = stats.coefficients;\n return (\n <tspan>\n <tspan>\n {`slope = ${numberFormat(slope)} ± ${numberFormat(slopeError)}, intercept = ${numberFormat(intercept)} ± ${numberFormat(interceptError)}`}\n </tspan>\n </tspan>\n );\n}\n\nfunction formatStats(stats: TrendsData[keyof TrendsData][number]['stats']) {\n const items = [formatR2(stats), formatPValue(stats), formatCoefficients(stats)].filter(\n value => value !== null\n ) as unknown as ReactElement[];\n return (\n <>\n {items.map((item, idx) => (\n <tspan key={idx}>\n {item}\n <tspan>{idx < items.length - 1 && ', '}</tspan>\n </tspan>\n ))}\n </>\n );\n}\n\n"],"names":["ChartTrendsData","memo","width","scales","trendsData","aesGetters","idx","predict","getArea","bounded","xBounds","stats","i","isNumericScale","minX","maxX","step","p1","p2","fillColor","jsx","formatStats","range","formatR2","jsxs","Fragment","numberFormat","formatPValue","formatCoefficients","slope","slopeError","intercept","interceptError","items","value","item"],"mappings":"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"}
@@ -28,8 +28,12 @@ interface ChartsGroupProps {
28
28
  };
29
29
  layersData: Record<string, ScatterplotLayerData[]>;
30
30
  aesGetters: AesGetters;
31
+ discreteAxesLabels: {
32
+ x: Record<string, Record<string, string[]>>;
33
+ y: Record<string, Record<string, string[]>>;
34
+ };
31
35
  onTooltipHintSwitch: (v: boolean) => void;
32
36
  }
33
- export declare function ChartsGroup({ settingsId, chartSettings, chartSizes, chartsDimensions, facetKeys, facetSettings, scales, groupedDots, legendData, trendsData, columnsCount, margins, keyColumn, mainTitle, facetTitles, captionsSizes, onlyPositive, layersData, aesGetters, onTooltipHintSwitch }: ChartsGroupProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare function ChartsGroup({ settingsId, chartSettings, chartSizes, chartsDimensions, facetKeys, facetSettings, scales, groupedDots, legendData, trendsData, columnsCount, margins, keyColumn, mainTitle, facetTitles, captionsSizes, onlyPositive, layersData, aesGetters, discreteAxesLabels, onTooltipHintSwitch }: ChartsGroupProps): import("react/jsx-runtime").JSX.Element;
34
38
  export {};
35
39
  //# sourceMappingURL=ChartsGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartsGroup.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartsGroup.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,KAAK,EACR,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,OAAO,EACV,MAAM,SAAS,CAAC;AAEjB,UAAU,gBAAgB;IACtB,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACnD,UAAU,EAAE,UAAU,CAAC;IACvB,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,WAAW,CAAC,EACxB,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,mBAAmB,EACtB,EAAE,gBAAgB,2CAiFlB"}
1
+ {"version":3,"file":"ChartsGroup.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartsGroup.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,KAAK,EACR,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,OAAO,EACV,MAAM,SAAS,CAAC;AAEjB,UAAU,gBAAgB;IACtB,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,aAAa,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC;IACxD,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE;QAAC,CAAC,EAAE,OAAO,CAAC;QAAC,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACnD,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE;QAChB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;KAC9C,CAAC;IACF,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,WAAW,CAAC,EACxB,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,UAAU,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACtB,EAAE,gBAAgB,2CAmFlB"}
@@ -1,39 +1,40 @@
1
1
  import { j as r } from "../../node_modules/react/jsx-runtime.js";
2
- import { r as A } from "../../_virtual/index.js";
3
- import { ChartsTitle as I } from "../../common/ChartsTitle.js";
4
- import { ErrorBoundary as O } from "../../common/ErrorBoundary.js";
5
- import G from "../../common/fonts.js";
6
- import { Legend as N } from "../../common/Legend.js";
7
- import { useTooltip as R } from "../../common/Tooltip.js";
8
- import { LEGEND_OFFSET as _ } from "../constants.js";
9
- import { Chart as q } from "./Chart.js";
10
- import { ChartTooltip as y } from "./ChartTooltip.js";
11
- function S({
12
- settingsId: f,
13
- chartSettings: g,
2
+ import { r as O } from "../../_virtual/index.js";
3
+ import { ChartsTitle as A } from "../../common/ChartsTitle.js";
4
+ import { ErrorBoundary as G } from "../../common/ErrorBoundary.js";
5
+ import N from "../../common/fonts.js";
6
+ import { Legend as R } from "../../common/Legend.js";
7
+ import { useTooltip as X } from "../../common/Tooltip.js";
8
+ import { LEGEND_OFFSET as Y } from "../constants.js";
9
+ import { Chart as _ } from "./Chart.js";
10
+ import { ChartTooltip as q } from "./ChartTooltip.js";
11
+ function tt({
12
+ settingsId: g,
13
+ chartSettings: x,
14
14
  chartSizes: o,
15
15
  chartsDimensions: e,
16
16
  facetKeys: i,
17
- facetSettings: x,
17
+ facetSettings: u,
18
18
  scales: d,
19
- groupedDots: u,
20
- legendData: j,
19
+ groupedDots: j,
20
+ legendData: c,
21
21
  trendsData: s,
22
- columnsCount: c,
22
+ columnsCount: w,
23
23
  margins: l,
24
- keyColumn: w,
25
- mainTitle: E,
26
- facetTitles: T,
27
- captionsSizes: v,
28
- onlyPositive: W,
29
- layersData: C,
24
+ keyColumn: E,
25
+ mainTitle: T,
26
+ facetTitles: v,
27
+ captionsSizes: W,
28
+ onlyPositive: C,
29
+ layersData: F,
30
30
  aesGetters: a,
31
- onTooltipHintSwitch: F
31
+ discreteAxesLabels: p,
32
+ onTooltipHintSwitch: L
32
33
  }) {
33
- const n = R(F), { xAxis: M, yAxis: $, title: p, frame: L, legend: H, tooltips: P } = g, h = e[i[0]].padding, B = e[i[c - 1]].padding, D = o.chartsWidth + _, b = h.top, m = A.useMemo(() => Object.fromEntries(
34
+ const n = X(L), { xAxis: M, yAxis: $, title: h, frame: H, legend: P, tooltips: b } = x, m = e[i[0]].padding, B = e[i[w - 1]].padding, D = o.chartsWidth + Y, I = m.top, f = O.useMemo(() => Object.fromEntries(
34
35
  i.map((t) => [t, { x: d.x[t], y: d.y[t] }])
35
36
  ), [d.x, d.y, i]);
36
- return /* @__PURE__ */ r.jsx(O, { dataId: f, children: /* @__PURE__ */ r.jsx("div", { style: { position: "relative", width: o.totalWidth, height: o.totalHeight }, children: /* @__PURE__ */ r.jsxs(
37
+ return /* @__PURE__ */ r.jsx(G, { dataId: g, children: /* @__PURE__ */ r.jsx("div", { style: { position: "relative", width: o.totalWidth, height: o.totalHeight }, children: /* @__PURE__ */ r.jsxs(
37
38
  "svg",
38
39
  {
39
40
  xmlns: "http://www.w3.org/2000/svg",
@@ -42,54 +43,56 @@ function S({
42
43
  height: o.totalHeight,
43
44
  style: { position: "absolute", top: 0, left: 0, zIndex: 0 },
44
45
  children: [
45
- /* @__PURE__ */ r.jsx("defs", { children: G }),
46
+ /* @__PURE__ */ r.jsx("defs", { children: N }),
46
47
  /* @__PURE__ */ r.jsxs("g", { transform: `translate(${l.left},${l.top})`, fontFamily: "Manrope", children: [
47
48
  /* @__PURE__ */ r.jsx(
48
- I,
49
+ A,
49
50
  {
50
- title: E,
51
- show: p.show,
52
- position: p.position,
53
- leftPadding: h.left,
51
+ title: T,
52
+ show: h.show,
53
+ position: h.position,
54
+ leftPadding: m.left,
54
55
  rightPadding: B.right,
55
56
  chartsWidth: o.chartsWidth
56
57
  }
57
58
  ),
58
59
  i.map((t) => /* @__PURE__ */ r.jsx(
59
- q,
60
+ _,
60
61
  {
61
62
  facetKey: t,
62
- scales: m[t],
63
+ scales: f[t],
63
64
  width: o.chartWidth,
64
65
  height: o.chartHeight,
65
66
  dimensions: e[t],
66
- facetSettings: x,
67
+ facetSettings: u,
67
68
  xAxis: M,
68
69
  yAxis: $,
69
- frameType: L.type,
70
- dotsData: u[t],
70
+ discreteLabelsX: p.x[t],
71
+ discreteLabelsY: p.y[t],
72
+ frameType: H.type,
73
+ dotsData: j[t],
71
74
  trendsData: s ? s[t] : null,
72
- facetTitle: T[t],
73
- captionsSizes: v,
74
- layersData: C[t],
75
- onlyPositive: W,
75
+ facetTitle: v[t],
76
+ captionsSizes: W,
77
+ layersData: F[t],
78
+ onlyPositive: C,
76
79
  aesGetters: a,
77
80
  onMouseEnterDot: n.onMouseEnter,
78
81
  onMouseLeaveDot: n.onMouseLeave
79
82
  },
80
83
  t
81
84
  )),
82
- H.show && /* @__PURE__ */ r.jsx("g", { transform: `translate(${D},${b})`, children: /* @__PURE__ */ r.jsx(N, { legendData: j }) }),
85
+ P.show && /* @__PURE__ */ r.jsx("g", { transform: `translate(${D},${I})`, children: /* @__PURE__ */ r.jsx(R, { legendData: c }) }),
83
86
  /* @__PURE__ */ r.jsx(
84
- y,
87
+ q,
85
88
  {
86
89
  tooltipsData: n,
87
90
  dimensions: e[n.currentFacet],
88
- scales: m[n.currentFacet],
89
- keyColumn: w,
91
+ scales: f[n.currentFacet],
92
+ keyColumn: E,
90
93
  margins: l,
91
94
  chartSizes: o,
92
- tooltips: P,
95
+ tooltips: b,
93
96
  aesGetters: a
94
97
  }
95
98
  )
@@ -99,6 +102,6 @@ function S({
99
102
  ) }) });
100
103
  }
101
104
  export {
102
- S as ChartsGroup
105
+ tt as ChartsGroup
103
106
  };
104
107
  //# sourceMappingURL=ChartsGroup.js.map