@milaboratories/miplots4 1.2.0 → 1.2.2

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 (80) 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/common/ContinuousGrid.d.ts.map +1 -1
  17. package/dist/common/ContinuousGrid.js +90 -56
  18. package/dist/common/ContinuousGrid.js.map +1 -1
  19. package/dist/heatmap/ChartRenderer.d.ts +2 -12
  20. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  21. package/dist/heatmap/ChartRenderer.js +26 -26
  22. package/dist/heatmap/ChartRenderer.js.map +1 -1
  23. package/dist/heatmap/HeatmapSettingsImpl.d.ts +3 -0
  24. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  25. package/dist/heatmap/HeatmapSettingsImpl.js +5 -2
  26. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  27. package/dist/heatmap/fillCellsData.d.ts +6 -1
  28. package/dist/heatmap/fillCellsData.d.ts.map +1 -1
  29. package/dist/heatmap/fillCellsData.js +135 -96
  30. package/dist/heatmap/fillCellsData.js.map +1 -1
  31. package/dist/heatmap/getCells.d.ts +4 -1
  32. package/dist/heatmap/getCells.d.ts.map +1 -1
  33. package/dist/heatmap/getCells.js +19 -16
  34. package/dist/heatmap/getCells.js.map +1 -1
  35. package/dist/heatmap/index.d.ts.map +1 -1
  36. package/dist/heatmap/index.js +32 -34
  37. package/dist/heatmap/index.js.map +1 -1
  38. package/dist/histogram/ChartRenderer.d.ts.map +1 -1
  39. package/dist/histogram/ChartRenderer.js +6 -0
  40. package/dist/histogram/ChartRenderer.js.map +1 -1
  41. package/dist/histogram/HistogramSettingsImpl.d.ts +5 -1
  42. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
  43. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  44. package/dist/scatterplot/components/Grid.d.ts.map +1 -1
  45. package/dist/scatterplot/components/Grid.js +109 -71
  46. package/dist/scatterplot/components/Grid.js.map +1 -1
  47. package/dist/types/bubble.d.ts +97 -8
  48. package/dist/types/bubble.d.ts.map +1 -1
  49. package/dist/types/bubble.js +3 -0
  50. package/dist/types/bubble.js.map +1 -1
  51. package/dist/types/common.d.ts +62 -6
  52. package/dist/types/common.d.ts.map +1 -1
  53. package/dist/types/common.js +15 -6
  54. package/dist/types/common.js.map +1 -1
  55. package/dist/types/dendro.d.ts +6 -6
  56. package/dist/types/discrete.d.ts +41 -13
  57. package/dist/types/discrete.d.ts.map +1 -1
  58. package/dist/types/heatmap.d.ts +93 -4
  59. package/dist/types/heatmap.d.ts.map +1 -1
  60. package/dist/types/heatmap.js +3 -0
  61. package/dist/types/heatmap.js.map +1 -1
  62. package/dist/types/histogram.d.ts +59 -10
  63. package/dist/types/histogram.d.ts.map +1 -1
  64. package/dist/types/histogram.js +60 -66
  65. package/dist/types/histogram.js.map +1 -1
  66. package/dist/types/scatterplot-umap.d.ts +74 -18
  67. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  68. package/dist/types/scatterplot.d.ts +74 -18
  69. package/dist/types/scatterplot.d.ts.map +1 -1
  70. package/dist/types/selection.d.ts +8 -8
  71. package/dist/utils/getChartEdgeSides.d.ts +1 -1
  72. package/dist/utils/intersect.d.ts +2 -0
  73. package/dist/utils/intersect.d.ts.map +1 -0
  74. package/dist/utils/intersect.js +8 -0
  75. package/dist/utils/intersect.js.map +1 -0
  76. package/dist/utils/significantLinesStyle.d.ts +8 -0
  77. package/dist/utils/significantLinesStyle.d.ts.map +1 -0
  78. package/dist/utils/significantLinesStyle.js +12 -0
  79. package/dist/utils/significantLinesStyle.js.map +1 -0
  80. package/package.json +1 -1
@@ -51,8 +51,10 @@ export declare class HeatmapSettingsImpl implements SettingsInterface {
51
51
  };
52
52
  readonly xColumn: ColumnName;
53
53
  readonly xGroupBy: ColumnName[];
54
+ readonly xSortBy: ColumnName[];
54
55
  readonly yColumn: ColumnName;
55
56
  readonly yGroupBy: ColumnName[];
57
+ readonly ySortBy: ColumnName[];
56
58
  readonly valueColumn: ColumnName;
57
59
  readonly facetBy: ColumnName[];
58
60
  readonly normalization: {
@@ -131,6 +133,7 @@ export declare class HeatmapSettingsImpl implements SettingsInterface {
131
133
  readonly dendrogramY: HeatmapDendrogramSettingsY | null;
132
134
  readonly inheritedDendrogramAes: Record<string, AesRecord> | null;
133
135
  readonly NAValueAs: number | null;
136
+ readonly transform: 'log' | null;
134
137
  readonly showEmptyRows: boolean;
135
138
  readonly showEmptyColumns: boolean;
136
139
  readonly cellsRenderingMode: 'canvas' | 'svg' | null;
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/heatmap/HeatmapSettingsImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HeatmapSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/heatmap/HeatmapSettingsImpl.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,10 @@ var r = {
24
24
  facetSettings;
25
25
  xColumn;
26
26
  xGroupBy;
27
+ xSortBy;
27
28
  yColumn;
28
29
  yGroupBy;
30
+ ySortBy;
29
31
  valueColumn;
30
32
  facetBy;
31
33
  normalization;
@@ -38,11 +40,12 @@ var r = {
38
40
  dendrogramY;
39
41
  inheritedDendrogramAes;
40
42
  NAValueAs;
43
+ transform;
41
44
  showEmptyRows;
42
45
  showEmptyColumns;
43
46
  cellsRenderingMode;
44
47
  constructor(e) {
45
- if (t.parse(e), this.id = n.uniqueId("settings"), this.xColumn = e.xColumn, this.xGroupBy = e.xGroupBy ?? [], this.yColumn = e.yColumn, this.yGroupBy = e.yGroupBy ?? [], this.valueColumn = e.valueColumn, this.facetBy = e.facetBy ?? [], this.chartSettings = {
48
+ if (t.parse(e), this.id = n.uniqueId("settings"), this.xColumn = e.xColumn, this.xGroupBy = e.xGroupBy ?? [], this.xSortBy = e.xSortBy ?? [], this.yColumn = e.yColumn, this.yGroupBy = e.yGroupBy ?? [], this.ySortBy = e.ySortBy ?? [], this.valueColumn = e.valueColumn, this.facetBy = e.facetBy ?? [], this.chartSettings = {
46
49
  title: {
47
50
  position: "left",
48
51
  show: !0,
@@ -99,7 +102,7 @@ var r = {
99
102
  sharedY: !0,
100
103
  order: e.facetSettings?.order ?? null,
101
104
  ...e.facetSettings
102
- }, this.chartSettings.size.cellWidth && this.facetBy.length > 0 && (this.facetSettings.sharedX = !0), this.chartSettings.size.cellHeight && this.facetBy.length > 0 && (this.facetSettings.sharedY = !0), this.keysOrder = e.keysOrder ?? {}, this.normalization = this.chartSettings.valueType === "continuous" ? e.normalization ?? null : null, this.NAValueAs = e.NAValueAs ?? null, this.showEmptyRows = e.showEmptyRows ?? !1, this.showEmptyColumns = e.showEmptyColumns ?? !1, this.aes = {
105
+ }, this.chartSettings.size.cellWidth && this.facetBy.length > 0 && (this.facetSettings.sharedX = !0), this.chartSettings.size.cellHeight && this.facetBy.length > 0 && (this.facetSettings.sharedY = !0), this.keysOrder = e.keysOrder ?? {}, this.normalization = this.chartSettings.valueType === "continuous" ? e.normalization ?? null : null, this.transform = this.chartSettings.valueType === "continuous" ? e.transform ?? null : null, this.NAValueAs = e.NAValueAs ?? null, this.showEmptyRows = e.showEmptyRows ?? !1, this.showEmptyColumns = e.showEmptyColumns ?? !1, this.aes = {
103
106
  colorsList: e.aes?.colorsList ?? [
104
107
  "black",
105
108
  "white",
@@ -1 +1 @@
1
- {"version":3,"file":"HeatmapSettingsImpl.js","names":[],"sources":["../../src/heatmap/HeatmapSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n AesRecord,\n AggregationMethod,\n ColumnName, DendrogramDistance, DendrogramLinkage, HeatmapSettings,\n LegendPosition, LineShape, NormalizationDirection, NormalizationMethod, PointShape,\n SettingsInterface,\n TitlePosition\n} from '../types';\nimport { HeatmapSettingsSchema } from '../types';\nimport { MIN_MARGIN, MIN_PADDING } from './constants';\n\nconst DEFAULT_DENDRO_AES = {\n lineColor: BLACK,\n dotShape: '21' as PointShape,\n dotFill: BLACK,\n dotSize: 3,\n lineShape: 'solid' as LineShape,\n lineWidth: 1,\n};\nconst DEFAULT_DENDRO: HeatmapDendrogramSettings = {\n size: 150,\n distance: 'euclidean',\n linkage: 'average',\n fillNA: 0,\n showNodes: true,\n hidden: false,\n edgeInheritance: 'up',\n aes: DEFAULT_DENDRO_AES,\n};\n\nexport interface HeatmapDendrogramSettings {\n size: number;\n distance: DendrogramDistance;\n linkage: DendrogramLinkage;\n fillNA: number;\n showNodes: boolean;\n hidden: boolean;\n edgeInheritance: 'up' | 'down';\n aes: {\n lineColor: string | ColumnName;\n dotFill: string | ColumnName;\n dotShape: PointShape | ColumnName;\n dotSize: number | ColumnName;\n lineShape: LineShape | ColumnName;\n lineWidth: number | ColumnName;\n };\n}\n\ninterface HeatmapDendrogramSettingsX extends HeatmapDendrogramSettings {\n position: 'top' | 'bottom';\n}\ninterface HeatmapDendrogramSettingsY extends HeatmapDendrogramSettings {\n position: 'left' | 'right';\n}\n\ninterface HeatmapAnnotation {\n id: string;\n valueColumn: ColumnName;\n showTitle: boolean;\n type: 'discrete' | 'continuous';\n colors: string[];\n}\n\ninterface HeatmapAnnotationX extends HeatmapAnnotation {\n axis: 'x';\n position: 'top' | 'bottom';\n titlePosition: 'left' | 'right';\n}\ninterface HeatmapAnnotationY extends HeatmapAnnotation {\n axis: 'y';\n position: 'left' | 'right';\n titlePosition: 'top' | 'bottom';\n}\n\nexport class HeatmapSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'heatmap';\n readonly facetSettings: {\n order: string[] | null;\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n };\n readonly xColumn: ColumnName;\n readonly xGroupBy: ColumnName[];\n readonly yColumn: ColumnName;\n readonly yGroupBy: ColumnName[];\n readonly valueColumn: ColumnName;\n readonly facetBy: ColumnName[];\n readonly normalization: { direction: NormalizationDirection, method: NormalizationMethod, colorRange?: number[] } | null;\n readonly chartSettings: {\n readonly title: { name: string; show: boolean; position: TitlePosition };\n readonly size: {\n width: number;\n height: number;\n cellWidth: number | null;\n cellHeight: number | null;\n innerOffset: number;\n outerOffset: number;\n };\n readonly frame: { type: 'full' | 'groups' | 'none' };\n readonly valueType: 'discrete' | 'continuous';\n readonly yAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n showGroupLabels: boolean;\n position: 'left' | 'right';\n groupingPosition: 'left' | 'right';\n axisLabelsAngle: 0 | 45 | 90;\n groupLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly xAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n showGroupLabels: boolean;\n position: 'bottom' | 'top';\n groupingPosition: 'bottom' | 'top';\n axisLabelsAngle: 0 | 45 | 90;\n groupLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly legend: { show: boolean; position: LegendPosition };\n readonly tooltips: { show: boolean; content?: ColumnName[] };\n };\n readonly keysOrder: Record<string, string[]>;\n readonly aes: {\n colorsList: string[];\n colorsMap: Record<string, string> | null;\n valueColors: string[] | null;\n valuesByColors: number[] | null;\n groupGap: number;\n cellStrokeColor: string;\n emptyCellColor: string;\n };\n\n readonly aggregation: {\n x: boolean;\n y: boolean;\n method: AggregationMethod;\n };\n\n readonly annotations: (HeatmapAnnotationX | HeatmapAnnotationY)[];\n\n readonly dendrogramX: HeatmapDendrogramSettingsX | null;\n readonly dendrogramY: HeatmapDendrogramSettingsY | null;\n readonly inheritedDendrogramAes: Record<string, AesRecord> | null;\n readonly NAValueAs: number | null;\n readonly showEmptyRows: boolean;\n readonly showEmptyColumns: boolean;\n readonly cellsRenderingMode: 'canvas' | 'svg' | null;\n\n constructor(settings: HeatmapSettings) {\n HeatmapSettingsSchema.parse(settings);\n\n this.id = lodash.uniqueId('settings');\n this.xColumn = settings.xColumn;\n this.xGroupBy = settings.xGroupBy ?? [];\n this.yColumn = settings.yColumn;\n this.yGroupBy = settings.yGroupBy ?? [];\n this.valueColumn = settings.valueColumn;\n this.facetBy = settings.facetBy ?? [];\n this.chartSettings = {\n title: {\n position: 'left',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n innerOffset: settings.size?.innerOffset ?? MIN_PADDING,\n outerOffset: settings.size?.outerOffset ?? MIN_MARGIN,\n cellWidth: settings?.size?.cellWidth ?? null,\n cellHeight: settings?.size?.cellHeight ?? null,\n },\n frame: { type: settings.frame?.type ?? 'none' },\n valueType: settings.valueType ?? 'continuous',\n yAxis: {\n title: settings.yColumn.label ?? settings.yColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n showGroupLabels: true,\n position: 'left',\n groupingPosition: 'left',\n axisLabelsAngle: 90,\n groupLabelsAngle: 0,\n sorting: 'asc',\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.xColumn.label ?? settings.xColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n showGroupLabels: true,\n position: 'bottom',\n groupingPosition: 'bottom',\n axisLabelsAngle: 90,\n groupLabelsAngle: 0,\n sorting: 'asc',\n ...settings.xAxis,\n },\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n show: true,\n ...settings.tooltips,\n },\n };\n this.facetSettings = {\n sharedX: true,\n sharedY: true,\n order: settings.facetSettings?.order ?? null,\n ...settings.facetSettings,\n };\n if (this.chartSettings.size.cellWidth && this.facetBy.length > 0) {\n this.facetSettings.sharedX = true;\n }\n if (this.chartSettings.size.cellHeight && this.facetBy.length > 0) {\n this.facetSettings.sharedY = true;\n }\n this.keysOrder = settings.keysOrder ?? {};\n this.normalization = this.chartSettings.valueType === 'continuous' ? settings.normalization ?? null : null;\n this.NAValueAs = settings.NAValueAs ?? null;\n this.showEmptyRows = settings.showEmptyRows ?? false;\n this.showEmptyColumns = settings.showEmptyColumns ?? false;\n this.aes = {\n colorsList: settings.aes?.colorsList ?? ['black', 'white', 'red'],\n colorsMap: settings.aes?.colorsMap ?? null,\n valueColors: settings.aes?.valueColors ?? null,\n valuesByColors: settings.aes?.valuesByColors ?? null,\n cellStrokeColor: settings.aes?.cellStrokeColor ?? 'none',\n groupGap: settings.aes?.groupGap ?? 3,\n emptyCellColor: settings.aes?.emptyCellColor ?? 'white',\n };\n\n this.annotations = (settings.annotations ?? []).map(item => {\n if (item.axis === 'x') {\n return {\n id: lodash.uniqueId('annotation'),\n axis: 'x',\n valueColumn: item.valueColumn,\n position: item.position ?? this.chartSettings.xAxis.position,\n titlePosition: item.titlePosition ?? 'right',\n showTitle: item.showTitle ?? true,\n type: item.type,\n colors: item.colors ?? ['white', 'black'],\n };\n }\n return {\n id: lodash.uniqueId('annotation'),\n axis: 'y',\n valueColumn: item.valueColumn,\n position: item.position ?? this.chartSettings.yAxis.position,\n titlePosition: item.titlePosition ?? 'top',\n showTitle: item.showTitle ?? true,\n type: item.type,\n colors: item.colors ?? ['white', 'black'],\n };\n });\n\n if (settings.valueType === 'discrete' && (settings.dendrogramX || settings.dendrogramY)) {\n throw Error('Dendrogram is not available with discrete cells values');\n }\n\n this.aggregation = {\n x: false,\n y: false,\n method: 'min',\n ...settings.aggregation\n };\n\n this.dendrogramX = settings.dendrogramX\n ? {\n ...DEFAULT_DENDRO,\n position: 'top',\n ...settings.dendrogramX,\n aes: {\n ...DEFAULT_DENDRO_AES,\n ...settings.dendrogramX?.aes,\n },\n }\n : null;\n this.dendrogramY = settings.dendrogramY\n ? {\n ...DEFAULT_DENDRO,\n position: 'left',\n ...settings.dendrogramY,\n aes: {\n ...DEFAULT_DENDRO_AES,\n ...settings.dendrogramY?.aes,\n },\n }\n : null;\n this.inheritedDendrogramAes = settings.inheritedDendrogramAes ?? null;\n this.cellsRenderingMode = settings.cellsRenderingMode ?? null;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"HeatmapSettingsImpl.js","names":[],"sources":["../../src/heatmap/HeatmapSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n AesRecord,\n AggregationMethod,\n ColumnName, DendrogramDistance, DendrogramLinkage, HeatmapSettings,\n LegendPosition, LineShape, NormalizationDirection, NormalizationMethod, PointShape,\n SettingsInterface,\n TitlePosition\n} from '../types';\nimport { HeatmapSettingsSchema } from '../types';\nimport { MIN_MARGIN, MIN_PADDING } from './constants';\n\nconst DEFAULT_DENDRO_AES = {\n lineColor: BLACK,\n dotShape: '21' as PointShape,\n dotFill: BLACK,\n dotSize: 3,\n lineShape: 'solid' as LineShape,\n lineWidth: 1,\n};\nconst DEFAULT_DENDRO: HeatmapDendrogramSettings = {\n size: 150,\n distance: 'euclidean',\n linkage: 'average',\n fillNA: 0,\n showNodes: true,\n hidden: false,\n edgeInheritance: 'up',\n aes: DEFAULT_DENDRO_AES,\n};\n\nexport interface HeatmapDendrogramSettings {\n size: number;\n distance: DendrogramDistance;\n linkage: DendrogramLinkage;\n fillNA: number;\n showNodes: boolean;\n hidden: boolean;\n edgeInheritance: 'up' | 'down';\n aes: {\n lineColor: string | ColumnName;\n dotFill: string | ColumnName;\n dotShape: PointShape | ColumnName;\n dotSize: number | ColumnName;\n lineShape: LineShape | ColumnName;\n lineWidth: number | ColumnName;\n };\n}\n\ninterface HeatmapDendrogramSettingsX extends HeatmapDendrogramSettings {\n position: 'top' | 'bottom';\n}\ninterface HeatmapDendrogramSettingsY extends HeatmapDendrogramSettings {\n position: 'left' | 'right';\n}\n\ninterface HeatmapAnnotation {\n id: string;\n valueColumn: ColumnName;\n showTitle: boolean;\n type: 'discrete' | 'continuous';\n colors: string[];\n}\n\ninterface HeatmapAnnotationX extends HeatmapAnnotation {\n axis: 'x';\n position: 'top' | 'bottom';\n titlePosition: 'left' | 'right';\n}\ninterface HeatmapAnnotationY extends HeatmapAnnotation {\n axis: 'y';\n position: 'left' | 'right';\n titlePosition: 'top' | 'bottom';\n}\n\nexport class HeatmapSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'heatmap';\n readonly facetSettings: {\n order: string[] | null;\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n };\n readonly xColumn: ColumnName;\n readonly xGroupBy: ColumnName[];\n readonly xSortBy: ColumnName[];\n readonly yColumn: ColumnName;\n readonly yGroupBy: ColumnName[];\n readonly ySortBy: ColumnName[];\n readonly valueColumn: ColumnName;\n readonly facetBy: ColumnName[];\n readonly normalization: { direction: NormalizationDirection, method: NormalizationMethod, colorRange?: number[] } | null;\n readonly chartSettings: {\n readonly title: { name: string; show: boolean; position: TitlePosition };\n readonly size: {\n width: number;\n height: number;\n cellWidth: number | null;\n cellHeight: number | null;\n innerOffset: number;\n outerOffset: number;\n };\n readonly frame: { type: 'full' | 'groups' | 'none' };\n readonly valueType: 'discrete' | 'continuous';\n readonly yAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n showGroupLabels: boolean;\n position: 'left' | 'right';\n groupingPosition: 'left' | 'right';\n axisLabelsAngle: 0 | 45 | 90;\n groupLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly xAxis: {\n title: string;\n showTicks: boolean;\n showTitle: boolean;\n showAxisLabels: boolean;\n showGroupLabels: boolean;\n position: 'bottom' | 'top';\n groupingPosition: 'bottom' | 'top';\n axisLabelsAngle: 0 | 45 | 90;\n groupLabelsAngle: 0 | 45 | 90;\n sorting: 'asc' | 'desc';\n };\n readonly legend: { show: boolean; position: LegendPosition };\n readonly tooltips: { show: boolean; content?: ColumnName[] };\n };\n readonly keysOrder: Record<string, string[]>;\n readonly aes: {\n colorsList: string[];\n colorsMap: Record<string, string> | null;\n valueColors: string[] | null;\n valuesByColors: number[] | null;\n groupGap: number;\n cellStrokeColor: string;\n emptyCellColor: string;\n };\n\n readonly aggregation: {\n x: boolean;\n y: boolean;\n method: AggregationMethod;\n };\n\n readonly annotations: (HeatmapAnnotationX | HeatmapAnnotationY)[];\n\n readonly dendrogramX: HeatmapDendrogramSettingsX | null;\n readonly dendrogramY: HeatmapDendrogramSettingsY | null;\n readonly inheritedDendrogramAes: Record<string, AesRecord> | null;\n readonly NAValueAs: number | null;\n readonly transform: 'log' | null;\n readonly showEmptyRows: boolean;\n readonly showEmptyColumns: boolean;\n readonly cellsRenderingMode: 'canvas' | 'svg' | null;\n\n constructor(settings: HeatmapSettings) {\n HeatmapSettingsSchema.parse(settings);\n\n this.id = lodash.uniqueId('settings');\n this.xColumn = settings.xColumn;\n this.xGroupBy = settings.xGroupBy ?? [];\n this.xSortBy = settings.xSortBy ?? [];\n this.yColumn = settings.yColumn;\n this.yGroupBy = settings.yGroupBy ?? [];\n this.ySortBy = settings.ySortBy ?? [];\n this.valueColumn = settings.valueColumn;\n this.facetBy = settings.facetBy ?? [];\n this.chartSettings = {\n title: {\n position: 'left',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n innerOffset: settings.size?.innerOffset ?? MIN_PADDING,\n outerOffset: settings.size?.outerOffset ?? MIN_MARGIN,\n cellWidth: settings?.size?.cellWidth ?? null,\n cellHeight: settings?.size?.cellHeight ?? null,\n },\n frame: { type: settings.frame?.type ?? 'none' },\n valueType: settings.valueType ?? 'continuous',\n yAxis: {\n title: settings.yColumn.label ?? settings.yColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n showGroupLabels: true,\n position: 'left',\n groupingPosition: 'left',\n axisLabelsAngle: 90,\n groupLabelsAngle: 0,\n sorting: 'asc',\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.xColumn.label ?? settings.xColumn.value,\n showTicks: true,\n showTitle: true,\n showAxisLabels: true,\n showGroupLabels: true,\n position: 'bottom',\n groupingPosition: 'bottom',\n axisLabelsAngle: 90,\n groupLabelsAngle: 0,\n sorting: 'asc',\n ...settings.xAxis,\n },\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n show: true,\n ...settings.tooltips,\n },\n };\n this.facetSettings = {\n sharedX: true,\n sharedY: true,\n order: settings.facetSettings?.order ?? null,\n ...settings.facetSettings,\n };\n if (this.chartSettings.size.cellWidth && this.facetBy.length > 0) {\n this.facetSettings.sharedX = true;\n }\n if (this.chartSettings.size.cellHeight && this.facetBy.length > 0) {\n this.facetSettings.sharedY = true;\n }\n this.keysOrder = settings.keysOrder ?? {};\n this.normalization = this.chartSettings.valueType === 'continuous' ? settings.normalization ?? null : null;\n this.transform = this.chartSettings.valueType === 'continuous' ? settings.transform ?? null : null;\n this.NAValueAs = settings.NAValueAs ?? null;\n this.showEmptyRows = settings.showEmptyRows ?? false;\n this.showEmptyColumns = settings.showEmptyColumns ?? false;\n this.aes = {\n colorsList: settings.aes?.colorsList ?? ['black', 'white', 'red'],\n colorsMap: settings.aes?.colorsMap ?? null,\n valueColors: settings.aes?.valueColors ?? null,\n valuesByColors: settings.aes?.valuesByColors ?? null,\n cellStrokeColor: settings.aes?.cellStrokeColor ?? 'none',\n groupGap: settings.aes?.groupGap ?? 3,\n emptyCellColor: settings.aes?.emptyCellColor ?? 'white',\n };\n\n this.annotations = (settings.annotations ?? []).map(item => {\n if (item.axis === 'x') {\n return {\n id: lodash.uniqueId('annotation'),\n axis: 'x',\n valueColumn: item.valueColumn,\n position: item.position ?? this.chartSettings.xAxis.position,\n titlePosition: item.titlePosition ?? 'right',\n showTitle: item.showTitle ?? true,\n type: item.type,\n colors: item.colors ?? ['white', 'black'],\n };\n }\n return {\n id: lodash.uniqueId('annotation'),\n axis: 'y',\n valueColumn: item.valueColumn,\n position: item.position ?? this.chartSettings.yAxis.position,\n titlePosition: item.titlePosition ?? 'top',\n showTitle: item.showTitle ?? true,\n type: item.type,\n colors: item.colors ?? ['white', 'black'],\n };\n });\n\n if (settings.valueType === 'discrete' && (settings.dendrogramX || settings.dendrogramY)) {\n throw Error('Dendrogram is not available with discrete cells values');\n }\n\n this.aggregation = {\n x: false,\n y: false,\n method: 'min',\n ...settings.aggregation\n };\n\n this.dendrogramX = settings.dendrogramX\n ? {\n ...DEFAULT_DENDRO,\n position: 'top',\n ...settings.dendrogramX,\n aes: {\n ...DEFAULT_DENDRO_AES,\n ...settings.dendrogramX?.aes,\n },\n }\n : null;\n this.dendrogramY = settings.dendrogramY\n ? {\n ...DEFAULT_DENDRO,\n position: 'left',\n ...settings.dendrogramY,\n aes: {\n ...DEFAULT_DENDRO_AES,\n ...settings.dendrogramY?.aes,\n },\n }\n : null;\n this.inheritedDendrogramAes = settings.inheritedDendrogramAes ?? null;\n this.cellsRenderingMode = settings.cellsRenderingMode ?? null;\n }\n}\n"],"mappings":"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"}
@@ -40,8 +40,10 @@ export type GroupedCellsData<T extends string> = {
40
40
  cells: Record<string, Record<string, Cell<T>>>;
41
41
  }>;
42
42
  };
43
+ export declare const sortByColumns: (arr: string[], direction: "asc" | "desc", sortColumns: ColumnName[], dataByKeys: Record<string, Record<string, DataValue>>) => string[];
43
44
  export declare function fillCellsData<T extends string>(result: GroupedCellsData<T>, { data, xColumn, yColumn, valueColumns, facetBy, xGroupBy, yGroupBy, facetSettings, annotations, dendrogramX, dendrogramY, normalizationBySource, // separated for color and size for example
44
- NAValueAs, keysOrder, xAxis, yAxis, aggregation, showEmptyRows, showEmptyColumns, }: {
45
+ NAValueAs, transformBySource, // same per-source pattern as normalization
46
+ keysOrder, xAxis, yAxis, xSortBy, ySortBy, aggregation, showEmptyRows, showEmptyColumns, }: {
45
47
  data: DataFrame;
46
48
  xColumn: ColumnName;
47
49
  yColumn: ColumnName;
@@ -55,9 +57,12 @@ NAValueAs, keysOrder, xAxis, yAxis, aggregation, showEmptyRows, showEmptyColumns
55
57
  dendrogramY: HeatmapSettingsImpl['dendrogramY'];
56
58
  normalizationBySource: Record<T, HeatmapSettingsImpl['normalization']>;
57
59
  NAValueAs: HeatmapSettingsImpl['NAValueAs'];
60
+ transformBySource?: Record<T, HeatmapSettingsImpl['transform']>;
58
61
  keysOrder: HeatmapSettingsImpl['keysOrder'];
59
62
  xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'] | BubbleSettingsImpl['chartSettings']['xAxis'];
60
63
  yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'] | BubbleSettingsImpl['chartSettings']['yAxis'];
64
+ xSortBy?: HeatmapSettingsImpl['xSortBy'];
65
+ ySortBy?: HeatmapSettingsImpl['ySortBy'];
61
66
  aggregation: HeatmapSettingsImpl['aggregation'];
62
67
  showEmptyRows?: boolean;
63
68
  showEmptyColumns?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"fillCellsData.d.ts","sourceRoot":"","sources":["../../src/heatmap/fillCellsData.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fillCellsData.d.ts","sourceRoot":"","sources":["../../src/heatmap/fillCellsData.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { exhaustive as e } from "../utils/index.js";
2
2
  import { getFacetStringKey as t } from "../discrete/utils/getFacetStringKey.js";
3
3
  import { getFacetLabels as n } from "../discrete/utils/getFacetLabels.js";
4
4
  import { getFacetOrGroupKey as r } from "../utils/getFacetOrGroupKey.js";
5
- import i from "lodash";
5
+ import { intersect as i } from "../utils/intersect.js";
6
6
  import { deviation as a, extent as o, mean as s, quantileSorted as c, sum as l } from "d3-array";
7
7
  function u(e) {
8
8
  let t = a(e), n = s(e);
@@ -40,30 +40,49 @@ function m(e) {
40
40
  function h(e) {
41
41
  if (!e.length) return [];
42
42
  let t = [[]];
43
- return e.forEach((e) => {
44
- let n = [];
45
- e.forEach((e) => {
46
- n.push(...t.map((t) => [...t, e]));
47
- }), t = n;
48
- }), t;
43
+ for (let n of e) {
44
+ let e = [];
45
+ for (let r of n) e.push(...t.map((e) => [...e, r]));
46
+ t = e;
47
+ }
48
+ return t;
49
+ }
50
+ var g = (e, t, n = {}) => {
51
+ let r = t === "asc" ? 1 : -1;
52
+ return e.sort((e, t) => r * (n[e] ?? e).localeCompare(n[t] ?? t, "en", { numeric: !0 }));
53
+ };
54
+ function _(e) {
55
+ return !!(e == null || typeof e == "number" && Number.isNaN(e));
56
+ }
57
+ function v(e, t, n) {
58
+ let r = _(e), i = _(t);
59
+ if (r && i) return 0;
60
+ if (r) return 1;
61
+ if (i) return -1;
62
+ let a = n === "asc" ? 1 : -1;
63
+ return typeof e == "number" && typeof t == "number" ? a * (e < t ? -1 : e > t ? 1 : 0) : a * String(e).localeCompare(String(t), "en", { numeric: !0 });
49
64
  }
50
- var g = (e, t, n = {}) => e.sort((e, r) => t === "asc" ? (n[e] ?? e).localeCompare(n[r] ?? r, "en", { numeric: !0 }) : (n[r] ?? r).localeCompare(n[e] ?? e, "en", { numeric: !0 }));
51
- function _(e, t, n, r, i) {
65
+ const y = (e, t, n, r) => e.sort((e, i) => {
66
+ for (let a of n) {
67
+ let n = v(r[a.value]?.[e], r[a.value]?.[i], t);
68
+ if (n !== 0) return n;
69
+ }
70
+ return 0;
71
+ });
72
+ function b(e, t, n, r, i) {
52
73
  if (t.x || t.y) {
53
74
  let a = e.meta.valueSources.reduce((e, t) => (e[t] = [Infinity, -Infinity], e), {});
54
- e.meta.facetKeys.forEach((o) => {
75
+ for (let o of e.meta.facetKeys) {
55
76
  let { xKeys: s, yKeys: c, cells: l, xKeysByGroups: u, yKeysByGroups: d } = e.facets[o], f = t.x ? u : s.reduce((e, t) => (e[t] = [t], e), {}), h = t.y ? d : c.reduce((e, t) => (e[t] = [t], e), {}), g = Object.keys(f), _ = Object.keys(h);
56
77
  for (let n of g) for (let r of _) {
57
78
  let i = e.meta.valueSources.reduce((e, t) => (e[t] = [], e), {});
58
- f[n].forEach((t) => {
59
- h[r].forEach((n) => {
60
- for (let r of e.meta.valueSources) {
61
- let e = l[t]?.[n]?.value?.[r];
62
- e !== void 0 && i[r].push(e);
63
- }
64
- delete l[t]?.[n];
65
- });
66
- });
79
+ for (let t of f[n]) for (let n of h[r]) {
80
+ for (let r of e.meta.valueSources) {
81
+ let e = l[t]?.[n]?.value?.[r];
82
+ e !== void 0 && i[r].push(e);
83
+ }
84
+ delete l[t]?.[n];
85
+ }
67
86
  for (let s of e.meta.valueSources) {
68
87
  let c = i[s];
69
88
  if (c.length > 0) {
@@ -82,117 +101,125 @@ function _(e, t, n, r, i) {
82
101
  }
83
102
  }
84
103
  }
85
- t.x && g.forEach((r) => {
86
- n.forEach((n) => {
87
- let a = i.find((e) => e.valueColumn.value === n || e.valueColumn.valueLabels === n);
88
- if (!a) return;
89
- let o = [];
90
- f[r].forEach((t) => {
91
- o.push(e.meta.xDataByKeys[n][t]), delete e.meta.xDataByKeys[n][t];
92
- });
93
- let s = a.type === "continuous" ? p(t.method, o) : m(o);
94
- e.meta.xDataByKeys[n][r] = s;
95
- });
96
- }), t.y && (r.forEach((t) => {
97
- e.meta.yDataByKeys[t] = {};
98
- }), _.forEach((n) => {
99
- r.forEach((r) => {
100
- let a = i.find((e) => e.valueColumn.value === r || e.valueColumn.valueLabels === r);
101
- if (!a) return;
104
+ if (t.x) for (let r of g) for (let a of n) {
105
+ let n = i.find((e) => e.valueColumn.value === a || e.valueColumn.valueLabels === a);
106
+ if (!n) continue;
107
+ let o = [];
108
+ for (let t of f[r]) o.push(e.meta.xDataByKeys[a][t]), delete e.meta.xDataByKeys[a][t];
109
+ let s = n.type === "continuous" ? p(t.method, o) : m(o);
110
+ e.meta.xDataByKeys[a][r] = s;
111
+ }
112
+ if (t.y) {
113
+ for (let t of r) e.meta.yDataByKeys[t] = {};
114
+ for (let n of _) for (let a of r) {
115
+ let r = i.find((e) => e.valueColumn.value === a || e.valueColumn.valueLabels === a);
116
+ if (!r) continue;
102
117
  let o = [];
103
- h[n].forEach((t) => {
104
- o.push(e.meta.yDataByKeys[r][t]), delete e.meta.yDataByKeys[r][t];
105
- });
106
- let s = a.type === "continuous" ? p(t.method, o) : m(o);
107
- e.meta.yDataByKeys[r][n] = s;
108
- });
109
- })), t.x && (e.facets[o].xKeys = Object.keys(u), e.facets[o].xKeysByGroups = { null: e.facets[o].xKeys }, e.meta.xLabels = e.meta.xGroupLabels, e.meta.xGroupKeys = ["null"], e.meta.xGroupKeyValues = { null: ["null"] }), t.y && (e.facets[o].yKeys = Object.keys(d), e.facets[o].yKeysByGroups = { null: e.facets[o].yKeys }, e.meta.yLabels = e.meta.yGroupLabels, e.meta.yGroupKeys = ["null"], e.meta.yGroupKeyValues = { null: ["null"] });
110
- }), e.meta.valueExtent = a;
118
+ for (let t of h[n]) o.push(e.meta.yDataByKeys[a][t]), delete e.meta.yDataByKeys[a][t];
119
+ let s = r.type === "continuous" ? p(t.method, o) : m(o);
120
+ e.meta.yDataByKeys[a][n] = s;
121
+ }
122
+ }
123
+ t.x && (e.facets[o].xKeys = Object.keys(u), e.facets[o].xKeysByGroups = { null: e.facets[o].xKeys }, e.meta.xLabels = e.meta.xGroupLabels, e.meta.xGroupKeys = ["null"], e.meta.xGroupKeyValues = { null: ["null"] }), t.y && (e.facets[o].yKeys = Object.keys(d), e.facets[o].yKeysByGroups = { null: e.facets[o].yKeys }, e.meta.yLabels = e.meta.yGroupLabels, e.meta.yGroupKeys = ["null"], e.meta.yGroupKeyValues = { null: ["null"] });
124
+ }
125
+ e.meta.valueExtent = a;
111
126
  }
112
127
  }
113
- function v(e, t) {
128
+ function x(e, t) {
114
129
  for (let n of e.meta.valueSources) e.meta.valueExtent[n][0] = Math.min(t.normalizedValue?.[n], e.meta.valueExtent[n][0]), e.meta.valueExtent[n][1] = Math.max(t.normalizedValue?.[n], e.meta.valueExtent[n][1]);
115
130
  }
116
- function y(e, t) {
131
+ function S(e, t) {
117
132
  if (Object.values(t).length) {
118
133
  let n = e.meta.valueSources.reduce((e, n) => (t[n] && (e[n] = [Infinity, -Infinity]), e), {});
119
- e.meta.facetKeys.forEach((r) => {
134
+ for (let r of e.meta.facetKeys) {
120
135
  let { xKeys: i, yKeys: a, cells: o } = e.facets[r];
121
136
  for (let r of e.meta.valueSources) {
122
137
  let e = t[r];
123
138
  if (!e) continue;
124
139
  let s = e.direction === "row" ? i : a, c = e.direction === "row" ? a : i, l = e.direction === "row" ? (e, t) => o[e]?.[t] : (e, t) => o[t]?.[e];
125
- c.forEach((t) => {
140
+ for (let t of c) {
126
141
  let i = [];
127
- s.forEach((e) => {
142
+ for (let e of s) {
128
143
  let n = l(e, t)?.value?.[r];
129
144
  n !== void 0 && i.push(n);
130
- });
145
+ }
131
146
  let a = f(e.method, i);
132
- s.forEach((e) => {
147
+ for (let e of s) {
133
148
  let i = l(e, t);
134
149
  i !== void 0 && (i.normalizedValue[r] = a(i.value?.[r]), n[r][0] = Math.min(i.normalizedValue?.[r], n[r][0]), n[r][1] = Math.max(i.normalizedValue?.[r], n[r][1]));
135
- });
136
- });
150
+ }
151
+ }
137
152
  }
138
- }), e.meta.valueExtent = {
153
+ }
154
+ e.meta.valueExtent = {
139
155
  ...e.meta.valueExtent,
140
156
  valueExtent: n
141
157
  };
142
158
  }
143
159
  }
144
- function b(e, { data: a, xColumn: o, yColumn: s, valueColumns: c, facetBy: l, xGroupBy: u, yGroupBy: d, facetSettings: f, annotations: p, dendrogramX: m, dendrogramY: b, normalizationBySource: x, NAValueAs: S, keysOrder: C, xAxis: w, yAxis: T, aggregation: E, showEmptyRows: D = !1, showEmptyColumns: O = !1 }) {
145
- let k = l.length ? l.map((e) => C[e.value] ?? a.getColumnCategories(e.value)) : [["null"]], A = u.length ? u.map((e) => C[e.value] ?? a.getColumnCategories(e.value)) : [["null"]], j = d.length ? d.map((e) => C[e.value] ?? a.getColumnCategories(e.value)) : [["null"]], M = h(k), N = h(A), P = h(j);
146
- f?.order?.length && (M = M.filter((e) => f.order?.includes(t(e))));
147
- let F = M.map(r), I = new Set(F), L = N.map(r), R = P.map(r);
148
- e.meta.facetKeys = F, e.meta.xGroupKeys = L, e.meta.yGroupKeys = R;
149
- let z = n(a, l, F, M);
150
- e.meta.facetKeyValues = F.reduce((e, t) => (e[t] = z[t], e), {}), e.meta.xGroupKeyValues = L.reduce((e, t, n) => (e[t] = N[n], e), {}), e.meta.yGroupKeyValues = R.reduce((e, t, n) => (e[t] = P[n], e), {});
151
- let B = o.valueLabels ?? o.value, V = s.valueLabels ?? s.value, H = p.filter((e) => e.axis === "x").map((e) => e.valueColumn.valueLabels ?? e.valueColumn.value), U = p.filter((e) => e.axis === "y").map((e) => e.valueColumn.valueLabels ?? e.valueColumn.value), W = Object.values(m ?? {}).map((e) => e.value), G = Object.values(b ?? {}).map((e) => e.value), K = i.uniq([
152
- ...H,
160
+ function C(e, { data: a, xColumn: o, yColumn: s, valueColumns: c, facetBy: l, xGroupBy: u, yGroupBy: d, facetSettings: f, annotations: p, dendrogramX: m, dendrogramY: _, normalizationBySource: v, NAValueAs: C, transformBySource: w, keysOrder: T, xAxis: E, yAxis: D, xSortBy: O, ySortBy: k, aggregation: A, showEmptyRows: j = !1, showEmptyColumns: M = !1 }) {
161
+ let N = l.length ? l.map((e) => T[e.value] ?? a.getColumnCategories(e.value)) : [["null"]], ee = u.length ? u.map((e) => T[e.value] ?? a.getColumnCategories(e.value)) : [["null"]], te = d.length ? d.map((e) => T[e.value] ?? a.getColumnCategories(e.value)) : [["null"]], P = h(N), F = h(ee), I = h(te);
162
+ f?.order?.length && (P = P.filter((e) => f.order?.includes(t(e))));
163
+ let L = P.map(r), R = new Set(L), z = F.map(r), B = I.map(r);
164
+ e.meta.facetKeys = L, e.meta.xGroupKeys = z, e.meta.yGroupKeys = B;
165
+ let V = n(a, l, L, P);
166
+ e.meta.facetKeyValues = L.reduce((e, t) => (e[t] = V[t], e), {}), e.meta.xGroupKeyValues = z.reduce((e, t, n) => (e[t] = F[n], e), {}), e.meta.yGroupKeyValues = B.reduce((e, t, n) => (e[t] = I[n], e), {});
167
+ let H = o.valueLabels ?? o.value, U = s.valueLabels ?? s.value, W = p.filter((e) => e.axis === "x").map((e) => e.valueColumn.valueLabels ?? e.valueColumn.value), G = p.filter((e) => e.axis === "y").map((e) => e.valueColumn.valueLabels ?? e.valueColumn.value), K = Object.values(m ?? {}).map((e) => e.value), q = Object.values(_ ?? {}).map((e) => e.value), J = (O ?? []).map((e) => e.value), Y = (k ?? []).map((e) => e.value), X = [...new Set([
153
168
  ...W,
154
- B
155
- ]), q = i.uniq([
156
- ...U,
169
+ ...K,
170
+ ...J,
171
+ H
172
+ ])], Z = [...new Set([
157
173
  ...G,
158
- V
159
- ]);
174
+ ...q,
175
+ ...Y,
176
+ U
177
+ ])];
160
178
  for (let t = 0; t < a.rowsCount; t++) {
161
179
  let n = r(l.map((e) => a.getColumnValue(e.value, t)));
162
- if (!I.has(n)) continue;
180
+ if (!R.has(n)) continue;
163
181
  let i = r(u.map((e) => a.getColumnValue(e.value, t))), f = r(d.map((e) => a.getColumnValue(e.value, t))), p = u.map((e) => a.getColumnValue(e.valueLabels ?? e.value, t)).join(", "), m = d.map((e) => a.getColumnValue(e.valueLabels ?? e.value, t)).join(", ");
164
182
  e.meta.xGroupLabels[i] = p, e.meta.yGroupLabels[f] = m;
165
- let h = String(a.getColumnValue(o.value, t)), g = String(a.getColumnValue(s.value, t)), _ = e.meta.valueSources.reduce((e, n) => (e[n] = a.getColumnValue(c[n].value, t) ?? S, e), {});
183
+ let h = String(a.getColumnValue(o.value, t)), g = String(a.getColumnValue(s.value, t)), _ = e.meta.valueSources.reduce((e, n) => {
184
+ let r = a.getColumnValue(c[n].value, t) ?? C;
185
+ if (w?.[n] === "log" && typeof r == "number") {
186
+ let e = Math.log10(r);
187
+ r = Number.isFinite(e) ? e : null;
188
+ }
189
+ return e[n] = r, e;
190
+ }, {});
166
191
  if (h === "null" || g === "null") continue;
167
- let y = Object.values(_).every((e) => e === null);
168
- if (!(y && !D && !O)) {
192
+ let v = Object.values(_).every((e) => e === null);
193
+ if (!(v && !j && !M)) {
169
194
  if (e.facets[n] || (e.facets[n] = {
170
195
  xKeys: [],
171
196
  yKeys: [],
172
197
  xKeysByGroups: {},
173
198
  yKeysByGroups: {},
174
199
  cells: {}
175
- }), e.facets[n].xKeysByGroups[i] || (e.facets[n].xKeysByGroups[i] = []), e.facets[n].yKeysByGroups[f] || (e.facets[n].yKeysByGroups[f] = []), !y || O) {
200
+ }), e.facets[n].xKeysByGroups[i] || (e.facets[n].xKeysByGroups[i] = []), e.facets[n].yKeysByGroups[f] || (e.facets[n].yKeysByGroups[f] = []), !v || M) {
176
201
  e.facets[n].xKeys.push(h), e.facets[n].xKeysByGroups[i].push(h);
177
- let r = a.getColumnValue(B, t);
202
+ let r = a.getColumnValue(H, t);
178
203
  if (e.meta.xLabels[h] && String(r) !== e.meta.xLabels[h]) throw Error(`More than 1 x-label value for x=${h}`);
179
- e.meta.xLabels[h] = String(r), K.forEach((n) => {
204
+ e.meta.xLabels[h] = String(r);
205
+ for (let n of X) {
180
206
  let r = e.meta.xDataByKeys[n] !== void 0, i = r && e.meta.xDataByKeys[n][h] !== void 0;
181
207
  if (r || (e.meta.xDataByKeys[n] = {}), i && e.meta.xDataByKeys[n][h] !== a.getColumnValue(n, t)) throw Error(`More than 1 value for x = ${h} and column = ${n}`);
182
208
  i || (e.meta.xDataByKeys[n][h] = a.getColumnValue(n, t));
183
- });
209
+ }
184
210
  }
185
- if (!y || D) {
211
+ if (!v || j) {
186
212
  e.facets[n].yKeys.push(g), e.facets[n].yKeysByGroups[f].push(g);
187
- let r = a.getColumnValue(V, t);
213
+ let r = a.getColumnValue(U, t);
188
214
  if (e.meta.yLabels[g] && String(r) !== e.meta.yLabels[g]) throw Error(`More than 1 y-label value for y=${g}`);
189
- e.meta.yLabels[g] = String(r), q.forEach((n) => {
215
+ e.meta.yLabels[g] = String(r);
216
+ for (let n of Z) {
190
217
  let r = e.meta.yDataByKeys[n] !== void 0, i = r && e.meta.yDataByKeys[n][g] !== void 0;
191
218
  if (r || (e.meta.yDataByKeys[n] = {}), i && e.meta.yDataByKeys[n][g] !== a.getColumnValue(n, t)) throw Error(`More than 1 value for y = ${g} and column = ${n}`);
192
219
  i || (e.meta.yDataByKeys[n][g] = a.getColumnValue(n, t));
193
- });
220
+ }
194
221
  }
195
- if (!y) {
222
+ if (!v) {
196
223
  e.facets[n].cells[h] || (e.facets[n].cells[h] = {});
197
224
  for (let t of e.meta.valueSources) if (e.facets[n].cells[h][g] && e.facets[n].cells[h][g].value[t] !== _[t]) throw Error(`More than 1 value for x=${h}, y=${g}`);
198
225
  e.facets[n].cells[h][g] = {
@@ -203,27 +230,39 @@ function b(e, { data: a, xColumn: o, yColumn: s, valueColumns: c, facetBy: l, xG
203
230
  y: g,
204
231
  value: _,
205
232
  normalizedValue: _
206
- }, v(e, e.facets[n].cells[h][g]);
233
+ }, x(e, e.facets[n].cells[h][g]);
207
234
  }
208
235
  }
209
236
  }
210
- e.meta.facetKeys = e.meta.facetKeys.filter((t) => e.facets[t]), e.meta.facetKeys.forEach((t) => {
211
- let n = e.facets[t], r = i.uniq(n.xKeys), a = i.uniq(n.yKeys);
212
- n.xKeys = C[o.value] ? i.intersection(C[o.value], r) : r, n.yKeys = C[s.value] ? i.intersection(C[s.value], a) : a, L.forEach((r) => {
213
- e.facets[t].xKeysByGroups[r] = i.intersection(n.xKeys, e.facets[t].xKeysByGroups[r]);
214
- }), R.forEach((r) => {
215
- e.facets[t].yKeysByGroups[r] = i.intersection(n.yKeys, e.facets[t].yKeysByGroups[r]);
216
- });
217
- }), _(e, E, K, q, p), y(e, x), e.meta.xKeysByGroups = e.meta.xGroupKeys.reduce((t, n) => {
218
- let r = g(i.uniq(i.flatten(e.meta.facetKeys.map((t) => e.facets[t].xKeysByGroups[n]))), w.sorting, e.meta.xLabels);
219
- return t[n] = C[o.value] ? i.intersection(C[o.value], r) : r, t;
220
- }, {}), e.meta.xKeys = e.meta.xGroupKeys.reduce((t, n) => (t = t.concat(e.meta.xKeysByGroups[n]), t), []), e.meta.yKeysByGroups = e.meta.yGroupKeys.reduce((t, n) => {
221
- let r = g(i.uniq(i.flatten(e.meta.facetKeys.map((t) => e.facets[t].yKeysByGroups[n]))), T.sorting, e.meta.yLabels);
222
- return t[n] = C[s.value] ? i.intersection(C[s.value], r) : r, t;
237
+ e.meta.facetKeys = e.meta.facetKeys.filter((t) => e.facets[t]);
238
+ for (let t of e.meta.facetKeys) {
239
+ let n = e.facets[t], r = [...new Set(n.xKeys)], a = [...new Set(n.yKeys)];
240
+ n.xKeys = T[o.value] ? i(T[o.value], r) : r, n.yKeys = T[s.value] ? i(T[s.value], a) : a;
241
+ for (let r of z) e.facets[t].xKeysByGroups[r] = i(n.xKeys, e.facets[t].xKeysByGroups[r]);
242
+ for (let r of B) e.facets[t].yKeysByGroups[r] = i(n.yKeys, e.facets[t].yKeysByGroups[r]);
243
+ }
244
+ b(e, A, X, Z, p), S(e, v);
245
+ let ne = u.some((e) => T[e.value]?.length > 0), re = d.some((e) => T[e.value]?.length > 0);
246
+ ne || (e.meta.xGroupKeys = g([...e.meta.xGroupKeys], E.sorting, e.meta.xGroupLabels)), re || (e.meta.yGroupKeys = g([...e.meta.yGroupKeys], D.sorting, e.meta.yGroupLabels));
247
+ let Q = !m && !A.x && O?.length ? O : null;
248
+ e.meta.xKeysByGroups = e.meta.xGroupKeys.reduce((t, n) => {
249
+ let r = [...new Set(e.meta.facetKeys.flatMap((t) => e.facets[t].xKeysByGroups[n]))], a = Q ? y(r, E.sorting, Q, e.meta.xDataByKeys) : g(r, E.sorting, e.meta.xLabels);
250
+ return t[n] = T[o.value] ? i(T[o.value], a) : a, t;
251
+ }, {}), e.meta.xKeys = e.meta.xGroupKeys.reduce((t, n) => (t = t.concat(e.meta.xKeysByGroups[n]), t), []);
252
+ let $ = !_ && !A.y && k?.length ? k : null;
253
+ e.meta.yKeysByGroups = e.meta.yGroupKeys.reduce((t, n) => {
254
+ let r = [...new Set(e.meta.facetKeys.flatMap((t) => e.facets[t].yKeysByGroups[n]))], a = $ ? y(r, D.sorting, $, e.meta.yDataByKeys) : g(r, D.sorting, e.meta.yLabels);
255
+ return t[n] = T[s.value] ? i(T[s.value], a) : a, t;
223
256
  }, {}), e.meta.yKeys = e.meta.yGroupKeys.reduce((t, n) => (t = t.concat(e.meta.yKeysByGroups[n]), t), []);
257
+ for (let t of e.meta.facetKeys) {
258
+ for (let n of e.meta.xGroupKeys) e.facets[t].xKeysByGroups[n] = i(e.meta.xKeysByGroups[n], e.facets[t].xKeysByGroups[n] ?? []);
259
+ e.facets[t].xKeys = e.meta.xGroupKeys.flatMap((n) => e.facets[t].xKeysByGroups[n] ?? []);
260
+ for (let n of e.meta.yGroupKeys) e.facets[t].yKeysByGroups[n] = i(e.meta.yKeysByGroups[n], e.facets[t].yKeysByGroups[n] ?? []);
261
+ e.facets[t].yKeys = e.meta.yGroupKeys.flatMap((n) => e.facets[t].yKeysByGroups[n] ?? []);
262
+ }
224
263
  for (let t of e.meta.valueSources) e.meta.valueExtent[t][0] === Infinity && (e.meta.valueExtent[t][0] = 0), e.meta.valueExtent[t][1] === -Infinity && (e.meta.valueExtent[t][1] = 0);
225
264
  return e.meta.xLabels.null = o.nullValueLabel ?? "NA", e.meta.yLabels.null = s.nullValueLabel ?? "NA", e.meta.xGroupLabels.null = u.map((e) => e.nullValueLabel ?? "NA").join(", "), e.meta.yGroupLabels.null = d.map((e) => e.nullValueLabel ?? "NA").join(", "), e;
226
265
  }
227
- export { b as fillCellsData };
266
+ export { C as fillCellsData };
228
267
 
229
268
  //# sourceMappingURL=fillCellsData.js.map