@milaboratories/miplots4 1.0.178 → 1.1.0
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/bubble/BubbleSettingsImpl.d.ts +2 -0
- package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -1
- package/dist/bubble/BubbleSettingsImpl.js +3 -1
- package/dist/bubble/BubbleSettingsImpl.js.map +1 -1
- package/dist/bubble/getGroupedCellsData.d.ts +1 -1
- package/dist/bubble/getGroupedCellsData.d.ts.map +1 -1
- package/dist/bubble/getGroupedCellsData.js +30 -10
- package/dist/bubble/getGroupedCellsData.js.map +1 -1
- package/dist/bubble/index.d.ts.map +1 -1
- package/dist/bubble/index.js +3 -3
- package/dist/bubble/index.js.map +1 -1
- package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
- package/dist/heatmap/ChartRenderer.js +26 -20
- package/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -0
- package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js +3 -1
- package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
- package/dist/heatmap/fillCellsData.d.ts +22 -2
- package/dist/heatmap/fillCellsData.d.ts.map +1 -1
- package/dist/heatmap/fillCellsData.js +60 -47
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/heatmap/getCells.d.ts +22 -1
- package/dist/heatmap/getCells.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +23 -3
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/getDendrograms.d.ts +5 -1
- package/dist/heatmap/getDendrograms.d.ts.map +1 -1
- package/dist/heatmap/getDendrograms.js +33 -11
- package/dist/heatmap/getDendrograms.js.map +1 -1
- package/dist/heatmap/index.d.ts.map +1 -1
- package/dist/heatmap/index.js +30 -6
- package/dist/heatmap/index.js.map +1 -1
- package/dist/scatterplot/ChartRenderer.d.ts +2 -2
- package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot/ChartRenderer.js +155 -115
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +11 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.js +20 -0
- package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.d.ts +5 -0
- package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.js +115 -35
- package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
- package/dist/scatterplot/components/types.d.ts +2 -0
- package/dist/scatterplot/components/types.d.ts.map +1 -1
- package/dist/scatterplot/getLayersData.d.ts +11 -2
- package/dist/scatterplot/getLayersData.d.ts.map +1 -1
- package/dist/scatterplot/getLayersData.js +36 -19
- package/dist/scatterplot/getLayersData.js.map +1 -1
- package/dist/scatterplot/index.d.ts.map +1 -1
- package/dist/scatterplot/index.js +51 -33
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/linearRegression.js +1 -1
- package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
- package/dist/scatterplot/utils/createAesGetter.js +5 -3
- package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.d.ts +11 -2
- package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.js +21 -16
- package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +6 -6
- package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +99 -57
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts +11 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.js +21 -1
- package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.d.ts +3 -2
- package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +159 -108
- package/dist/scatterplot-umap/components/LowerSVG.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 +9 -8
- package/dist/scatterplot-umap/components/SVGLayer.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +6 -1
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +65 -31
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/scatterplot-umap/types.d.ts +7 -0
- package/dist/scatterplot-umap/types.d.ts.map +1 -1
- package/dist/types/bubble.d.ts +6 -0
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/bubble.js +3 -1
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/heatmap.d.ts +6 -0
- package/dist/types/heatmap.d.ts.map +1 -1
- package/dist/types/heatmap.js +2 -0
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/scatterplot-umap.d.ts +763 -87
- package/dist/types/scatterplot-umap.d.ts.map +1 -1
- package/dist/types/scatterplot-umap.js +19 -3
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.d.ts +1377 -44
- package/dist/types/scatterplot.d.ts.map +1 -1
- package/dist/types/scatterplot.js +27 -3
- package/dist/types/scatterplot.js.map +1 -1
- package/package.json +1 -1
|
@@ -41,7 +41,7 @@ var p = class extends e {
|
|
|
41
41
|
let n = this.settings, r = this.data;
|
|
42
42
|
this.settings = new l(t), this.data = e, this._needUpdateCalculatedDataBySettings(n, this.settings) || this._needUpdateCalculatedDataByData(r, this.data) ? this._updateData() : this._updateAesInData();
|
|
43
43
|
let i = n.layers.find((e) => e.type === "dots"), a = this.settings.layers.find((e) => e.type === "dots");
|
|
44
|
-
f(i.aes.dotSize, a.aes.dotSize) && this.calculatedData && this.chartRenderer.updatePointSize(this.calculatedData.legendLabels, this.settings.layers), this._updateChart(), this.hasError = !1;
|
|
44
|
+
f(i.aes.dotSize, a.aes.dotSize) && this.calculatedData && this.chartRenderer.updatePointSize(this.calculatedData.legendLabels, this.settings.layers, this.settings.additionalCurves), this._updateChart(), this.hasError = !1;
|
|
45
45
|
} catch (e) {
|
|
46
46
|
this.hasError = !0, e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
|
|
47
47
|
}
|
|
@@ -69,70 +69,104 @@ var p = class extends e {
|
|
|
69
69
|
return console.warn("export not implemented"), "";
|
|
70
70
|
}
|
|
71
71
|
_needUpdateCalculatedDataBySettings(e, t) {
|
|
72
|
-
|
|
72
|
+
let r = e.additionalCurves?.curves ?? [], i = t.additionalCurves?.curves ?? [];
|
|
73
|
+
return n(e.grouping.map((e) => e.columnName.value), t.grouping.map((e) => e.columnName.value)) || n(e.grouping.map((e) => e.columnName.nullValueLabel), t.grouping.map((e) => e.columnName.nullValueLabel)) || e.grouping.some((e, r) => n(e.order, t.grouping?.[r].order)) || e.layers.length !== t.layers.length || e.layers.some((e, n) => e.type !== t.layers[n].type) || (e.label?.value || t.label?.value) && e.label?.value !== t.label?.value || r.length !== i.length || n(r.map((e) => e.columnName.value), i.map((e) => e.columnName.value));
|
|
73
74
|
}
|
|
74
75
|
_needUpdateCalculatedDataByData(e, t) {
|
|
75
76
|
let n = Object.keys(e.data), r = Object.keys(t.data);
|
|
76
77
|
return e.id !== t.id || n.length !== r.length || n.some((n) => e.data[n].length !== t.data[n]?.length);
|
|
77
78
|
}
|
|
78
79
|
_updateData() {
|
|
79
|
-
let { x: e, y: t, label: n, highlight: a, grouping: s, layers: c } = this.settings,
|
|
80
|
+
let { x: e, y: t, label: n, highlight: a, grouping: s, layers: c, additionalCurves: l } = this.settings, d = {
|
|
80
81
|
minX: Infinity,
|
|
81
82
|
maxX: -Infinity,
|
|
82
83
|
minY: Infinity,
|
|
83
84
|
maxY: -Infinity
|
|
84
|
-
},
|
|
85
|
+
}, f = c.some((e) => e.type === "curve"), p = /* @__PURE__ */ new Set(), m = {}, h = [], g = n?.format ? u(n.format) : void 0;
|
|
85
86
|
for (let i = 0; i < this.data.rowsCount; i++) {
|
|
86
87
|
let o = this.data.getColumnValue(e.value, i), c = this.data.getColumnValue(t.value, i);
|
|
87
88
|
if (typeof o != "number" || typeof c != "number" || !isFinite(o) || !isFinite(c)) continue;
|
|
88
|
-
o <
|
|
89
|
-
let
|
|
89
|
+
o < d.minX && (d.minX = o), o > d.maxX && (d.maxX = o), c < d.minY && (d.minY = c), c > d.maxY && (d.maxY = c);
|
|
90
|
+
let l = a ? !this.data.getColumnValue(a.value, i) : !1, u = {
|
|
90
91
|
x: o,
|
|
91
92
|
y: c,
|
|
92
93
|
idx: i,
|
|
93
|
-
label: r(this.data, i, n,
|
|
94
|
-
dimmed:
|
|
94
|
+
label: r(this.data, i, n, g),
|
|
95
|
+
dimmed: l
|
|
95
96
|
};
|
|
96
|
-
if (
|
|
97
|
+
if (f) {
|
|
97
98
|
let e = s.map(({ columnName: e }) => this.data.getColumnValue(e.value, i)).join("_");
|
|
98
|
-
|
|
99
|
+
p.add(e), m[e] || (m[e] = []), m[e].push(u);
|
|
99
100
|
}
|
|
100
|
-
|
|
101
|
+
h.push(u);
|
|
101
102
|
}
|
|
102
|
-
let
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
})
|
|
106
|
-
let
|
|
107
|
-
if (
|
|
108
|
-
let
|
|
109
|
-
(
|
|
103
|
+
let _ = [...p];
|
|
104
|
+
f && _.forEach((e) => {
|
|
105
|
+
m[e].sort((e, t) => e.x - t.x);
|
|
106
|
+
});
|
|
107
|
+
let v = [];
|
|
108
|
+
if (l) for (let t of l.curves) {
|
|
109
|
+
let n = t.columnName.value, r = {};
|
|
110
|
+
for (let t = 0; t < this.data.rowsCount; t++) {
|
|
111
|
+
let i = this.data.getColumnValue(e.value, t), a = this.data.getColumnValue(n, t);
|
|
112
|
+
if (typeof i != "number" || !isFinite(i) || typeof a != "number" || !isFinite(a)) continue;
|
|
113
|
+
let o = s.map(({ columnName: e }) => this.data.getColumnValue(e.value, t)).join("_");
|
|
114
|
+
r[o] || (r[o] = []), r[o].push({
|
|
115
|
+
idx: t,
|
|
116
|
+
x: i,
|
|
117
|
+
y: a,
|
|
118
|
+
label: null,
|
|
119
|
+
dimmed: !1
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
for (let e of Object.keys(r)) r[e].sort((e, t) => e.x - t.x);
|
|
123
|
+
v.push({
|
|
124
|
+
entry: t,
|
|
125
|
+
dotsByGrouping: r,
|
|
126
|
+
smoothing: l.smoothing
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
i(this.data, h, s, a, c.find((e) => e.type === "dots"));
|
|
130
|
+
let y = o(this.data, s, c, l), b = this.calculatedData?.dotsExtents ?? null;
|
|
131
|
+
if (b) {
|
|
132
|
+
let { minX: e, maxX: t, minY: n, maxY: r } = b;
|
|
133
|
+
(e !== d.minX || t !== d.maxX || n !== d.minY || r !== d.maxY) && this.onZoomChange(!0);
|
|
110
134
|
}
|
|
111
135
|
this.calculatedData = {
|
|
112
|
-
dots:
|
|
113
|
-
dotsByGrouping:
|
|
114
|
-
groupingKeys:
|
|
115
|
-
dotsExtents:
|
|
116
|
-
legendLabels:
|
|
136
|
+
dots: h,
|
|
137
|
+
dotsByGrouping: m,
|
|
138
|
+
groupingKeys: _,
|
|
139
|
+
dotsExtents: d,
|
|
140
|
+
legendLabels: y,
|
|
141
|
+
additionalCurves: v
|
|
117
142
|
};
|
|
118
143
|
}
|
|
119
144
|
_updateAesInData() {
|
|
120
145
|
let e = this.calculatedData;
|
|
121
146
|
if (!e) return;
|
|
122
|
-
let { layers: t, grouping: n } = this.settings;
|
|
123
|
-
|
|
124
|
-
let
|
|
147
|
+
let { layers: t, grouping: n, additionalCurves: r } = this.settings;
|
|
148
|
+
r && (e.additionalCurves = e.additionalCurves.map((e, t) => {
|
|
149
|
+
let n = r.curves[t];
|
|
150
|
+
return n ? {
|
|
151
|
+
...e,
|
|
152
|
+
entry: n,
|
|
153
|
+
smoothing: r.smoothing
|
|
154
|
+
} : e;
|
|
155
|
+
})), n.forEach(({ columnName: n, inheritedAes: i }) => {
|
|
156
|
+
let o = /* @__PURE__ */ new Set(), s = {};
|
|
125
157
|
t.forEach((e) => {
|
|
126
158
|
e.aes && Object.entries(e.aes).forEach(([e, t]) => {
|
|
127
|
-
d(t) && t.value === n.value && (
|
|
159
|
+
d(t) && t.value === n.value && (o.add(e), t.palette && (s[e] = t.palette));
|
|
128
160
|
});
|
|
129
|
-
})
|
|
161
|
+
});
|
|
162
|
+
for (let e of r?.curves ?? []) d(e.lineColor) && e.lineColor.value === n.value && (o.add("lineColor"), e.lineColor.palette && (s.lineColor = e.lineColor.palette));
|
|
163
|
+
e.legendLabels[n.value].usedAes = [...o], e.legendLabels[n.value].aesMap = a(n, s, i);
|
|
130
164
|
});
|
|
131
165
|
}
|
|
132
166
|
_updateChart() {
|
|
133
167
|
if (!this.calculatedData) return;
|
|
134
|
-
let { id: e, chartSettings: t, keyColumn: n, layers: r, grouping: i } = this.settings;
|
|
135
|
-
this.chartRenderer.render(this.data, e, t, n, this.calculatedData.dots, this.calculatedData.dotsExtents, this.calculatedData.dotsByGrouping, r, this.calculatedData.legendLabels, i.map((e) => e.columnName), this.onPolygonUpdate, this.onTooltipHintSwitch, this.onLassoControlsStateUpdate, this.onZoomChange);
|
|
168
|
+
let { id: e, chartSettings: t, keyColumn: n, layers: r, grouping: i, additionalCurves: a, y: o } = this.settings;
|
|
169
|
+
this.chartRenderer.render(this.data, e, t, n, this.calculatedData.dots, this.calculatedData.dotsExtents, this.calculatedData.dotsByGrouping, r, this.calculatedData.legendLabels, i.map((e) => e.columnName), this.onPolygonUpdate, this.onTooltipHintSwitch, this.onLassoControlsStateUpdate, this.onZoomChange, this.calculatedData.additionalCurves, a, o);
|
|
136
170
|
}
|
|
137
171
|
};
|
|
138
172
|
export { p as ChartScatterplotUmap };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"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, type ContinuousAesFromColumn, type InheritAesScatterplot, isContinuousAes, type ScatterplotEventHandlers } from '../types';\nimport type { ScatterplotUmapLegendInfo, ScatterplotUmapSettings } from '../types/scatterplot-umap';\nimport {arraysAreDifferent} from '../utils/arraysAreDifferent';\nimport ChartRenderer from './ChartRenderer';\nimport { SCATTERPLOT_CONTROLS_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\nfunction dotSizeChanged(prevDotSize?: number | ContinuousAesFromColumn<number>, currentDotSize?: number | ContinuousAesFromColumn<number> ) {\n if (typeof prevDotSize === 'number' && typeof currentDotSize === 'number') {\n return prevDotSize !== currentDotSize;\n }\n if ((!prevDotSize && currentDotSize) || (!currentDotSize && prevDotSize)) {\n return true;\n }\n if (isContinuousAes(prevDotSize) && isContinuousAes(currentDotSize)) {\n return prevDotSize.range[0] !== currentDotSize.range[0] || prevDotSize.range[1] !== currentDotSize.range[1];\n }\n return false;\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 onZoomChange: (isZoomChanged: boolean) => 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 this.onZoomChange = eventHandlers.onZoomChange;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\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 (dotSizeChanged(prevLayer.aes.dotSize, currentLayer.aes.dotSize) && this.calculatedData) {\n this.chartRenderer.updatePointSize(this.calculatedData.legendLabels, this.settings.layers);\n }\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\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_CONTROLS_EVENTS.lassoDelete) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoDelete);\n document.dispatchEvent(event);\n }}\n if (field === SCATTERPLOT_CONTROLS_EVENTS.lassoSelectMode) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoSelectMode, {detail: value as LassoMode});\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_CONTROLS_EVENTS.lassoForward) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoForward);\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_CONTROLS_EVENTS.lassoBack) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoBack);\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_CONTROLS_EVENTS.resetViewport) {\n this.chartRenderer.resetZoom(this.settings.chartSettings.xAxis, this.settings.chartSettings.yAxis, this.calculatedData?.dotsExtents);\n this.onZoomChange(false);\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 arraysAreDifferent(\n prevSettings.grouping.map(v => v.columnName.nullValueLabel),\n settings.grouping.map(v => v.columnName.nullValueLabel),\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 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 if (!isFinite(xv) || !isFinite(yv)) {\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, layers.find(l => l.type === 'dots'));\n const legendLabels = createLegendInfo(this.data, grouping, layers);\n\n const prevDotExtents = this.calculatedData?.dotsExtents ?? null;\n if (prevDotExtents) {\n const {minX, maxX, minY, maxY} = prevDotExtents;\n if (minX !== dotsExtents.minX || maxX !== dotsExtents.maxX \n || minY !== dotsExtents.minY || maxY !== dotsExtents.maxY) {\n this.onZoomChange(true); // dots viewport is changed but it will not be changed automatically; this call is to undisable reset button\n }\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 this.onZoomChange\n );\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"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, type ContinuousAesFromColumn, type InheritAesScatterplot, isContinuousAes, type ScatterplotEventHandlers } from '../types';\nimport type { ScatterplotUmapLegendInfo, ScatterplotUmapSettings } from '../types/scatterplot-umap';\nimport {arraysAreDifferent} from '../utils/arraysAreDifferent';\nimport ChartRenderer from './ChartRenderer';\nimport { SCATTERPLOT_CONTROLS_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\nfunction dotSizeChanged(prevDotSize?: number | ContinuousAesFromColumn<number>, currentDotSize?: number | ContinuousAesFromColumn<number> ) {\n if (typeof prevDotSize === 'number' && typeof currentDotSize === 'number') {\n return prevDotSize !== currentDotSize;\n }\n if ((!prevDotSize && currentDotSize) || (!currentDotSize && prevDotSize)) {\n return true;\n }\n if (isContinuousAes(prevDotSize) && isContinuousAes(currentDotSize)) {\n return prevDotSize.range[0] !== currentDotSize.range[0] || prevDotSize.range[1] !== currentDotSize.range[1];\n }\n return false;\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 onZoomChange: (isZoomChanged: boolean) => void = () => undefined;\n\n calculatedData: {\n dots: Dot[],\n groupingKeys: string[],\n dotsByGrouping: Record<string, Dot[]>,\n dotsExtents: DotsExtents,\n legendLabels: ScatterplotUmapLegendInfo,\n // One entry per additional curve; dots share primary x but source y from entry.columnName.\n // Grouped using the same grouping-key logic as the primary curve layer.\n additionalCurves: { entry: NonNullable<ScatterplotUmapSettingsImpl['additionalCurves']>['curves'][number], dotsByGrouping: Record<string, Dot[]>, smoothing: boolean }[],\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 this.onZoomChange = eventHandlers.onZoomChange;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\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 (dotSizeChanged(prevLayer.aes.dotSize, currentLayer.aes.dotSize) && this.calculatedData) {\n this.chartRenderer.updatePointSize(this.calculatedData.legendLabels, this.settings.layers, this.settings.additionalCurves);\n }\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\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_CONTROLS_EVENTS.lassoDelete) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoDelete);\n document.dispatchEvent(event);\n }}\n if (field === SCATTERPLOT_CONTROLS_EVENTS.lassoSelectMode) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoSelectMode, {detail: value as LassoMode});\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_CONTROLS_EVENTS.lassoForward) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoForward);\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_CONTROLS_EVENTS.lassoBack) {\n if (document) {\n const event = new CustomEvent(SCATTERPLOT_CONTROLS_EVENTS.lassoBack);\n document.dispatchEvent(event);\n }\n }\n if (field === SCATTERPLOT_CONTROLS_EVENTS.resetViewport) {\n this.chartRenderer.resetZoom(this.settings.chartSettings.xAxis, this.settings.chartSettings.yAxis, this.calculatedData?.dotsExtents);\n this.onZoomChange(false);\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 const prevCurves = prevSettings.additionalCurves?.curves ?? [];\n const curves = settings.additionalCurves?.curves ?? [];\n return (\n arraysAreDifferent(\n prevSettings.grouping.map(v => v.columnName.value),\n settings.grouping.map(v => v.columnName.value),\n ) ||\n arraysAreDifferent(\n prevSettings.grouping.map(v => v.columnName.nullValueLabel),\n settings.grouping.map(v => v.columnName.nullValueLabel),\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 // Curve count or columnName change triggers full recalc. UMAP has no per-entry trend.\n prevCurves.length !== curves.length ||\n arraysAreDifferent(prevCurves.map(c => c.columnName.value), curves.map(c => c.columnName.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, additionalCurves} = 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 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 if (!isFinite(xv) || !isFinite(yv)) {\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\n // Build per-entry grouped dots sourced from each entry's column as y. Same grouping-key logic as primary;\n // skip rows where overlay y is null or non-finite (they'd propagate NaN into d3 scales).\n const additionalCurvesData: NonNullable<typeof this.calculatedData>['additionalCurves'] = [];\n if (additionalCurves) {\n for (const entry of additionalCurves.curves) {\n const overlayColumn = entry.columnName.value;\n const entryDotsByGrouping: Record<string, Dot[]> = {};\n for (let idx = 0; idx < this.data.rowsCount; idx++) {\n const xv = this.data.getColumnValue(x.value, idx);\n const overlayY = this.data.getColumnValue(overlayColumn, idx);\n if (typeof xv !== 'number' || !isFinite(xv)) continue;\n if (typeof overlayY !== 'number' || !isFinite(overlayY)) continue;\n const groupingKey = grouping.map(({columnName}) => this.data.getColumnValue(columnName.value, idx)).join('_');\n if (!entryDotsByGrouping[groupingKey]) entryDotsByGrouping[groupingKey] = [];\n entryDotsByGrouping[groupingKey].push({ idx, x: xv, y: overlayY, label: null, dimmed: false });\n }\n for (const key of Object.keys(entryDotsByGrouping)) {\n entryDotsByGrouping[key].sort((a, b) => a.x - b.x);\n }\n additionalCurvesData.push({ entry, dotsByGrouping: entryDotsByGrouping, smoothing: additionalCurves.smoothing });\n }\n }\n\n sortDotsByGrouping(this.data, dots, grouping, highlight, layers.find(l => l.type === 'dots'));\n const legendLabels = createLegendInfo(this.data, grouping, layers, additionalCurves);\n\n const prevDotExtents = this.calculatedData?.dotsExtents ?? null;\n if (prevDotExtents) {\n const {minX, maxX, minY, maxY} = prevDotExtents;\n if (minX !== dotsExtents.minX || maxX !== dotsExtents.maxX \n || minY !== dotsExtents.minY || maxY !== dotsExtents.maxY) {\n this.onZoomChange(true); // dots viewport is changed but it will not be changed automatically; this call is to undisable reset button\n }\n }\n this.calculatedData = {\n dots,\n dotsByGrouping,\n groupingKeys,\n dotsExtents,\n legendLabels,\n additionalCurves: additionalCurvesData,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {layers, grouping, additionalCurves} = this.settings;\n // Aesthetic-only refresh for additional-curve entries (UMAP has no facets; calculated.additionalCurves\n // is a flat array). Re-point entry + smoothing at the new settings so lineShape/lineWidth/lineColor/\n // opacity/showDots + shared smoothing flow into the renderer without a full recompute.\n //\n // The array AND each entry must be replaced (not mutated) — LowerSvg is React.memo'd on the\n // additionalCurves prop, so a stable reference would cause the renderer to skip the update.\n if (additionalCurves) {\n calculated.additionalCurves = calculated.additionalCurves.map((existing, i) => {\n const next = additionalCurves.curves[i];\n if (!next) return existing;\n return {\n ...existing,\n entry: next,\n smoothing: additionalCurves.smoothing,\n };\n });\n }\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 // Mirrors scatterplot: ensure grouping-inherited lineColor on additional curves contributes\n // to the legend-info aes map, so the renderer can resolve per-group colors.\n for (const entry of additionalCurves?.curves ?? []) {\n if (isInheritMapping(entry.lineColor) && entry.lineColor.value === columnName.value) {\n usedAes.add('lineColor');\n if (entry.lineColor.palette) {\n usedAesFromPalettes['lineColor'] = entry.lineColor.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, additionalCurves, y} = 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 this.onZoomChange,\n this.calculatedData.additionalCurves,\n additionalCurves,\n y,\n );\n }\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAS,EAA8C,GAA6F;AAChJ,QAAO,OAAO,KAAU,YAAY,UAAU,KAAS,EAAM,SAAS;;AAG1E,SAAS,EAAe,GAAwD,GAA4D;AAUxI,QATI,OAAO,KAAgB,YAAY,OAAO,KAAmB,WACtD,MAAgB,IAEtB,CAAC,KAAe,KAAoB,CAAC,KAAkB,IACjD,KAEP,EAAgB,EAAY,IAAI,EAAgB,EAAe,GACxD,EAAY,MAAM,OAAO,EAAe,MAAM,MAAM,EAAY,MAAM,OAAO,EAAe,MAAM,KAEtG;;AAGX,IAAa,IAAb,cAA0C,EAAc;CACpD;CACA;CAEA,wBAAuE,KAAA;CACvE,4BAAiD,KAAA;CACjD,mCAAoE,KAAA;CACpE,qBAAuD,KAAA;CAEvD,iBASW;CAEX,YAAY,GAAiB,GAAmC,GAA0C;AAMtG,EALA,MAAM,GAAM,EAAS,EAErB,KAAK,WAAW,IAAI,EAA4B,EAAS,EACzD,KAAK,gBAAgB,IAAI,GAAe,EAEpC,MACA,KAAK,kBAAkB,EAAc,iBACrC,KAAK,sBAAsB,EAAc,qBACzC,KAAK,6BAA6B,EAAc,4BAChD,KAAK,eAAe,EAAc;;CAI1C,MAAM,GAAmB;AACrB,MAAI;AAIA,GAHA,KAAK,cAAc,KAAK,EAAK,EAC7B,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW;WACX,GAAK;AAGV,GAFA,KAAK,WAAW,IAChB,QAAQ,MAAM,EAAI,EACd,aAAe,UACf,KAAK,cAAc,YAAY,EAAI,QAAkB,EACrD,QAAQ,MAAM,EAAI;;;CAK9B,UAAU;AACN,OAAK,cAAc,OAAO;;CAG9B,sBAAsB,GAAiB,GAAmC;AACtE,MAAI;GACA,IAAM,IAAmB,KAAK,UACxB,IAAe,KAAK;AAG1B,GAFA,KAAK,WAAW,IAAI,EAA4B,EAAS,EACzD,KAAK,OAAO,GAER,KAAK,oCAAoC,GAAkB,KAAK,SAAS,IACzE,KAAK,gCAAgC,GAAc,KAAK,KAAK,GAE7D,KAAK,aAAa,GAElB,KAAK,kBAAkB;GAI3B,IAAM,IAAY,EAAiB,OAAO,MAAK,MAAK,EAAE,SAAS,OAAO,EAChE,IAAe,KAAK,SAAS,OAAO,MAAK,MAAK,EAAE,SAAS,OAAO;AAKtE,GAJI,EAAe,EAAU,IAAI,SAAS,EAAa,IAAI,QAAQ,IAAI,KAAK,kBACxE,KAAK,cAAc,gBAAgB,KAAK,eAAe,cAAc,KAAK,SAAS,QAAQ,KAAK,SAAS,iBAAiB,EAE9H,KAAK,cAAc,EACnB,KAAK,WAAW;WACX,GAAK;AAEV,GADA,KAAK,WAAW,IACZ,aAAe,UACf,KAAK,cAAc,YAAY,EAAI,QAAkB,EACrD,QAAQ,MAAM,EAAI;;;CAK9B,iBAAiB,GAAe,GAAgB;AAK5C,MAJI,MAAU,cACV,KAAK,cAAc,WAAW,GAC9B,KAAK,cAAc,GAEnB,MAAU,EAA4B,eAClC,UAAU;GACV,IAAM,IAAQ,IAAI,YAAY,EAA4B,YAAY;AACtE,YAAS,cAAc,EAAM;;AAErC,MAAI,MAAU,EAA4B,mBAClC,UAAU;GACV,IAAM,IAAQ,IAAI,YAAY,EAA4B,iBAAiB,EAAC,QAAQ,GAAmB,CAAC;AACxG,YAAS,cAAc,EAAM;;AAGrC,MAAI,MAAU,EAA4B,gBAClC,UAAU;GACV,IAAM,IAAQ,IAAI,YAAY,EAA4B,aAAa;AACvE,YAAS,cAAc,EAAM;;AAGrC,MAAI,MAAU,EAA4B,aAClC,UAAU;GACV,IAAM,IAAQ,IAAI,YAAY,EAA4B,UAAU;AACpE,YAAS,cAAc,EAAM;;AAGrC,EAAI,MAAU,EAA4B,kBACtC,KAAK,cAAc,UAAU,KAAK,SAAS,cAAc,OAAO,KAAK,SAAS,cAAc,OAAO,KAAK,gBAAgB,YAAY,EACpI,KAAK,aAAa,GAAM;;CAIhC,SAAiB;AAEb,SADA,QAAQ,KAAK,yBAAyB,EAC/B;;CAKX,oCAAoC,GAA2C,GAAuC;EAClH,IAAM,IAAa,EAAa,kBAAkB,UAAU,EAAE,EACxD,IAAS,EAAS,kBAAkB,UAAU,EAAE;AACtD,SACI,EACI,EAAa,SAAS,KAAI,MAAK,EAAE,WAAW,MAAM,EAClD,EAAS,SAAS,KAAI,MAAK,EAAE,WAAW,MAAM,CACjD,IACD,EACI,EAAa,SAAS,KAAI,MAAK,EAAE,WAAW,eAAe,EAC3D,EAAS,SAAS,KAAI,MAAK,EAAE,WAAW,eAAe,CAC1D,IACD,EAAa,SAAS,MAAM,GAAG,MAAQ,EAAmB,EAAE,OAAO,EAAS,WAAW,GAAK,MAAM,CAAC,IACnG,EAAa,OAAO,WAAW,EAAS,OAAO,UAC/C,EAAa,OAAO,MAAM,GAAG,MAAQ,EAAE,SAAS,EAAS,OAAO,GAAK,KAAK,KACzE,EAAa,OAAO,SAAS,EAAS,OAAO,UAAU,EAAa,OAAO,UAAU,EAAS,OAAO,SAEtG,EAAW,WAAW,EAAO,UAC7B,EAAmB,EAAW,KAAI,MAAK,EAAE,WAAW,MAAM,EAAE,EAAO,KAAI,MAAK,EAAE,WAAW,MAAM,CAAC;;CAIxG,gCAAgC,GAAqB,GAAiB;EAClE,IAAM,IAAW,OAAO,KAAK,EAAS,KAAK,EACrC,IAAO,OAAO,KAAK,EAAK,KAAK;AACnC,SACI,EAAS,OAAO,EAAK,MACrB,EAAS,WAAW,EAAK,UACzB,EAAS,MAAK,MAAO,EAAS,KAAK,GAAK,WAAW,EAAK,KAAK,IAAM,OAAO;;CAIlF,cAAc;EACV,IAAM,EAAC,MAAG,MAAG,UAAO,cAAW,aAAU,WAAQ,wBAAoB,KAAK,UAEpE,IAAc;GAChB,MAAM;GACN,MAAM;GACN,MAAM;GACN,MAAM;GACT,EAEK,IAAW,EAAO,MAAK,MAAS,EAAM,SAAS,QAAQ,EACvD,oBAAkB,IAAI,KAAa,EACnC,IAAuC,EAAE,EAEzC,IAAc,EAAE,EAChB,IAAiB,GAAO,SAAS,EAAO,EAAM,OAAO,GAAG,KAAA;AAC9D,OAAK,IAAI,IAAM,GAAG,IAAM,KAAK,KAAK,WAAW,KAAO;GAChD,IAAM,IAAK,KAAK,KAAK,eAAe,EAAE,OAAO,EAAI,EAC3C,IAAK,KAAK,KAAK,eAAe,EAAE,OAAO,EAAI;AAKjD,OAHI,OAAO,KAAO,YAAY,OAAO,KAAO,YAGxC,CAAC,SAAS,EAAG,IAAI,CAAC,SAAS,EAAG,CAC9B;AAYJ,GATI,IAAK,EAAY,SACjB,EAAY,OAAO,IAEnB,IAAK,EAAY,SACjB,EAAY,OAAO,IAEnB,IAAK,EAAY,SACjB,EAAY,OAAO,IAEnB,IAAK,EAAY,SACjB,EAAY,OAAO;GAGvB,IAAM,IAAS,IAAY,CAAC,KAAK,KAAK,eAAe,EAAU,OAAO,EAAI,GAAG,IACvE,IAAW;IACb,GAAG;IACH,GAAG;IACH;IACA,OAAO,EAAkB,KAAK,MAAM,GAAK,GAAO,EAAe;IAC/D;IACH;AACD,OAAI,GAAU;IACV,IAAM,IAAc,EAAS,KAAK,EAAC,oBAAgB,KAAK,KAAK,eAAe,EAAW,OAAO,EAAI,CAAC,CAAC,KAAK,IAAI;AAK7G,IAJA,EAAgB,IAAI,EAAY,EAC3B,EAAe,OAChB,EAAe,KAAe,EAAE,GAEpC,EAAe,GAAa,KAAK,EAAI;;AAEzC,KAAK,KAAK,EAAI;;EAGlB,IAAM,IAAe,CAAC,GAAG,EAAgB;AACzC,EAAI,KACA,EAAa,SAAQ,MAAO;AACxB,KAAe,GAAK,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE;IAC/C;EAKN,IAAM,IAAoF,EAAE;AAC5F,MAAI,EACA,MAAK,IAAM,KAAS,EAAiB,QAAQ;GACzC,IAAM,IAAgB,EAAM,WAAW,OACjC,IAA6C,EAAE;AACrD,QAAK,IAAI,IAAM,GAAG,IAAM,KAAK,KAAK,WAAW,KAAO;IAChD,IAAM,IAAK,KAAK,KAAK,eAAe,EAAE,OAAO,EAAI,EAC3C,IAAW,KAAK,KAAK,eAAe,GAAe,EAAI;AAE7D,QADI,OAAO,KAAO,YAAY,CAAC,SAAS,EAAG,IACvC,OAAO,KAAa,YAAY,CAAC,SAAS,EAAS,CAAE;IACzD,IAAM,IAAc,EAAS,KAAK,EAAC,oBAAgB,KAAK,KAAK,eAAe,EAAW,OAAO,EAAI,CAAC,CAAC,KAAK,IAAI;AAE7G,IADK,EAAoB,OAAc,EAAoB,KAAe,EAAE,GAC5E,EAAoB,GAAa,KAAK;KAAE;KAAK,GAAG;KAAI,GAAG;KAAU,OAAO;KAAM,QAAQ;KAAO,CAAC;;AAElG,QAAK,IAAM,KAAO,OAAO,KAAK,EAAoB,CAC9C,GAAoB,GAAK,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE;AAEtD,KAAqB,KAAK;IAAE;IAAO,gBAAgB;IAAqB,WAAW,EAAiB;IAAW,CAAC;;AAIxH,IAAmB,KAAK,MAAM,GAAM,GAAU,GAAW,EAAO,MAAK,MAAK,EAAE,SAAS,OAAO,CAAC;EAC7F,IAAM,IAAe,EAAiB,KAAK,MAAM,GAAU,GAAQ,EAAiB,EAE9E,IAAiB,KAAK,gBAAgB,eAAe;AAC3D,MAAI,GAAgB;GAChB,IAAM,EAAC,SAAM,SAAM,SAAM,YAAQ;AACjC,IAAI,MAAS,EAAY,QAAQ,MAAS,EAAY,QAC/C,MAAS,EAAY,QAAQ,MAAS,EAAY,SACrD,KAAK,aAAa,GAAK;;AAG/B,OAAK,iBAAiB;GAClB;GACA;GACA;GACA;GACA;GACA,kBAAkB;GACrB;;CAGL,mBAAmB;EACf,IAAM,IAAa,KAAK;AACxB,MAAI,CAAC,EACD;EAEJ,IAAM,EAAC,WAAQ,aAAU,wBAAoB,KAAK;AAkBlD,EAXI,MACA,EAAW,mBAAmB,EAAW,iBAAiB,KAAK,GAAU,MAAM;GAC3E,IAAM,IAAO,EAAiB,OAAO;AAErC,UADK,IACE;IACH,GAAG;IACH,OAAO;IACP,WAAW,EAAiB;IAC/B,GALiB;IAMpB,GAEN,EAAS,SAAS,EAAC,eAAY,sBAAkB;GAC7C,IAAM,oBAAU,IAAI,KAAoB,EAClC,IAA+D,EAAE;AACvE,KAAO,SAAQ,MAAS;AACf,MAAM,OAEX,OAAO,QAAQ,EAAM,IAAI,CAAC,SAAS,CAAC,GAAK,OAAW;AAC1C,OAAiB,EAAM,IAAI,EAAM,UAAU,EAAW,UAC5D,EAAQ,IAAI,EAAqB,EAC7B,EAAM,YACN,EAAoB,KAAwB,EAAM;MAExD;KACJ;AAGF,QAAK,IAAM,KAAS,GAAkB,UAAU,EAAE,CAC9C,CAAI,EAAiB,EAAM,UAAU,IAAI,EAAM,UAAU,UAAU,EAAW,UAC1E,EAAQ,IAAI,YAAY,EACpB,EAAM,UAAU,YAChB,EAAoB,YAAe,EAAM,UAAU;AAM/D,GADA,EAAW,aAAa,EAAW,OAAO,UAAU,CAAC,GAAG,EAAQ,EAChE,EAAW,aAAa,EAAW,OAAO,SAAS,EAAwB,GAAY,GAAqB,EAAa;IAC3H;;CAGN,eAAe;AACX,MAAI,CAAC,KAAK,eACN;EAEJ,IAAM,EAAC,OAAI,kBAAe,cAAW,WAAQ,aAAU,qBAAkB,SAAK,KAAK;AACnF,OAAK,cAAc,OACf,KAAK,MACL,GACA,GACA,GACA,KAAK,eAAe,MACpB,KAAK,eAAe,aACpB,KAAK,eAAe,gBACpB,GACA,KAAK,eAAe,cACpB,EAAS,KAAI,MAAK,EAAE,WAAW,EAC/B,KAAK,iBACL,KAAK,qBACL,KAAK,4BACL,KAAK,cACL,KAAK,eAAe,kBACpB,GACA,EACH"}
|
|
@@ -43,6 +43,11 @@ export interface CaptionsSizes {
|
|
|
43
43
|
xAxisCaptionsWidth: number;
|
|
44
44
|
yAxisCaptionsWidth: number;
|
|
45
45
|
}
|
|
46
|
+
export type AdditionalCurveRenderData = {
|
|
47
|
+
entry: NonNullable<ScatterplotUmapSettingsImpl['additionalCurves']>['curves'][number];
|
|
48
|
+
dotsByGrouping: Record<string, Dot[]>;
|
|
49
|
+
smoothing: boolean;
|
|
50
|
+
};
|
|
46
51
|
export interface SVGLayerProps {
|
|
47
52
|
settingsId: string;
|
|
48
53
|
scales: ChartScales;
|
|
@@ -60,6 +65,7 @@ export interface SVGLayerProps {
|
|
|
60
65
|
labels: Label[];
|
|
61
66
|
dotsByGrouping: Record<string, Dot[]>;
|
|
62
67
|
layers: ScatterplotUmapSettingsImpl['layers'];
|
|
68
|
+
additionalCurves: AdditionalCurveRenderData[];
|
|
63
69
|
defaultPolygons: Polygon[];
|
|
64
70
|
onPolygonUpdate: (data: Polygon[]) => void;
|
|
65
71
|
onTooltipHintSwitch: (v: boolean) => void;
|
|
@@ -76,6 +82,7 @@ export type AesGetters = {
|
|
|
76
82
|
dotFill: (idx: number) => string;
|
|
77
83
|
dotSize: (idx: number) => number;
|
|
78
84
|
lineType: (idx: number) => LineShape;
|
|
85
|
+
additionalCurveLineColor: ((idx: number) => string)[];
|
|
79
86
|
};
|
|
80
87
|
export type LassoControlsState = {
|
|
81
88
|
mode: LassoMode;
|
|
@@ -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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"}
|
package/dist/types/bubble.d.ts
CHANGED
|
@@ -356,6 +356,8 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
|
|
|
356
356
|
}[] | undefined;
|
|
357
357
|
}>>;
|
|
358
358
|
NAValueAs: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>;
|
|
359
|
+
showEmptyRows: z.ZodOptional<z.ZodBoolean>;
|
|
360
|
+
showEmptyColumns: z.ZodOptional<z.ZodBoolean>;
|
|
359
361
|
}, "strip", z.ZodTypeAny, {
|
|
360
362
|
type: "bubble";
|
|
361
363
|
title: {
|
|
@@ -485,6 +487,8 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
|
|
|
485
487
|
method?: "sum" | "mean" | "median" | "min" | "max" | undefined;
|
|
486
488
|
} | undefined;
|
|
487
489
|
NAValueAs?: number | null | undefined;
|
|
490
|
+
showEmptyRows?: boolean | undefined;
|
|
491
|
+
showEmptyColumns?: boolean | undefined;
|
|
488
492
|
}, {
|
|
489
493
|
type: "bubble";
|
|
490
494
|
title: {
|
|
@@ -614,6 +618,8 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
|
|
|
614
618
|
method?: "sum" | "mean" | "median" | "min" | "max" | undefined;
|
|
615
619
|
} | undefined;
|
|
616
620
|
NAValueAs?: number | null | undefined;
|
|
621
|
+
showEmptyRows?: boolean | undefined;
|
|
622
|
+
showEmptyColumns?: boolean | undefined;
|
|
617
623
|
}>;
|
|
618
624
|
export type BubbleSettings = z.infer<typeof BubblesSettingsSchema>;
|
|
619
625
|
//# sourceMappingURL=bubble.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bubble.d.ts","sourceRoot":"","sources":["../../src/types/bubble.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"bubble.d.ts","sourceRoot":"","sources":["../../src/types/bubble.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/types/bubble.js
CHANGED
|
@@ -70,7 +70,9 @@ const c = o.object({
|
|
|
70
70
|
emptyCellColor: o.optional(o.string())
|
|
71
71
|
})),
|
|
72
72
|
tooltips: o.optional(a),
|
|
73
|
-
NAValueAs: o.optional(o.union([o.number(), o.null()]))
|
|
73
|
+
NAValueAs: o.optional(o.union([o.number(), o.null()])),
|
|
74
|
+
showEmptyRows: o.optional(o.boolean()),
|
|
75
|
+
showEmptyColumns: o.optional(o.boolean())
|
|
74
76
|
});
|
|
75
77
|
export { c as BubblesSettingsSchema };
|
|
76
78
|
|
package/dist/types/bubble.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bubble.js","names":[],"sources":["../../src/types/bubble.ts"],"sourcesContent":["import {\n AggregationMethodSchema,\n ColumnNameSchema,\n FrameTypeSchema,\n LegendPositionSchema,\n TitlePositionSchema,\n TooltipSettingsSchema,\n} from './common';\nimport { z } from 'zod';\n\nconst axisCommonSchema = {\n title: z.optional(z.string()),\n showTicks: z.optional(z.boolean()),\n showTitle: z.optional(z.boolean()),\n showAxisLabels: z.optional(z.boolean()),\n axisLabelsAngle: z.optional(z.union([z.literal(0), z.literal(45), z.literal(90)])),\n};\n\n//const InheritAesSchema = z.object({type: z.literal('grouping'), value: z.string()}); // link to aes mapped to column\n\nexport const BubblesSettingsSchema = z.object({\n type: z.literal('bubble'),\n title: z.object({\n name: z.string(),\n show: z.optional(z.boolean()),\n position: z.optional(TitlePositionSchema),\n }),\n size: z.optional(\n z.object({\n width: z.optional(z.number()),\n height: z.optional(z.number()),\n cellSize: z.optional(z.number())\n })\n ),\n legend: z.optional(\n z.object({\n show: z.optional(z.boolean()),\n position: z.optional(LegendPositionSchema),\n })\n ),\n frame: z.optional(z.object({ type: z.optional(FrameTypeSchema) })),\n facetSettings: z.optional(\n z.object({\n nRows: z.optional(z.number()),\n nCols: z.optional(z.number()),\n order: z.optional(z.array(z.string())),\n })\n ),\n valueSize: ColumnNameSchema,\n valueColor: ColumnNameSchema,\n xColumn: ColumnNameSchema,\n yColumn: ColumnNameSchema,\n xGroupBy: z.optional(z.array(ColumnNameSchema)),\n yGroupBy: z.optional(z.array(ColumnNameSchema)),\n keysOrder: z.optional( // x, y, grouping, facet keys in user's order\n z.record(z.string(), z.array(z.string()))\n ),\n normalization: z.optional(z.object({\n direction: z.enum(['row', 'column']),\n method: z.enum(['standardScaling', 'meanNormalization']),\n colorRange: z.optional(z.array(z.number())),\n sizeRange: z.optional(z.array(z.number())),\n })),\n aggregation: z.optional(z.object({\n x: z.optional(z.boolean()),\n y: z.optional(z.boolean()),\n method: z.optional(AggregationMethodSchema),\n })),\n xAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['top', 'bottom'])),\n })),\n yAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['left', 'right'])),\n })),\n facetBy: z.optional(z.array(ColumnNameSchema)),\n aes: z.optional(z.object({\n colorsList: z.optional(z.array(z.string())),\n minRadius: z.optional(z.number()),\n maxRadius: z.optional(z.number()),\n cellStrokeColor: z.optional(z.string()),\n emptyCellColor: z.optional(z.string()),\n })),\n tooltips: z.optional(TooltipSettingsSchema),\n NAValueAs: z.optional(z.union([z.number(), z.null()])),\n});\n\nexport type BubbleSettings = z.infer<typeof BubblesSettingsSchema>;\n"],"mappings":";;AAUA,IAAM,IAAmB;CACrB,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC7B,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;CAClC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;CAClC,gBAAgB,EAAE,SAAS,EAAE,SAAS,CAAC;CACvC,iBAAiB,EAAE,SAAS,EAAE,MAAM;EAAC,EAAE,QAAQ,EAAE;EAAE,EAAE,QAAQ,GAAG;EAAE,EAAE,QAAQ,GAAG;EAAC,CAAC,CAAC;CACrF;AAID,MAAa,IAAwB,EAAE,OAAO;CAC1C,MAAM,EAAE,QAAQ,SAAS;CACzB,OAAO,EAAE,OAAO;EACZ,MAAM,EAAE,QAAQ;EAChB,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;EAC7B,UAAU,EAAE,SAAS,EAAoB;EAC5C,CAAC;CACF,MAAM,EAAE,SACJ,EAAE,OAAO;EACL,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;EAC7B,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;EAC9B,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;EACnC,CAAC,CACL;CACD,QAAQ,EAAE,SACN,EAAE,OAAO;EACL,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;EAC7B,UAAU,EAAE,SAAS,EAAqB;EAC7C,CAAC,CACL;CACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAgB,EAAE,CAAC,CAAC;CAClE,eAAe,EAAE,SACb,EAAE,OAAO;EACL,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;EAC7B,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;EAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;EACzC,CAAC,CACL;CACD,WAAW;CACX,YAAY;CACZ,SAAS;CACT,SAAS;CACT,UAAU,EAAE,SAAS,EAAE,MAAM,EAAiB,CAAC;CAC/C,UAAU,EAAE,SAAS,EAAE,MAAM,EAAiB,CAAC;CAC/C,WAAW,EAAE,SACT,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAC5C;CACD,eAAe,EAAE,SAAS,EAAE,OAAO;EAC/B,WAAW,EAAE,KAAK,CAAC,OAAO,SAAS,CAAC;EACpC,QAAQ,EAAE,KAAK,CAAC,mBAAmB,oBAAoB,CAAC;EACxD,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;EAC3C,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;EAC7C,CAAC,CAAC;CACH,aAAa,EAAE,SAAS,EAAE,OAAO;EAC7B,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC;EAC1B,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC;EAC1B,QAAQ,EAAE,SAAS,EAAwB;EAC9C,CAAC,CAAC;CACH,OAAO,EAAE,SAAS,EAAE,OAAO;EACvB,GAAG;EACH,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;EAC5C,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;EAClD,CAAC,CAAC;CACH,OAAO,EAAE,SAAS,EAAE,OAAO;EACvB,GAAG;EACH,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;EAC5C,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,QAAQ,CAAC,CAAC;EAClD,CAAC,CAAC;CACH,SAAS,EAAE,SAAS,EAAE,MAAM,EAAiB,CAAC;CAC9C,KAAK,EAAE,SAAS,EAAE,OAAO;EACrB,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;EAC3C,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC;EACjC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC;EACjC,iBAAiB,EAAE,SAAS,EAAE,QAAQ,CAAC;EACvC,gBAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC;EACzC,CAAC,CAAC;CACH,UAAU,EAAE,SAAS,EAAsB;CAC3C,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"bubble.js","names":[],"sources":["../../src/types/bubble.ts"],"sourcesContent":["import {\n AggregationMethodSchema,\n ColumnNameSchema,\n FrameTypeSchema,\n LegendPositionSchema,\n TitlePositionSchema,\n TooltipSettingsSchema,\n} from './common';\nimport { z } from 'zod';\n\nconst axisCommonSchema = {\n title: z.optional(z.string()),\n showTicks: z.optional(z.boolean()),\n showTitle: z.optional(z.boolean()),\n showAxisLabels: z.optional(z.boolean()),\n axisLabelsAngle: z.optional(z.union([z.literal(0), z.literal(45), z.literal(90)])),\n};\n\n//const InheritAesSchema = z.object({type: z.literal('grouping'), value: z.string()}); // link to aes mapped to column\n\nexport const BubblesSettingsSchema = z.object({\n type: z.literal('bubble'),\n title: z.object({\n name: z.string(),\n show: z.optional(z.boolean()),\n position: z.optional(TitlePositionSchema),\n }),\n size: z.optional(\n z.object({\n width: z.optional(z.number()),\n height: z.optional(z.number()),\n cellSize: z.optional(z.number())\n })\n ),\n legend: z.optional(\n z.object({\n show: z.optional(z.boolean()),\n position: z.optional(LegendPositionSchema),\n })\n ),\n frame: z.optional(z.object({ type: z.optional(FrameTypeSchema) })),\n facetSettings: z.optional(\n z.object({\n nRows: z.optional(z.number()),\n nCols: z.optional(z.number()),\n order: z.optional(z.array(z.string())),\n })\n ),\n valueSize: ColumnNameSchema,\n valueColor: ColumnNameSchema,\n xColumn: ColumnNameSchema,\n yColumn: ColumnNameSchema,\n xGroupBy: z.optional(z.array(ColumnNameSchema)),\n yGroupBy: z.optional(z.array(ColumnNameSchema)),\n keysOrder: z.optional( // x, y, grouping, facet keys in user's order\n z.record(z.string(), z.array(z.string()))\n ),\n normalization: z.optional(z.object({\n direction: z.enum(['row', 'column']),\n method: z.enum(['standardScaling', 'meanNormalization']),\n colorRange: z.optional(z.array(z.number())),\n sizeRange: z.optional(z.array(z.number())),\n })),\n aggregation: z.optional(z.object({\n x: z.optional(z.boolean()),\n y: z.optional(z.boolean()),\n method: z.optional(AggregationMethodSchema),\n })),\n xAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['top', 'bottom'])),\n })),\n yAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['left', 'right'])),\n })),\n facetBy: z.optional(z.array(ColumnNameSchema)),\n aes: z.optional(z.object({\n colorsList: z.optional(z.array(z.string())),\n minRadius: z.optional(z.number()),\n maxRadius: z.optional(z.number()),\n cellStrokeColor: z.optional(z.string()),\n emptyCellColor: z.optional(z.string()),\n })),\n tooltips: z.optional(TooltipSettingsSchema),\n NAValueAs: z.optional(z.union([z.number(), z.null()])),\n showEmptyRows: z.optional(z.boolean()),\n showEmptyColumns: z.optional(z.boolean()),\n});\n\nexport type BubbleSettings = z.infer<typeof BubblesSettingsSchema>;\n"],"mappings":"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"}
|
package/dist/types/heatmap.d.ts
CHANGED
|
@@ -1218,6 +1218,8 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
|
|
|
1218
1218
|
fillColor?: string | undefined;
|
|
1219
1219
|
}>>>>;
|
|
1220
1220
|
NAValueAs: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>;
|
|
1221
|
+
showEmptyRows: z.ZodOptional<z.ZodBoolean>;
|
|
1222
|
+
showEmptyColumns: z.ZodOptional<z.ZodBoolean>;
|
|
1221
1223
|
cellsRenderingMode: z.ZodOptional<z.ZodEnum<["svg", "canvas"]>>;
|
|
1222
1224
|
aes: z.ZodOptional<z.ZodObject<{
|
|
1223
1225
|
colorsList: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
@@ -1381,6 +1383,8 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
|
|
|
1381
1383
|
method?: "sum" | "mean" | "median" | "min" | "max" | undefined;
|
|
1382
1384
|
} | undefined;
|
|
1383
1385
|
NAValueAs?: number | null | undefined;
|
|
1386
|
+
showEmptyRows?: boolean | undefined;
|
|
1387
|
+
showEmptyColumns?: boolean | undefined;
|
|
1384
1388
|
valueType?: "continuous" | "discrete" | undefined;
|
|
1385
1389
|
annotations?: ({
|
|
1386
1390
|
type: "continuous" | "discrete";
|
|
@@ -1677,6 +1681,8 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
|
|
|
1677
1681
|
method?: "sum" | "mean" | "median" | "min" | "max" | undefined;
|
|
1678
1682
|
} | undefined;
|
|
1679
1683
|
NAValueAs?: number | null | undefined;
|
|
1684
|
+
showEmptyRows?: boolean | undefined;
|
|
1685
|
+
showEmptyColumns?: boolean | undefined;
|
|
1680
1686
|
valueType?: "continuous" | "discrete" | undefined;
|
|
1681
1687
|
annotations?: ({
|
|
1682
1688
|
type: "continuous" | "discrete";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/types/heatmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAKlE,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAqC1E,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"heatmap.d.ts","sourceRoot":"","sources":["../../src/types/heatmap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgCxB,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAClE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAKlE,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,QAAQ,CAAC;AACtD,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAqC1E,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkFhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
package/dist/types/heatmap.js
CHANGED
|
@@ -117,6 +117,8 @@ const y = c.object({
|
|
|
117
117
|
dendrogramY: c.optional(_),
|
|
118
118
|
inheritedDendrogramAes: c.optional(c.record(c.string(), e)),
|
|
119
119
|
NAValueAs: c.optional(c.union([c.number(), c.null()])),
|
|
120
|
+
showEmptyRows: c.optional(c.boolean()),
|
|
121
|
+
showEmptyColumns: c.optional(c.boolean()),
|
|
120
122
|
cellsRenderingMode: c.optional(c.enum(["svg", "canvas"])),
|
|
121
123
|
aes: c.optional(c.object({
|
|
122
124
|
colorsList: c.optional(c.array(c.string())),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heatmap.js","names":[],"sources":["../../src/types/heatmap.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n AesRecordSchema,\n AggregationMethodSchema,\n ColumnNameSchema,\n LegendPositionSchema,\n LineShapeSchema,\n PointShapeSchema,\n TitlePositionSchema,\n TooltipSettingsSchema\n} from './common';\n\nconst ValueTypeSchema = z.enum(['discrete', 'continuous']);\n\nconst HeatmapAnnotationSchema = z.object({\n valueColumn: ColumnNameSchema,\n type: ValueTypeSchema,\n showTitle: z.optional(z.boolean()),\n colors: z.optional(z.array(z.string()))\n});\n\nconst HeatmapAnnotationXSchema = HeatmapAnnotationSchema.extend({\n axis: z.literal('x'),\n position: z.optional(z.enum(['top', 'bottom'])),\n titlePosition: z.optional(z.enum(['left', 'right'])),\n});\nconst HeatmapAnnotationYSchema = HeatmapAnnotationSchema.extend({\n axis: z.literal('y'),\n position: z.optional(z.enum(['left', 'right'])),\n titlePosition: z.optional(z.enum(['top', 'bottom'])),\n});\n\nexport type DendrogramDistance = 'euclidean' | 'squaredEuclidean';\nexport type DendrogramLinkage = 'average' | 'complete' | 'single';\n\nconst DendrogramDistanceSchema = z.enum(['euclidean', 'squaredEuclidean']);\nconst DendrogramLinkageSchema = z.enum(['average', 'complete', 'single']);\n\nexport type NormalizationDirection = 'row' | 'column';\nexport type NormalizationMethod = 'standardScaling' | 'meanNormalization';\n\nconst DendrogramSchema = z.object({\n size: z.optional(z.number()),\n distance: z.optional(DendrogramDistanceSchema),\n linkage: z.optional(DendrogramLinkageSchema),\n showNodes: z.optional(z.boolean()),\n edgeInheritance: z.optional(z.enum(['up', 'down'])),\n fillNA: z.optional(z.number()),\n hidden: z.optional(z.boolean()),\n aes: z.optional(z.object({\n lineColor: z.optional(z.union([z.string(), ColumnNameSchema])),\n dotFill: z.optional(z.union([z.string(), ColumnNameSchema])),\n dotShape: z.optional(z.union([PointShapeSchema, ColumnNameSchema])),\n dotSize: z.optional(z.union([z.number(), ColumnNameSchema])),\n lineShape: z.optional(z.union([LineShapeSchema, ColumnNameSchema])),\n lineWidth: z.optional(z.union([z.number(), ColumnNameSchema])),\n }))\n});\n\nconst DendrogramXSchema = DendrogramSchema.extend({\n position: z.optional(z.enum(['top', 'bottom']))\n});\nconst DendrogramYSchema = DendrogramSchema.extend({\n position: z.optional(z.enum(['left', 'right']))\n});\n\nconst axisCommonSchema = {\n title: z.optional(z.string()),\n showTicks: z.optional(z.boolean()),\n showTitle: z.optional(z.boolean()),\n showAxisLabels: z.optional(z.boolean()),\n showGroupLabels: z.optional(z.boolean()),\n axisLabelsAngle: z.optional(z.union([z.literal(0), z.literal(45), z.literal(90)])),\n groupLabelsAngle: z.optional(z.union([z.literal(0), z.literal(45), z.literal(90)])),\n};\n\nexport const HeatmapSettingsSchema = z.object({\n type: z.literal('heatmap'),\n title: z.object({\n name: z.string(),\n show: z.optional(z.boolean()),\n position: z.optional(TitlePositionSchema),\n }),\n tooltips: z.optional(TooltipSettingsSchema),\n valueType: z.optional(ValueTypeSchema),\n size: z.optional(\n z.object({\n width: z.optional(z.number()),\n height: z.optional(z.number()),\n cellWidth: z.optional(z.number()),\n cellHeight: z.optional(z.number()),\n outerOffset: z.optional(z.number()),\n innerOffset: z.optional(z.number())\n })\n ),\n legend: z.optional(\n z.object({\n show: z.optional(z.boolean()),\n position: z.optional(LegendPositionSchema),\n })\n ),\n frame: z.optional(z.object({type: z.optional(z.enum(['full', 'groups', 'none']))})),\n xAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['top', 'bottom'])),\n groupingPosition: z.optional(z.enum(['top', 'bottom'])),\n })),\n yAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['left', 'right'])),\n groupingPosition: z.optional(z.enum(['left', 'right'])),\n })),\n facetSettings: z.optional(z.object({\n sharedX: z.optional(z.boolean()),\n sharedY: z.optional(z.boolean()),\n nRows: z.optional(z.number()),\n nCols: z.optional(z.number()),\n order: z.optional(z.array(z.string())),\n })),\n xColumn: ColumnNameSchema,\n yColumn: ColumnNameSchema,\n valueColumn: ColumnNameSchema,\n xGroupBy: z.optional(z.array(ColumnNameSchema)),\n yGroupBy: z.optional(z.array(ColumnNameSchema)),\n facetBy: z.optional(z.array(ColumnNameSchema)),\n keysOrder: z.optional( // x, y, grouping, facet keys in user's order\n z.record(z.string(), z.array(z.string()))\n ),\n normalization: z.optional(z.object({\n direction: z.enum(['row', 'column']),\n method: z.enum(['standardScaling', 'meanNormalization']),\n colorRange: z.optional(z.array(z.number()))\n })),\n aggregation: z.optional(z.object({\n x: z.optional(z.boolean()),\n y: z.optional(z.boolean()),\n method: z.optional(AggregationMethodSchema),\n })),\n annotations: z.optional(z.array(z.union([HeatmapAnnotationXSchema, HeatmapAnnotationYSchema]))),\n dendrogramX: z.optional(DendrogramXSchema),\n dendrogramY: z.optional(DendrogramYSchema),\n inheritedDendrogramAes: z.optional(z.record(z.string(), AesRecordSchema)),\n NAValueAs: z.optional(z.union([z.number(), z.null()])),\n cellsRenderingMode: z.optional(z.enum(['svg', 'canvas'])),\n aes: z.optional(z.object({\n colorsList: z.optional(z.array(z.string())),\n colorsMap: z.optional(z.record(z.string())),\n valueColors: z.optional(z.array(z.string())),\n valuesByColors: z.optional(z.array(z.number())),\n cellStrokeColor: z.optional(z.string()),\n emptyCellColor: z.optional(z.string()),\n groupGap: z.optional(z.number()),\n cellGap: z.optional(z.number()),\n }))\n});\n\nexport type HeatmapSettings = z.infer<typeof HeatmapSettingsSchema>;\n\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"heatmap.js","names":[],"sources":["../../src/types/heatmap.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n AesRecordSchema,\n AggregationMethodSchema,\n ColumnNameSchema,\n LegendPositionSchema,\n LineShapeSchema,\n PointShapeSchema,\n TitlePositionSchema,\n TooltipSettingsSchema\n} from './common';\n\nconst ValueTypeSchema = z.enum(['discrete', 'continuous']);\n\nconst HeatmapAnnotationSchema = z.object({\n valueColumn: ColumnNameSchema,\n type: ValueTypeSchema,\n showTitle: z.optional(z.boolean()),\n colors: z.optional(z.array(z.string()))\n});\n\nconst HeatmapAnnotationXSchema = HeatmapAnnotationSchema.extend({\n axis: z.literal('x'),\n position: z.optional(z.enum(['top', 'bottom'])),\n titlePosition: z.optional(z.enum(['left', 'right'])),\n});\nconst HeatmapAnnotationYSchema = HeatmapAnnotationSchema.extend({\n axis: z.literal('y'),\n position: z.optional(z.enum(['left', 'right'])),\n titlePosition: z.optional(z.enum(['top', 'bottom'])),\n});\n\nexport type DendrogramDistance = 'euclidean' | 'squaredEuclidean';\nexport type DendrogramLinkage = 'average' | 'complete' | 'single';\n\nconst DendrogramDistanceSchema = z.enum(['euclidean', 'squaredEuclidean']);\nconst DendrogramLinkageSchema = z.enum(['average', 'complete', 'single']);\n\nexport type NormalizationDirection = 'row' | 'column';\nexport type NormalizationMethod = 'standardScaling' | 'meanNormalization';\n\nconst DendrogramSchema = z.object({\n size: z.optional(z.number()),\n distance: z.optional(DendrogramDistanceSchema),\n linkage: z.optional(DendrogramLinkageSchema),\n showNodes: z.optional(z.boolean()),\n edgeInheritance: z.optional(z.enum(['up', 'down'])),\n fillNA: z.optional(z.number()),\n hidden: z.optional(z.boolean()),\n aes: z.optional(z.object({\n lineColor: z.optional(z.union([z.string(), ColumnNameSchema])),\n dotFill: z.optional(z.union([z.string(), ColumnNameSchema])),\n dotShape: z.optional(z.union([PointShapeSchema, ColumnNameSchema])),\n dotSize: z.optional(z.union([z.number(), ColumnNameSchema])),\n lineShape: z.optional(z.union([LineShapeSchema, ColumnNameSchema])),\n lineWidth: z.optional(z.union([z.number(), ColumnNameSchema])),\n }))\n});\n\nconst DendrogramXSchema = DendrogramSchema.extend({\n position: z.optional(z.enum(['top', 'bottom']))\n});\nconst DendrogramYSchema = DendrogramSchema.extend({\n position: z.optional(z.enum(['left', 'right']))\n});\n\nconst axisCommonSchema = {\n title: z.optional(z.string()),\n showTicks: z.optional(z.boolean()),\n showTitle: z.optional(z.boolean()),\n showAxisLabels: z.optional(z.boolean()),\n showGroupLabels: z.optional(z.boolean()),\n axisLabelsAngle: z.optional(z.union([z.literal(0), z.literal(45), z.literal(90)])),\n groupLabelsAngle: z.optional(z.union([z.literal(0), z.literal(45), z.literal(90)])),\n};\n\nexport const HeatmapSettingsSchema = z.object({\n type: z.literal('heatmap'),\n title: z.object({\n name: z.string(),\n show: z.optional(z.boolean()),\n position: z.optional(TitlePositionSchema),\n }),\n tooltips: z.optional(TooltipSettingsSchema),\n valueType: z.optional(ValueTypeSchema),\n size: z.optional(\n z.object({\n width: z.optional(z.number()),\n height: z.optional(z.number()),\n cellWidth: z.optional(z.number()),\n cellHeight: z.optional(z.number()),\n outerOffset: z.optional(z.number()),\n innerOffset: z.optional(z.number())\n })\n ),\n legend: z.optional(\n z.object({\n show: z.optional(z.boolean()),\n position: z.optional(LegendPositionSchema),\n })\n ),\n frame: z.optional(z.object({type: z.optional(z.enum(['full', 'groups', 'none']))})),\n xAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['top', 'bottom'])),\n groupingPosition: z.optional(z.enum(['top', 'bottom'])),\n })),\n yAxis: z.optional(z.object({\n ...axisCommonSchema,\n sorting: z.optional(z.enum(['asc', 'desc'])),\n position: z.optional(z.enum(['left', 'right'])),\n groupingPosition: z.optional(z.enum(['left', 'right'])),\n })),\n facetSettings: z.optional(z.object({\n sharedX: z.optional(z.boolean()),\n sharedY: z.optional(z.boolean()),\n nRows: z.optional(z.number()),\n nCols: z.optional(z.number()),\n order: z.optional(z.array(z.string())),\n })),\n xColumn: ColumnNameSchema,\n yColumn: ColumnNameSchema,\n valueColumn: ColumnNameSchema,\n xGroupBy: z.optional(z.array(ColumnNameSchema)),\n yGroupBy: z.optional(z.array(ColumnNameSchema)),\n facetBy: z.optional(z.array(ColumnNameSchema)),\n keysOrder: z.optional( // x, y, grouping, facet keys in user's order\n z.record(z.string(), z.array(z.string()))\n ),\n normalization: z.optional(z.object({\n direction: z.enum(['row', 'column']),\n method: z.enum(['standardScaling', 'meanNormalization']),\n colorRange: z.optional(z.array(z.number()))\n })),\n aggregation: z.optional(z.object({\n x: z.optional(z.boolean()),\n y: z.optional(z.boolean()),\n method: z.optional(AggregationMethodSchema),\n })),\n annotations: z.optional(z.array(z.union([HeatmapAnnotationXSchema, HeatmapAnnotationYSchema]))),\n dendrogramX: z.optional(DendrogramXSchema),\n dendrogramY: z.optional(DendrogramYSchema),\n inheritedDendrogramAes: z.optional(z.record(z.string(), AesRecordSchema)),\n NAValueAs: z.optional(z.union([z.number(), z.null()])),\n showEmptyRows: z.optional(z.boolean()),\n showEmptyColumns: z.optional(z.boolean()),\n cellsRenderingMode: z.optional(z.enum(['svg', 'canvas'])),\n aes: z.optional(z.object({\n colorsList: z.optional(z.array(z.string())),\n colorsMap: z.optional(z.record(z.string())),\n valueColors: z.optional(z.array(z.string())),\n valuesByColors: z.optional(z.array(z.number())),\n cellStrokeColor: z.optional(z.string()),\n emptyCellColor: z.optional(z.string()),\n groupGap: z.optional(z.number()),\n cellGap: z.optional(z.number()),\n }))\n});\n\nexport type HeatmapSettings = z.infer<typeof HeatmapSettingsSchema>;\n\n"],"mappings":"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"}
|