@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.
- package/dist/{discrete/components → common}/BandAxis.d.ts +2 -2
- package/dist/common/BandAxis.d.ts.map +1 -0
- package/dist/{discrete/components → common}/BandAxis.js +3 -3
- package/dist/common/BandAxis.js.map +1 -0
- package/dist/common/ContinuousGrid.d.ts +3 -3
- package/dist/common/ContinuousGrid.d.ts.map +1 -1
- package/dist/common/ContinuousGrid.js.map +1 -1
- package/dist/discrete/ChartRenderer.d.ts.map +1 -1
- package/dist/discrete/ChartRenderer.js +192 -265
- package/dist/discrete/ChartRenderer.js.map +1 -1
- package/dist/discrete/components/Chart.js +1 -1
- package/dist/discrete/components/Chart.js.map +1 -1
- package/dist/discrete/components/Grid.d.ts +3 -3
- package/dist/discrete/components/Grid.d.ts.map +1 -1
- package/dist/discrete/components/Grid.js.map +1 -1
- package/dist/discrete/components/types.d.ts +5 -3
- package/dist/discrete/components/types.d.ts.map +1 -1
- package/dist/discrete/utils/index.d.ts +1 -1
- package/dist/discrete/utils/index.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +48 -48
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.js +28 -28
- package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/histogram/ChartRenderer.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/node_modules/d3-scale/src/band.js +45 -35
- package/dist/node_modules/d3-scale/src/band.js.map +1 -1
- package/dist/scatterplot/ChartRenderer.d.ts +10 -5
- package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot/ChartRenderer.js +276 -197
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +5 -3
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.js +53 -53
- package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
- package/dist/scatterplot/components/Chart.d.ts +3 -1
- package/dist/scatterplot/components/Chart.d.ts.map +1 -1
- package/dist/scatterplot/components/Chart.js +23 -19
- package/dist/scatterplot/components/Chart.js.map +1 -1
- package/dist/scatterplot/components/ChartAxis.d.ts +3 -1
- package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartAxis.js +31 -27
- package/dist/scatterplot/components/ChartAxis.js.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
- package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartTrendsData.js +20 -17
- package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.d.ts +5 -1
- package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartsGroup.js +49 -46
- package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
- package/dist/scatterplot/components/Grid.d.ts +3 -3
- package/dist/scatterplot/components/Grid.d.ts.map +1 -1
- package/dist/scatterplot/components/Grid.js +31 -27
- package/dist/scatterplot/components/Grid.js.map +1 -1
- package/dist/scatterplot/components/types.d.ts +15 -5
- package/dist/scatterplot/components/types.d.ts.map +1 -1
- package/dist/scatterplot/dots.d.ts +2 -2
- package/dist/scatterplot/dots.d.ts.map +1 -1
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/getLayersData.d.ts +3 -2
- package/dist/scatterplot/getLayersData.d.ts.map +1 -1
- package/dist/scatterplot/getLayersData.js +29 -18
- package/dist/scatterplot/getLayersData.js.map +1 -1
- package/dist/scatterplot/index.d.ts +3 -0
- package/dist/scatterplot/index.d.ts.map +1 -1
- package/dist/scatterplot/index.js +73 -59
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/linearRegression.d.ts +4 -6
- package/dist/scatterplot/linearRegression.d.ts.map +1 -1
- package/dist/scatterplot/linearRegression.js.map +1 -1
- package/dist/scatterplot/utils/isNumericScale.d.ts +6 -0
- package/dist/scatterplot/utils/isNumericScale.d.ts.map +1 -0
- package/dist/scatterplot/utils/isNumericScale.js +11 -0
- package/dist/scatterplot/utils/isNumericScale.js.map +1 -0
- package/dist/scatterplot-umap/ChartRenderer.js +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts +7 -4
- package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +7 -7
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/types/bubble.d.ts +12 -12
- package/dist/types/common.d.ts +186 -21
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +36 -26
- package/dist/types/common.js.map +1 -1
- package/dist/types/dendro.d.ts +22 -22
- package/dist/types/discrete.d.ts +23 -53
- package/dist/types/discrete.d.ts.map +1 -1
- package/dist/types/discrete.js +35 -35
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +12 -12
- package/dist/types/histogram.d.ts +4 -4
- package/dist/types/scatterplot-umap.d.ts +4 -34
- package/dist/types/scatterplot-umap.d.ts.map +1 -1
- package/dist/types/scatterplot-umap.js +1 -1
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.d.ts +186 -32
- package/dist/types/scatterplot.d.ts.map +1 -1
- package/dist/utils/createMultilineDiscreteLabels.d.ts +4 -0
- package/dist/utils/createMultilineDiscreteLabels.d.ts.map +1 -0
- package/dist/utils/createMultilineDiscreteLabels.js +32 -0
- package/dist/utils/createMultilineDiscreteLabels.js.map +1 -0
- package/dist/utils/getFacetRowsColumns.d.ts +3 -0
- package/dist/utils/getFacetRowsColumns.d.ts.map +1 -0
- package/dist/utils/getFacetRowsColumns.js +18 -0
- package/dist/utils/getFacetRowsColumns.js.map +1 -0
- package/dist/utils/measureMultilineDiscreteLabels.d.ts +9 -0
- package/dist/utils/measureMultilineDiscreteLabels.d.ts.map +1 -0
- package/dist/utils/measureMultilineDiscreteLabels.js +63 -0
- package/dist/utils/measureMultilineDiscreteLabels.js.map +1 -0
- package/dist/utils/splitTextByWidth.d.ts.map +1 -0
- package/dist/{discrete/utils → utils}/splitTextByWidth.js +1 -1
- package/dist/utils/splitTextByWidth.js.map +1 -0
- package/package.json +1 -1
- package/dist/discrete/components/BandAxis.d.ts.map +0 -1
- package/dist/discrete/components/BandAxis.js.map +0 -1
- package/dist/discrete/utils/splitTextByWidth.d.ts.map +0 -1
- package/dist/discrete/utils/splitTextByWidth.js.map +0 -1
- package/dist/scatterplot/components/Axis.d.ts +0 -13
- package/dist/scatterplot/components/Axis.d.ts.map +0 -1
- package/dist/scatterplot/components/Axis.js +0 -59
- package/dist/scatterplot/components/Axis.js.map +0 -1
- /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":";;;;;;;;;
|
|
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;
|
|
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
|
|
3
|
-
import { DEFAULT_TICKS_SIZE as
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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:
|
|
15
|
-
|
|
16
|
+
captionsSizes: m,
|
|
17
|
+
discreteLabelsX: E,
|
|
18
|
+
discreteLabelsY: T,
|
|
19
|
+
onlyPositive: c
|
|
16
20
|
}) => {
|
|
17
|
-
const
|
|
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
|
-
|
|
20
|
-
/* @__PURE__ */ o.jsx(
|
|
21
|
-
|
|
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:
|
|
26
|
-
width:
|
|
27
|
-
height:
|
|
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
|
-
|
|
34
|
-
/* @__PURE__ */ o.jsx(
|
|
35
|
-
|
|
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: -
|
|
42
|
+
x: -d - h - m.yAxisCaptionsWidth,
|
|
39
43
|
y: "0",
|
|
40
|
-
width:
|
|
41
|
-
height:
|
|
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
|
-
|
|
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
|
|
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;
|
|
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,
|
|
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;
|
|
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
|
|
3
|
-
import { r as
|
|
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
|
-
|
|
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:
|
|
11
|
-
|
|
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
|
|
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:
|
|
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:
|
|
21
|
-
fill:
|
|
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(
|
|
33
|
+
y1: t.y(s),
|
|
31
34
|
y2: t.y(a),
|
|
32
|
-
stroke:
|
|
35
|
+
stroke: u
|
|
33
36
|
}
|
|
34
37
|
)
|
|
35
38
|
] }, c);
|
|
36
39
|
}));
|
|
37
|
-
function
|
|
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
|
|
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
|
|
54
|
-
const t = [
|
|
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
|
-
|
|
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":"
|
|
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,
|
|
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
|
|
3
|
-
import { ChartsTitle as
|
|
4
|
-
import { ErrorBoundary as
|
|
5
|
-
import
|
|
6
|
-
import { Legend as
|
|
7
|
-
import { useTooltip as
|
|
8
|
-
import { LEGEND_OFFSET as
|
|
9
|
-
import { Chart as
|
|
10
|
-
import { ChartTooltip as
|
|
11
|
-
function
|
|
12
|
-
settingsId:
|
|
13
|
-
chartSettings:
|
|
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:
|
|
17
|
+
facetSettings: u,
|
|
18
18
|
scales: d,
|
|
19
|
-
groupedDots:
|
|
20
|
-
legendData:
|
|
19
|
+
groupedDots: j,
|
|
20
|
+
legendData: c,
|
|
21
21
|
trendsData: s,
|
|
22
|
-
columnsCount:
|
|
22
|
+
columnsCount: w,
|
|
23
23
|
margins: l,
|
|
24
|
-
keyColumn:
|
|
25
|
-
mainTitle:
|
|
26
|
-
facetTitles:
|
|
27
|
-
captionsSizes:
|
|
28
|
-
onlyPositive:
|
|
29
|
-
layersData:
|
|
24
|
+
keyColumn: E,
|
|
25
|
+
mainTitle: T,
|
|
26
|
+
facetTitles: v,
|
|
27
|
+
captionsSizes: W,
|
|
28
|
+
onlyPositive: C,
|
|
29
|
+
layersData: F,
|
|
30
30
|
aesGetters: a,
|
|
31
|
-
|
|
31
|
+
discreteAxesLabels: p,
|
|
32
|
+
onTooltipHintSwitch: L
|
|
32
33
|
}) {
|
|
33
|
-
const n =
|
|
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(
|
|
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:
|
|
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
|
-
|
|
49
|
+
A,
|
|
49
50
|
{
|
|
50
|
-
title:
|
|
51
|
-
show:
|
|
52
|
-
position:
|
|
53
|
-
leftPadding:
|
|
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
|
-
|
|
60
|
+
_,
|
|
60
61
|
{
|
|
61
62
|
facetKey: t,
|
|
62
|
-
scales:
|
|
63
|
+
scales: f[t],
|
|
63
64
|
width: o.chartWidth,
|
|
64
65
|
height: o.chartHeight,
|
|
65
66
|
dimensions: e[t],
|
|
66
|
-
facetSettings:
|
|
67
|
+
facetSettings: u,
|
|
67
68
|
xAxis: M,
|
|
68
69
|
yAxis: $,
|
|
69
|
-
|
|
70
|
-
|
|
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:
|
|
73
|
-
captionsSizes:
|
|
74
|
-
layersData:
|
|
75
|
-
onlyPositive:
|
|
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
|
-
|
|
85
|
+
P.show && /* @__PURE__ */ r.jsx("g", { transform: `translate(${D},${I})`, children: /* @__PURE__ */ r.jsx(R, { legendData: c }) }),
|
|
83
86
|
/* @__PURE__ */ r.jsx(
|
|
84
|
-
|
|
87
|
+
q,
|
|
85
88
|
{
|
|
86
89
|
tooltipsData: n,
|
|
87
90
|
dimensions: e[n.currentFacet],
|
|
88
|
-
scales:
|
|
89
|
-
keyColumn:
|
|
91
|
+
scales: f[n.currentFacet],
|
|
92
|
+
keyColumn: E,
|
|
90
93
|
margins: l,
|
|
91
94
|
chartSizes: o,
|
|
92
|
-
tooltips:
|
|
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
|
-
|
|
105
|
+
tt as ChartsGroup
|
|
103
106
|
};
|
|
104
107
|
//# sourceMappingURL=ChartsGroup.js.map
|