@milaboratories/miplots4 1.2.0 → 1.2.1

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 (47) hide show
  1. package/dist/bubble/BubbleSettingsImpl.d.ts +3 -0
  2. package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -1
  3. package/dist/bubble/BubbleSettingsImpl.js +4 -1
  4. package/dist/bubble/BubbleSettingsImpl.js.map +1 -1
  5. package/dist/bubble/ChartRenderer.d.ts +2 -12
  6. package/dist/bubble/ChartRenderer.d.ts.map +1 -1
  7. package/dist/bubble/ChartRenderer.js +13 -13
  8. package/dist/bubble/ChartRenderer.js.map +1 -1
  9. package/dist/bubble/getGroupedCellsData.d.ts +1 -1
  10. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -1
  11. package/dist/bubble/getGroupedCellsData.js +20 -14
  12. package/dist/bubble/getGroupedCellsData.js.map +1 -1
  13. package/dist/bubble/index.d.ts.map +1 -1
  14. package/dist/bubble/index.js +6 -10
  15. package/dist/bubble/index.js.map +1 -1
  16. package/dist/heatmap/ChartRenderer.d.ts +2 -12
  17. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  18. package/dist/heatmap/ChartRenderer.js +26 -26
  19. package/dist/heatmap/ChartRenderer.js.map +1 -1
  20. package/dist/heatmap/HeatmapSettingsImpl.d.ts +3 -0
  21. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  22. package/dist/heatmap/HeatmapSettingsImpl.js +5 -2
  23. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  24. package/dist/heatmap/fillCellsData.d.ts +6 -1
  25. package/dist/heatmap/fillCellsData.d.ts.map +1 -1
  26. package/dist/heatmap/fillCellsData.js +135 -96
  27. package/dist/heatmap/fillCellsData.js.map +1 -1
  28. package/dist/heatmap/getCells.d.ts +4 -1
  29. package/dist/heatmap/getCells.d.ts.map +1 -1
  30. package/dist/heatmap/getCells.js +19 -16
  31. package/dist/heatmap/getCells.js.map +1 -1
  32. package/dist/heatmap/index.d.ts.map +1 -1
  33. package/dist/heatmap/index.js +32 -34
  34. package/dist/heatmap/index.js.map +1 -1
  35. package/dist/types/bubble.d.ts +89 -0
  36. package/dist/types/bubble.d.ts.map +1 -1
  37. package/dist/types/bubble.js +3 -0
  38. package/dist/types/bubble.js.map +1 -1
  39. package/dist/types/heatmap.d.ts +89 -0
  40. package/dist/types/heatmap.d.ts.map +1 -1
  41. package/dist/types/heatmap.js +3 -0
  42. package/dist/types/heatmap.js.map +1 -1
  43. package/dist/utils/intersect.d.ts +2 -0
  44. package/dist/utils/intersect.d.ts.map +1 -0
  45. package/dist/utils/intersect.js +8 -0
  46. package/dist/utils/intersect.js.map +1 -0
  47. package/package.json +1 -1
@@ -24,9 +24,9 @@ function t() {
24
24
  facets: {}
25
25
  };
26
26
  }
27
- function n({ data: n, xColumn: r, yColumn: i, valueColumns: a, facetBy: o, xGroupBy: s, yGroupBy: c, facetSettings: l, annotations: u, dendrogramX: d, dendrogramY: f, normalization: p, NAValueAs: m, keysOrder: h, xAxis: g, yAxis: _, aggregation: v, showEmptyRows: y = !1, showEmptyColumns: b = !1 }) {
28
- let x = t();
29
- return e(x, {
27
+ function n({ data: n, xColumn: r, yColumn: i, valueColumns: a, facetBy: o, xGroupBy: s, yGroupBy: c, xSortBy: l, ySortBy: u, facetSettings: d, annotations: f, dendrogramX: p, dendrogramY: m, normalization: h, NAValueAs: g, transform: _, keysOrder: v, xAxis: y, yAxis: b, aggregation: x, showEmptyRows: S = !1, showEmptyColumns: C = !1 }) {
28
+ let w = t();
29
+ return e(w, {
30
30
  data: n,
31
31
  xColumn: r,
32
32
  yColumn: i,
@@ -34,19 +34,22 @@ function n({ data: n, xColumn: r, yColumn: i, valueColumns: a, facetBy: o, xGrou
34
34
  facetBy: o,
35
35
  xGroupBy: s,
36
36
  yGroupBy: c,
37
- facetSettings: l,
38
- annotations: u,
39
- dendrogramX: d,
40
- dendrogramY: f,
41
- normalizationBySource: { dataSource: p },
42
- NAValueAs: m,
43
- keysOrder: h,
44
- xAxis: g,
45
- yAxis: _,
46
- aggregation: v,
47
- showEmptyRows: y,
48
- showEmptyColumns: b
49
- }), x;
37
+ xSortBy: l,
38
+ ySortBy: u,
39
+ facetSettings: d,
40
+ annotations: f,
41
+ dendrogramX: p,
42
+ dendrogramY: m,
43
+ normalizationBySource: { dataSource: h },
44
+ NAValueAs: g,
45
+ transformBySource: { dataSource: _ },
46
+ keysOrder: v,
47
+ xAxis: y,
48
+ yAxis: b,
49
+ aggregation: x,
50
+ showEmptyRows: S,
51
+ showEmptyColumns: C
52
+ }), w;
50
53
  }
51
54
  export { n as getCells };
52
55
 
@@ -1 +1 @@
1
- {"version":3,"file":"getCells.js","names":[],"sources":["../../src/heatmap/getCells.ts"],"sourcesContent":["import type { DataFrame } from '../DataFrame';\nimport type { ColumnName } from '../types';\nimport type { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport type { Cell, GroupedCellsData } from './fillCellsData';\nimport { fillCellsData } from './fillCellsData';\n\nexport type CellHeatmap = Cell<'dataSource'>\nexport type GroupedCellsHeatmap = GroupedCellsData<'dataSource'>;\n\nexport function createEmptyGroupedCells(): GroupedCellsHeatmap {\n return {\n meta: {\n valueSources: ['dataSource'],\n facetKeys: [],\n xKeys: [],\n yKeys: [],\n xGroupKeys: [],\n yGroupKeys: [],\n xKeysByGroups: {},\n yKeysByGroups: {},\n xLabels: {},\n yLabels: {},\n xGroupLabels: {},\n yGroupLabels: {},\n xDataByKeys: {},\n yDataByKeys: {},\n facetKeyValues: {},\n xGroupKeyValues: {},\n yGroupKeyValues: {},\n valueExtent: { dataSource: [Infinity, -Infinity] },\n },\n facets: {},\n };\n}\n\nexport function getCells({\n data,\n xColumn,\n yColumn,\n valueColumns,\n facetBy,\n xGroupBy,\n yGroupBy,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n xAxis,\n yAxis,\n aggregation,\n showEmptyRows = false,\n showEmptyColumns = false,\n}: {\n data: DataFrame;\n xColumn: ColumnName;\n yColumn: ColumnName;\n valueColumns: Record<string, ColumnName>;\n facetBy: ColumnName[];\n xGroupBy: ColumnName[];\n yGroupBy: ColumnName[];\n facetSettings: HeatmapSettingsImpl['facetSettings'];\n annotations: HeatmapSettingsImpl['annotations'];\n dendrogramX: HeatmapSettingsImpl['dendrogramX'];\n dendrogramY: HeatmapSettingsImpl['dendrogramY'];\n normalization: HeatmapSettingsImpl['normalization'];\n NAValueAs: HeatmapSettingsImpl['NAValueAs'];\n keysOrder: HeatmapSettingsImpl['keysOrder'];\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'];\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'];\n aggregation: HeatmapSettingsImpl['aggregation'];\n showEmptyRows?: boolean;\n showEmptyColumns?: boolean;\n}): GroupedCellsHeatmap {\n const result: GroupedCellsHeatmap = createEmptyGroupedCells();\n fillCellsData(result, {\n data,\n xColumn, yColumn, valueColumns,\n facetBy, xGroupBy, yGroupBy,\n facetSettings,\n annotations,\n dendrogramX, dendrogramY,\n normalizationBySource: { dataSource: normalization },\n NAValueAs,\n keysOrder,\n xAxis,\n yAxis,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n });\n return result;\n}\n"],"mappings":";AASA,SAAgB,IAA+C;AAC3D,QAAO;EACH,MAAM;GACF,cAAc,CAAC,aAAa;GAC5B,WAAW,EAAE;GACb,OAAO,EAAE;GACT,OAAO,EAAE;GACT,YAAY,EAAE;GACd,YAAY,EAAE;GACd,eAAe,EAAE;GACjB,eAAe,EAAE;GACjB,SAAS,EAAE;GACX,SAAS,EAAE;GACX,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,gBAAgB,EAAE;GAClB,iBAAiB,EAAE;GACnB,iBAAiB,EAAE;GACnB,aAAa,EAAE,YAAY,CAAC,UAAU,UAAU,EAAE;GACrD;EACD,QAAQ,EAAE;EACb;;AAGL,SAAgB,EAAS,EACrB,SACA,YACA,YACA,iBACA,YACA,aACA,aACA,kBACA,gBACA,gBACA,gBACA,kBACA,cACA,cACA,UACA,UACA,gBACA,mBAAgB,IAChB,sBAAmB,MAqBC;CACpB,IAAM,IAA8B,GAAyB;AAiB7D,QAhBA,EAAc,GAAQ;EAClB;EACA;EAAS;EAAS;EAClB;EAAS;EAAU;EACnB;EACA;EACA;EAAa;EACb,uBAAuB,EAAE,YAAY,GAAe;EACpD;EACA;EACA;EACA;EACA;EACA;EACA;EACH,CAAC,EACK"}
1
+ {"version":3,"file":"getCells.js","names":[],"sources":["../../src/heatmap/getCells.ts"],"sourcesContent":["import type { DataFrame } from '../DataFrame';\nimport type { ColumnName } from '../types';\nimport type { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport type { Cell, GroupedCellsData } from './fillCellsData';\nimport { fillCellsData } from './fillCellsData';\n\nexport type CellHeatmap = Cell<'dataSource'>\nexport type GroupedCellsHeatmap = GroupedCellsData<'dataSource'>;\n\nexport function createEmptyGroupedCells(): GroupedCellsHeatmap {\n return {\n meta: {\n valueSources: ['dataSource'],\n facetKeys: [],\n xKeys: [],\n yKeys: [],\n xGroupKeys: [],\n yGroupKeys: [],\n xKeysByGroups: {},\n yKeysByGroups: {},\n xLabels: {},\n yLabels: {},\n xGroupLabels: {},\n yGroupLabels: {},\n xDataByKeys: {},\n yDataByKeys: {},\n facetKeyValues: {},\n xGroupKeyValues: {},\n yGroupKeyValues: {},\n valueExtent: { dataSource: [Infinity, -Infinity] },\n },\n facets: {},\n };\n}\n\nexport function getCells({\n data,\n xColumn,\n yColumn,\n valueColumns,\n facetBy,\n xGroupBy,\n yGroupBy,\n xSortBy,\n ySortBy,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n transform,\n keysOrder,\n xAxis,\n yAxis,\n aggregation,\n showEmptyRows = false,\n showEmptyColumns = false,\n}: {\n data: DataFrame;\n xColumn: ColumnName;\n yColumn: ColumnName;\n valueColumns: Record<string, ColumnName>;\n facetBy: ColumnName[];\n xGroupBy: ColumnName[];\n yGroupBy: ColumnName[];\n xSortBy: ColumnName[];\n ySortBy: ColumnName[];\n facetSettings: HeatmapSettingsImpl['facetSettings'];\n annotations: HeatmapSettingsImpl['annotations'];\n dendrogramX: HeatmapSettingsImpl['dendrogramX'];\n dendrogramY: HeatmapSettingsImpl['dendrogramY'];\n normalization: HeatmapSettingsImpl['normalization'];\n NAValueAs: HeatmapSettingsImpl['NAValueAs'];\n transform: HeatmapSettingsImpl['transform'];\n keysOrder: HeatmapSettingsImpl['keysOrder'];\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'];\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'];\n aggregation: HeatmapSettingsImpl['aggregation'];\n showEmptyRows?: boolean;\n showEmptyColumns?: boolean;\n}): GroupedCellsHeatmap {\n const result: GroupedCellsHeatmap = createEmptyGroupedCells();\n fillCellsData(result, {\n data,\n xColumn, yColumn, valueColumns,\n facetBy, xGroupBy, yGroupBy,\n xSortBy, ySortBy,\n facetSettings,\n annotations,\n dendrogramX, dendrogramY,\n normalizationBySource: { dataSource: normalization },\n NAValueAs,\n transformBySource: { dataSource: transform },\n keysOrder,\n xAxis,\n yAxis,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n });\n return result;\n}\n"],"mappings":";AASA,SAAgB,IAA+C;AAC3D,QAAO;EACH,MAAM;GACF,cAAc,CAAC,aAAa;GAC5B,WAAW,EAAE;GACb,OAAO,EAAE;GACT,OAAO,EAAE;GACT,YAAY,EAAE;GACd,YAAY,EAAE;GACd,eAAe,EAAE;GACjB,eAAe,EAAE;GACjB,SAAS,EAAE;GACX,SAAS,EAAE;GACX,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,gBAAgB,EAAE;GAClB,iBAAiB,EAAE;GACnB,iBAAiB,EAAE;GACnB,aAAa,EAAE,YAAY,CAAC,UAAU,UAAU,EAAE;GACrD;EACD,QAAQ,EAAE;EACb;;AAGL,SAAgB,EAAS,EACrB,SACA,YACA,YACA,iBACA,YACA,aACA,aACA,YACA,YACA,kBACA,gBACA,gBACA,gBACA,kBACA,cACA,cACA,cACA,UACA,UACA,gBACA,mBAAgB,IAChB,sBAAmB,MAwBC;CACpB,IAAM,IAA8B,GAAyB;AAmB7D,QAlBA,EAAc,GAAQ;EAClB;EACA;EAAS;EAAS;EAClB;EAAS;EAAU;EACnB;EAAS;EACT;EACA;EACA;EAAa;EACb,uBAAuB,EAAE,YAAY,GAAe;EACpD;EACA,mBAAmB,EAAE,YAAY,GAAW;EAC5C;EACA;EACA;EACA;EACA;EACA;EACH,CAAC,EACK"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/heatmap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAmB,KAAK,SAAS,EAAuB,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAe,MAAM,UAAU,CAAC;AAE9I,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,qBAAa,YAAa,SAAQ,aAAa;IAC3C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAQ;IAChD,eAAe,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAQ;IAE5C,cAAc,EAAE;QACZ,gBAAgB,EAAE,mBAAmB,CAAC;QACtC,eAAe,EAAE,eAAe,CAAC;QACjC,cAAc,EAAE,SAAS,EAAE,CAAC;KAC/B,GAAG,IAAI,CAAQ;IAEhB,gCAAgC,UAAS;gBAE7B,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,EAAC,oBAAoB;IAU3F,KAAK,CAAC,IAAI,EAAE,WAAW;IAgBvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe;IA0BhE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB;IAoEpG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAU9D,WAAW;IAkEjB,gBAAgB;IAIhB,YAAY;CAkDf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/heatmap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAmB,KAAK,SAAS,EAAuB,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAe,MAAM,UAAU,CAAC;AAE9I,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,qBAAa,YAAa,SAAQ,aAAa;IAC3C,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAQ;IAChD,eAAe,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAQ;IAE5C,cAAc,EAAE;QACZ,gBAAgB,EAAE,mBAAmB,CAAC;QACtC,eAAe,EAAE,eAAe,CAAC;QACjC,cAAc,EAAE,SAAS,EAAE,CAAC;KAC/B,GAAG,IAAI,CAAQ;IAEhB,gCAAgC,UAAS;gBAE7B,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa,CAAC,EAAC,oBAAoB;IAU3F,KAAK,CAAC,IAAI,EAAE,WAAW;IAgBvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe;IA0BhE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,mBAAmB;IA4EpG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAU9D,WAAW;IAwEjB,gBAAgB;IAIhB,YAAY;CAsCf"}
@@ -45,50 +45,53 @@ var d = class extends e {
45
45
  return this._updateChart(), u(this.chartRenderer.component);
46
46
  }
47
47
  _needUpdateCalculatedDataBySettings(e, t) {
48
- let { xColumn: n, yColumn: a, valueColumn: o, xGroupBy: s, yGroupBy: c, facetBy: l, annotations: u, chartSettings: d, facetSettings: f, dendrogramX: p, dendrogramY: m, normalization: h, aggregation: g, NAValueAs: _ } = t, v = Object.values(e.dendrogramX?.aes || {}).filter(r), y = Object.values(p?.aes || {}).filter(r), b = Object.values(e.dendrogramY?.aes || {}).filter(r), x = Object.values(m?.aes || {}).filter(r);
49
- function S(e, t) {
48
+ let { xColumn: n, yColumn: a, valueColumn: o, xGroupBy: s, yGroupBy: c, xSortBy: l, ySortBy: u, facetBy: d, annotations: f, chartSettings: p, facetSettings: m, dendrogramX: h, dendrogramY: g, normalization: _, aggregation: v, NAValueAs: y, transform: b } = t, x = Object.values(e.dendrogramX?.aes || {}).filter(r), S = Object.values(h?.aes || {}).filter(r), C = Object.values(e.dendrogramY?.aes || {}).filter(r), w = Object.values(g?.aes || {}).filter(r);
49
+ function T(e, t) {
50
50
  return e.length !== t.length || e.some((e, n) => e.value !== t[n].value);
51
51
  }
52
- return e.xColumn.value !== n.value || e.yColumn.value !== a.value || e.valueColumn.value !== o.value || S(e.xGroupBy, s) || S(e.yGroupBy, c) || S(e.facetBy, l) || S(e.annotations.map((e) => e.valueColumn), u.map((e) => e.valueColumn)) || S(v, y) || S(b, x) || (t.dendrogramX || e.dendrogramX) && (e.dendrogramX?.distance !== t.dendrogramX?.distance || e.dendrogramX?.linkage !== t.dendrogramX?.linkage) || (t.dendrogramY || e.dendrogramY) && (e.dendrogramY?.distance !== t.dendrogramY?.distance || e.dendrogramY?.linkage !== t.dendrogramY?.linkage) || e.chartSettings.valueType !== d.valueType || e.facetSettings.sharedX !== f.sharedX || e.facetSettings.sharedY !== f.sharedY || i(e.facetSettings?.order ?? [], t.facetSettings?.order ?? []) || e.normalization?.method !== h?.method || e.normalization?.direction !== h?.direction || e.NAValueAs !== _ || e.aggregation?.method !== g?.method || e.aggregation?.x !== g?.x || e.aggregation?.y !== g?.y || e.showEmptyRows !== t.showEmptyRows || e.showEmptyColumns !== t.showEmptyColumns;
52
+ return e.xColumn.value !== n.value || e.yColumn.value !== a.value || e.valueColumn.value !== o.value || T(e.xGroupBy, s) || T(e.yGroupBy, c) || T(e.xSortBy, l) || T(e.ySortBy, u) || e.chartSettings.xAxis.sorting !== p.xAxis.sorting || e.chartSettings.yAxis.sorting !== p.yAxis.sorting || T(e.facetBy, d) || T(e.annotations.map((e) => e.valueColumn), f.map((e) => e.valueColumn)) || T(x, S) || T(C, w) || (t.dendrogramX || e.dendrogramX) && (e.dendrogramX?.distance !== t.dendrogramX?.distance || e.dendrogramX?.linkage !== t.dendrogramX?.linkage) || (t.dendrogramY || e.dendrogramY) && (e.dendrogramY?.distance !== t.dendrogramY?.distance || e.dendrogramY?.linkage !== t.dendrogramY?.linkage) || e.chartSettings.valueType !== p.valueType || e.facetSettings.sharedX !== m.sharedX || e.facetSettings.sharedY !== m.sharedY || i(e.facetSettings?.order ?? [], t.facetSettings?.order ?? []) || e.normalization?.method !== _?.method || e.normalization?.direction !== _?.direction || e.transform !== b || e.NAValueAs !== y || e.aggregation?.method !== v?.method || e.aggregation?.x !== v?.x || e.aggregation?.y !== v?.y || e.showEmptyRows !== t.showEmptyRows || e.showEmptyColumns !== t.showEmptyColumns;
53
53
  }
54
54
  _needUpdateCalculatedDataByData(e, t) {
55
55
  let n = Object.keys(e.data), r = Object.keys(t.data);
56
56
  return e.id !== t.id || n.length !== r.length || n.some((n) => e.data[n].length !== t.data[n]?.length);
57
57
  }
58
58
  async _updateData() {
59
- let { xColumn: e, yColumn: t, valueColumn: n, xGroupBy: r, yGroupBy: i, facetBy: a, chartSettings: c, facetSettings: l, annotations: u, dendrogramX: d, dendrogramY: f, normalization: p, NAValueAs: m, keysOrder: h, aggregation: g, showEmptyRows: _, showEmptyColumns: v } = this.settings, y = o({
59
+ let { xColumn: e, yColumn: t, valueColumn: n, xGroupBy: r, yGroupBy: i, xSortBy: a, ySortBy: c, facetBy: l, chartSettings: u, facetSettings: d, annotations: f, dendrogramX: p, dendrogramY: m, normalization: h, NAValueAs: g, transform: _, keysOrder: v, aggregation: y, showEmptyRows: b, showEmptyColumns: x } = this.settings, S = o({
60
60
  data: this.data,
61
61
  xColumn: e,
62
62
  yColumn: t,
63
63
  valueColumns: { dataSource: n },
64
- facetBy: a,
64
+ facetBy: l,
65
65
  xGroupBy: r,
66
66
  yGroupBy: i,
67
- facetSettings: l,
68
- annotations: u,
69
- dendrogramX: d,
70
- dendrogramY: f,
71
- normalization: p,
72
- NAValueAs: m,
73
- keysOrder: h,
74
- xAxis: c.xAxis,
75
- yAxis: c.yAxis,
76
- aggregation: g,
77
- showEmptyRows: _,
78
- showEmptyColumns: v
79
- }), b = c.valueType === "discrete" ? this.data.getColumnCategories(n.value) : [];
80
- if (d && l.sharedX && a.length > 0) throw Error("Dendrogram on X axis is not available with shared by facets X axis");
81
- if (f && l.sharedY && a.length > 0) throw Error("Dendrogram on Y axis is not available with shared by facets Y axis");
67
+ xSortBy: a,
68
+ ySortBy: c,
69
+ facetSettings: d,
70
+ annotations: f,
71
+ dendrogramX: p,
72
+ dendrogramY: m,
73
+ normalization: h,
74
+ NAValueAs: g,
75
+ transform: _,
76
+ keysOrder: v,
77
+ xAxis: u.xAxis,
78
+ yAxis: u.yAxis,
79
+ aggregation: y,
80
+ showEmptyRows: b,
81
+ showEmptyColumns: x
82
+ }), C = u.valueType === "discrete" ? this.data.getColumnCategories(n.value) : [];
83
+ if (p && d.sharedX && l.length > 0) throw Error("Dendrogram on X axis is not available with shared by facets X axis");
84
+ if (m && d.sharedY && l.length > 0) throw Error("Dendrogram on Y axis is not available with shared by facets Y axis");
82
85
  this.clusteringCalculationsInProgress = !0, this.onLoadingChange(!0);
83
- let x = await s({
84
- groupedCellsData: y,
85
- dendrogramX: d,
86
- dendrogramY: f
86
+ let w = await s({
87
+ groupedCellsData: S,
88
+ dendrogramX: p,
89
+ dendrogramY: m
87
90
  });
88
91
  this.clusteringCalculationsInProgress = !1, this.onLoadingChange(!1), this.calculatedData = {
89
- groupedCellsData: y,
90
- dendrogramsData: x,
91
- cellUniqValues: b
92
+ groupedCellsData: S,
93
+ dendrogramsData: w,
94
+ cellUniqValues: C
92
95
  }, this._updateChart();
93
96
  }
94
97
  _updateAesInData() {
@@ -96,13 +99,8 @@ var d = class extends e {
96
99
  }
97
100
  _updateChart() {
98
101
  if (!this.calculatedData || this.clusteringCalculationsInProgress) return;
99
- let { id: e, valueColumn: t, chartSettings: n, facetSettings: r, aes: i, annotations: a, dendrogramX: o, dendrogramY: s, inheritedDendrogramAes: c, normalization: l, keysOrder: u, xColumn: d, yColumn: f, xGroupBy: p, yGroupBy: m } = this.settings, h = {
100
- x: u[d.value]?.length > 0,
101
- y: u[f.value]?.length > 0,
102
- xGroup: p.some((e) => u[e.value]?.length > 0),
103
- yGroup: m.some((e) => u[e.value]?.length > 0)
104
- }, g = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0, _ = this.settings.cellsRenderingMode ?? (g > 5e5 ? "canvas" : "svg");
105
- this.chartRenderer.render(this.data, e, n, r, i, this.calculatedData.groupedCellsData, a, t, o, s, this.calculatedData.dendrogramsData, c, this.calculatedData.cellUniqValues, l, this.onTooltipHintSwitch, h, _);
102
+ let { id: e, valueColumn: t, chartSettings: n, facetSettings: r, aes: i, annotations: a, dendrogramX: o, dendrogramY: s, inheritedDendrogramAes: c, normalization: l } = this.settings, u = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0, d = this.settings.cellsRenderingMode ?? (u > 5e5 ? "canvas" : "svg");
103
+ this.chartRenderer.render(this.data, e, n, r, i, this.calculatedData.groupedCellsData, a, t, o, s, this.calculatedData.dendrogramsData, c, this.calculatedData.cellUniqValues, l, this.onTooltipHintSwitch, d);
106
104
  }
107
105
  };
108
106
  export { d as ChartHeatmap };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { type ColumnName, type DataValue, getUnknownErrorInfo, type HeatmapEventHandlers, type HeatmapSettings, isErrorInfo } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { MAX_SVG_RENDERED_CELLS_COUNT } from './constants';\nimport { noop } from 'lodash';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = noop;\n onLoadingChange: (v:boolean) => void = noop;\n\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n clusteringCalculationsInProgress = false;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch ?? noop;\n this.onLoadingChange = eventHandlers.onLoadingChange ?? noop;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\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: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(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 this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n aggregation,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n arraysAreDifferent(prevSettings.facetSettings?.order ?? [], settings.facetSettings?.order ?? []) ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs ||\n prevSettings.aggregation?.method !== aggregation?.method ||\n prevSettings.aggregation?.x !== aggregation?.x ||\n prevSettings.aggregation?.y !== aggregation?.y ||\n prevSettings.showEmptyRows !== settings.showEmptyRows ||\n prevSettings.showEmptyColumns !== settings.showEmptyColumns\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 async _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n } = this.settings;\n\n const groupedCellsData = getCells({\n data: this.data,\n xColumn,\n yColumn,\n valueColumns: { dataSource: valueColumn },\n facetBy,\n xGroupBy,\n yGroupBy,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n xAxis: chartSettings.xAxis,\n yAxis: chartSettings.yAxis,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n });\n\n const cellUniqValues = chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n \n if (dendrogramX && facetSettings.sharedX && facetBy.length > 0) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n if (dendrogramY && facetSettings.sharedY && facetBy.length > 0) {\n throw Error('Dendrogram on Y axis is not available with shared by facets Y axis');\n }\n this.clusteringCalculationsInProgress = true;\n this.onLoadingChange(true);\n const dendrogramsData = await getDendrograms({ groupedCellsData, dendrogramX, dendrogramY });\n this.clusteringCalculationsInProgress = false;\n this.onLoadingChange(false);\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n \n this._updateChart();\n }\n\n _updateAesInData() {\n this._updateChart();\n }\n\n _updateChart() {\n if (!this.calculatedData || this.clusteringCalculationsInProgress) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n keysOrder,\n xColumn,\n yColumn,\n xGroupBy,\n yGroupBy,\n } = this.settings;\n const customOrder = {\n x: keysOrder[xColumn.value]?.length > 0,\n y: keysOrder[yColumn.value]?.length > 0,\n xGroup: xGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n yGroup: yGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n };\n const dataSize = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0;\n const cellsRenderingMode = this.settings.cellsRenderingMode ?? (dataSize > MAX_SVG_RENDERED_CELLS_COUNT ? 'canvas' : 'svg');\n \n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n customOrder,\n cellsRenderingMode\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { type ColumnName, type DataValue, getUnknownErrorInfo, type HeatmapEventHandlers, type HeatmapSettings, isErrorInfo } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { MAX_SVG_RENDERED_CELLS_COUNT } from './constants';\nimport { noop } from 'lodash';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = noop;\n onLoadingChange: (v:boolean) => void = noop;\n\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n clusteringCalculationsInProgress = false;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch ?? noop;\n this.onLoadingChange = eventHandlers.onLoadingChange ?? noop;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\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: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(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 this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n xSortBy,\n ySortBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n aggregation,\n NAValueAs,\n transform,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.xSortBy, xSortBy) ||\n compareColumnGroups(prevSettings.ySortBy, ySortBy) ||\n prevSettings.chartSettings.xAxis.sorting !== chartSettings.xAxis.sorting ||\n prevSettings.chartSettings.yAxis.sorting !== chartSettings.yAxis.sorting ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n arraysAreDifferent(prevSettings.facetSettings?.order ?? [], settings.facetSettings?.order ?? []) ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.transform !== transform ||\n prevSettings.NAValueAs !== NAValueAs ||\n prevSettings.aggregation?.method !== aggregation?.method ||\n prevSettings.aggregation?.x !== aggregation?.x ||\n prevSettings.aggregation?.y !== aggregation?.y ||\n prevSettings.showEmptyRows !== settings.showEmptyRows ||\n prevSettings.showEmptyColumns !== settings.showEmptyColumns\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 async _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n xSortBy,\n ySortBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n transform,\n keysOrder,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n } = this.settings;\n\n const groupedCellsData = getCells({\n data: this.data,\n xColumn,\n yColumn,\n valueColumns: { dataSource: valueColumn },\n facetBy,\n xGroupBy,\n yGroupBy,\n xSortBy,\n ySortBy,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n transform,\n keysOrder,\n xAxis: chartSettings.xAxis,\n yAxis: chartSettings.yAxis,\n aggregation,\n showEmptyRows,\n showEmptyColumns,\n });\n\n const cellUniqValues = chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n \n if (dendrogramX && facetSettings.sharedX && facetBy.length > 0) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n if (dendrogramY && facetSettings.sharedY && facetBy.length > 0) {\n throw Error('Dendrogram on Y axis is not available with shared by facets Y axis');\n }\n this.clusteringCalculationsInProgress = true;\n this.onLoadingChange(true);\n const dendrogramsData = await getDendrograms({ groupedCellsData, dendrogramX, dendrogramY });\n this.clusteringCalculationsInProgress = false;\n this.onLoadingChange(false);\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n \n this._updateChart();\n }\n\n _updateAesInData() {\n this._updateChart();\n }\n\n _updateChart() {\n if (!this.calculatedData || this.clusteringCalculationsInProgress) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n } = this.settings;\n const dataSize = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0;\n const cellsRenderingMode = this.settings.cellsRenderingMode ?? (dataSize > MAX_SVG_RENDERED_CELLS_COUNT ? 'canvas' : 'svg');\n\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n cellsRenderingMode\n );\n }\n}\n"],"mappings":"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"}
@@ -207,6 +207,57 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
207
207
  valueLabelsMap?: Record<string, string> | undefined;
208
208
  nullValueLabel?: string | undefined;
209
209
  }>, "many">>;
210
+ xSortBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
211
+ type: z.ZodLiteral<"column">;
212
+ value: z.ZodString;
213
+ format: z.ZodOptional<z.ZodString>;
214
+ label: z.ZodOptional<z.ZodString>;
215
+ valueLabels: z.ZodOptional<z.ZodString>;
216
+ valueLabelsMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
217
+ nullValueLabel: z.ZodOptional<z.ZodString>;
218
+ }, "strip", z.ZodTypeAny, {
219
+ type: "column";
220
+ value: string;
221
+ format?: string | undefined;
222
+ label?: string | undefined;
223
+ valueLabels?: string | undefined;
224
+ valueLabelsMap?: Record<string, string> | undefined;
225
+ nullValueLabel?: string | undefined;
226
+ }, {
227
+ type: "column";
228
+ value: string;
229
+ format?: string | undefined;
230
+ label?: string | undefined;
231
+ valueLabels?: string | undefined;
232
+ valueLabelsMap?: Record<string, string> | undefined;
233
+ nullValueLabel?: string | undefined;
234
+ }>, "many">>;
235
+ ySortBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
236
+ type: z.ZodLiteral<"column">;
237
+ value: z.ZodString;
238
+ format: z.ZodOptional<z.ZodString>;
239
+ label: z.ZodOptional<z.ZodString>;
240
+ valueLabels: z.ZodOptional<z.ZodString>;
241
+ valueLabelsMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
242
+ nullValueLabel: z.ZodOptional<z.ZodString>;
243
+ }, "strip", z.ZodTypeAny, {
244
+ type: "column";
245
+ value: string;
246
+ format?: string | undefined;
247
+ label?: string | undefined;
248
+ valueLabels?: string | undefined;
249
+ valueLabelsMap?: Record<string, string> | undefined;
250
+ nullValueLabel?: string | undefined;
251
+ }, {
252
+ type: "column";
253
+ value: string;
254
+ format?: string | undefined;
255
+ label?: string | undefined;
256
+ valueLabels?: string | undefined;
257
+ valueLabelsMap?: Record<string, string> | undefined;
258
+ nullValueLabel?: string | undefined;
259
+ }>, "many">>;
260
+ transform: z.ZodOptional<z.ZodEnum<["log"]>>;
210
261
  keysOrder: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
211
262
  normalization: z.ZodOptional<z.ZodObject<{
212
263
  direction: z.ZodEnum<["row", "column"]>;
@@ -508,6 +559,25 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
508
559
  valueLabelsMap?: Record<string, string> | undefined;
509
560
  nullValueLabel?: string | undefined;
510
561
  }[] | undefined;
562
+ xSortBy?: {
563
+ type: "column";
564
+ value: string;
565
+ format?: string | undefined;
566
+ label?: string | undefined;
567
+ valueLabels?: string | undefined;
568
+ valueLabelsMap?: Record<string, string> | undefined;
569
+ nullValueLabel?: string | undefined;
570
+ }[] | undefined;
571
+ ySortBy?: {
572
+ type: "column";
573
+ value: string;
574
+ format?: string | undefined;
575
+ label?: string | undefined;
576
+ valueLabels?: string | undefined;
577
+ valueLabelsMap?: Record<string, string> | undefined;
578
+ nullValueLabel?: string | undefined;
579
+ }[] | undefined;
580
+ transform?: "log" | undefined;
511
581
  keysOrder?: Record<string, string[]> | undefined;
512
582
  normalization?: {
513
583
  direction: "column" | "row";
@@ -647,6 +717,25 @@ export declare const BubblesSettingsSchema: z.ZodObject<{
647
717
  valueLabelsMap?: Record<string, string> | undefined;
648
718
  nullValueLabel?: string | undefined;
649
719
  }[] | undefined;
720
+ xSortBy?: {
721
+ type: "column";
722
+ value: string;
723
+ format?: string | undefined;
724
+ label?: string | undefined;
725
+ valueLabels?: string | undefined;
726
+ valueLabelsMap?: Record<string, string> | undefined;
727
+ nullValueLabel?: string | undefined;
728
+ }[] | undefined;
729
+ ySortBy?: {
730
+ type: "column";
731
+ value: string;
732
+ format?: string | undefined;
733
+ label?: string | undefined;
734
+ valueLabels?: string | undefined;
735
+ valueLabelsMap?: Record<string, string> | undefined;
736
+ nullValueLabel?: string | undefined;
737
+ }[] | undefined;
738
+ transform?: "log" | undefined;
650
739
  keysOrder?: Record<string, string[]> | undefined;
651
740
  normalization?: {
652
741
  direction: "column" | "row";
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsEhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyEhC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -39,6 +39,9 @@ const c = o.object({
39
39
  yColumn: t,
40
40
  xGroupBy: o.optional(o.array(t)),
41
41
  yGroupBy: o.optional(o.array(t)),
42
+ xSortBy: o.optional(o.array(t)),
43
+ ySortBy: o.optional(o.array(t)),
44
+ transform: o.optional(o.enum(["log"])),
42
45
  keysOrder: o.optional(o.record(o.string(), o.array(o.string()))),
43
46
  normalization: o.optional(o.object({
44
47
  direction: o.enum(["row", "column"]),
@@ -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 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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"}
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 xSortBy: z.optional(z.array(ColumnNameSchema)),\n ySortBy: z.optional(z.array(ColumnNameSchema)),\n transform: z.optional(z.enum(['log'])),\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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"}
@@ -320,6 +320,56 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
320
320
  valueLabelsMap?: Record<string, string> | undefined;
321
321
  nullValueLabel?: string | undefined;
322
322
  }>, "many">>;
323
+ xSortBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
324
+ type: z.ZodLiteral<"column">;
325
+ value: z.ZodString;
326
+ format: z.ZodOptional<z.ZodString>;
327
+ label: z.ZodOptional<z.ZodString>;
328
+ valueLabels: z.ZodOptional<z.ZodString>;
329
+ valueLabelsMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
330
+ nullValueLabel: z.ZodOptional<z.ZodString>;
331
+ }, "strip", z.ZodTypeAny, {
332
+ type: "column";
333
+ value: string;
334
+ format?: string | undefined;
335
+ label?: string | undefined;
336
+ valueLabels?: string | undefined;
337
+ valueLabelsMap?: Record<string, string> | undefined;
338
+ nullValueLabel?: string | undefined;
339
+ }, {
340
+ type: "column";
341
+ value: string;
342
+ format?: string | undefined;
343
+ label?: string | undefined;
344
+ valueLabels?: string | undefined;
345
+ valueLabelsMap?: Record<string, string> | undefined;
346
+ nullValueLabel?: string | undefined;
347
+ }>, "many">>;
348
+ ySortBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
349
+ type: z.ZodLiteral<"column">;
350
+ value: z.ZodString;
351
+ format: z.ZodOptional<z.ZodString>;
352
+ label: z.ZodOptional<z.ZodString>;
353
+ valueLabels: z.ZodOptional<z.ZodString>;
354
+ valueLabelsMap: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
355
+ nullValueLabel: z.ZodOptional<z.ZodString>;
356
+ }, "strip", z.ZodTypeAny, {
357
+ type: "column";
358
+ value: string;
359
+ format?: string | undefined;
360
+ label?: string | undefined;
361
+ valueLabels?: string | undefined;
362
+ valueLabelsMap?: Record<string, string> | undefined;
363
+ nullValueLabel?: string | undefined;
364
+ }, {
365
+ type: "column";
366
+ value: string;
367
+ format?: string | undefined;
368
+ label?: string | undefined;
369
+ valueLabels?: string | undefined;
370
+ valueLabelsMap?: Record<string, string> | undefined;
371
+ nullValueLabel?: string | undefined;
372
+ }>, "many">>;
323
373
  facetBy: z.ZodOptional<z.ZodArray<z.ZodObject<{
324
374
  type: z.ZodLiteral<"column">;
325
375
  value: z.ZodString;
@@ -346,6 +396,7 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
346
396
  nullValueLabel?: string | undefined;
347
397
  }>, "many">>;
348
398
  keysOrder: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
399
+ transform: z.ZodOptional<z.ZodEnum<["log"]>>;
349
400
  normalization: z.ZodOptional<z.ZodObject<{
350
401
  direction: z.ZodEnum<["row", "column"]>;
351
402
  method: z.ZodEnum<["standardScaling", "meanNormalization"]>;
@@ -1495,6 +1546,25 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
1495
1546
  valueLabelsMap?: Record<string, string> | undefined;
1496
1547
  nullValueLabel?: string | undefined;
1497
1548
  }[] | undefined;
1549
+ xSortBy?: {
1550
+ type: "column";
1551
+ value: string;
1552
+ format?: string | undefined;
1553
+ label?: string | undefined;
1554
+ valueLabels?: string | undefined;
1555
+ valueLabelsMap?: Record<string, string> | undefined;
1556
+ nullValueLabel?: string | undefined;
1557
+ }[] | undefined;
1558
+ ySortBy?: {
1559
+ type: "column";
1560
+ value: string;
1561
+ format?: string | undefined;
1562
+ label?: string | undefined;
1563
+ valueLabels?: string | undefined;
1564
+ valueLabelsMap?: Record<string, string> | undefined;
1565
+ nullValueLabel?: string | undefined;
1566
+ }[] | undefined;
1567
+ transform?: "log" | undefined;
1498
1568
  keysOrder?: Record<string, string[]> | undefined;
1499
1569
  normalization?: {
1500
1570
  direction: "column" | "row";
@@ -1814,6 +1884,25 @@ export declare const HeatmapSettingsSchema: z.ZodObject<{
1814
1884
  valueLabelsMap?: Record<string, string> | undefined;
1815
1885
  nullValueLabel?: string | undefined;
1816
1886
  }[] | undefined;
1887
+ xSortBy?: {
1888
+ type: "column";
1889
+ value: string;
1890
+ format?: string | undefined;
1891
+ label?: string | undefined;
1892
+ valueLabels?: string | undefined;
1893
+ valueLabelsMap?: Record<string, string> | undefined;
1894
+ nullValueLabel?: string | undefined;
1895
+ }[] | undefined;
1896
+ ySortBy?: {
1897
+ type: "column";
1898
+ value: string;
1899
+ format?: string | undefined;
1900
+ label?: string | undefined;
1901
+ valueLabels?: string | undefined;
1902
+ valueLabelsMap?: Record<string, string> | undefined;
1903
+ nullValueLabel?: string | undefined;
1904
+ }[] | undefined;
1905
+ transform?: "log" | undefined;
1817
1906
  keysOrder?: Record<string, string[]> | undefined;
1818
1907
  normalization?: {
1819
1908
  direction: "column" | "row";
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkFhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqFhC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -100,8 +100,11 @@ const y = c.object({
100
100
  valueColumn: n,
101
101
  xGroupBy: c.optional(c.array(n)),
102
102
  yGroupBy: c.optional(c.array(n)),
103
+ xSortBy: c.optional(c.array(n)),
104
+ ySortBy: c.optional(c.array(n)),
103
105
  facetBy: c.optional(c.array(n)),
104
106
  keysOrder: c.optional(c.record(c.string(), c.array(c.string()))),
107
+ transform: c.optional(c.enum(["log"])),
105
108
  normalization: c.optional(c.object({
106
109
  direction: c.enum(["row", "column"]),
107
110
  method: c.enum(["standardScaling", "meanNormalization"]),
@@ -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 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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"}
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 xSortBy: z.optional(z.array(ColumnNameSchema)),\n ySortBy: 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 transform: z.optional(z.enum(['log'])),\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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"}
@@ -0,0 +1,2 @@
1
+ export declare function intersect<T>(a: T[], b: T[]): T[];
2
+ //# sourceMappingURL=intersect.d.ts.map