@milaboratories/miplots4 1.2.2 → 1.2.4

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 (65) hide show
  1. package/dist/DataFrame.d.ts.map +1 -1
  2. package/dist/DataFrame.js +2 -1
  3. package/dist/DataFrame.js.map +1 -1
  4. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  5. package/dist/heatmap/ChartRenderer.js +72 -78
  6. package/dist/heatmap/ChartRenderer.js.map +1 -1
  7. package/dist/selection/ChartRenderer.d.ts.map +1 -1
  8. package/dist/selection/ChartRenderer.js +9 -11
  9. package/dist/selection/ChartRenderer.js.map +1 -1
  10. package/dist/selection/SelectionSettingsImpl.d.ts +0 -1
  11. package/dist/selection/SelectionSettingsImpl.d.ts.map +1 -1
  12. package/dist/selection/SelectionSettingsImpl.js +0 -1
  13. package/dist/selection/SelectionSettingsImpl.js.map +1 -1
  14. package/dist/selection/components/Chart/Bars/GroupSelectedBars.js +1 -1
  15. package/dist/selection/components/Chart/Bars/GroupSelectedBars.js.map +1 -1
  16. package/dist/selection/components/Chart/Bars/StackedBars.d.ts.map +1 -1
  17. package/dist/selection/components/Chart/Bars/StackedBars.js +11 -11
  18. package/dist/selection/components/Chart/Bars/StackedBars.js.map +1 -1
  19. package/dist/selection/components/Chart/ChartAxes.d.ts.map +1 -1
  20. package/dist/selection/components/Chart/ChartAxes.js +7 -8
  21. package/dist/selection/components/Chart/ChartAxes.js.map +1 -1
  22. package/dist/selection/components/Chart/ChartFrame.d.ts +1 -2
  23. package/dist/selection/components/Chart/ChartFrame.d.ts.map +1 -1
  24. package/dist/selection/components/Chart/ChartFrame.js +8 -8
  25. package/dist/selection/components/Chart/ChartFrame.js.map +1 -1
  26. package/dist/selection/components/Chart/Gridlines.d.ts +2 -6
  27. package/dist/selection/components/Chart/Gridlines.d.ts.map +1 -1
  28. package/dist/selection/components/Chart/Gridlines.js +14 -26
  29. package/dist/selection/components/Chart/Gridlines.js.map +1 -1
  30. package/dist/selection/components/Chart/Ribbons/GroupFlowRibbon.js +1 -1
  31. package/dist/selection/components/Chart/Ribbons/GroupFlowRibbon.js.map +1 -1
  32. package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.d.ts.map +1 -1
  33. package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.js +27 -27
  34. package/dist/selection/components/Chart/Ribbons/StackedGroupFlowRibbon.js.map +1 -1
  35. package/dist/selection/components/Chart/SelectionXAxis.d.ts +18 -0
  36. package/dist/selection/components/Chart/SelectionXAxis.d.ts.map +1 -0
  37. package/dist/selection/components/Chart/SelectionXAxis.js +47 -0
  38. package/dist/selection/components/Chart/SelectionXAxis.js.map +1 -0
  39. package/dist/selection/components/Chart/types.d.ts +0 -1
  40. package/dist/selection/components/Chart/types.d.ts.map +1 -1
  41. package/dist/selection/components/Chart.d.ts.map +1 -1
  42. package/dist/selection/components/Chart.js +7 -12
  43. package/dist/selection/components/Chart.js.map +1 -1
  44. package/dist/selection/components/ChartsGroup.d.ts.map +1 -1
  45. package/dist/selection/components/ChartsGroup.js +73 -72
  46. package/dist/selection/components/ChartsGroup.js.map +1 -1
  47. package/dist/selection/components/types.d.ts +0 -1
  48. package/dist/selection/components/types.d.ts.map +1 -1
  49. package/dist/selection/constants.d.ts +1 -2
  50. package/dist/selection/constants.d.ts.map +1 -1
  51. package/dist/selection/constants.js +2 -2
  52. package/dist/selection/constants.js.map +1 -1
  53. package/dist/selection/createSelectionData.d.ts +2 -6
  54. package/dist/selection/createSelectionData.d.ts.map +1 -1
  55. package/dist/selection/createSelectionData.js +45 -59
  56. package/dist/selection/createSelectionData.js.map +1 -1
  57. package/dist/types/selection.d.ts +0 -5
  58. package/dist/types/selection.d.ts.map +1 -1
  59. package/dist/types/selection.js +0 -1
  60. package/dist/types/selection.js.map +1 -1
  61. package/dist/utils/computeChartInnerSize.d.ts +18 -0
  62. package/dist/utils/computeChartInnerSize.d.ts.map +1 -0
  63. package/dist/utils/computeChartInnerSize.js +22 -0
  64. package/dist/utils/computeChartInnerSize.js.map +1 -0
  65. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataFrame.d.ts","sourceRoot":"","sources":["../src/DataFrame.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAChD,eAAO,MAAM,UAAU,eAAsB,CAAC;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,UAAU,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,KAAK,SAAS,GAAG,MAAM,CACnB,QAAQ,EACR;IACI,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC;CACtB,CACJ,CAAC;AAMF,KAAK,UAAU,GAAG,MAAM,CAAC;AAIzB,qBAAa,SAAS;IAClB,MAAM,CAAC,UAAU,GAAI,OAAO,SAAS,KAAG,MAAM,CAAkB;IAEhE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAa;IACtE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAa;IAE3F,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,MAAM,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,GAAE,SAAS;gBAUzB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IAQzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAInC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAIrD,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ;IAI5D,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,QAAQ,EAAE;IAW/D,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAUjE,OAAO,CAAC,uBAAuB;IAiC/B,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE;IAiC3F,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAmB3E,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,WAAW;CAiB3D"}
1
+ {"version":3,"file":"DataFrame.d.ts","sourceRoot":"","sources":["../src/DataFrame.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGnD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAChD,eAAO,MAAM,UAAU,eAAsB,CAAC;AAC9C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,UAAU,CAAC;AAClD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC9B,KAAK,SAAS,GAAG,MAAM,CACnB,QAAQ,EACR;IACI,UAAU,EAAE,WAAW,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC;CACtB,CACJ,CAAC;AAMF,KAAK,UAAU,GAAG,MAAM,CAAC;AAIzB,qBAAa,SAAS;IAClB,MAAM,CAAC,UAAU,GAAI,OAAO,SAAS,KAAG,MAAM,CAAkB;IAEhE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAa;IACtE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAa;IAE3F,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,MAAM,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,GAAE,SAAS;gBAUzB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;IASzD,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE;IAInC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS;IAIrD,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ;IAI5D,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,UAAO,GAAG,QAAQ,EAAE;IAW/D,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ;IAUjE,OAAO,CAAC,uBAAuB;IAiC/B,WAAW,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,EAAE;IAiC3F,mBAAmB,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAmB3E,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,WAAW;CAiB3D"}
package/dist/DataFrame.js CHANGED
@@ -20,7 +20,8 @@ var i = new Uint32Array(), a = class a {
20
20
  e(t, "Unknown input data format");
21
21
  }
22
22
  constructor(e, t) {
23
- this.id = e, this.data = t, this.columnNames = Object.keys(t), this.rowsCount = this.columnNames.length ? t[this.columnNames[0]].length : 0, this.rowIndexes = new Uint32Array(Array.from({ length: this.rowsCount }, (e, t) => t));
23
+ this.id = e, this.data = t, this.columnNames = Object.keys(t), this.rowsCount = this.columnNames.length ? t[this.columnNames[0]].length : 0, this.rowIndexes = new Uint32Array(this.rowsCount);
24
+ for (let e = 0; e < this.rowsCount; e++) this.rowIndexes[e] = e;
24
25
  }
25
26
  getColumn(e) {
26
27
  return this.data[e];
@@ -1 +1 @@
1
- {"version":3,"file":"DataFrame.js","names":[],"sources":["../src/DataFrame.ts"],"sourcesContent":["import { groupBy } from 'lodash';\nimport type { Category, DataValue } from './types';\nimport { exhaustive } from './utils';\n\nexport type DataByColumns = {\n type: 'columns',\n values: Record<string, DataValue[]>,\n id: string,\n overflow?: boolean\n}\nexport type DataSet = DataFrame | DataByColumns;\nexport const NO_GROUPED = Symbol('noGrouped');\nexport type GroupKey = string | typeof NO_GROUPED;\nexport type RowIndex = number;\ntype RowsGroup = Record<\n GroupKey,\n {\n rowIndexes: Uint32Array;\n grouped: RowsGroup;\n }\n>;\n\nfunction isDataByColumns (data:DataSet): data is DataByColumns {\n return 'type' in data && data.type === 'columns';\n}\n\ntype ColumnName = string;\n\nconst EMPTY_INDEXES = new Uint32Array(0);\n\nexport class DataFrame {\n static toCategory = (value: DataValue): string => String(value);\n\n readonly id: string;\n // input data grouped by columns\n readonly data: Record<string, DataValue[]>;\n readonly rowsCount: number;\n readonly columnNames: ColumnName[];\n readonly rowIndexes: Uint32Array;\n\n readonly mapColumnCategories: Map<ColumnName, Category[]> = new Map();\n readonly mapColumnCategoriesRowIndexes: Map<ColumnName, Map<Category, number>> = new Map();\n\n rowsGrouped?: RowsGroup;\n\n static from (data: DataSet):DataFrame {\n if (data instanceof DataFrame) {\n return data;\n } else if (isDataByColumns(data)) {\n return new DataFrame(data.id, data.values);\n } else {\n exhaustive(data, 'Unknown input data format');\n }\n }\n\n constructor(id: string, data: Record<string, DataValue[]>) {\n this.id = id;\n this.data = data;\n this.columnNames = Object.keys(data);\n this.rowsCount = this.columnNames.length ? data[this.columnNames[0]].length : 0;\n this.rowIndexes = new Uint32Array(Array.from({length: this.rowsCount}, (_, i) => i));\n }\n\n getColumn(key: string): DataValue[] {\n return this.data[key];\n }\n\n getColumnValue(key: string, index: number): DataValue {\n return this.data[key]?.[index];\n }\n\n getColumnValueCategory(key: string, index: number): Category {\n return DataFrame.toCategory(this.getColumnValue(key, index));\n }\n\n getColumnCategories(key: string, ignoreNull = true): Category[] {\n if (!this.mapColumnCategories.has(key)) {\n this.computeColumnCategories(key);\n }\n\n const categories = this.mapColumnCategories.get(key) ?? [];\n return ignoreNull && categories && categories.length > 0 && categories[categories.length - 1] === 'null'\n ? categories.slice(0, -1) // full copy without null to heavy for large datasets\n : categories; \n }\n\n getColumnCategoryRowIndex(key: string, value: Category): RowIndex {\n const rowIndex = this.mapColumnCategoriesRowIndexes.get(key)?.get(value);\n \n if (rowIndex === undefined) {\n throw new Error(`Category ${value} not found in column ${key}`);\n }\n\n return rowIndex;\n }\n\n private computeColumnCategories(key: ColumnName) {\n if (!this.columnNames.includes(key)) {\n throw new Error(`Column ${key} does not exist`);\n }\n \n const columnData = this.getColumn(key);\n const uniqValues = new Set<DataValue>();\n const categories: string[] = [];\n const categoriesIndexes = new Map<string, number>();\n let nullIdx = -1;\n for (let i = 0; i < columnData.length; i++) {\n const value = columnData[i];\n if (uniqValues.has(value)) {\n continue;\n }\n uniqValues.add(value);\n if (value === null) {\n nullIdx = i;\n continue;\n }\n const category = DataFrame.toCategory(value);\n categories.push(category);\n categoriesIndexes.set(category, i);\n }\n if (nullIdx !== -1) {\n categories.push('null');\n categoriesIndexes.set('null', nullIdx);\n }\n\n this.mapColumnCategories.set(key, categories);\n this.mapColumnCategoriesRowIndexes.set(key, categoriesIndexes);\n }\n\n setGrouping(groupingColumnIds: (string | null)[], groupingKeys?: (GroupKey[] | undefined)[]) { \n const root = {grouped: {} as RowsGroup, rowIndexes: this.rowIndexes};\n let groups: RowsGroup[keyof RowsGroup][] = [root];\n groupingColumnIds.forEach((column, idx) => {\n const keys: GroupKey[] = column === null ? [NO_GROUPED] : (groupingKeys?.[idx] ?? this.getColumnCategories(column, false));\n const nextGroups: RowsGroup[keyof RowsGroup][] = [];\n groups.forEach(group => {\n if (column === null) {\n group.grouped = {\n [NO_GROUPED]: {\n rowIndexes: group.rowIndexes,\n grouped: {} as RowsGroup,\n },\n };\n nextGroups.push(group.grouped[NO_GROUPED]);\n } else {\n const groupedBy = groupBy(group.rowIndexes, idx => this.getColumnValueCategory(column, idx));\n group.grouped = keys.reduce((res, key) => {\n res[key] = {\n rowIndexes: new Uint32Array(groupedBy[key as string] ?? []),\n grouped: {} as RowsGroup,\n };\n nextGroups.push(res[key]);\n return res;\n }, {} as RowsGroup);\n }\n });\n groups = nextGroups;\n });\n this.rowsGrouped = root.grouped;\n }\n\n // TODO: fix all places where this method is used\n getColumnByGrouping(groupingKeys: GroupKey[], keyYColumn: string): number[] {\n if (!this.rowsGrouped) {\n return [];\n }\n if (!groupingKeys.length) {\n return Array.from(this.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n groupingKeys.forEach(key => {\n const nextGroup = result.grouped[key ?? 'null'];\n if (!nextGroup) {\n return [];\n }\n result = nextGroup;\n });\n return Array.from(result.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n\n // TODO: fix all places where this method is used\n getRowsByGrouping(groupingKeys: GroupKey[]): Uint32Array {\n if (!this.rowsGrouped) {\n return EMPTY_INDEXES;\n }\n if (!groupingKeys.length) {\n return this.rowIndexes;\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n for (const key of groupingKeys) {\n const nextGroup = result.grouped[key];\n if (!nextGroup) {\n return EMPTY_INDEXES;\n }\n result = nextGroup;\n }\n return result.rowIndexes;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataFrame.js","names":[],"sources":["../src/DataFrame.ts"],"sourcesContent":["import { groupBy } from 'lodash';\nimport type { Category, DataValue } from './types';\nimport { exhaustive } from './utils';\n\nexport type DataByColumns = {\n type: 'columns',\n values: Record<string, DataValue[]>,\n id: string,\n overflow?: boolean\n}\nexport type DataSet = DataFrame | DataByColumns;\nexport const NO_GROUPED = Symbol('noGrouped');\nexport type GroupKey = string | typeof NO_GROUPED;\nexport type RowIndex = number;\ntype RowsGroup = Record<\n GroupKey,\n {\n rowIndexes: Uint32Array;\n grouped: RowsGroup;\n }\n>;\n\nfunction isDataByColumns (data:DataSet): data is DataByColumns {\n return 'type' in data && data.type === 'columns';\n}\n\ntype ColumnName = string;\n\nconst EMPTY_INDEXES = new Uint32Array(0);\n\nexport class DataFrame {\n static toCategory = (value: DataValue): string => String(value);\n\n readonly id: string;\n // input data grouped by columns\n readonly data: Record<string, DataValue[]>;\n readonly rowsCount: number;\n readonly columnNames: ColumnName[];\n readonly rowIndexes: Uint32Array;\n\n readonly mapColumnCategories: Map<ColumnName, Category[]> = new Map();\n readonly mapColumnCategoriesRowIndexes: Map<ColumnName, Map<Category, number>> = new Map();\n\n rowsGrouped?: RowsGroup;\n\n static from (data: DataSet):DataFrame {\n if (data instanceof DataFrame) {\n return data;\n } else if (isDataByColumns(data)) {\n return new DataFrame(data.id, data.values);\n } else {\n exhaustive(data, 'Unknown input data format');\n }\n }\n\n constructor(id: string, data: Record<string, DataValue[]>) {\n this.id = id;\n this.data = data;\n this.columnNames = Object.keys(data);\n this.rowsCount = this.columnNames.length ? data[this.columnNames[0]].length : 0;\n this.rowIndexes = new Uint32Array(this.rowsCount);\n for (let i = 0; i < this.rowsCount; i++) this.rowIndexes[i] = i;\n }\n\n getColumn(key: string): DataValue[] {\n return this.data[key];\n }\n\n getColumnValue(key: string, index: number): DataValue {\n return this.data[key]?.[index];\n }\n\n getColumnValueCategory(key: string, index: number): Category {\n return DataFrame.toCategory(this.getColumnValue(key, index));\n }\n\n getColumnCategories(key: string, ignoreNull = true): Category[] {\n if (!this.mapColumnCategories.has(key)) {\n this.computeColumnCategories(key);\n }\n\n const categories = this.mapColumnCategories.get(key) ?? [];\n return ignoreNull && categories && categories.length > 0 && categories[categories.length - 1] === 'null'\n ? categories.slice(0, -1) // full copy without null to heavy for large datasets\n : categories; \n }\n\n getColumnCategoryRowIndex(key: string, value: Category): RowIndex {\n const rowIndex = this.mapColumnCategoriesRowIndexes.get(key)?.get(value);\n \n if (rowIndex === undefined) {\n throw new Error(`Category ${value} not found in column ${key}`);\n }\n\n return rowIndex;\n }\n\n private computeColumnCategories(key: ColumnName) {\n if (!this.columnNames.includes(key)) {\n throw new Error(`Column ${key} does not exist`);\n }\n \n const columnData = this.getColumn(key);\n const uniqValues = new Set<DataValue>();\n const categories: string[] = [];\n const categoriesIndexes = new Map<string, number>();\n let nullIdx = -1;\n for (let i = 0; i < columnData.length; i++) {\n const value = columnData[i];\n if (uniqValues.has(value)) {\n continue;\n }\n uniqValues.add(value);\n if (value === null) {\n nullIdx = i;\n continue;\n }\n const category = DataFrame.toCategory(value);\n categories.push(category);\n categoriesIndexes.set(category, i);\n }\n if (nullIdx !== -1) {\n categories.push('null');\n categoriesIndexes.set('null', nullIdx);\n }\n\n this.mapColumnCategories.set(key, categories);\n this.mapColumnCategoriesRowIndexes.set(key, categoriesIndexes);\n }\n\n setGrouping(groupingColumnIds: (string | null)[], groupingKeys?: (GroupKey[] | undefined)[]) { \n const root = {grouped: {} as RowsGroup, rowIndexes: this.rowIndexes};\n let groups: RowsGroup[keyof RowsGroup][] = [root];\n groupingColumnIds.forEach((column, idx) => {\n const keys: GroupKey[] = column === null ? [NO_GROUPED] : (groupingKeys?.[idx] ?? this.getColumnCategories(column, false));\n const nextGroups: RowsGroup[keyof RowsGroup][] = [];\n groups.forEach(group => {\n if (column === null) {\n group.grouped = {\n [NO_GROUPED]: {\n rowIndexes: group.rowIndexes,\n grouped: {} as RowsGroup,\n },\n };\n nextGroups.push(group.grouped[NO_GROUPED]);\n } else {\n const groupedBy = groupBy(group.rowIndexes, idx => this.getColumnValueCategory(column, idx));\n group.grouped = keys.reduce((res, key) => {\n res[key] = {\n rowIndexes: new Uint32Array(groupedBy[key as string] ?? []),\n grouped: {} as RowsGroup,\n };\n nextGroups.push(res[key]);\n return res;\n }, {} as RowsGroup);\n }\n });\n groups = nextGroups;\n });\n this.rowsGrouped = root.grouped;\n }\n\n // TODO: fix all places where this method is used\n getColumnByGrouping(groupingKeys: GroupKey[], keyYColumn: string): number[] {\n if (!this.rowsGrouped) {\n return [];\n }\n if (!groupingKeys.length) {\n return Array.from(this.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n groupingKeys.forEach(key => {\n const nextGroup = result.grouped[key ?? 'null'];\n if (!nextGroup) {\n return [];\n }\n result = nextGroup;\n });\n return Array.from(result.rowIndexes).map(idx => Number(this.getColumnValue(keyYColumn, idx)));\n }\n\n // TODO: fix all places where this method is used\n getRowsByGrouping(groupingKeys: GroupKey[]): Uint32Array {\n if (!this.rowsGrouped) {\n return EMPTY_INDEXES;\n }\n if (!groupingKeys.length) {\n return this.rowIndexes;\n }\n let result: {grouped: RowsGroup; rowIndexes: Uint32Array} = {grouped: this.rowsGrouped, rowIndexes: this.rowIndexes};\n for (const key of groupingKeys) {\n const nextGroup = result.grouped[key];\n if (!nextGroup) {\n return EMPTY_INDEXES;\n }\n result = nextGroup;\n }\n return result.rowIndexes;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/heatmap/ChartRenderer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/heatmap/ChartRenderer.tsx"],"names":[],"mappings":"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"}
@@ -3,35 +3,36 @@ import { getContinuousLegendTicks as t } from "../utils/getContinuousLegendTicks
3
3
  import { TextMeasurer as n } from "../utils/TextMeasurer/TextMeasurer.js";
4
4
  import { DataFrameProvider as r } from "../common/useDataFrame.js";
5
5
  import { arrangeLegendParts as i } from "../utils/arrangeLegendParts.js";
6
- import { getChartEdgeSides as a } from "../utils/getChartEdgeSides.js";
7
- import { CHART_SIDE_ELEMENTS as o, DEFAULT_AES as s } from "./constants.js";
8
- import { ChartsGroup as c } from "./components/ChartsGroup.js";
9
- import { calculateChartSideElementSizes as l } from "./utils/calculateChartSideElementSizes.js";
10
- import { calculateSideElementsBBoxes as u } from "./utils/calculateSideElementsBBoxes.js";
11
- import { createContinuousColorScale as d, createDiscreteColorScale as f, createDiscreteRoundColorScale as p } from "./utils/createColorScales.js";
12
- import { calculateAnnotationTitleSizes as m } from "./utils/calculateAnnotationTitleSizes.js";
6
+ import { computeChartInnerSize as a } from "../utils/computeChartInnerSize.js";
7
+ import { getChartEdgeSides as o } from "../utils/getChartEdgeSides.js";
8
+ import { CHART_SIDE_ELEMENTS as s, DEFAULT_AES as c } from "./constants.js";
9
+ import { ChartsGroup as l } from "./components/ChartsGroup.js";
10
+ import { calculateChartSideElementSizes as u } from "./utils/calculateChartSideElementSizes.js";
11
+ import { calculateSideElementsBBoxes as d } from "./utils/calculateSideElementsBBoxes.js";
12
+ import { createContinuousColorScale as f, createDiscreteColorScale as p, createDiscreteRoundColorScale as m } from "./utils/createColorScales.js";
13
+ import { calculateAnnotationTitleSizes as h } from "./utils/calculateAnnotationTitleSizes.js";
13
14
  import "./utils/index.js";
14
- import { calculateCaptionTails as h } from "./utils/calculateCaptionTails.js";
15
- import g from "lodash";
16
- import { cluster as _ } from "d3-hierarchy";
17
- import { scaleLinear as v, scaleOrdinal as y } from "d3-scale";
18
- import { createRoot as b } from "react-dom/client";
19
- import { Fragment as x, jsx as S } from "react/jsx-runtime";
20
- import { extent as C } from "d3-array";
21
- var w = Math.cos(Math.PI / 4), T = 5;
22
- function E(e, t, n) {
15
+ import { calculateCaptionTails as g } from "./utils/calculateCaptionTails.js";
16
+ import _ from "lodash";
17
+ import { cluster as v } from "d3-hierarchy";
18
+ import { scaleLinear as y, scaleOrdinal as b } from "d3-scale";
19
+ import { createRoot as x } from "react-dom/client";
20
+ import { Fragment as S, jsx as C } from "react/jsx-runtime";
21
+ import { extent as w } from "d3-array";
22
+ var T = Math.cos(Math.PI / 4), E = 5;
23
+ function D(e, t, n) {
23
24
  function r(e) {
24
25
  e[n] = t(e.data.height), e.children && e.children.forEach(r);
25
26
  }
26
27
  r(e);
27
28
  }
28
- function D(e, t, n, r = n) {
29
+ function O(e, t, n, r = n) {
29
30
  function i(e) {
30
31
  e[r] = e[n] + t, e.children && e.children.forEach(i);
31
32
  }
32
33
  i(e);
33
34
  }
34
- var O = (e, t) => {
35
+ var k = (e, t) => {
35
36
  let n = Math.min(...t), r = Math.max(...t);
36
37
  if (n === r) {
37
38
  let t = e % 2 == 0 ? [] : [n];
@@ -43,11 +44,11 @@ var O = (e, t) => {
43
44
  for (let t = 0; t < e - 1; t++) a.push(n + i * t);
44
45
  return a.push(r), a;
45
46
  };
46
- function k(e, t, n) {
47
+ function A(e, t, n) {
47
48
  let r = n;
48
- return e && (e.colorRange && (r = e.colorRange), e.method === "standardScaling" && (r = [-2, 2]), e.method === "meanNormalization" && (r = [-.75, .75])), O(t, r);
49
+ return e && (e.colorRange && (r = e.colorRange), e.method === "standardScaling" && (r = [-2, 2]), e.method === "meanNormalization" && (r = [-.75, .75])), k(t, r);
49
50
  }
50
- function A(e, t, n) {
51
+ function j(e, t, n) {
51
52
  let r = 0;
52
53
  for (let i of e) {
53
54
  if (t[i] === void 0) continue;
@@ -56,14 +57,14 @@ function A(e, t, n) {
56
57
  }
57
58
  return r;
58
59
  }
59
- function j(e, t) {
60
- return t === 90 ? e : t === 45 ? e * w + (e > 0 ? 2 * T : 0) : 30;
60
+ function M(e, t) {
61
+ return t === 90 ? e : t === 45 ? e * T + (e > 0 ? 2 * E : 0) : 30;
61
62
  }
62
- var M = class {
63
+ var N = class {
63
64
  reactRoot = null;
64
65
  parentNode = null;
65
66
  rootNode = null;
66
- component = /* @__PURE__ */ S(x, {});
67
+ component = /* @__PURE__ */ C(S, {});
67
68
  chartsDimensions = {};
68
69
  chartSizes = {
69
70
  chartWidth: 600,
@@ -96,14 +97,14 @@ var M = class {
96
97
  columnsCount = 1;
97
98
  rowsCount = 1;
98
99
  scales = {
99
- x: { null: y().domain(["null"]).range([1]) },
100
- y: { null: y().domain(["null"]).range([1]) }
100
+ x: { null: b().domain(["null"]).range([1]) },
101
+ y: { null: b().domain(["null"]).range([1]) }
101
102
  };
102
103
  step = {
103
104
  x: {},
104
105
  y: {}
105
106
  };
106
- colorScale = v().domain([0, 1]).range(["white", "black"]);
107
+ colorScale = y().domain([0, 1]).range(["white", "black"]);
107
108
  annotationColorScales = {};
108
109
  dendrogramAesScales = {};
109
110
  legend = {
@@ -118,7 +119,7 @@ var M = class {
118
119
  });
119
120
  }
120
121
  init(e) {
121
- this.parentNode === null && (this.parentNode = e, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot = b(this.rootNode));
122
+ this.parentNode === null && (this.parentNode = e, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot = x(this.rootNode));
122
123
  }
123
124
  updateMargins(e, t) {
124
125
  this.margins = {
@@ -144,7 +145,7 @@ var M = class {
144
145
  top: 0
145
146
  }, d = (e) => e.reduce((e, t) => (e[t] = String(t), e), {});
146
147
  if (e === "continuous") {
147
- let e = this.colorScale, n = t(e, o), r = v([n[0], n[n.length - 1]], [s, 0]), i = a.label ?? a.value;
148
+ let e = this.colorScale, n = t(e, o), r = y([n[0], n[n.length - 1]], [s, 0]), i = a.label ?? a.value;
148
149
  l.push({
149
150
  ...u,
150
151
  type: "continuous",
@@ -169,7 +170,7 @@ var M = class {
169
170
  if (r.forEach((e) => {
170
171
  let n = e.valueColumn.label ?? e.valueColumn.value;
171
172
  if (e.type === "continuous") {
172
- let r = this.annotationColorScales[e.id].scale, i = t(r, o), a = v([i[0], i[i.length - 1]], [s, 0]);
173
+ let r = this.annotationColorScales[e.id].scale, i = t(r, o), a = y([i[0], i[i.length - 1]], [s, 0]);
173
174
  l.push({
174
175
  ...u,
175
176
  type: "continuous",
@@ -215,26 +216,26 @@ var M = class {
215
216
  xGroupLabels: t.groupLabelsAngle,
216
217
  yGroupLabels: r.groupLabelsAngle
217
218
  };
218
- let m = o.reduce((e, t) => Math.max(e, A(u[t], f, a)), 0), g = s.reduce((e, t) => Math.max(e, A(d[t], p, a)), 0), _ = A(o, c, a), v = A(s, l, a), { xCaptionTail: y, yCaptionTail: b } = h(this.labelAngles, i, this.scales, this.step, e, a);
219
+ let m = o.reduce((e, t) => Math.max(e, j(u[t], f, a)), 0), h = s.reduce((e, t) => Math.max(e, j(d[t], p, a)), 0), _ = j(o, c, a), v = j(s, l, a), { xCaptionTail: y, yCaptionTail: b } = g(this.labelAngles, i, this.scales, this.step, e, a);
219
220
  this.captionsSizes = {
220
221
  xCaptionTail: y,
221
222
  yCaptionTail: b,
222
- xGroupCaptions: j(_, this.labelAngles.xGroupLabels),
223
- yGroupCaptions: j(v, this.labelAngles.yGroupLabels),
224
- xAxisCaptions: j(m, this.labelAngles.xAxisLabels),
225
- yAxisCaptions: j(g, this.labelAngles.yAxisLabels)
223
+ xGroupCaptions: M(_, this.labelAngles.xGroupLabels),
224
+ yGroupCaptions: M(v, this.labelAngles.yGroupLabels),
225
+ xAxisCaptions: M(m, this.labelAngles.xAxisLabels),
226
+ yAxisCaptions: M(h, this.labelAngles.yAxisLabels)
226
227
  };
227
228
  }
228
- updateChartDimensions(e, t, n, r, i, s, c, d, f, p) {
229
- let h = t.length, g = Math.min(i.nRows ?? h, h), _ = Math.min(i.nCols ?? h, h);
230
- this.columnsCount = i.nRows ? Math.ceil(h / g) : _, this.rowsCount = Math.ceil(h / this.columnsCount);
229
+ updateChartDimensions(e, t, n, r, i, a, c, l, f, p) {
230
+ let m = t.length, g = Math.min(i.nRows ?? m, m), _ = Math.min(i.nCols ?? m, m);
231
+ this.columnsCount = i.nRows ? Math.ceil(m / g) : _, this.rowsCount = Math.ceil(m / this.columnsCount);
231
232
  let { sharedX: v, sharedY: y } = i;
232
233
  this.chartsDimensions = {};
233
234
  let b = 0, x = 0;
234
- t.forEach((i, h) => {
235
- let g = h % this.columnsCount + 1, _ = a(h, t.length, this.columnsCount, this.rowsCount), S = this.step.x[i], C = this.step.y[i], w = l(s, c, this.captionsSizes, d, f, p, _, v, y, t, n, r, S, C), T = m(d, _, v, y);
235
+ t.forEach((i, m) => {
236
+ let g = m % this.columnsCount + 1, _ = o(m, t.length, this.columnsCount, this.rowsCount), S = this.step.x[i], C = this.step.y[i], w = u(a, c, this.captionsSizes, l, f, p, _, v, y, t, n, r, S, C), T = h(l, _, v, y);
236
237
  function E(t) {
237
- return Math.max(o[t].reduce((e, n) => e + w[t][n], 0), T[t], e.innerOffset);
238
+ return Math.max(s[t].reduce((e, n) => e + w[t][n], 0), T[t], e.innerOffset);
238
239
  }
239
240
  let D = {
240
241
  left: E("left"),
@@ -243,7 +244,7 @@ var M = class {
243
244
  bottom: E("bottom")
244
245
  };
245
246
  D.left < this.captionsSizes.xCaptionTail && (D.left = this.captionsSizes.xCaptionTail), D.bottom < this.captionsSizes.yCaptionTail && (D.bottom = this.captionsSizes.yCaptionTail);
246
- let O = u(w, this.chartSizes.chartWidth, this.chartSizes.chartHeight), k = this.chartSizes.chartWidth + D.left + D.right, A = this.chartSizes.chartHeight + D.top + D.bottom;
247
+ let O = d(w, this.chartSizes.chartWidth, this.chartSizes.chartHeight), k = this.chartSizes.chartWidth + D.left + D.right, A = this.chartSizes.chartHeight + D.top + D.bottom;
247
248
  this.chartsDimensions[i] = {
248
249
  left: b,
249
250
  top: x,
@@ -264,23 +265,16 @@ var M = class {
264
265
  this.chartSizes.chartsWidth = S, this.chartSizes.chartsHeight = C;
265
266
  }
266
267
  updateChartsSizes(e, t, n) {
267
- let { width: r, height: i, cellWidth: a, cellHeight: o } = e, s = t.meta.facetKeys[0];
268
- if (a && s) {
269
- let e = t.facets[s].xKeys.length, r = t.meta.xGroupKeys.filter((e) => (t.facets[s]?.xKeysByGroups[e]?.length ?? 0) > 0).length;
270
- this.chartSizes.chartWidth = e * a + n * (r - 1);
271
- } else this.chartSizes.chartWidth = r;
272
- if (o && s) {
273
- let e = t.facets[s].yKeys.length, r = t.meta.yGroupKeys.filter((e) => (t.facets[s]?.yKeysByGroups[e]?.length ?? 0) > 0).length;
274
- this.chartSizes.chartHeight = e * o + n * (r - 1);
275
- } else this.chartSizes.chartHeight = i;
268
+ let { chartWidth: r, chartHeight: i } = a(e, t.meta, n);
269
+ this.chartSizes.chartWidth = r, this.chartSizes.chartHeight = i;
276
270
  }
277
271
  updateScales(e, t, n, r, i) {
278
272
  let { width: a, height: o, cellWidth: s, cellHeight: c } = i, { meta: l, facets: u } = t, { sharedX: d, sharedY: f } = r;
279
273
  e.forEach((e) => {
280
- let t = u[e], r = l.xGroupKeys, i = l.yGroupKeys, { xKeysByGroups: p } = d ? l : t, { yKeysByGroups: m } = f ? l : t, h = r.map((e) => p[e].length), g = i.map((e) => m[e].length), _ = h.reduce((e, t) => e + t, 0), v = g.reduce((e, t) => e + t, 0), b = s || (a - (h.filter((e) => e > 0).length - 1) * n) / _, x = c || (o - (g.filter((e) => e > 0).length - 1) * n) / v, S = [], C = [], w = 0, T = r.map((e) => p[e]);
274
+ let t = u[e], r = l.xGroupKeys, i = l.yGroupKeys, { xKeysByGroups: p } = d ? l : t, { yKeysByGroups: m } = f ? l : t, h = r.map((e) => p[e].length), g = i.map((e) => m[e].length), _ = h.reduce((e, t) => e + t, 0), v = g.reduce((e, t) => e + t, 0), y = s || (a - (h.filter((e) => e > 0).length - 1) * n) / _, x = c || (o - (g.filter((e) => e > 0).length - 1) * n) / v, S = [], C = [], w = 0, T = r.map((e) => p[e]);
281
275
  T.forEach((e, t) => {
282
276
  C = C.concat(e), e.forEach(() => {
283
- S.push(w), w += b;
277
+ S.push(w), w += y;
284
278
  });
285
279
  let r = T.slice(t + 1).some((e) => e.length > 0);
286
280
  e.length > 0 && r && (w += n);
@@ -292,31 +286,31 @@ var M = class {
292
286
  });
293
287
  let r = k.slice(t + 1).some((e) => e.length > 0);
294
288
  e.length > 0 && r && (O += n);
295
- }), this.scales.x[e] = y().domain(C).range(S), this.scales.y[e] = y().domain(D).range(E), this.step.x[e] = b, this.step.y[e] = x;
289
+ }), this.scales.x[e] = b().domain(C).range(S), this.scales.y[e] = b().domain(D).range(E), this.step.x[e] = y, this.step.y[e] = x;
296
290
  });
297
291
  }
298
292
  updateAesScale(e, t, n, r, i, a, o) {
299
- if (e === "continuous") n.valueColors ? this.colorScale = v().domain(n.valuesByColors ?? k(o, n.valueColors.length, t)).range(n.valueColors) : n.colorsList && (this.colorScale = v().domain(k(o, n.colorsList.length, t)).range(n.colorsList));
293
+ if (e === "continuous") n.valueColors ? this.colorScale = y().domain(n.valuesByColors ?? A(o, n.valueColors.length, t)).range(n.valueColors) : n.colorsList && (this.colorScale = y().domain(A(o, n.colorsList.length, t)).range(n.colorsList));
300
294
  else if (n.colorsMap) {
301
295
  let e = Object.entries(n.colorsMap);
302
- this.colorScale = y().domain(e.map((e) => e[0])).range(e.map((e) => e[1])).unknown("#ccc");
303
- } else n.colorsList && (this.colorScale = f(n.colorsList, a.map(String)));
296
+ this.colorScale = b().domain(e.map((e) => e[0])).range(e.map((e) => e[1])).unknown("#ccc");
297
+ } else n.colorsList && (this.colorScale = p(n.colorsList, a.map(String)));
304
298
  let { xDataByKeys: s, yDataByKeys: c } = i.meta;
305
299
  r.forEach((e) => {
306
300
  let { colors: t, type: n, axis: r, valueColumn: i } = e, a = (r === "x" ? s : c)[i.valueLabels ?? i.value];
307
301
  if (n === "discrete") {
308
- let n = g.uniq(Object.values(a).map(String)).sort();
302
+ let n = _.uniq(Object.values(a).map(String)).sort();
309
303
  this.annotationColorScales[e.id] = {
310
304
  type: "discrete",
311
- scale: p(t, n)
305
+ scale: m(t, n)
312
306
  };
313
307
  } else {
314
308
  let n = Object.values(a).map(Number);
315
309
  if (!n.length) return;
316
- let [r = n[0], i = n[0]] = C(n);
310
+ let [r = n[0], i = n[0]] = w(n);
317
311
  this.annotationColorScales[e.id] = {
318
312
  type: "continuous",
319
- scale: d(t, r, i, 0, .5, 1)
313
+ scale: f(t, r, i, 0, .5, 1)
320
314
  };
321
315
  }
322
316
  });
@@ -340,9 +334,9 @@ var M = class {
340
334
  let o = n[i];
341
335
  if (!o) return t;
342
336
  let c = s[i];
343
- _().separation(() => 1).size([o.leaves().length * this.step.x[e], a.size])(o);
337
+ v().separation(() => 1).size([o.leaves().length * this.step.x[e], a.size])(o);
344
338
  let l = o;
345
- return E(l, v().domain(a.position === "top" ? [0, r] : [r, 0]).range([a.size, 0]), "y"), D(l, this.scales.x[e](c[0]), "x"), t[i] = l, t;
339
+ return D(l, y().domain(a.position === "top" ? [0, r] : [r, 0]).range([a.size, 0]), "y"), O(l, this.scales.x[e](c[0]), "x"), t[i] = l, t;
346
340
  }, {}), this.dendrograms[e].x.data = a;
347
341
  }
348
342
  if (o) {
@@ -351,9 +345,9 @@ var M = class {
351
345
  let a = t[i];
352
346
  if (!a) return n;
353
347
  let s = c[i];
354
- _().separation(() => 1).size([a.leaves().length * this.step.y[e], o.size])(a);
355
- let l = a, u = v().domain(o.position === "left" ? [0, r] : [r, 0]).range([o.size, 0]);
356
- return D(l, this.scales.y[e](s[0]), "x", "y"), E(l, u, "x"), n[i] = l, n;
348
+ v().separation(() => 1).size([a.leaves().length * this.step.y[e], o.size])(a);
349
+ let l = a, u = y().domain(o.position === "left" ? [0, r] : [r, 0]).range([o.size, 0]);
350
+ return O(l, this.scales.y[e](s[0]), "x", "y"), D(l, u, "x"), n[i] = l, n;
357
351
  }, {}), this.dendrograms[e].y.data = o;
358
352
  }
359
353
  });
@@ -361,18 +355,18 @@ var M = class {
361
355
  updateDendrogramAesScales(e) {
362
356
  e && (this.dendrogramAesScales = Object.keys(e).reduce((t, n) => {
363
357
  let r = e[n], i = Object.keys(r);
364
- return t[n] = y().domain(i).range(i.map((e) => ({
365
- ...s,
358
+ return t[n] = b().domain(i).range(i.map((e) => ({
359
+ ...c,
366
360
  ...r[e]
367
- }))).unknown(s), t;
361
+ }))).unknown(c), t;
368
362
  }, {}));
369
363
  }
370
- render(e, t, n, i, a, o, s, l, u, d, f, p, m, h, g, _) {
371
- let { meta: v, facets: y } = o, { facetKeys: b, xGroupKeys: x, yGroupKeys: C, valueExtent: w } = v, { xAxis: T, yAxis: E, title: D, size: O, valueType: k } = n;
372
- this.updateChartsSizes(O, o, a.groupGap), this.updateAesScale(k, w.dataSource, a, s, o, m, h), this.updateScales(b, o, a.groupGap, i, O), this.updateCaptionsSize(o, T, E, i), this.updateChartDimensions(O, b, x, C, i, T, E, s, u, d), this.updateLegendSize(k, n.legend, s, l, w.dataSource), this.updateMargins(D, O), this.updateDendrogram(b, x, C, y, f, u, d), this.updateDendrogramAesScales(p);
373
- let A = /* @__PURE__ */ S(r, {
364
+ render(e, t, n, i, a, o, s, c, u, d, f, p, m, h, g, _) {
365
+ let { meta: v, facets: y } = o, { facetKeys: b, xGroupKeys: x, yGroupKeys: S, valueExtent: w } = v, { xAxis: T, yAxis: E, title: D, size: O, valueType: k } = n;
366
+ this.updateChartsSizes(O, o, a.groupGap), this.updateAesScale(k, w.dataSource, a, s, o, m, h), this.updateScales(b, o, a.groupGap, i, O), this.updateCaptionsSize(o, T, E, i), this.updateChartDimensions(O, b, x, S, i, T, E, s, u, d), this.updateLegendSize(k, n.legend, s, c, w.dataSource), this.updateMargins(D, O), this.updateDendrogram(b, x, S, y, f, u, d), this.updateDendrogramAesScales(p);
367
+ let A = /* @__PURE__ */ C(r, {
374
368
  dataFrame: e,
375
- children: /* @__PURE__ */ S(c, {
369
+ children: /* @__PURE__ */ C(l, {
376
370
  aes: a,
377
371
  annotations: s,
378
372
  annotationColorScales: this.annotationColorScales,
@@ -395,7 +389,7 @@ var M = class {
395
389
  settingsId: t,
396
390
  step: this.step,
397
391
  xGroupKeys: x,
398
- yGroupKeys: C,
392
+ yGroupKeys: S,
399
393
  onTooltipHintSwitch: g,
400
394
  cellsRenderingMode: _
401
395
  })
@@ -403,9 +397,9 @@ var M = class {
403
397
  this.component = A, this.reactRoot?.render(A);
404
398
  }
405
399
  renderError(t) {
406
- this.reactRoot?.render(/* @__PURE__ */ S(e, { message: t }));
400
+ this.reactRoot?.render(/* @__PURE__ */ C(e, { message: t }));
407
401
  }
408
402
  };
409
- export { M as default };
403
+ export { N as default };
410
404
 
411
405
  //# sourceMappingURL=ChartRenderer.js.map