@milaboratories/miplots4 1.0.131 → 1.0.132

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
  2. package/dist/heatmap/components/Annotations/Annotation.js +34 -33
  3. package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  4. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  5. package/dist/heatmap/components/Chart.js +90 -85
  6. package/dist/heatmap/components/Chart.js.map +1 -1
  7. package/dist/heatmap/components/types.d.ts +2 -1
  8. package/dist/heatmap/components/types.d.ts.map +1 -1
  9. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +6 -3
  10. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  11. package/dist/scatterplot/ScatterplotSettingsImpl.js +56 -57
  12. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  13. package/dist/scatterplot/dots.d.ts +2 -1
  14. package/dist/scatterplot/dots.d.ts.map +1 -1
  15. package/dist/scatterplot/dots.js +24 -27
  16. package/dist/scatterplot/dots.js.map +1 -1
  17. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  18. package/dist/scatterplot/getLayersData.js +15 -12
  19. package/dist/scatterplot/getLayersData.js.map +1 -1
  20. package/dist/scatterplot/index.d.ts.map +1 -1
  21. package/dist/scatterplot/index.js +66 -72
  22. package/dist/scatterplot/index.js.map +1 -1
  23. package/dist/scatterplot/utils/createLegendInfo.d.ts +3 -3
  24. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
  25. package/dist/scatterplot/utils/createLegendInfo.js +44 -39
  26. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  27. package/dist/scatterplot/utils/sortDotsByGrouping.d.ts +8 -0
  28. package/dist/scatterplot/utils/sortDotsByGrouping.d.ts.map +1 -0
  29. package/dist/scatterplot/utils/sortDotsByGrouping.js +18 -0
  30. package/dist/scatterplot/utils/sortDotsByGrouping.js.map +1 -0
  31. package/dist/scatterplot-umap/SettingsImpl.d.ts +6 -3
  32. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  33. package/dist/scatterplot-umap/SettingsImpl.js +38 -39
  34. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  35. package/dist/scatterplot-umap/index.d.ts.map +1 -1
  36. package/dist/scatterplot-umap/index.js +69 -65
  37. package/dist/scatterplot-umap/index.js.map +1 -1
  38. package/dist/types/bubble.d.ts +12 -12
  39. package/dist/types/dendro.d.ts +8 -8
  40. package/dist/types/discrete.d.ts +20 -20
  41. package/dist/types/heatmap.d.ts +28 -28
  42. package/dist/types/histogram.d.ts +22 -22
  43. package/dist/types/scatterplot-umap.d.ts +126 -76
  44. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  45. package/dist/types/scatterplot-umap.js +22 -16
  46. package/dist/types/scatterplot-umap.js.map +1 -1
  47. package/dist/types/scatterplot.d.ts +126 -76
  48. package/dist/types/scatterplot.d.ts.map +1 -1
  49. package/dist/types/scatterplot.js +16 -10
  50. package/dist/types/scatterplot.js.map +1 -1
  51. package/dist/utils/arraysAreDifferent.d.ts +2 -0
  52. package/dist/utils/arraysAreDifferent.d.ts.map +1 -0
  53. package/dist/utils/arraysAreDifferent.js +7 -0
  54. package/dist/utils/arraysAreDifferent.js.map +1 -0
  55. package/dist/utils/getChartEdgeSides.d.ts +1 -1
  56. package/package.json +1 -1
@@ -1,13 +1,13 @@
1
1
  var m = Object.defineProperty;
2
- var y = (l, e, i) => e in l ? m(l, e, { enumerable: !0, configurable: !0, writable: !0, value: i }) : l[e] = i;
3
- var o = (l, e, i) => y(l, typeof e != "symbol" ? e + "" : e, i);
2
+ var y = (l, o, r) => o in l ? m(l, o, { enumerable: !0, configurable: !0, writable: !0, value: r }) : l[o] = r;
3
+ var e = (l, o, r) => y(l, typeof o != "symbol" ? o + "" : o, r);
4
4
  import s from "../node_modules/lodash/lodash.js";
5
5
  import { DEFAULT_HEIGHT as d, DEFAULT_WIDTH as n, BLACK as c } from "../constants.js";
6
6
  import { ScatterplotUmapSettingsSchema as w } from "../types/scatterplot-umap.js";
7
7
  class x {
8
- constructor(e) {
9
- o(this, "type", "dots");
10
- o(this, "aes", {
8
+ constructor(o) {
9
+ e(this, "type", "dots");
10
+ e(this, "aes", {
11
11
  dotFill: c,
12
12
  dotShape: "21",
13
13
  dotSize: 3,
@@ -15,76 +15,75 @@ class x {
15
15
  });
16
16
  this.aes = {
17
17
  ...this.aes,
18
- ...e.aes
18
+ ...o.aes
19
19
  };
20
20
  }
21
21
  }
22
22
  class f {
23
- constructor(e) {
24
- o(this, "type", "curve");
25
- o(this, "smoothing");
26
- o(this, "aes", {
23
+ constructor(o) {
24
+ e(this, "type", "curve");
25
+ e(this, "smoothing");
26
+ e(this, "aes", {
27
27
  lineColor: c,
28
28
  lineWidth: 1,
29
29
  lineShape: "solid",
30
30
  opacity: 1
31
31
  });
32
- this.smoothing = e.smoothing ?? !1, this.aes = {
32
+ this.smoothing = o.smoothing ?? !1, this.aes = {
33
33
  ...this.aes,
34
- ...e.aes
34
+ ...o.aes
35
35
  };
36
36
  }
37
37
  }
38
38
  class T {
39
- constructor(e) {
40
- o(this, "id");
41
- o(this, "type", "scatterplot-umap");
42
- o(this, "keyColumn");
43
- o(this, "x");
44
- o(this, "y");
45
- o(this, "grouping");
46
- o(this, "label");
47
- o(this, "highlight");
48
- o(this, "chartSettings");
49
- o(this, "inheritedAes");
50
- o(this, "layers");
51
- var i, r, t, a, p, u;
52
- w.parse(e), this.id = s.uniqueId("settings"), this.keyColumn = e.keyColumn ?? null, this.x = e.x, this.y = e.y, this.grouping = e.grouping ?? [], this.label = e.label ?? null, this.highlight = e.highlight ?? null, this.chartSettings = {
39
+ constructor(o) {
40
+ e(this, "id");
41
+ e(this, "type", "scatterplot-umap");
42
+ e(this, "keyColumn");
43
+ e(this, "x");
44
+ e(this, "y");
45
+ e(this, "grouping");
46
+ e(this, "label");
47
+ e(this, "highlight");
48
+ e(this, "chartSettings");
49
+ e(this, "layers");
50
+ var r, i, a, t, p, u;
51
+ w.parse(o), this.id = s.uniqueId("settings"), this.keyColumn = o.keyColumn ?? null, this.x = o.x, this.y = o.y, this.grouping = o.grouping ?? [], this.label = o.label ?? null, this.highlight = o.highlight ?? null, this.chartSettings = {
53
52
  size: {
54
- width: ((i = e == null ? void 0 : e.size) == null ? void 0 : i.width) ?? n,
55
- height: ((r = e == null ? void 0 : e.size) == null ? void 0 : r.height) ?? d
53
+ width: ((r = o == null ? void 0 : o.size) == null ? void 0 : r.width) ?? n,
54
+ height: ((i = o == null ? void 0 : o.size) == null ? void 0 : i.height) ?? d
56
55
  },
57
56
  title: {
58
57
  position: "center",
59
58
  show: !0,
60
- ...e.title,
61
- name: ((t = e.title) == null ? void 0 : t.name) ?? "Chart"
59
+ ...o.title,
60
+ name: ((a = o.title) == null ? void 0 : a.name) ?? "Chart"
62
61
  },
63
62
  yAxis: {
64
- title: e.y.label ?? e.y.value,
63
+ title: o.y.label ?? o.y.value,
65
64
  scale: "linear",
66
65
  showGrid: !0,
67
66
  showTicks: !0,
68
- ...e.yAxis
67
+ ...o.yAxis
69
68
  },
70
69
  xAxis: {
71
- title: e.x.label ?? e.x.value,
70
+ title: o.x.label ?? o.x.value,
72
71
  scale: "linear",
73
72
  showGrid: !0,
74
73
  showTicks: !0,
75
- ...e.xAxis
74
+ ...o.xAxis
76
75
  },
77
- frame: { type: ((a = e.frame) == null ? void 0 : a.type) ?? "full" },
76
+ frame: { type: ((t = o.frame) == null ? void 0 : t.type) ?? "full" },
78
77
  legend: {
79
78
  show: !0,
80
79
  position: "right",
81
- ...e.legend
80
+ ...o.legend
82
81
  },
83
82
  tooltips: {
84
- ...e.tooltips,
85
- show: ((p = e.tooltips) == null ? void 0 : p.show) !== !1 && (((u = e.tooltips) == null ? void 0 : u.content) ?? []).length > 0
83
+ ...o.tooltips,
84
+ show: ((p = o.tooltips) == null ? void 0 : p.show) !== !1 && (((u = o.tooltips) == null ? void 0 : u.content) ?? []).length > 0
86
85
  }
87
- }, this.inheritedAes = e.inheritedAes ?? {}, this.layers = e.layers.map((h) => {
86
+ }, this.layers = o.layers.map((h) => {
88
87
  if (h.type === "dots")
89
88
  return new x(h);
90
89
  if (h.type === "curve")
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsImpl.js","sources":["../../src/scatterplot-umap/SettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_WIDTH } from '../constants';\nimport type { ScatterplotAxisSettings } from '../scatterplot/ScatterplotSettingsImpl';\nimport type {\n ColumnName,\n ContinuousAesFromColumn,\n FrameType,\n LegendPosition,\n LineShape,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport { type AesRecord, type InheritAesScatterplot, type PointShape } from '../types';\nimport type {\n CurveUmapLayer as OuterCurveLayer,\n DotsUmapLayer as OuterDotsLayer,\n ScatterplotUmapSettings\n} from '../types/scatterplot-umap';\nimport { ScatterplotUmapSettingsSchema } from '../types/scatterplot-umap';\n\nexport class DotsLayer {\n readonly type = 'dots';\n readonly aes: {\n dotFill: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n dotShape: PointShape | InheritAesScatterplot;\n dotSize: number | ContinuousAesFromColumn<number>;\n opacity: number;\n } = {\n dotFill: BLACK,\n dotShape: '21',\n dotSize: 3,\n opacity: 1,\n };\n constructor(layer: OuterDotsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\nexport class CurveLayer {\n readonly type = 'curve';\n readonly smoothing: boolean;\n readonly aes: {\n lineColor: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n lineColor: BLACK,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterCurveLayer) {\n this.smoothing = layer.smoothing ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type ScatterplotUmapLayer = DotsLayer | CurveLayer;\n\nexport class ScatterplotUmapSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'scatterplot-umap';\n readonly keyColumn: ColumnName | null;\n readonly x: ColumnName;\n readonly y: ColumnName;\n readonly grouping: ColumnName[];\n readonly label: ColumnName | null;\n readonly highlight: ColumnName | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: ScatterplotAxisSettings;\n readonly xAxis: ScatterplotAxisSettings;\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {show: boolean; content?: ColumnName[]};\n };\n readonly inheritedAes: Record<string, AesRecord>;\n readonly layers: ScatterplotUmapLayer[];\n\n constructor(settings: ScatterplotUmapSettings) {\n ScatterplotUmapSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.keyColumn = settings.keyColumn ?? null;\n this.x = settings.x;\n this.y = settings.y;\n this.grouping = settings.grouping ?? [];\n this.label = settings.label ?? null;\n this.highlight = settings.highlight ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? DEFAULT_WIDTH,\n height: settings?.size?.height ?? DEFAULT_HEIGHT,\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.y.label ?? settings.y.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.x.label ?? settings.x.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n ...settings.tooltips,\n show: !(settings.tooltips?.show === false) && (settings.tooltips?.content ?? []).length > 0,\n },\n };\n\n this.inheritedAes = settings.inheritedAes ?? {};\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'dots') {\n return new DotsLayer(layer);\n } else if (layer.type === 'curve') {\n return new CurveLayer(layer);\n } else {\n throw new Error('Unknown layer type');\n }\n })\n .filter(Boolean) as ScatterplotUmapLayer[];\n }\n}\n"],"names":["DotsLayer","layer","__publicField","BLACK","CurveLayer","ScatterplotUmapSettingsImpl","settings","ScatterplotUmapSettingsSchema","lodash","_a","DEFAULT_WIDTH","_b","DEFAULT_HEIGHT","_c","_d","_e","_f"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsImpl.js","sources":["../../src/scatterplot-umap/SettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_WIDTH } from '../constants';\nimport type { ScatterplotAxisSettings } from '../scatterplot/ScatterplotSettingsImpl';\nimport type {\n ColumnName,\n ContinuousAesFromColumn,\n DataValue,\n FrameType,\n LegendPosition,\n LineShape,\n SettingsInterface,\n TitlePosition\n} from '../types';\nimport {type AesRecord, type InheritAesScatterplot, type PointShape} from '../types';\nimport type {\n CurveUmapLayer as OuterCurveLayer,\n DotsUmapLayer as OuterDotsLayer,\n ScatterplotUmapSettings\n} from '../types/scatterplot-umap';\nimport { ScatterplotUmapSettingsSchema } from '../types/scatterplot-umap';\n\nexport class DotsLayer {\n readonly type = 'dots';\n readonly aes: {\n dotFill: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n dotShape: PointShape | InheritAesScatterplot;\n dotSize: number | ContinuousAesFromColumn<number>;\n opacity: number;\n } = {\n dotFill: BLACK,\n dotShape: '21',\n dotSize: 3,\n opacity: 1,\n };\n constructor(layer: OuterDotsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\nexport class CurveLayer {\n readonly type = 'curve';\n readonly smoothing: boolean;\n readonly aes: {\n lineColor: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n lineColor: BLACK,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterCurveLayer) {\n this.smoothing = layer.smoothing ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type ScatterplotUmapLayer = DotsLayer | CurveLayer;\n\nexport class ScatterplotUmapSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'scatterplot-umap';\n readonly keyColumn: ColumnName | null;\n readonly x: ColumnName;\n readonly y: ColumnName;\n readonly grouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n }[];\n readonly label: ColumnName | null;\n readonly highlight: ColumnName | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: ScatterplotAxisSettings;\n readonly xAxis: ScatterplotAxisSettings;\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {show: boolean; content?: ColumnName[]};\n };\n readonly layers: ScatterplotUmapLayer[];\n\n constructor(settings: ScatterplotUmapSettings) {\n ScatterplotUmapSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.keyColumn = settings.keyColumn ?? null;\n this.x = settings.x;\n this.y = settings.y;\n this.grouping = settings.grouping ?? [];\n this.label = settings.label ?? null;\n this.highlight = settings.highlight ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? DEFAULT_WIDTH,\n height: settings?.size?.height ?? DEFAULT_HEIGHT,\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n title: settings.y.label ?? settings.y.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.x.label ?? settings.x.value,\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n ...settings.tooltips,\n show: !(settings.tooltips?.show === false) && (settings.tooltips?.content ?? []).length > 0,\n },\n };\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'dots') {\n return new DotsLayer(layer);\n } else if (layer.type === 'curve') {\n return new CurveLayer(layer);\n } else {\n throw new Error('Unknown layer type');\n }\n })\n .filter(Boolean) as ScatterplotUmapLayer[];\n }\n}\n"],"names":["DotsLayer","layer","__publicField","BLACK","CurveLayer","ScatterplotUmapSettingsImpl","settings","ScatterplotUmapSettingsSchema","lodash","_a","DEFAULT_WIDTH","_b","DEFAULT_HEIGHT","_c","_d","_e","_f"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,KAAK,EAA2D,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAClH,OAAO,KAAK,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpG,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAa,OAAO,EAAE,MAAM,SAAS,CAAC;AAMxF,qBAAa,oBAAqB,SAAQ,aAAa;IACnD,QAAQ,EAAE,2BAA2B,CAAC;IACtC,aAAa,EAAE,aAAa,CAAC;IAE7B,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,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,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;IAaxG,KAAK,CAAC,IAAI,EAAE,WAAW;IAcvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,uBAAuB;IA+BxE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IA8B9C,MAAM,IAAI,MAAM;IAOhB,mCAAmC,CAAC,YAAY,EAAE,2BAA2B,EAAE,QAAQ,EAAE,2BAA2B;IAUpH,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IAmFX,gBAAgB;IA0BhB,YAAY;CAqBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scatterplot-umap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9C,OAAO,KAAK,EAA2D,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAClH,OAAO,KAAK,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpG,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,EAAa,OAAO,EAAE,MAAM,SAAS,CAAC;AAMxF,qBAAa,oBAAqB,SAAQ,aAAa;IACnD,QAAQ,EAAE,2BAA2B,CAAC;IACtC,aAAa,EAAE,aAAa,CAAC;IAE7B,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,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,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;IAaxG,KAAK,CAAC,IAAI,EAAE,WAAW;IAcvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,uBAAuB;IA+BxE,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;IA8B9C,MAAM,IAAI,MAAM;IAOhB,mCAAmC,CAAC,YAAY,EAAE,2BAA2B,EAAE,QAAQ,EAAE,2BAA2B;IAapH,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA2EX,gBAAgB;IA0BhB,YAAY;CAqBf"}
@@ -1,17 +1,19 @@
1
1
  var U = Object.defineProperty;
2
- var L = (c, u, t) => u in c ? U(c, u, { enumerable: !0, configurable: !0, writable: !0, value: t }) : c[u] = t;
3
- var g = (c, u, t) => L(c, typeof u != "symbol" ? u + "" : u, t);
2
+ var L = (d, u, t) => u in d ? U(d, u, { enumerable: !0, configurable: !0, writable: !0, value: t }) : d[u] = t;
3
+ var g = (d, u, t) => L(d, typeof u != "symbol" ? u + "" : u, t);
4
4
  import { AbstractChart as A } from "../AbstractChart.js";
5
5
  import { createLegendInfo as R, addPalettesToAesMapping as I } from "../scatterplot/utils/createLegendInfo.js";
6
6
  import { formatColumnValue as T } from "../scatterplot/utils/formatColumnValue.js";
7
- import P from "./ChartRenderer.js";
8
- import { SCATTERPLOT_LASSO_EVENTS as m } from "./constants.js";
9
- import { ScatterplotUmapSettingsImpl as b } from "./SettingsImpl.js";
10
- import { format as B } from "../node_modules/d3-format/src/defaultLocale.js";
11
- function V(c) {
12
- return typeof c == "object" && "type" in c && c.type === "grouping";
7
+ import { sortDotsByGrouping as P } from "../scatterplot/utils/sortDotsByGrouping.js";
8
+ import { arraysAreDifferent as D } from "../utils/arraysAreDifferent.js";
9
+ import B from "./ChartRenderer.js";
10
+ import { SCATTERPLOT_LASSO_EVENTS as f } from "./constants.js";
11
+ import { ScatterplotUmapSettingsImpl as E } from "./SettingsImpl.js";
12
+ import { format as V } from "../node_modules/d3-format/src/defaultLocale.js";
13
+ function X(d) {
14
+ return typeof d == "object" && "type" in d && d.type === "grouping";
13
15
  }
14
- class F extends A {
16
+ class N extends A {
15
17
  constructor(t, a, e) {
16
18
  super(t, a);
17
19
  g(this, "settings");
@@ -24,7 +26,7 @@ class F extends A {
24
26
  g(this, "onLassoControlsStateUpdate", () => {
25
27
  });
26
28
  g(this, "calculatedData", null);
27
- this.settings = new b(a), this.chartRenderer = new P(), e && (this.onPolygonUpdate = e.onPolygonUpdate, this.onTooltipHintSwitch = e.onTooltipHintSwitch, this.onLassoControlsStateUpdate = e.onLassoControlsStateUpdate);
29
+ this.settings = new E(a), this.chartRenderer = new B(), e && (this.onPolygonUpdate = e.onPolygonUpdate, this.onTooltipHintSwitch = e.onTooltipHintSwitch, this.onLassoControlsStateUpdate = e.onLassoControlsStateUpdate);
28
30
  }
29
31
  mount(t) {
30
32
  try {
@@ -38,29 +40,29 @@ class F extends A {
38
40
  }
39
41
  updateSettingsAndData(t, a) {
40
42
  try {
41
- const e = this.settings, i = this.data;
42
- this.settings = new b(a), this.data = t, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(i, this.data) ? this._updateData() : this._updateAesInData();
43
- const n = e.layers.find((d) => d.type === "dots"), s = this.settings.layers.find((d) => d.type === "dots");
44
- n && s && n.aes.dotSize !== s.aes.dotSize && typeof n.aes.dotSize == "number" && typeof s.aes.dotSize == "number" && this.chartRenderer.updatePointSize(), this._updateChart();
43
+ const e = this.settings, n = this.data;
44
+ this.settings = new E(a), this.data = t, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(n, this.data) ? this._updateData() : this._updateAesInData();
45
+ const s = e.layers.find((o) => o.type === "dots"), r = this.settings.layers.find((o) => o.type === "dots");
46
+ s && r && s.aes.dotSize !== r.aes.dotSize && typeof s.aes.dotSize == "number" && typeof r.aes.dotSize == "number" && this.chartRenderer.updatePointSize(), this._updateChart();
45
47
  } catch (e) {
46
48
  e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
47
49
  }
48
50
  }
49
51
  updateChartState(t, a) {
50
- if (t === "polygon" && (this.chartRenderer.polygons = a, this._updateChart()), t === m.delete && document) {
51
- const e = new CustomEvent(m.delete);
52
+ if (t === "polygon" && (this.chartRenderer.polygons = a, this._updateChart()), t === f.delete && document) {
53
+ const e = new CustomEvent(f.delete);
52
54
  document.dispatchEvent(e);
53
55
  }
54
- if (t === m.selectMode && document) {
55
- const e = new CustomEvent(m.selectMode, { detail: a });
56
+ if (t === f.selectMode && document) {
57
+ const e = new CustomEvent(f.selectMode, { detail: a });
56
58
  document.dispatchEvent(e);
57
59
  }
58
- if (t === m.forward && document) {
59
- const e = new CustomEvent(m.forward);
60
+ if (t === f.forward && document) {
61
+ const e = new CustomEvent(f.forward);
60
62
  document.dispatchEvent(e);
61
63
  }
62
- if (t === m.back && document) {
63
- const e = new CustomEvent(m.back);
64
+ if (t === f.back && document) {
65
+ const e = new CustomEvent(f.back);
64
66
  document.dispatchEvent(e);
65
67
  }
66
68
  }
@@ -68,54 +70,56 @@ class F extends A {
68
70
  return console.warn("export not implemented"), "";
69
71
  }
70
72
  _needUpdateCalculatedDataBySettings(t, a) {
71
- var e, i, n, s;
72
- return t.grouping.length !== a.grouping.length || t.grouping.some((d, o) => {
73
+ var e, n, s, r;
74
+ return D(
75
+ t.grouping.map((o) => o.columnName.value),
76
+ a.grouping.map((o) => o.columnName.value)
77
+ ) || t.grouping.some((o, l) => {
73
78
  var h;
74
- return d.value !== ((h = a.grouping[o]) == null ? void 0 : h.value);
75
- }) || t.layers.length !== a.layers.length || t.layers.some((d, o) => d.type !== a.layers[o].type) || (((e = t.label) == null ? void 0 : e.value) || ((i = a.label) == null ? void 0 : i.value)) && ((n = t.label) == null ? void 0 : n.value) !== ((s = a.label) == null ? void 0 : s.value);
79
+ return D(o.order, (h = a.grouping) == null ? void 0 : h[l].order);
80
+ }) || t.layers.length !== a.layers.length || t.layers.some((o, l) => o.type !== a.layers[l].type) || (((e = t.label) == null ? void 0 : e.value) || ((n = a.label) == null ? void 0 : n.value)) && ((s = t.label) == null ? void 0 : s.value) !== ((r = a.label) == null ? void 0 : r.value);
76
81
  }
77
82
  _needUpdateCalculatedDataByData(t, a) {
78
- const e = Object.keys(t.data), i = Object.keys(a.data);
79
- return t.id !== a.id || e.length !== i.length || e.some((n) => {
80
- var s;
81
- return t.data[n].length !== ((s = a.data[n]) == null ? void 0 : s.length);
83
+ const e = Object.keys(t.data), n = Object.keys(a.data);
84
+ return t.id !== a.id || e.length !== n.length || e.some((s) => {
85
+ var r;
86
+ return t.data[s].length !== ((r = a.data[s]) == null ? void 0 : r.length);
82
87
  });
83
88
  }
84
89
  _updateData() {
85
- const { x: t, y: a, label: e, highlight: i, grouping: n, layers: s, inheritedAes: d } = this.settings, o = {
90
+ const { x: t, y: a, label: e, highlight: n, grouping: s, layers: r } = this.settings, o = {
86
91
  minX: 1 / 0,
87
92
  maxX: -1 / 0,
88
93
  minY: 1 / 0,
89
94
  maxY: -1 / 0
90
- }, h = s.some((r) => r.type === "curve"), f = /* @__PURE__ */ new Set(), y = {}, S = [], D = e != null && e.format ? B(e.format) : void 0;
91
- for (let r = 0; r < this.data.rowsCount; r++) {
92
- const l = this.data.getColumnValue(t.value, r), p = this.data.getColumnValue(a.value, r);
93
- if (typeof l != "number" || typeof p != "number")
95
+ }, l = r.some((i) => i.type === "curve"), h = /* @__PURE__ */ new Set(), c = {}, C = [], b = e != null && e.format ? V(e.format) : void 0;
96
+ for (let i = 0; i < this.data.rowsCount; i++) {
97
+ const p = this.data.getColumnValue(t.value, i), m = this.data.getColumnValue(a.value, i);
98
+ if (typeof p != "number" || typeof m != "number")
94
99
  continue;
95
- l < o.minX && (o.minX = l), l > o.maxX && (o.maxX = l), p < o.minY && (o.minY = p), p > o.maxY && (o.maxY = p);
96
- const w = i ? !this.data.getColumnValue(i.value, r) : !1, E = {
97
- x: l,
98
- y: p,
99
- idx: r,
100
- label: T(this.data, r, e, D),
100
+ p < o.minX && (o.minX = p), p > o.maxX && (o.maxX = p), m < o.minY && (o.minY = m), m > o.maxY && (o.maxY = m);
101
+ const w = n ? !this.data.getColumnValue(n.value, i) : !1, v = {
102
+ x: p,
103
+ y: m,
104
+ idx: i,
105
+ label: T(this.data, i, e, b),
101
106
  dimmed: w
102
107
  };
103
- if (h) {
104
- const C = n.map((_) => this.data.getColumnValue(_.value, r)).join("_");
105
- f.add(C), y[C] || (y[C] = []), y[C].push(E);
108
+ if (l) {
109
+ const y = s.map(({ columnName: _ }) => this.data.getColumnValue(_.value, i)).join("_");
110
+ h.add(y), c[y] || (c[y] = []), c[y].push(v);
106
111
  }
107
- S.push(E);
112
+ C.push(v);
108
113
  }
109
- i && S.sort((r, l) => l.dimmed === r.dimmed ? 0 : l.dimmed ? 1 : -1);
110
- const v = [...f];
111
- h && v.forEach((r) => {
112
- y[r].sort((l, p) => l.x - p.x);
113
- });
114
- const x = R(this.data, n, s, d);
114
+ const S = [...h];
115
+ l && S.forEach((i) => {
116
+ c[i].sort((p, m) => p.x - m.x);
117
+ }), P(this.data, C, s, n);
118
+ const x = R(this.data, s, r);
115
119
  this.calculatedData = {
116
- dots: S,
117
- dotsByGrouping: y,
118
- groupingKeys: v,
120
+ dots: C,
121
+ dotsByGrouping: c,
122
+ groupingKeys: S,
119
123
  dotsExtents: o,
120
124
  legendLabels: x
121
125
  };
@@ -124,20 +128,20 @@ class F extends A {
124
128
  const t = this.calculatedData;
125
129
  if (!t)
126
130
  return;
127
- const { layers: a, inheritedAes: e, grouping: i } = this.settings;
128
- i.forEach((n) => {
129
- const s = /* @__PURE__ */ new Set(), d = {};
130
- a.forEach((o) => {
131
- o.aes && Object.entries(o.aes).forEach(([h, f]) => {
132
- V(f) && f.value === n.value && (s.add(h), f.palette && (d[h] = f.palette));
131
+ const { layers: a, grouping: e } = this.settings;
132
+ e.forEach(({ columnName: n, inheritedAes: s }) => {
133
+ const r = /* @__PURE__ */ new Set(), o = {};
134
+ a.forEach((l) => {
135
+ l.aes && Object.entries(l.aes).forEach(([h, c]) => {
136
+ X(c) && c.value === n.value && (r.add(h), c.palette && (o[h] = c.palette));
133
137
  });
134
- }), t.legendLabels[n.value].usedAes = [...s], t.legendLabels[n.value].aesMap = I(n, d, e[n.value]);
138
+ }), t.legendLabels[n.value].usedAes = [...r], t.legendLabels[n.value].aesMap = I(n, o, s);
135
139
  });
136
140
  }
137
141
  _updateChart() {
138
142
  if (!this.calculatedData)
139
143
  return;
140
- const { id: t, chartSettings: a, keyColumn: e, layers: i, grouping: n } = this.settings;
144
+ const { id: t, chartSettings: a, keyColumn: e, layers: n, grouping: s } = this.settings;
141
145
  this.chartRenderer.render(
142
146
  this.data,
143
147
  t,
@@ -146,9 +150,9 @@ class F extends A {
146
150
  this.calculatedData.dots,
147
151
  this.calculatedData.dotsExtents,
148
152
  this.calculatedData.dotsByGrouping,
149
- i,
150
- this.calculatedData.legendLabels,
151
153
  n,
154
+ this.calculatedData.legendLabels,
155
+ s.map((r) => r.columnName),
152
156
  this.onPolygonUpdate,
153
157
  this.onTooltipHintSwitch,
154
158
  this.onLassoControlsStateUpdate
@@ -156,6 +160,6 @@ class F extends A {
156
160
  }
157
161
  }
158
162
  export {
159
- F as ChartScatterplotUmap
163
+ N as ChartScatterplotUmap
160
164
  };
161
165
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/scatterplot-umap/index.ts"],"sourcesContent":["import {format} from 'd3-format';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { addPalettesToAesMapping, createLegendInfo } from '../scatterplot/utils/createLegendInfo';\nimport {formatColumnValue} from '../scatterplot/utils/formatColumnValue';\nimport type { AesItem, ContinuousAesFromColumn, InheritAesScatterplot, ScatterplotEventHandlers } from '../types';\nimport type { ScatterplotUmapLegendInfo, ScatterplotUmapSettings } from '../types/scatterplot-umap';\nimport ChartRenderer from './ChartRenderer';\nimport { SCATTERPLOT_LASSO_EVENTS } from './constants';\nimport type { DotsLayer } from './SettingsImpl';\nimport { ScatterplotUmapSettingsImpl } from './SettingsImpl';\nimport type { Dot, DotsExtents, LassoControlsState, LassoMode, Polygon } from './types';\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\nexport class ChartScatterplotUmap extends AbstractChart {\n settings: ScatterplotUmapSettingsImpl;\n chartRenderer: 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 dots: Dot[],\n groupingKeys: string[],\n dotsByGrouping: Record<string, Dot[]>,\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 this.chartRenderer = new ChartRenderer();\n\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 console.error(err);\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\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 console.error(err);\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.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\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 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: Dot[] = [];\n const labelFormatter = label?.format ? format(label.format) : undefined;\n\n for (let idx = 0; idx < this.data.rowsCount; idx++) {\n const xv = this.data.getColumnValue(x.value, idx);\n const yv = this.data.getColumnValue(y.value, idx);\n\n if (typeof xv !== 'number' || typeof yv !== 'number') {\n continue;\n }\n\n if (xv < dotsExtents.minX) {\n dotsExtents.minX = xv;\n }\n if (xv > dotsExtents.maxX) {\n dotsExtents.maxX = xv;\n }\n if (yv < dotsExtents.minY) {\n dotsExtents.minY = yv;\n }\n if (yv > dotsExtents.maxY) {\n dotsExtents.maxY = yv;\n }\n\n const dimmed = highlight ? !this.data.getColumnValue(highlight.value, idx) : false;\n const dot: Dot = {\n x: xv,\n y: yv,\n idx,\n label: formatColumnValue(this.data, idx, label, labelFormatter),\n dimmed\n };\n if (hasCurve) {\n const groupingKey = grouping.map(column => this.data.getColumnValue(column.value, idx)).join('_');\n groupingKeysSet.add(groupingKey);\n if (!dotsByGrouping[groupingKey]) {\n dotsByGrouping[groupingKey] = [];\n }\n dotsByGrouping[groupingKey].push(dot);\n\n }\n dots.push(dot);\n }\n\n if (highlight) {\n dots.sort((d1, d2) => {\n if (d2.dimmed === d1.dimmed) return 0;\n if (d2.dimmed) return 1;\n return -1;\n });\n }\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 dots,\n dotsByGrouping,\n groupingKeys,\n dotsExtents,\n legendLabels,\n };\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) return;\n \n Object.entries(layer.aes).forEach(([key, value]) => {\n if (!(isInheritMapping(value) && value.value === column.value)) return;\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n });\n });\n\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(column, 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 this.data,\n id,\n chartSettings,\n keyColumn,\n this.calculatedData.dots,\n this.calculatedData.dotsExtents,\n this.calculatedData.dotsByGrouping,\n layers,\n this.calculatedData.legendLabels,\n grouping,\n this.onPolygonUpdate,\n this.onTooltipHintSwitch,\n this.onLassoControlsStateUpdate\n );\n }\n}\n"],"names":["isInheritMapping","value","ChartScatterplotUmap","AbstractChart","data","settings","eventHandlers","__publicField","ScatterplotUmapSettingsImpl","ChartRenderer","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","dotsExtents","hasCurve","layer","groupingKeysSet","dotsByGrouping","dots","labelFormatter","format","xv","yv","dimmed","dot","formatColumnValue","groupingKey","column","d1","d2","groupingKeys","a","b","legendLabels","createLegendInfo","calculated","usedAes","usedAesFromPalettes","addPalettesToAesMapping","id","chartSettings","keyColumn"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/scatterplot-umap/index.ts"],"sourcesContent":["import {format} from 'd3-format';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { addPalettesToAesMapping, createLegendInfo } from '../scatterplot/utils/createLegendInfo';\nimport {formatColumnValue} from '../scatterplot/utils/formatColumnValue';\nimport {sortDotsByGrouping} from '../scatterplot/utils/sortDotsByGrouping';\nimport type { AesItem, ContinuousAesFromColumn, InheritAesScatterplot, ScatterplotEventHandlers } from '../types';\nimport type { ScatterplotUmapLegendInfo, ScatterplotUmapSettings } from '../types/scatterplot-umap';\nimport {arraysAreDifferent} from '../utils/arraysAreDifferent';\nimport ChartRenderer from './ChartRenderer';\nimport { SCATTERPLOT_LASSO_EVENTS } from './constants';\nimport type { DotsLayer } from './SettingsImpl';\nimport { ScatterplotUmapSettingsImpl } from './SettingsImpl';\nimport type { Dot, DotsExtents, LassoControlsState, LassoMode, Polygon } from './types';\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\nexport class ChartScatterplotUmap extends AbstractChart {\n settings: ScatterplotUmapSettingsImpl;\n chartRenderer: 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 dots: Dot[],\n groupingKeys: string[],\n dotsByGrouping: Record<string, Dot[]>,\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 this.chartRenderer = new ChartRenderer();\n\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 console.error(err);\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\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 console.error(err);\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 arraysAreDifferent(\n prevSettings.grouping.map(v => v.columnName.value),\n settings.grouping.map(v => v.columnName.value),\n ) ||\n prevSettings.grouping.some((v, idx) => arraysAreDifferent(v.order, settings.grouping?.[idx].order)) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\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} = this.settings;\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: Dot[] = [];\n const labelFormatter = label?.format ? format(label.format) : undefined;\n\n for (let idx = 0; idx < this.data.rowsCount; idx++) {\n const xv = this.data.getColumnValue(x.value, idx);\n const yv = this.data.getColumnValue(y.value, idx);\n\n if (typeof xv !== 'number' || typeof yv !== 'number') {\n continue;\n }\n\n if (xv < dotsExtents.minX) {\n dotsExtents.minX = xv;\n }\n if (xv > dotsExtents.maxX) {\n dotsExtents.maxX = xv;\n }\n if (yv < dotsExtents.minY) {\n dotsExtents.minY = yv;\n }\n if (yv > dotsExtents.maxY) {\n dotsExtents.maxY = yv;\n }\n\n const dimmed = highlight ? !this.data.getColumnValue(highlight.value, idx) : false;\n const dot: Dot = {\n x: xv,\n y: yv,\n idx,\n label: formatColumnValue(this.data, idx, label, labelFormatter),\n dimmed\n };\n if (hasCurve) {\n const groupingKey = grouping.map(({columnName}) => this.data.getColumnValue(columnName.value, idx)).join('_');\n groupingKeysSet.add(groupingKey);\n if (!dotsByGrouping[groupingKey]) {\n dotsByGrouping[groupingKey] = [];\n }\n dotsByGrouping[groupingKey].push(dot);\n }\n dots.push(dot);\n }\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 sortDotsByGrouping(this.data, dots, grouping, highlight);\n const legendLabels = createLegendInfo(this.data, grouping, layers);\n\n this.calculatedData = {\n dots,\n dotsByGrouping,\n groupingKeys,\n dotsExtents,\n legendLabels,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {layers, grouping} = this.settings;\n grouping.forEach(({columnName, inheritedAes}) => {\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) return;\n \n Object.entries(layer.aes).forEach(([key, value]) => {\n if (!(isInheritMapping(value) && value.value === columnName.value)) return;\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n });\n });\n\n calculated.legendLabels[columnName.value].usedAes = [...usedAes];\n calculated.legendLabels[columnName.value].aesMap = addPalettesToAesMapping(columnName, usedAesFromPalettes, inheritedAes);\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 this.data,\n id,\n chartSettings,\n keyColumn,\n this.calculatedData.dots,\n this.calculatedData.dotsExtents,\n this.calculatedData.dotsByGrouping,\n layers,\n this.calculatedData.legendLabels,\n grouping.map(v => v.columnName),\n this.onPolygonUpdate,\n this.onTooltipHintSwitch,\n this.onLassoControlsStateUpdate\n );\n }\n}\n"],"names":["isInheritMapping","value","ChartScatterplotUmap","AbstractChart","data","settings","eventHandlers","__publicField","ScatterplotUmapSettingsImpl","ChartRenderer","node","err","previousSettings","previousData","prevLayer","l","currentLayer","field","SCATTERPLOT_LASSO_EVENTS","event","prevSettings","arraysAreDifferent","v","idx","_a","_b","_c","_d","prevData","prevKeys","keys","key","x","y","label","highlight","grouping","layers","dotsExtents","hasCurve","layer","groupingKeysSet","dotsByGrouping","dots","labelFormatter","format","xv","yv","dimmed","dot","formatColumnValue","groupingKey","columnName","groupingKeys","a","b","sortDotsByGrouping","legendLabels","createLegendInfo","calculated","inheritedAes","usedAes","usedAesFromPalettes","addPalettesToAesMapping","id","chartSettings","keyColumn"],"mappings":"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"}
@@ -8,11 +8,11 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
8
8
  }, "strip", z.ZodTypeAny, {
9
9
  name: string;
10
10
  show?: boolean | undefined;
11
- position?: "right" | "left" | "center" | undefined;
11
+ position?: "left" | "center" | "right" | undefined;
12
12
  }, {
13
13
  name: string;
14
14
  show?: boolean | undefined;
15
- position?: "right" | "left" | "center" | undefined;
15
+ position?: "left" | "center" | "right" | undefined;
16
16
  }>;
17
17
  size: z.ZodOptional<z.ZodObject<{
18
18
  width: z.ZodOptional<z.ZodNumber>;
@@ -32,10 +32,10 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
32
32
  position: z.ZodOptional<z.ZodEnum<["inside", "right", "top", "bottom"]>>;
33
33
  }, "strip", z.ZodTypeAny, {
34
34
  show?: boolean | undefined;
35
- position?: "right" | "top" | "bottom" | "inside" | undefined;
35
+ position?: "right" | "inside" | "top" | "bottom" | undefined;
36
36
  }, {
37
37
  show?: boolean | undefined;
38
- position?: "right" | "top" | "bottom" | "inside" | undefined;
38
+ position?: "right" | "inside" | "top" | "bottom" | undefined;
39
39
  }>>;
40
40
  frame: z.ZodOptional<z.ZodObject<{
41
41
  type: z.ZodOptional<z.ZodEnum<["left", "bottom", "left-bottom", "full", "empty"]>>;
@@ -181,7 +181,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
181
181
  axisLabelsAngle: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<0>, z.ZodLiteral<45>, z.ZodLiteral<90>]>>;
182
182
  }, "strip", z.ZodTypeAny, {
183
183
  title?: string | undefined;
184
- position?: "right" | "left" | undefined;
184
+ position?: "left" | "right" | undefined;
185
185
  showTicks?: boolean | undefined;
186
186
  sorting?: "asc" | "desc" | undefined;
187
187
  showTitle?: boolean | undefined;
@@ -189,7 +189,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
189
189
  axisLabelsAngle?: 0 | 45 | 90 | undefined;
190
190
  }, {
191
191
  title?: string | undefined;
192
- position?: "right" | "left" | undefined;
192
+ position?: "left" | "right" | undefined;
193
193
  showTicks?: boolean | undefined;
194
194
  sorting?: "asc" | "desc" | undefined;
195
195
  showTitle?: boolean | undefined;
@@ -280,7 +280,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
280
280
  title: {
281
281
  name: string;
282
282
  show?: boolean | undefined;
283
- position?: "right" | "left" | "center" | undefined;
283
+ position?: "left" | "center" | "right" | undefined;
284
284
  };
285
285
  valueSize: {
286
286
  type: "column";
@@ -324,7 +324,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
324
324
  } | undefined;
325
325
  legend?: {
326
326
  show?: boolean | undefined;
327
- position?: "right" | "top" | "bottom" | "inside" | undefined;
327
+ position?: "right" | "inside" | "top" | "bottom" | undefined;
328
328
  } | undefined;
329
329
  tooltips?: {
330
330
  show?: boolean | undefined;
@@ -354,7 +354,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
354
354
  } | undefined;
355
355
  yAxis?: {
356
356
  title?: string | undefined;
357
- position?: "right" | "left" | undefined;
357
+ position?: "left" | "right" | undefined;
358
358
  showTicks?: boolean | undefined;
359
359
  sorting?: "asc" | "desc" | undefined;
360
360
  showTitle?: boolean | undefined;
@@ -380,7 +380,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
380
380
  title: {
381
381
  name: string;
382
382
  show?: boolean | undefined;
383
- position?: "right" | "left" | "center" | undefined;
383
+ position?: "left" | "center" | "right" | undefined;
384
384
  };
385
385
  valueSize: {
386
386
  type: "column";
@@ -424,7 +424,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
424
424
  } | undefined;
425
425
  legend?: {
426
426
  show?: boolean | undefined;
427
- position?: "right" | "top" | "bottom" | "inside" | undefined;
427
+ position?: "right" | "inside" | "top" | "bottom" | undefined;
428
428
  } | undefined;
429
429
  tooltips?: {
430
430
  show?: boolean | undefined;
@@ -454,7 +454,7 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
454
454
  } | undefined;
455
455
  yAxis?: {
456
456
  title?: string | undefined;
457
- position?: "right" | "left" | undefined;
457
+ position?: "left" | "right" | undefined;
458
458
  showTicks?: boolean | undefined;
459
459
  sorting?: "asc" | "desc" | undefined;
460
460
  showTitle?: boolean | undefined;