@milaboratories/miplots4 1.0.124 → 1.0.126
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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/node_modules/d3-drag/src/constant.js +5 -0
- package/dist/node_modules/d3-drag/src/constant.js.map +1 -0
- package/dist/node_modules/d3-drag/src/drag.js +122 -0
- package/dist/node_modules/d3-drag/src/drag.js.map +1 -0
- package/dist/node_modules/d3-drag/src/event.js +34 -0
- package/dist/node_modules/d3-drag/src/event.js.map +1 -0
- package/dist/node_modules/d3-drag/src/noevent.js +10 -5
- package/dist/node_modules/d3-drag/src/noevent.js.map +1 -1
- package/dist/scatterplot/index.js +27 -27
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +11 -9
- package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +182 -172
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts +0 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.js +12 -13
- package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.d.ts +6 -4
- package/dist/scatterplot-umap/components/Lasso.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/Lasso.js +212 -57
- package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.d.ts +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/SVGLayer.js +49 -46
- package/dist/scatterplot-umap/components/SVGLayer.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts +6 -4
- package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +35 -30
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/constants.d.ts +6 -0
- package/dist/scatterplot-umap/constants.d.ts.map +1 -1
- package/dist/scatterplot-umap/constants.js +12 -6
- package/dist/scatterplot-umap/constants.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +3 -2
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +90 -72
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/scatterplot-umap/types.d.ts +14 -2
- package/dist/scatterplot-umap/types.d.ts.map +1 -1
- package/dist/types/bubble.d.ts +10 -10
- package/dist/types/common.d.ts +7 -4
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/types/dendro.d.ts +22 -22
- package/dist/types/discrete.d.ts +14 -14
- package/dist/types/heatmap.d.ts +50 -50
- package/dist/types/histogram.d.ts +12 -12
- package/dist/types/scatterplot-umap.d.ts +8 -11
- package/dist/types/scatterplot-umap.d.ts.map +1 -1
- package/dist/types/scatterplot-umap.js +2 -3
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.d.ts +36 -36
- package/package.json +3 -1
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { j as e } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
-
import { Lasso as
|
|
3
|
-
function
|
|
4
|
-
scales:
|
|
5
|
-
container:
|
|
6
|
-
labels:
|
|
2
|
+
import { Lasso as p } from "./Lasso.js";
|
|
3
|
+
function u({
|
|
4
|
+
scales: n,
|
|
5
|
+
container: l,
|
|
6
|
+
labels: o,
|
|
7
7
|
aesGetters: i,
|
|
8
|
-
chartSizes:
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
chartSizes: r,
|
|
9
|
+
zoomStateKey: a,
|
|
10
|
+
defaultPolygons: c,
|
|
11
|
+
onPolygonUpdate: h,
|
|
12
|
+
onLassoControlsStateUpdate: m,
|
|
11
13
|
tooltipData: t
|
|
12
14
|
}) {
|
|
13
|
-
return
|
|
14
|
-
|
|
15
|
-
const { name:
|
|
15
|
+
return l ? /* @__PURE__ */ e.jsxs("g", { children: [
|
|
16
|
+
o.map((s) => {
|
|
17
|
+
const { name: f, height: d, bbox: x, width: j } = s;
|
|
16
18
|
return /* @__PURE__ */ e.jsx("g", { children: /* @__PURE__ */ e.jsxs("g", { transform: `translate(${x.minX},${x.minY})`, children: [
|
|
17
|
-
/* @__PURE__ */ e.jsx("rect", { x: "0", y: "0", width:
|
|
19
|
+
/* @__PURE__ */ e.jsx("rect", { x: "0", y: "0", width: j, height: d, fill: "transparent", stroke: "none" }),
|
|
18
20
|
/* @__PURE__ */ e.jsx(
|
|
19
21
|
"text",
|
|
20
22
|
{
|
|
21
23
|
x: 0,
|
|
22
|
-
y:
|
|
24
|
+
y: d / 2,
|
|
23
25
|
stroke: "white",
|
|
24
26
|
strokeWidth: 2,
|
|
25
27
|
paintOrder: "stroke",
|
|
@@ -27,33 +29,36 @@ function p({
|
|
|
27
29
|
fontFamily: "Manrope",
|
|
28
30
|
fontSize: "16px",
|
|
29
31
|
dominantBaseline: "middle",
|
|
30
|
-
children:
|
|
32
|
+
children: f
|
|
31
33
|
}
|
|
32
34
|
)
|
|
33
|
-
] }) },
|
|
35
|
+
] }) }, s.dot.id);
|
|
34
36
|
}),
|
|
35
|
-
/* @__PURE__ */ e.jsx(
|
|
36
|
-
f,
|
|
37
|
-
{
|
|
38
|
-
scales: r,
|
|
39
|
-
chartSizes: n,
|
|
40
|
-
disabled: !h,
|
|
41
|
-
onPolygonUpdate: c
|
|
42
|
-
}
|
|
43
|
-
),
|
|
44
|
-
t.fixed && /* @__PURE__ */ e.jsx("rect", { width: n.chartWidth, height: n.chartHeight, fill: "rgba(255,255,255,0.8)" }),
|
|
45
37
|
t.selectedData && /* @__PURE__ */ e.jsx(
|
|
46
38
|
"circle",
|
|
47
39
|
{
|
|
48
|
-
cx:
|
|
49
|
-
cy:
|
|
40
|
+
cx: n.x(t.selectedData.x),
|
|
41
|
+
cy: n.y(t.selectedData.y),
|
|
50
42
|
r: Math.max(i.dotSize(t.selectedData.data) * 1.2, 5),
|
|
51
|
-
fill: i.dotFill(t.selectedData.data)
|
|
43
|
+
fill: i.dotFill(t.selectedData.data),
|
|
44
|
+
style: { pointerEvents: "none" }
|
|
52
45
|
}
|
|
53
|
-
)
|
|
46
|
+
),
|
|
47
|
+
/* @__PURE__ */ e.jsx(
|
|
48
|
+
p,
|
|
49
|
+
{
|
|
50
|
+
scales: n,
|
|
51
|
+
chartSizes: r,
|
|
52
|
+
zoomStateKey: a,
|
|
53
|
+
defaultPolygons: c,
|
|
54
|
+
onPolygonsApply: h,
|
|
55
|
+
onLassoControlsStateUpdate: m
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
t.fixed && /* @__PURE__ */ e.jsx("rect", { width: r.chartWidth, height: r.chartHeight, fill: "rgba(255,255,255,0.8)" })
|
|
54
59
|
] }) : null;
|
|
55
60
|
}
|
|
56
61
|
export {
|
|
57
|
-
|
|
62
|
+
u as default
|
|
58
63
|
};
|
|
59
64
|
//# sourceMappingURL=UpperSVG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UpperSVG.js","sources":["../../../src/scatterplot-umap/components/UpperSVG.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {Lasso} from './Lasso';\nimport type {AesGetters} from '../types';\nimport type {ChartScales, ChartSizes, DotInfo
|
|
1
|
+
{"version":3,"file":"UpperSVG.js","sources":["../../../src/scatterplot-umap/components/UpperSVG.tsx"],"sourcesContent":["import type {TooltipsData} from '../../common/Tooltip';\nimport {Lasso} from './Lasso';\nimport type {AesGetters, LassoControlsState, Polygon} from '../types';\nimport type {ChartScales, ChartSizes, DotInfo} from '../types';\nimport type {Label} from '../../scatterplot/utils/getVisibleLabels';\nimport React from 'react';\n\nfunction UpperSVG({\n scales,\n container,\n labels,\n aesGetters,\n chartSizes,\n zoomStateKey,\n defaultPolygons,\n onPolygonUpdate,\n onLassoControlsStateUpdate,\n tooltipData\n}: {\n scales: ChartScales;\n container: SVGElement | null;\n aesGetters: AesGetters;\n labels: Label[];\n chartSizes: ChartSizes;\n zoomStateKey: string;\n defaultPolygons: Polygon[];\n onLassoControlsStateUpdate: (v:LassoControlsState) => void;\n onPolygonUpdate: (data:Polygon[]) => void;\n tooltipData: TooltipsData<DotInfo>;\n selectedDot?: DotInfo | null;\n}) {\n if (!container) {\n return null;\n }\n\n return (\n <g>\n {labels.map(label => {\n const {name, height, bbox, width} = label;\n return (\n <g key={label.dot.id}>\n <g transform={`translate(${bbox.minX},${bbox.minY})`}>\n <rect x=\"0\" y=\"0\" width={width} height={height} fill=\"transparent\" stroke=\"none\" />\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 </g>\n );\n })}\n {tooltipData.selectedData && (\n <circle\n cx={scales.x(tooltipData.selectedData.x)}\n cy={scales.y(tooltipData.selectedData.y)}\n r={Math.max(aesGetters.dotSize(tooltipData.selectedData.data) * 1.2, 5)}\n fill={aesGetters.dotFill(tooltipData.selectedData.data)}\n style={{pointerEvents: 'none'}}\n />\n )}\n <Lasso\n scales={scales}\n chartSizes={chartSizes}\n zoomStateKey={zoomStateKey}\n defaultPolygons={defaultPolygons}\n onPolygonsApply={onPolygonUpdate}\n onLassoControlsStateUpdate={onLassoControlsStateUpdate}\n />\n {tooltipData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255,255,255,0.8)\"/>}\n </g>\n );\n}\n\nexport default UpperSVG;\n"],"names":["UpperSVG","scales","container","labels","aesGetters","chartSizes","zoomStateKey","defaultPolygons","onPolygonUpdate","onLassoControlsStateUpdate","tooltipData","label","name","height","bbox","width","jsx","jsxs","Lasso"],"mappings":";;AAOA,SAASA,EAAS;AAAA,EACd,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,4BAAAC;AAAA,EACA,aAAAC;AACJ,GAYG;AACC,SAAKR,2BAKA,KAAA,EACI,UAAA;AAAA,IAAAC,EAAO,IAAI,CAAAQ,MAAS;AACjB,YAAM,EAAC,MAAAC,GAAM,QAAAC,GAAQ,MAAAC,GAAM,OAAAC,MAASJ;AACpC,aACIK,gBAAAA,EAAAA,IAAC,KAAA,EACG,UAAAC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaH,EAAK,IAAI,IAAIA,EAAK,IAAI,KAC7C,UAAA;AAAA,QAAAE,gBAAAA,EAAAA,IAAC,QAAA,EAAK,GAAE,KAAI,GAAE,KAAI,OAAAD,GAAc,QAAAF,GAAgB,MAAK,eAAc,QAAO,OAAA,CAAO;AAAA,QACjFG,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,GAAG;AAAA,YACH,GAAGH,IAAS;AAAA,YACZ,QAAO;AAAA,YACP,aAAa;AAAA,YACb,YAAW;AAAA,YACX,OAAO,EAAC,eAAe,OAAA;AAAA,YACvB,YAAW;AAAA,YACX,UAAS;AAAA,YACT,kBAAiB;AAAA,YAEhB,UAAAD;AAAA,UAAA;AAAA,QAAA;AAAA,MACL,EAAA,CACJ,EAAA,GAhBID,EAAM,IAAI,EAiBlB;AAAA,IAER,CAAC;AAAA,IACAD,EAAY,gBACTM,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,IAAIf,EAAO,EAAES,EAAY,aAAa,CAAC;AAAA,QACvC,IAAIT,EAAO,EAAES,EAAY,aAAa,CAAC;AAAA,QACvC,GAAG,KAAK,IAAIN,EAAW,QAAQM,EAAY,aAAa,IAAI,IAAI,KAAK,CAAC;AAAA,QACtE,MAAMN,EAAW,QAAQM,EAAY,aAAa,IAAI;AAAA,QACtD,OAAO,EAAC,eAAe,OAAA;AAAA,MAAM;AAAA,IAAA;AAAA,IAGrCM,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,QAAAjB;AAAA,QACA,YAAAI;AAAA,QACA,cAAAC;AAAA,QACA,iBAAAC;AAAA,QACA,iBAAiBC;AAAA,QACjB,4BAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEHC,EAAY,SAASM,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOX,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,wBAAA,CAAuB;AAAA,EAAA,GAC1H,IA9CO;AAgDf;"}
|
|
@@ -9,4 +9,10 @@ export declare const DEFAULT_TICKS_SIZE = 4;
|
|
|
9
9
|
export declare const TICK_OFFSET = 6;
|
|
10
10
|
export declare const MIN_PADDING = 12;
|
|
11
11
|
export declare const LEGEND_OFFSET = 24;
|
|
12
|
+
export declare const SCATTERPLOT_LASSO_EVENTS: {
|
|
13
|
+
delete: string;
|
|
14
|
+
selectMode: string;
|
|
15
|
+
back: string;
|
|
16
|
+
forward: string;
|
|
17
|
+
};
|
|
12
18
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,aAAa,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,eAAO,MAAM,wBAAwB;;;;;CAKpC,CAAC"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
const
|
|
1
|
+
const E = {
|
|
2
2
|
TOP: 30,
|
|
3
3
|
BOTTOM: 30,
|
|
4
4
|
LEFT: 30,
|
|
5
5
|
RIGHT: 30
|
|
6
|
-
},
|
|
6
|
+
}, S = 20, T = 4, L = 24, O = {
|
|
7
|
+
delete: "LASSO_DELETE",
|
|
8
|
+
selectMode: "LASSO_SELECT_MODE",
|
|
9
|
+
back: "LASSO_BACK",
|
|
10
|
+
forward: "LASSO_FORWARD"
|
|
11
|
+
};
|
|
7
12
|
export {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
T as DEFAULT_TICKS_SIZE,
|
|
14
|
+
L as LEGEND_OFFSET,
|
|
15
|
+
E as PADDINGS,
|
|
16
|
+
O as SCATTERPLOT_LASSO_EVENTS,
|
|
17
|
+
S as TITLE_LINE
|
|
12
18
|
};
|
|
13
19
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/scatterplot-umap/constants.ts"],"sourcesContent":["// inner paddings in chart area\nexport const PADDINGS = {\n TOP: 30,\n BOTTOM: 30,\n LEFT: 30,\n RIGHT: 30\n};\n\nexport const TITLE_LINE = 20;\nexport const DEFAULT_TICKS_SIZE = 4;\nexport const TICK_OFFSET = 6;\nexport const MIN_PADDING = 12;\n\nexport const LEGEND_OFFSET = 24;\n\n"],"names":["PADDINGS","TITLE_LINE","DEFAULT_TICKS_SIZE","LEGEND_OFFSET"],"mappings":"AACO,MAAMA,IAAW;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACX,GAEaC,IAAa,IACbC,IAAqB,GAIrBC,IAAgB;"}
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/scatterplot-umap/constants.ts"],"sourcesContent":["// inner paddings in chart area\nexport const PADDINGS = {\n TOP: 30,\n BOTTOM: 30,\n LEFT: 30,\n RIGHT: 30\n};\n\nexport const TITLE_LINE = 20;\nexport const DEFAULT_TICKS_SIZE = 4;\nexport const TICK_OFFSET = 6;\nexport const MIN_PADDING = 12;\n\nexport const LEGEND_OFFSET = 24;\n\nexport const SCATTERPLOT_LASSO_EVENTS = {\n delete: 'LASSO_DELETE',\n selectMode: 'LASSO_SELECT_MODE',\n back: 'LASSO_BACK',\n forward: 'LASSO_FORWARD'\n};\n"],"names":["PADDINGS","TITLE_LINE","DEFAULT_TICKS_SIZE","LEGEND_OFFSET","SCATTERPLOT_LASSO_EVENTS"],"mappings":"AACO,MAAMA,IAAW;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACX,GAEaC,IAAa,IACbC,IAAqB,GAIrBC,IAAgB,IAEhBC,IAA2B;AAAA,EACpC,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AACb;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AbstractChart } from '../AbstractChart';
|
|
2
|
-
import { Dot, DotsExtents } from './types';
|
|
2
|
+
import { LassoControlsState, Polygon, Dot, DotsExtents } from './types';
|
|
3
3
|
import { Label } from '../scatterplot/utils/getVisibleLabels';
|
|
4
4
|
import { ScatterplotEventHandlers } from '../types';
|
|
5
5
|
import { ScatterplotUmapLegendInfo, ScatterplotUmapSettings } from '../types/scatterplot-umap';
|
|
@@ -9,8 +9,9 @@ import { DataFrame } from '../DataFrame';
|
|
|
9
9
|
export declare class ChartScatterplotUmap extends AbstractChart {
|
|
10
10
|
settings: ScatterplotUmapSettingsImpl;
|
|
11
11
|
chartRenderer: ChartRenderer;
|
|
12
|
-
onPolygonUpdate: (data: number[]) => void;
|
|
12
|
+
onPolygonUpdate: (data: number[], polygons: Polygon[]) => void;
|
|
13
13
|
onTooltipHintSwitch: (v: boolean) => void;
|
|
14
|
+
onLassoControlsStateUpdate: (v: LassoControlsState) => void;
|
|
14
15
|
calculatedData: {
|
|
15
16
|
onlyPositive: {
|
|
16
17
|
x: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAC,GAAG,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,uCAAuC,CAAC;AAEjE,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAEvD,OAAO,KAAK,EAAC,yBAAyB,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAElG,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,2BAA2B,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,qBAAa,oBAAqB,SAAQ,aAAa;IACnD,QAAQ,EAAE,2BAA2B,CAAC;IACtC,aAAa,gBAAuB;IAEpC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAmB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAG/C,OAAO,KAAK,EAAC,kBAAkB,EAAa,OAAO,EAAC,MAAM,SAAS,CAAC;AACpE,OAAO,KAAK,EAAC,GAAG,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,uCAAuC,CAAC;AAEjE,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,UAAU,CAAC;AAEvD,OAAO,KAAK,EAAC,yBAAyB,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAElG,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,2BAA2B,EAAC,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAgC5C,qBAAa,oBAAqB,SAAQ,aAAa;IACnD,QAAQ,EAAE,2BAA2B,CAAC;IACtC,aAAa,gBAAuB;IAEpC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAmB;IACjF,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,0BAA0B,EAAE,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAmB;IAE9E,cAAc,EAAE;QACZ,YAAY,EAAE;YAAC,CAAC,EAAE,OAAO,CAAC;YAAC,CAAC,EAAE,OAAO,CAAA;SAAC,CAAC;QACvC,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,iBAAiB,EAAE,KAAK,EAAE,CAAC;QAC3B,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,EAAE,yBAAyB,CAAA;KAC1C,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,uBAAuB,EAAE,aAAa,CAAC,EAAE,wBAAwB;IAWxG,KAAK,CAAC,IAAI,EAAE,WAAW;IAYvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,uBAAuB;IA8BxE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IA8B9C,MAAM,IAAI,MAAM;IAOhB,mCAAmC,CAAC,YAAY,EAAE,2BAA2B,EAAE,QAAQ,EAAE,2BAA2B;IAQpH,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA8FX,gBAAgB;IA0BhB,YAAY;CAsBf"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var y = (l, d,
|
|
4
|
-
import { AbstractChart as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
|
|
1
|
+
var U = Object.defineProperty;
|
|
2
|
+
var w = (l, d, e) => d in l ? U(l, d, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[d] = e;
|
|
3
|
+
var y = (l, d, e) => w(l, typeof d != "symbol" ? d + "" : d, e);
|
|
4
|
+
import { AbstractChart as T } from "../AbstractChart.js";
|
|
5
|
+
import { SCATTERPLOT_LASSO_EVENTS as m } from "./constants.js";
|
|
6
|
+
import { createLegendInfo as B, addPalettesToAesMapping as R } from "../scatterplot/utils/createLegendInfo.js";
|
|
7
|
+
import { TextMeasurer as I } from "../utils/TextMeasurer.js";
|
|
8
|
+
import M from "./ChartRenderer.js";
|
|
9
|
+
import { ScatterplotUmapSettingsImpl as _ } from "./SettingsImpl.js";
|
|
10
|
+
function X(l) {
|
|
10
11
|
return typeof l == "object" && "type" in l && l.type === "grouping";
|
|
11
12
|
}
|
|
12
|
-
const
|
|
13
|
-
function
|
|
14
|
-
const d = [],
|
|
13
|
+
const Y = 10;
|
|
14
|
+
function O(l) {
|
|
15
|
+
const d = [], e = new I("16px Manrope");
|
|
15
16
|
for (const a of l) {
|
|
16
|
-
const
|
|
17
|
-
if (!
|
|
17
|
+
const t = a.label;
|
|
18
|
+
if (!t)
|
|
18
19
|
continue;
|
|
19
|
-
const n =
|
|
20
|
+
const n = e.getTextMetrics(String(t));
|
|
20
21
|
d.push({
|
|
21
|
-
name: String(
|
|
22
|
+
name: String(t),
|
|
22
23
|
width: (n == null ? void 0 : n.width) ?? 0,
|
|
23
24
|
height: ((n == null ? void 0 : n.actualBoundingBoxAscent) ?? 0) + ((n == null ? void 0 : n.actualBoundingBoxDescent) ?? 0),
|
|
24
25
|
x: 0,
|
|
@@ -27,27 +28,29 @@ function j(l) {
|
|
|
27
28
|
yPosition: "middle",
|
|
28
29
|
bbox: { minX: 0, maxX: 0, minY: 0, maxY: 0 },
|
|
29
30
|
dot: a,
|
|
30
|
-
padding:
|
|
31
|
+
padding: Y
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
34
|
return d;
|
|
34
35
|
}
|
|
35
|
-
class
|
|
36
|
-
constructor(
|
|
37
|
-
super(
|
|
36
|
+
class H extends T {
|
|
37
|
+
constructor(e, a, t) {
|
|
38
|
+
super(e, a);
|
|
38
39
|
y(this, "settings");
|
|
39
|
-
y(this, "chartRenderer", new
|
|
40
|
+
y(this, "chartRenderer", new M());
|
|
40
41
|
y(this, "onPolygonUpdate", () => {
|
|
41
42
|
});
|
|
42
43
|
// dots indexes from input data
|
|
43
44
|
y(this, "onTooltipHintSwitch", () => {
|
|
44
45
|
});
|
|
46
|
+
y(this, "onLassoControlsStateUpdate", () => {
|
|
47
|
+
});
|
|
45
48
|
y(this, "calculatedData", null);
|
|
46
|
-
this.settings = new
|
|
49
|
+
this.settings = new _(a), t && (this.onPolygonUpdate = t.onPolygonUpdate, this.onTooltipHintSwitch = t.onTooltipHintSwitch, this.onLassoControlsStateUpdate = t.onLassoControlsStateUpdate);
|
|
47
50
|
}
|
|
48
|
-
mount(
|
|
51
|
+
mount(e) {
|
|
49
52
|
try {
|
|
50
|
-
this.chartRenderer.init(
|
|
53
|
+
this.chartRenderer.init(e), this._updateData(), this._updateChart();
|
|
51
54
|
} catch (a) {
|
|
52
55
|
a instanceof Error && this.chartRenderer.renderError(a.message);
|
|
53
56
|
}
|
|
@@ -55,38 +58,53 @@ class k extends R {
|
|
|
55
58
|
unmount() {
|
|
56
59
|
this.chartRenderer.clear();
|
|
57
60
|
}
|
|
58
|
-
updateSettingsAndData(
|
|
61
|
+
updateSettingsAndData(e, a) {
|
|
59
62
|
try {
|
|
60
|
-
const
|
|
61
|
-
this.settings = new
|
|
62
|
-
const s =
|
|
63
|
+
const t = this.settings, n = this.data;
|
|
64
|
+
this.settings = new _(a), this.data = e, this._needUpdateCalculatedDataBySettings(t, this.settings) || this._needUpdateCalculatedDataByData(n, this.data) ? this._updateData() : this._updateAesInData();
|
|
65
|
+
const s = t.layers.find((u) => u.type === "dots"), i = this.settings.layers.find((u) => u.type === "dots");
|
|
63
66
|
s && i && s.aes.dotSize !== i.aes.dotSize && typeof s.aes.dotSize == "number" && typeof i.aes.dotSize == "number" && this.chartRenderer.updatePointSize(), this._updateChart();
|
|
64
|
-
} catch (
|
|
65
|
-
|
|
67
|
+
} catch (t) {
|
|
68
|
+
t instanceof Error && this.chartRenderer.renderError(t.message);
|
|
66
69
|
}
|
|
67
70
|
}
|
|
68
|
-
updateChartState(
|
|
69
|
-
|
|
71
|
+
updateChartState(e, a) {
|
|
72
|
+
if (e === "polygon" && (this.chartRenderer.polygons = a, this._updateChart()), e === m.delete && document) {
|
|
73
|
+
const t = new CustomEvent(m.delete);
|
|
74
|
+
document.dispatchEvent(t);
|
|
75
|
+
}
|
|
76
|
+
if (e === m.selectMode && document) {
|
|
77
|
+
const t = new CustomEvent(m.selectMode, { detail: a });
|
|
78
|
+
document.dispatchEvent(t);
|
|
79
|
+
}
|
|
80
|
+
if (e === m.forward && document) {
|
|
81
|
+
const t = new CustomEvent(m.forward);
|
|
82
|
+
document.dispatchEvent(t);
|
|
83
|
+
}
|
|
84
|
+
if (e === m.back && document) {
|
|
85
|
+
const t = new CustomEvent(m.back);
|
|
86
|
+
document.dispatchEvent(t);
|
|
87
|
+
}
|
|
70
88
|
}
|
|
71
89
|
export() {
|
|
72
90
|
return console.warn("export not implemented"), "";
|
|
73
91
|
}
|
|
74
|
-
_needUpdateCalculatedDataBySettings(
|
|
75
|
-
var
|
|
76
|
-
return
|
|
92
|
+
_needUpdateCalculatedDataBySettings(e, a) {
|
|
93
|
+
var t, n, s, i;
|
|
94
|
+
return e.grouping.length !== a.grouping.length || e.grouping.some((u, c) => {
|
|
77
95
|
var o;
|
|
78
96
|
return u.value !== ((o = a.grouping[c]) == null ? void 0 : o.value);
|
|
79
|
-
}) || (((
|
|
97
|
+
}) || (((t = e.label) == null ? void 0 : t.value) || ((n = a.label) == null ? void 0 : n.value)) && ((s = e.label) == null ? void 0 : s.value) !== ((i = a.label) == null ? void 0 : i.value);
|
|
80
98
|
}
|
|
81
|
-
_needUpdateCalculatedDataByData(
|
|
82
|
-
const
|
|
83
|
-
return
|
|
99
|
+
_needUpdateCalculatedDataByData(e, a) {
|
|
100
|
+
const t = Object.keys(e.data), n = Object.keys(a.data);
|
|
101
|
+
return e.id !== a.id || t.length !== n.length || t.some((s) => {
|
|
84
102
|
var i;
|
|
85
|
-
return
|
|
103
|
+
return e.data[s].length !== ((i = a.data[s]) == null ? void 0 : i.length);
|
|
86
104
|
});
|
|
87
105
|
}
|
|
88
106
|
_updateData() {
|
|
89
|
-
const { x:
|
|
107
|
+
const { x: e, y: a, label: t, highlight: n, grouping: s, layers: i, inheritedAes: u } = this.settings, c = {
|
|
90
108
|
x: !0,
|
|
91
109
|
y: !0
|
|
92
110
|
}, o = {
|
|
@@ -94,64 +112,64 @@ class k extends R {
|
|
|
94
112
|
maxX: -1 / 0,
|
|
95
113
|
minY: 1 / 0,
|
|
96
114
|
maxY: -1 / 0
|
|
97
|
-
}, f = i.some((h) => h.type === "curve"),
|
|
98
|
-
if (r[
|
|
115
|
+
}, f = i.some((h) => h.type === "curve"), D = /* @__PURE__ */ new Set(), b = {}, v = this.data.rows.reduce((h, r, x) => {
|
|
116
|
+
if (r[e.value] === null || r[a.value] === null)
|
|
99
117
|
return h;
|
|
100
|
-
const p = Number(r[
|
|
118
|
+
const p = Number(r[e.value]), g = Number(r[a.value]);
|
|
101
119
|
c.x && p !== null && p < 0 && (c.x = !1), c.y && g !== null && g < 0 && (c.y = !1), p !== null && p < o.minX && (o.minX = p), p !== null && p > o.maxX && (o.maxX = p), g !== null && g < o.minY && (o.minY = g), g !== null && g > o.maxY && (o.maxY = g);
|
|
102
|
-
const
|
|
120
|
+
const C = (t == null ? void 0 : t.valueLabels) ?? (t == null ? void 0 : t.value), L = {
|
|
103
121
|
x: p,
|
|
104
122
|
y: g,
|
|
105
|
-
id: String(
|
|
106
|
-
idx:
|
|
123
|
+
id: String(x),
|
|
124
|
+
idx: x,
|
|
107
125
|
dimmed: n ? !r[n.value] : !1,
|
|
108
|
-
label:
|
|
126
|
+
label: C && r[C] ? String(r[C]) : null,
|
|
109
127
|
data: r
|
|
110
128
|
};
|
|
111
129
|
if (f) {
|
|
112
|
-
const
|
|
113
|
-
|
|
130
|
+
const S = s.map((P) => r[P.value]).join("_");
|
|
131
|
+
D.add(S), b[S] || (b[S] = []), b[S].push(L);
|
|
114
132
|
}
|
|
115
|
-
return h.push(
|
|
133
|
+
return h.push(L), h;
|
|
116
134
|
}, []);
|
|
117
|
-
n &&
|
|
118
|
-
const
|
|
119
|
-
f &&
|
|
120
|
-
|
|
135
|
+
n && v.sort((h, r) => Number(r.dimmed) - Number(h.dimmed));
|
|
136
|
+
const E = [...D];
|
|
137
|
+
f && E.forEach((h) => {
|
|
138
|
+
b[h].sort((r, x) => r.x - x.x);
|
|
121
139
|
});
|
|
122
|
-
const A =
|
|
140
|
+
const A = B(this.data, s, i, u);
|
|
123
141
|
this.calculatedData = {
|
|
124
142
|
onlyPositive: c,
|
|
125
|
-
dots:
|
|
126
|
-
dotsByGrouping:
|
|
127
|
-
groupingKeys:
|
|
128
|
-
allPossibleLabels:
|
|
143
|
+
dots: v,
|
|
144
|
+
dotsByGrouping: b,
|
|
145
|
+
groupingKeys: E,
|
|
146
|
+
allPossibleLabels: O(v),
|
|
129
147
|
dotsExtents: o,
|
|
130
148
|
legendLabels: A
|
|
131
|
-
}, this.chartRenderer.updateData(
|
|
149
|
+
}, this.chartRenderer.updateData(v);
|
|
132
150
|
}
|
|
133
151
|
_updateAesInData() {
|
|
134
|
-
const
|
|
135
|
-
if (!
|
|
152
|
+
const e = this.calculatedData;
|
|
153
|
+
if (!e)
|
|
136
154
|
return;
|
|
137
|
-
const { layers: a, inheritedAes:
|
|
155
|
+
const { layers: a, inheritedAes: t, grouping: n } = this.settings;
|
|
138
156
|
n.forEach((s) => {
|
|
139
157
|
const i = /* @__PURE__ */ new Set(), u = {};
|
|
140
158
|
a.forEach((c) => {
|
|
141
159
|
c.aes && Object.entries(c.aes).forEach(([o, f]) => {
|
|
142
|
-
|
|
160
|
+
X(f) && f.value === s.value && (i.add(o), f.palette && (u[o] = f.palette));
|
|
143
161
|
});
|
|
144
|
-
}),
|
|
162
|
+
}), e.legendLabels[s.value].usedAes = [...i], e.legendLabels[s.value].aesMap = R(e.legendLabels[s.value].values, u, t[s.value]);
|
|
145
163
|
});
|
|
146
164
|
}
|
|
147
165
|
_updateChart() {
|
|
148
166
|
if (!this.calculatedData)
|
|
149
167
|
return;
|
|
150
|
-
const { id:
|
|
168
|
+
const { id: e, chartSettings: a, keyColumn: t, layers: n, grouping: s } = this.settings;
|
|
151
169
|
this.chartRenderer.render(
|
|
152
|
-
t,
|
|
153
|
-
a,
|
|
154
170
|
e,
|
|
171
|
+
a,
|
|
172
|
+
t,
|
|
155
173
|
this.calculatedData.onlyPositive,
|
|
156
174
|
this.calculatedData.dots,
|
|
157
175
|
this.calculatedData.dotsExtents,
|
|
@@ -161,12 +179,12 @@ class k extends R {
|
|
|
161
179
|
s,
|
|
162
180
|
this.calculatedData.allPossibleLabels,
|
|
163
181
|
this.onPolygonUpdate,
|
|
164
|
-
|
|
165
|
-
this.
|
|
182
|
+
this.onTooltipHintSwitch,
|
|
183
|
+
this.onLassoControlsStateUpdate
|
|
166
184
|
);
|
|
167
185
|
}
|
|
168
186
|
}
|
|
169
187
|
export {
|
|
170
|
-
|
|
188
|
+
H as ChartScatterplotUmap
|
|
171
189
|
};
|
|
172
190
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/scatterplot-umap/index.ts"],"sourcesContent":["import {AbstractChart} from '../AbstractChart';\nimport {addPalettesToAesMapping, createLegendInfo} from '../scatterplot/utils/createLegendInfo';\nimport type {Point} from './types';\nimport type {Dot, DotsExtents} from './types';\nimport type {Label} from '../scatterplot/utils/getVisibleLabels';\nimport type {ContinuousAesFromColumn, InheritAesScatterplot} from '../types';\nimport type {ScatterplotEventHandlers} from '../types';\nimport type {AesItem} from '../types';\nimport type {ScatterplotUmapLegendInfo, ScatterplotUmapSettings} from '../types/scatterplot-umap';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport ChartRenderer from './ChartRenderer';\nimport type {DotsLayer} from './SettingsImpl';\nimport {ScatterplotUmapSettingsImpl} from './SettingsImpl';\nimport type {DataFrame} from '../DataFrame';\n\nfunction isInheritMapping<T extends (string | number)>(value:T | InheritAesScatterplot | ContinuousAesFromColumn<T>):value is InheritAesScatterplot {\n return typeof value === 'object' && 'type' in value && value.type === 'grouping';\n}\n\nconst LABEL_OFFSET = 10;\nfunction getAllPossibleLabels(dots: Dot[]) {\n const labels: Label[] = [];\n const textMeasurer = new TextMeasurer('16px Manrope');\n for (const dot of dots) {\n const text = dot.label;\n if (!text) {\n continue;\n }\n const metrics = textMeasurer.getTextMetrics(String(text));\n labels.push({\n name: String(text),\n width: metrics?.width ?? 0,\n height: (metrics?.actualBoundingBoxAscent ?? 0) + (metrics?.actualBoundingBoxDescent ?? 0),\n x: 0,\n y: 0,\n xPosition: 'right',\n yPosition: 'middle',\n bbox: {minX: 0, maxX: 0, minY: 0, maxY: 0},\n dot,\n padding: LABEL_OFFSET,\n } as Label);\n }\n return labels;\n}\n\nexport class ChartScatterplotUmap extends AbstractChart {\n settings: ScatterplotUmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onPolygonUpdate: (data: number[]) => void = () => undefined; // dots indexes from input data\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n\n calculatedData: {\n onlyPositive: {x: boolean; y: boolean};\n dots: Dot[],\n groupingKeys: string[],\n dotsByGrouping: Record<string, Dot[]>,\n allPossibleLabels: Label[],\n dotsExtents: DotsExtents,\n legendLabels: ScatterplotUmapLegendInfo\n } | null = null;\n\n constructor(data: DataFrame, settings: ScatterplotUmapSettings, eventHandlers?: ScatterplotEventHandlers) {\n super(data, settings);\n\n this.settings = new ScatterplotUmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onPolygonUpdate = eventHandlers[0];\n this.onTooltipHintSwitch = eventHandlers[1];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: ScatterplotUmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new ScatterplotUmapSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n\n // for some reason it's not enough for size updating to do like with fillColor\n const prevLayer = previousSettings.layers.find(l => l.type === 'dots') as DotsLayer;\n const currentLayer = this.settings.layers.find(l => l.type === 'dots') as DotsLayer;\n if (prevLayer && currentLayer && prevLayer.aes.dotSize !== currentLayer.aes.dotSize\n && typeof prevLayer.aes.dotSize === 'number' && typeof currentLayer.aes.dotSize === 'number') {\n this.chartRenderer.updatePointSize();\n }\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n updateChartState(field: string, value: unknown) {\n if (field === 'polygon') {\n this.chartRenderer.polygon = value as Point[];\n this._updateChart();\n }\n }\n\n export(): string {\n console.warn('export not implemented');\n return '';\n // this._updateChart();\n // return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: ScatterplotUmapSettingsImpl, settings: ScatterplotUmapSettingsImpl) {\n return (\n prevSettings.grouping.length !== settings.grouping.length ||\n prevSettings.grouping.some((el, idx) => el.value !== settings.grouping[idx]?.value) ||\n (prevSettings.label?.value || settings.label?.value) && prevSettings.label?.value !== settings.label?.value\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {x, y, label, highlight, grouping, layers, inheritedAes} = this.settings;\n\n const onlyPositive = {\n x: true,\n y: true,\n };\n const dotsExtents = {\n minX: Infinity,\n maxX: -Infinity,\n minY: Infinity,\n maxY: -Infinity,\n };\n\n const hasCurve = layers.some(layer => layer.type === 'curve');\n const groupingKeysSet = new Set<string>();\n const dotsByGrouping:Record<string, Dot[]> = {};\n\n const dots = this.data.rows.reduce((res:Dot[], row, idx) => {\n if (row[x.value] === null || row[y.value] === null) {\n return res;\n }\n const xv = Number(row[x.value]);\n const yv = Number(row[y.value]);\n if (onlyPositive.x && xv !== null && xv < 0) {\n onlyPositive.x = false;\n }\n if (onlyPositive.y && yv !== null && yv < 0) {\n onlyPositive.y = false;\n }\n if (xv !== null && xv < dotsExtents.minX) {\n dotsExtents.minX = xv;\n }\n if (xv !== null && xv > dotsExtents.maxX) {\n dotsExtents.maxX = xv;\n }\n if (yv !== null && yv < dotsExtents.minY) {\n dotsExtents.minY = yv;\n }\n if (yv !== null && yv > dotsExtents.maxY) {\n dotsExtents.maxY = yv;\n }\n const labelKey = label?.valueLabels ?? label?.value;\n const dot = {\n x: xv,\n y: yv,\n id: String(idx),\n idx: idx,\n dimmed: highlight ? !row[highlight.value] : false,\n label: labelKey && row[labelKey] ? String(row[labelKey]) : null,\n data: row\n };\n if (hasCurve) {\n const groupingKey = grouping.map(column => row[column.value]).join('_');\n groupingKeysSet.add(groupingKey);\n if (!dotsByGrouping[groupingKey]) {\n dotsByGrouping[groupingKey] = [];\n }\n dotsByGrouping[groupingKey].push(dot);\n\n }\n res.push(dot);\n return res;\n }, []);\n\n if (highlight) {\n dots.sort((d1, d2) => {\n return Number(d2.dimmed) - Number(d1.dimmed);\n });\n }\n // console.info('only positive Y:', onlyPositive.y);\n // console.info('only positive X:', onlyPositive.x);\n\n const groupingKeys = [...groupingKeysSet];\n if (hasCurve) {\n groupingKeys.forEach(key => {\n dotsByGrouping[key].sort((a, b) => a.x - b.x);\n });\n }\n const legendLabels = createLegendInfo(this.data, grouping, layers, inheritedAes);\n\n this.calculatedData = {\n onlyPositive,\n dots,\n dotsByGrouping,\n groupingKeys,\n allPossibleLabels: getAllPossibleLabels(dots),\n dotsExtents,\n legendLabels,\n };\n\n this.chartRenderer.updateData(dots);\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {layers, inheritedAes, grouping} = this.settings;\n grouping.forEach(column => {\n const usedAes = new Set<keyof AesItem>();\n const usedAesFromPalettes:Partial<Record<keyof AesItem, string[]>> = {}; // if there is palette in mapping then\n layers.forEach(layer => {\n if (layer.aes) {\n Object.entries(layer.aes).forEach(([key, value]) => {\n if (isInheritMapping(value) && value.value === column.value) {\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n }\n });\n }\n });\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(calculated.legendLabels[column.value].values, usedAesFromPalettes, inheritedAes[column.value]);\n });\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, keyColumn, layers, grouping, lassoMode} = this.settings;\n this.chartRenderer.render(\n id,\n chartSettings,\n keyColumn,\n this.calculatedData.onlyPositive,\n this.calculatedData.dots,\n this.calculatedData.dotsExtents,\n this.calculatedData.dotsByGrouping,\n layers,\n this.calculatedData.legendLabels,\n grouping,\n this.calculatedData.allPossibleLabels,\n this.onPolygonUpdate,\n lassoMode,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["isInheritMapping","value","LABEL_OFFSET","getAllPossibleLabels","dots","labels","textMeasurer","TextMeasurer","dot","text","metrics","ChartScatterplotUmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","ScatterplotUmapSettingsImpl","node","err","previousSettings","previousData","prevLayer","l","currentLayer","field","prevSettings","el","idx","_a","_b","_c","_d","prevData","prevKeys","keys","key","x","y","label","highlight","grouping","layers","inheritedAes","onlyPositive","dotsExtents","hasCurve","layer","groupingKeysSet","dotsByGrouping","res","row","xv","yv","labelKey","groupingKey","column","d1","d2","groupingKeys","a","legendLabels","createLegendInfo","calculated","usedAes","usedAesFromPalettes","addPalettesToAesMapping","id","chartSettings","keyColumn","lassoMode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/scatterplot-umap/index.ts"],"sourcesContent":["import {AbstractChart} from '../AbstractChart';\nimport {SCATTERPLOT_LASSO_EVENTS} from './constants';\nimport {addPalettesToAesMapping, createLegendInfo} from '../scatterplot/utils/createLegendInfo';\nimport type {LassoControlsState, LassoMode, Polygon} from './types';\nimport type {Dot, DotsExtents} from './types';\nimport type {Label} from '../scatterplot/utils/getVisibleLabels';\nimport type {ContinuousAesFromColumn, InheritAesScatterplot} from '../types';\nimport type {ScatterplotEventHandlers} from '../types';\nimport type {AesItem} from '../types';\nimport type {ScatterplotUmapLegendInfo, ScatterplotUmapSettings} from '../types/scatterplot-umap';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport ChartRenderer from './ChartRenderer';\nimport type {DotsLayer} from './SettingsImpl';\nimport {ScatterplotUmapSettingsImpl} from './SettingsImpl';\nimport type {DataFrame} from '../DataFrame';\n\nfunction isInheritMapping<T extends (string | number)>(value:T | InheritAesScatterplot | ContinuousAesFromColumn<T>):value is InheritAesScatterplot {\n return typeof value === 'object' && 'type' in value && value.type === 'grouping';\n}\n\nconst LABEL_OFFSET = 10;\nfunction getAllPossibleLabels(dots: Dot[]) {\n const labels: Label[] = [];\n const textMeasurer = new TextMeasurer('16px Manrope');\n for (const dot of dots) {\n const text = dot.label;\n if (!text) {\n continue;\n }\n const metrics = textMeasurer.getTextMetrics(String(text));\n labels.push({\n name: String(text),\n width: metrics?.width ?? 0,\n height: (metrics?.actualBoundingBoxAscent ?? 0) + (metrics?.actualBoundingBoxDescent ?? 0),\n x: 0,\n y: 0,\n xPosition: 'right',\n yPosition: 'middle',\n bbox: {minX: 0, maxX: 0, minY: 0, maxY: 0},\n dot,\n padding: LABEL_OFFSET,\n } as Label);\n }\n return labels;\n}\n\nexport class ChartScatterplotUmap extends AbstractChart {\n settings: ScatterplotUmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onPolygonUpdate: (data: number[], polygons: Polygon[]) => void = () => undefined; // dots indexes from input data\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n onLassoControlsStateUpdate: (v: LassoControlsState) => void = () => undefined;\n\n calculatedData: {\n onlyPositive: {x: boolean; y: boolean};\n dots: Dot[],\n groupingKeys: string[],\n dotsByGrouping: Record<string, Dot[]>,\n allPossibleLabels: Label[],\n dotsExtents: DotsExtents,\n legendLabels: ScatterplotUmapLegendInfo\n } | null = null;\n\n constructor(data: DataFrame, settings: ScatterplotUmapSettings, eventHandlers?: ScatterplotEventHandlers) {\n super(data, settings);\n\n this.settings = new ScatterplotUmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onPolygonUpdate = eventHandlers.onPolygonUpdate;\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch;\n this.onLassoControlsStateUpdate = eventHandlers.onLassoControlsStateUpdate;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: ScatterplotUmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new ScatterplotUmapSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n\n // for some reason it's not enough for size updating to do like with fillColor\n const prevLayer = previousSettings.layers.find(l => l.type === 'dots') as DotsLayer;\n const currentLayer = this.settings.layers.find(l => l.type === 'dots') as DotsLayer;\n if (prevLayer && currentLayer && prevLayer.aes.dotSize !== currentLayer.aes.dotSize\n && typeof prevLayer.aes.dotSize === 'number' && typeof currentLayer.aes.dotSize === 'number') {\n this.chartRenderer.updatePointSize();\n }\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n updateChartState(field: string, value: unknown) {\n if (field === 'polygon') {\n this.chartRenderer.polygons = value as Polygon[];\n this._updateChart();\n }\n if (field === SCATTERPLOT_LASSO_EVENTS.delete) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_LASSO_EVENTS.delete);\n document.dispatchEvent(event);\n }}\n if (field === SCATTERPLOT_LASSO_EVENTS.selectMode) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_LASSO_EVENTS.selectMode, {detail: value as LassoMode});\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_LASSO_EVENTS.forward) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_LASSO_EVENTS.forward);\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_LASSO_EVENTS.back) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_LASSO_EVENTS.back);\n document.dispatchEvent(event);\n }\n }\n }\n\n export(): string {\n console.warn('export not implemented');\n return '';\n // this._updateChart();\n // return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: ScatterplotUmapSettingsImpl, settings: ScatterplotUmapSettingsImpl) {\n return (\n prevSettings.grouping.length !== settings.grouping.length ||\n prevSettings.grouping.some((el, idx) => el.value !== settings.grouping[idx]?.value) ||\n (prevSettings.label?.value || settings.label?.value) && prevSettings.label?.value !== settings.label?.value\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {x, y, label, highlight, grouping, layers, inheritedAes} = this.settings;\n\n const onlyPositive = {\n x: true,\n y: true,\n };\n const dotsExtents = {\n minX: Infinity,\n maxX: -Infinity,\n minY: Infinity,\n maxY: -Infinity,\n };\n\n const hasCurve = layers.some(layer => layer.type === 'curve');\n const groupingKeysSet = new Set<string>();\n const dotsByGrouping:Record<string, Dot[]> = {};\n\n const dots = this.data.rows.reduce((res:Dot[], row, idx) => {\n if (row[x.value] === null || row[y.value] === null) {\n return res;\n }\n const xv = Number(row[x.value]);\n const yv = Number(row[y.value]);\n if (onlyPositive.x && xv !== null && xv < 0) {\n onlyPositive.x = false;\n }\n if (onlyPositive.y && yv !== null && yv < 0) {\n onlyPositive.y = false;\n }\n if (xv !== null && xv < dotsExtents.minX) {\n dotsExtents.minX = xv;\n }\n if (xv !== null && xv > dotsExtents.maxX) {\n dotsExtents.maxX = xv;\n }\n if (yv !== null && yv < dotsExtents.minY) {\n dotsExtents.minY = yv;\n }\n if (yv !== null && yv > dotsExtents.maxY) {\n dotsExtents.maxY = yv;\n }\n const labelKey = label?.valueLabels ?? label?.value;\n const dot = {\n x: xv,\n y: yv,\n id: String(idx),\n idx: idx,\n dimmed: highlight ? !row[highlight.value] : false,\n label: labelKey && row[labelKey] ? String(row[labelKey]) : null,\n data: row\n };\n if (hasCurve) {\n const groupingKey = grouping.map(column => row[column.value]).join('_');\n groupingKeysSet.add(groupingKey);\n if (!dotsByGrouping[groupingKey]) {\n dotsByGrouping[groupingKey] = [];\n }\n dotsByGrouping[groupingKey].push(dot);\n\n }\n res.push(dot);\n return res;\n }, []);\n\n if (highlight) {\n dots.sort((d1, d2) => {\n return Number(d2.dimmed) - Number(d1.dimmed);\n });\n }\n // console.info('only positive Y:', onlyPositive.y);\n // console.info('only positive X:', onlyPositive.x);\n\n const groupingKeys = [...groupingKeysSet];\n if (hasCurve) {\n groupingKeys.forEach(key => {\n dotsByGrouping[key].sort((a, b) => a.x - b.x);\n });\n }\n const legendLabels = createLegendInfo(this.data, grouping, layers, inheritedAes);\n\n this.calculatedData = {\n onlyPositive,\n dots,\n dotsByGrouping,\n groupingKeys,\n allPossibleLabels: getAllPossibleLabels(dots),\n dotsExtents,\n legendLabels,\n };\n\n this.chartRenderer.updateData(dots);\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {layers, inheritedAes, grouping} = this.settings;\n grouping.forEach(column => {\n const usedAes = new Set<keyof AesItem>();\n const usedAesFromPalettes:Partial<Record<keyof AesItem, string[]>> = {}; // if there is palette in mapping then\n layers.forEach(layer => {\n if (layer.aes) {\n Object.entries(layer.aes).forEach(([key, value]) => {\n if (isInheritMapping(value) && value.value === column.value) {\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n }\n });\n }\n });\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(calculated.legendLabels[column.value].values, usedAesFromPalettes, inheritedAes[column.value]);\n });\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, keyColumn, layers, grouping} = this.settings;\n this.chartRenderer.render(\n id,\n chartSettings,\n keyColumn,\n this.calculatedData.onlyPositive,\n this.calculatedData.dots,\n this.calculatedData.dotsExtents,\n this.calculatedData.dotsByGrouping,\n layers,\n this.calculatedData.legendLabels,\n grouping,\n this.calculatedData.allPossibleLabels,\n this.onPolygonUpdate,\n this.onTooltipHintSwitch,\n this.onLassoControlsStateUpdate\n );\n }\n}\n"],"names":["isInheritMapping","value","LABEL_OFFSET","getAllPossibleLabels","dots","labels","textMeasurer","TextMeasurer","dot","text","metrics","ChartScatterplotUmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","ScatterplotUmapSettingsImpl","node","err","previousSettings","previousData","prevLayer","l","currentLayer","field","SCATTERPLOT_LASSO_EVENTS","event","prevSettings","el","idx","_a","_b","_c","_d","prevData","prevKeys","keys","key","x","y","label","highlight","grouping","layers","inheritedAes","onlyPositive","dotsExtents","hasCurve","layer","groupingKeysSet","dotsByGrouping","res","row","xv","yv","labelKey","groupingKey","column","d1","d2","groupingKeys","a","b","legendLabels","createLegendInfo","calculated","usedAes","usedAesFromPalettes","addPalettesToAesMapping","id","chartSettings","keyColumn"],"mappings":"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"}
|
|
@@ -67,15 +67,27 @@ export interface SVGLayerProps {
|
|
|
67
67
|
labels: Label[];
|
|
68
68
|
dotsByGrouping: Record<string, Dot[]>;
|
|
69
69
|
layers: ScatterplotUmapSettingsImpl['layers'];
|
|
70
|
-
|
|
70
|
+
defaultPolygons: Polygon[];
|
|
71
|
+
onPolygonUpdate: (data: Polygon[]) => void;
|
|
71
72
|
onTooltipHintSwitch: (v: boolean) => void;
|
|
72
|
-
|
|
73
|
+
onLassoControlsStateUpdate: (v: LassoControlsState) => void;
|
|
73
74
|
}
|
|
74
75
|
export type Point = [number, number];
|
|
75
76
|
export type PairPoints = [Point, Point];
|
|
77
|
+
export type Polygon = {
|
|
78
|
+
points: Point[];
|
|
79
|
+
closed: boolean;
|
|
80
|
+
};
|
|
81
|
+
export type LassoMode = 'pen' | 'selection';
|
|
76
82
|
export type AesGetters = {
|
|
77
83
|
dotFill: (r: Row) => string;
|
|
78
84
|
dotSize: (r: Row) => number;
|
|
79
85
|
lineType: (r: Row) => LineShape;
|
|
80
86
|
};
|
|
87
|
+
export type LassoControlsState = {
|
|
88
|
+
mode: LassoMode;
|
|
89
|
+
deleteEnabled: boolean;
|
|
90
|
+
backEnabled: boolean;
|
|
91
|
+
forwardEnabled: boolean;
|
|
92
|
+
};
|
|
81
93
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/types.ts"],"names":[],"mappings":"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"}
|