@milaboratories/miplots4 1.0.128 → 1.0.129

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 (39) hide show
  1. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  2. package/dist/heatmap/ChartRenderer.js +251 -233
  3. package/dist/heatmap/ChartRenderer.js.map +1 -1
  4. package/dist/heatmap/components/Captions/GroupCaptions.d.ts.map +1 -1
  5. package/dist/heatmap/components/Captions/GroupCaptions.js +45 -36
  6. package/dist/heatmap/components/Captions/GroupCaptions.js.map +1 -1
  7. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  8. package/dist/heatmap/components/Chart.js +71 -69
  9. package/dist/heatmap/components/Chart.js.map +1 -1
  10. package/dist/heatmap/components/Dendrograms.d.ts +3 -1
  11. package/dist/heatmap/components/Dendrograms.d.ts.map +1 -1
  12. package/dist/heatmap/components/Dendrograms.js +54 -48
  13. package/dist/heatmap/components/Dendrograms.js.map +1 -1
  14. package/dist/heatmap/components/types.d.ts +2 -2
  15. package/dist/heatmap/components/types.d.ts.map +1 -1
  16. package/dist/heatmap/getDendrograms.d.ts +2 -2
  17. package/dist/heatmap/getDendrograms.d.ts.map +1 -1
  18. package/dist/heatmap/getDendrograms.js +36 -36
  19. package/dist/heatmap/getDendrograms.js.map +1 -1
  20. package/dist/heatmap/utils/calculateCaptionTails.d.ts +2 -2
  21. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
  22. package/dist/heatmap/utils/calculateCaptionTails.js +89 -54
  23. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  24. package/dist/heatmap/utils/calculateChartSideElementSizes.js +19 -19
  25. package/dist/heatmap/utils/calculateChartSideElementSizes.js.map +1 -1
  26. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  27. package/dist/scatterplot/ChartRenderer.js +191 -178
  28. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  29. package/dist/scatterplot/components/ChartsGroup.js +3 -3
  30. package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
  31. package/dist/scatterplot-umap/components/Lasso.d.ts.map +1 -1
  32. package/dist/scatterplot-umap/components/Lasso.js +148 -124
  33. package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
  34. package/dist/scatterplot-umap/components/LowerSVG.js +12 -12
  35. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  36. package/dist/scatterplot-umap/index.d.ts.map +1 -1
  37. package/dist/scatterplot-umap/index.js +60 -60
  38. package/dist/scatterplot-umap/index.js.map +1 -1
  39. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRenderer.js","sources":["../../src/heatmap/ChartRenderer.tsx"],"sourcesContent":["import {Error} from '../common/Error';\nimport {DEFAULT_AES} from './constants';\nimport type {\n AnnotationColorScales,\n CaptionsSizes,\n ChartDendrograms,\n ChartDimensionsData,\n ChartSizes,\n ChartsScales,\n Cluster,\n DendrogramAesScales,\n LabelAngles,\n Margins,\n} from './components/types';\nimport type {GroupedCellsData} from './getCells';\nimport type {DendrogramsData} from './getDendrograms';\nimport type {HeatmapSettingsImpl} from './HeatmapSettingsImpl';\nimport {\n calculateAnnotationTitleSizes,\n calculateChartSideElementSizes,\n calculateSideElementsBBoxes,\n createContinuousColorScale,\n createDiscreteColorScale,\n} from './utils';\nimport {calculateCaptionTails} from './utils/calculateCaptionTails';\nimport type {AesItem, ColumnName, DataValue} from '../types';\nimport {getChartEdgeSides} from '../utils/getChartEdgeSides';\nimport {getContinuousLegendTicks} from '../utils/getContinuousLegendTicks';\nimport {extent} from 'd3-array';\nimport type {HierarchyNode, HierarchyPointNode} from 'd3-hierarchy';\nimport {cluster} from 'd3-hierarchy';\nimport type {ScaleLinear, ScaleOrdinal} from 'd3-scale';\nimport {scaleLinear, scaleOrdinal} from 'd3-scale';\nimport lodash from 'lodash';\nimport {CHART_SIDE_ELEMENTS, LEGEND_OFFSET, MIN_MARGIN, MIN_PADDING, TITLE_LINE} from './constants';\nimport {DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN} from '../constants';\nimport type {ReactElement} from 'react';\nimport React from 'react';\nimport type {Root} from 'react-dom/client';\nimport {createRoot} from 'react-dom/client';\nimport {ChartsGroup} from './components/ChartsGroup';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\n\nfunction updateLinksHeight(root: HierarchyPointNode<Cluster>, scale: (v: number) => number, coord: 'x' | 'y') {\n function setHeight(d: HierarchyPointNode<Cluster>) {\n d[coord] = scale(d.data.height);\n if (d.children) d.children.forEach(setHeight);\n }\n setHeight(root);\n}\n\n// add shift to move nodes positions with group gaps\nfunction addShiftToLinkCoord(\n root: HierarchyPointNode<Cluster>,\n shift: number,\n coordFrom: 'x' | 'y',\n coordTo = coordFrom\n) {\n function setX(d: HierarchyPointNode<Cluster>) {\n d[coordTo] = d[coordFrom] + shift;\n if (d.children) d.children.forEach(setX);\n }\n setX(root);\n}\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n const steps = count % 2 === 0 ? [] : [min];\n for (let i = 1; i < count / 2 + 1; i++) {\n steps.push(min + i);\n steps.unshift(min - i);\n }\n return steps;\n }\n if (count < 2) {\n return [min, max];\n }\n const step = (max - min) / (count - 1);\n const steps = [];\n for (let i = 0; i < count - 1; i++) {\n steps.push(min + step * i);\n }\n steps.push(max);\n return steps;\n};\n\nfunction getContinuousColorRange(normalization:HeatmapSettingsImpl['normalization'], colorsCount: number, valueExtent: number[]) {\n let extent = valueExtent;\n if (normalization) {\n if (normalization.colorRange) {\n extent = normalization.colorRange;\n }\n if (normalization.method === 'standardScaling') {\n extent = [-2, 2];\n }\n if (normalization.method === 'meanNormalization') {\n extent = [-0.75, 0.75];\n }\n }\n return getSteps(colorsCount, extent);\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptions: 100,\n yAxisCaptions: 100,\n xGroupCaptions: TITLE_LINE,\n yGroupCaptions: TITLE_LINE,\n xCaptionTail: 0,\n yCaptionTail: 0,\n };\n labelAngles: LabelAngles = {\n xAxisLabels: 0,\n yAxisLabels: 0,\n xGroupLabels: 0,\n yGroupLabels: 0,\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n // scales grouped by facet\n x: {null: scaleOrdinal<string, number>().domain(['null']).range([1])},\n y: {null: scaleOrdinal<string, number>().domain(['null']).range([1])},\n };\n step: {\n x: Record<string, number>;\n y: Record<string, number>;\n } = {x: {}, y: {}};\n colorScale: ScaleLinear<string, string> | ScaleOrdinal<string, string, string> = scaleLinear<string, string>()\n .domain([0, 1])\n .range(['white', 'black']);\n annotationColorScales: AnnotationColorScales = {};\n dendrogramAesScales: DendrogramAesScales = {};\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n dendrograms: Record<string, ChartDendrograms> = {};\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateMargins(title: HeatmapSettingsImpl['chartSettings']['title']) {\n this.margins = {\n top: title.show ? TITLE_LINE_HEIGHT + TITLE_MARGIN * 2 : MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: this.legend.width + MIN_MARGIN,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight =\n this.margins.top + Math.max(this.chartSizes.chartsHeight + this.margins.bottom, this.legend.height);\n }\n\n updateLegendSize(\n valueType: HeatmapSettingsImpl['chartSettings']['valueType'],\n legend: HeatmapSettingsImpl['chartSettings']['legend'],\n annotations: HeatmapSettingsImpl['annotations'],\n columnValue: ColumnName,\n valueExtent: [number, number]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n const legendHeight = this.chartSizes.chartHeight;\n const legendItems: LegendItem[] = [];\n const emptySizes = {width:0, height:0, left:0, top: 0};\n \n const getDefaultLabels = (values:(string|number)[]) => values.reduce((res:Record<string, string>, v:string|number) => {res[v] = String(v); return res;}, {});\n if (valueType === 'continuous') {\n const scale = this.colorScale as ScaleLinear<string, string>;\n const values = getContinuousLegendTicks(scale, valueExtent);\n const tickPositionScale = scaleLinear([values[0], values[values.length - 1]], [legendHeight, 0]); //TODO: update during adding log scale for heatmap\n const title = columnValue.label ?? columnValue.value;\n legendItems.push({\n ...emptySizes,\n type: 'continuous',\n id: 'heatmapValue',\n scale,\n values,\n title,\n tickPositionScale\n });\n } else if (valueType === 'discrete') {\n const scale = this.colorScale as ScaleOrdinal<string, string>;\n const title = columnValue.label ?? columnValue.value;\n const values = scale.domain();\n const labels = getDefaultLabels(values);\n\n legendItems.push({...emptySizes, type: 'discreteColor', id: 'heatmapValue', title, scale, values, labels });\n }\n annotations.forEach(item => {\n const title = item.valueColumn.label ?? item.valueColumn.value;\n if (item.type === 'continuous') {\n const scale = this.annotationColorScales[item.id].scale as ScaleLinear<string, string>;\n const values = getContinuousLegendTicks(scale, valueExtent);\n const tickPositionScale = scaleLinear([values[0], values[values.length - 1]], [legendHeight, 0]); //TODO: update during adding log scale for heatmap\n\n legendItems.push({...emptySizes, type: 'continuous', id: item.id, tickPositionScale, title, scale, values});\n }\n if (item.type === 'discrete') {\n const scale = this.annotationColorScales[item.id].scale as ScaleOrdinal<string, string>;\n const values = scale.domain();\n const labels = getDefaultLabels(values);\n\n legendItems.push({...emptySizes, type: 'discreteColor', id: item.id, title, scale, values, labels });\n }\n });\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items\n };\n }\n\n updateCaptionsSize(\n groupedCells: GroupedCellsData,\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n facetSettings: HeatmapSettingsImpl['facetSettings']\n ) {\n const textMeasurer = new TextMeasurer('bold 14px Arial');\n const {xGroupKeys, yGroupKeys, xGroupLabels, yGroupLabels, xKeysByGroups, yKeysByGroups, xLabels, yLabels} = groupedCells.meta;\n this.labelAngles = {\n xAxisLabels: xAxis.axisLabelsAngle,\n yAxisLabels: yAxis.axisLabelsAngle,\n xGroupLabels: xAxis.groupLabelsAngle,\n yGroupLabels: yAxis.groupLabelsAngle,\n };\n // check auto-rotations, if some labels longer then width of cells group or cell\n // facetKeys.forEach((facetKey) => {\n // const stepX = this.step.x[facetKey];\n // const stepY = this.step.y[facetKey];\n // const facetGroup = groupedCells.groups[facetKey];\n // const {xKeysByGroups, yKeysByGroups} = facetGroup;\n //\n // // if some group has title longer than width of its cells, title should be rotated\n // if (xGroupKeys.some((key) => textMeasurer.getTextWidth(key) > xKeysByGroups[key].length * stepX)) {\n // this.captionsAngles.xGroupCaptions = 90;\n // }\n // if (yGroupKeys.some((key) => textMeasurer.getTextWidth(key) > yKeysByGroups[key].length * stepY)) {\n // this.captionsAngles.yGroupCaptions = 90;\n // }\n // // if some axis cell label longer than cell width/height, label should be rotated\n // if (xGroupKeys.some((key) => xKeysByGroups[key].some((xKey) => textMeasurer.getTextWidth(xKey) > stepX))) {\n // this.captionsAngles.xAxisCaptions = 90;\n // }\n // if (yGroupKeys.some((key) => yKeysByGroups[key].some((yKey) => textMeasurer.getTextWidth(yKey) > stepY))) {\n // this.captionsAngles.yAxisCaptions = 90;\n // }\n // });\n function getMaxTextLength (keys:string[], labels:Record<string, string>) {\n let maxLabelSize = 0;\n for (const key of keys) {\n const l = textMeasurer.getTextWidth(labels[key]);\n if (l > maxLabelSize) {\n maxLabelSize = l;\n }\n }\n return maxLabelSize;\n }\n const xKeys = lodash.flatten(Object.values(xKeysByGroups));\n const yKeys = lodash.flatten(Object.values(yKeysByGroups));\n\n const maxXLabelSize = getMaxTextLength(xKeys, xLabels);\n const maxYLabelSize = getMaxTextLength(yKeys, yLabels);\n const maxXGroupLabelSize = getMaxTextLength(xGroupKeys, xGroupLabels);\n const maxYGroupLabelSize = getMaxTextLength(yGroupKeys, yGroupLabels);\n const {xCaptionTail, yCaptionTail} = calculateCaptionTails(\n this.labelAngles,\n facetSettings,\n this.step,\n groupedCells,\n textMeasurer\n );\n const xGroupAngle = (this.labelAngles.xGroupLabels / 180) * Math.PI;\n const yGroupAngle = (this.labelAngles.yGroupLabels / 180) * Math.PI;\n const xLabelAngle = (this.labelAngles.xAxisLabels / 180) * Math.PI;\n const yLabelAngle = (this.labelAngles.yAxisLabels / 180) * Math.PI;\n this.captionsSizes = {\n xCaptionTail,\n yCaptionTail,\n xGroupCaptions: maxXGroupLabelSize * Math.sin(xGroupAngle) || TITLE_LINE,\n yGroupCaptions: maxYGroupLabelSize * Math.sin(yGroupAngle) || TITLE_LINE,\n xAxisCaptions: maxXLabelSize * Math.sin(xLabelAngle) || TITLE_LINE,\n yAxisCaptions: maxYLabelSize * Math.sin(yLabelAngle) || TITLE_LINE,\n };\n }\n\n updateChartDimensions(\n size: HeatmapSettingsImpl['chartSettings']['size'],\n facetKeys: string[],\n xGroupKeys: string[],\n yGroupKeys: string[],\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n annotations: HeatmapSettingsImpl['annotations'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY']\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n const {width, height} = size;\n const {sharedX, sharedY} = facetSettings;\n\n this.chartsDimensions = {};\n\n let currentLeft = 0;\n let currentTop = 0;\n facetKeys.forEach((key, index) => {\n const currentColumn = (index % this.columnsCount) + 1;\n const chartSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const stepX = this.step.x[key];\n const stepY = this.step.y[key];\n const sideElementSizes = calculateChartSideElementSizes(\n xAxis,\n yAxis,\n this.captionsSizes,\n annotations,\n dendrogramX,\n dendrogramY,\n chartSides,\n sharedX,\n sharedY,\n facetKeys,\n xGroupKeys,\n yGroupKeys,\n stepX,\n stepY\n );\n const annotationsTitleSizes = calculateAnnotationTitleSizes(annotations, chartSides, sharedX, sharedY);\n function getPadding(side: 'left' | 'right' | 'top' | 'bottom') {\n return Math.max(\n CHART_SIDE_ELEMENTS[side].reduce((res, el) => res + sideElementSizes[side][el], 0),\n annotationsTitleSizes[side],\n MIN_PADDING\n );\n }\n const padding = {\n left: getPadding('left'),\n right: getPadding('right'),\n top: getPadding('top'),\n bottom: getPadding('bottom'),\n };\n if (padding.left < this.captionsSizes.xCaptionTail) {\n padding.left = this.captionsSizes.xCaptionTail;\n }\n if (padding.bottom < this.captionsSizes.yCaptionTail) {\n padding.bottom = this.captionsSizes.yCaptionTail;\n }\n const sideElementBBoxes = calculateSideElementsBBoxes(sideElementSizes, width, height);\n const outerWidth = width + padding.left + padding.right;\n const outerHeight = height + padding.top + padding.bottom;\n this.chartsDimensions[key] = {\n left: currentLeft,\n top: currentTop,\n inner: {width, height},\n outer: {width: outerWidth, height: outerHeight},\n padding,\n sideElementBBoxes,\n chartEdgeSides: chartSides,\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n });\n\n // sum of widths of first row\n const chartsWidth = facetKeys\n .slice(0, this.columnsCount)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.width, 0);\n // sum of heights of first column\n const chartsHeight = facetKeys\n .filter((_key, index) => index % this.columnsCount === 0)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.height, 0);\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateChartsSizes(size: HeatmapSettingsImpl['chartSettings']['size']) {\n const {width, height} = size;\n this.chartSizes.chartWidth = width;\n this.chartSizes.chartHeight = height;\n }\n\n // update scales for cell positions, x and y for each facet\n updateScales(\n facetKeys: string[],\n groupedCells: GroupedCellsData,\n groupGap: number,\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n size: HeatmapSettingsImpl['chartSettings']['size'],\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n ) {\n const {width, height} = size;\n const {meta, facets} = groupedCells;\n const {sharedX, sharedY} = facetSettings;\n const sortX = (arr: string[], labels: Record<string, string> = {}) => {\n return arr.sort((a, b) => xAxis.sorting === 'asc'\n ? (labels[a] ?? a).localeCompare((labels[b] ?? b), 'en', {numeric: true})\n : (labels[b] ?? b).localeCompare((labels[a] ?? a), 'en', {numeric: true})\n );\n };\n const sortY = (arr: string[], labels: Record<string, string> = {}) => {\n return arr.sort((a, b) => yAxis.sorting === 'asc'\n ? (labels[a] ?? a).localeCompare((labels[b] ?? b), 'en', {numeric: true})\n : (labels[b] ?? b).localeCompare((labels[a] ?? a), 'en', {numeric: true})\n );\n };\n facetKeys.forEach(facetKey => {\n const facetGroup = facets[facetKey];\n const xGroupKeys = sortX(meta.xGroupKeys);\n const yGroupKeys = sortY(meta.yGroupKeys);\n const {xKeysByGroups} = sharedX ? meta : facetGroup;\n const {yKeysByGroups} = sharedY ? meta : facetGroup;\n // for shared facets max cells counts in group should be used\n const xCounts = xGroupKeys.map(xGroupKey => xKeysByGroups[xGroupKey].length);\n const yCounts = yGroupKeys.map(yGroupKey => yKeysByGroups[yGroupKey].length);\n const xCellsCount = xCounts.reduce((sum, count) => sum + count, 0);\n const yCellsCount = yCounts.reduce((sum, count) => sum + count, 0);\n const xStep = (width - (xCounts.filter(count => count > 0).length - 1) * groupGap) / xCellsCount;\n const yStep = (height - (yCounts.filter(count => count > 0).length - 1) * groupGap) / yCellsCount;\n\n const xPositions: number[] = [];\n const xKeys: string[] = [];\n let currentX = 0;\n xGroupKeys.forEach(xKey => {\n const axisKeys = dendrogramX ? xKeysByGroups[xKey] : sortX(xKeysByGroups[xKey], meta.xLabels);\n xKeys.push(...axisKeys);\n axisKeys.forEach(() => {\n xPositions.push(currentX);\n currentX += xStep;\n });\n // do not add offset for empty group\n if (axisKeys.length > 0) {\n currentX += groupGap;\n }\n });\n\n const yPositions: number[] = [];\n const yKeys: string[] = [];\n let currentY = 0;\n yGroupKeys.forEach(yKey => {\n const axisKeys = dendrogramY ? yKeysByGroups[yKey] : sortY(yKeysByGroups[yKey], meta.yLabels);\n yKeys.push(...axisKeys);\n axisKeys.forEach(() => {\n yPositions.push(currentY);\n currentY += yStep;\n });\n // do not add offset for empty group\n if (axisKeys.length > 0) {\n currentY += groupGap;\n }\n });\n\n this.scales.x[facetKey] = scaleOrdinal<string, number>().domain(xKeys).range(xPositions);\n this.scales.y[facetKey] = scaleOrdinal<string, number>().domain(yKeys).range(yPositions);\n this.step.x[facetKey] = xStep;\n this.step.y[facetKey] = yStep;\n });\n }\n\n updateAesScale(\n valueType: 'discrete' | 'continuous',\n valueExtent: [number, number],\n aes: HeatmapSettingsImpl['aes'],\n annotations: HeatmapSettingsImpl['annotations'],\n groupedCellsData: GroupedCellsData,\n cellUniqValues: DataValue[],\n normalization: HeatmapSettingsImpl['normalization']\n ) {\n if (valueType === 'continuous') {\n if (aes.valueColors) {\n this.colorScale = scaleLinear<string, string>()\n .domain(aes.valuesByColors ?? getContinuousColorRange(normalization, aes.valueColors.length, valueExtent))\n .range(aes.valueColors);\n } else if (aes.colorsList) {\n this.colorScale = scaleLinear<string, string>()\n .domain(getContinuousColorRange(normalization, aes.colorsList.length, valueExtent))\n .range(aes.colorsList);\n }\n } else {\n if (aes.colorsMap) {\n const valueKeys = Object.entries(aes.colorsMap);\n this.colorScale = scaleOrdinal<string, string>()\n .domain(valueKeys.map(v => v[0]))\n .range(valueKeys.map(v => v[1]))\n .unknown('#ccc');\n } else if (aes.colorsList) {\n this.colorScale = createDiscreteColorScale(aes.colorsList, cellUniqValues.map(String));\n }\n }\n\n const {xDataByKeys, yDataByKeys} = groupedCellsData.meta;\n annotations.forEach(item => {\n const {colors, type, axis, valueColumn} = item;\n const data = (axis === 'x' ? xDataByKeys : yDataByKeys)[valueColumn.value];\n if (type === 'discrete') {\n const discreteValues = lodash.uniq(Object.values(data).map(String)).sort();\n this.annotationColorScales[item.id] = {\n type: 'discrete',\n scale: createDiscreteColorScale(colors, discreteValues),\n };\n } else {\n const values = Object.values(data).map(Number);\n if (!values.length) {\n return;\n }\n const [min = values[0], max = values[0]] = extent(values);\n this.annotationColorScales[item.id] = {\n type: 'continuous',\n scale: createContinuousColorScale(colors, min, max, 0, 0.5, 1),\n };\n }\n });\n }\n\n updateDendrogram(\n facetKeys: string[],\n xGroupKeys: string[],\n yGroupKeys: string[],\n groups: GroupedCellsData['facets'],\n dendrogramsData: DendrogramsData,\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY']\n ) {\n facetKeys.forEach(facetKey => {\n this.dendrograms[facetKey] = {x: {trees: [], data: dendrogramX}, y: {trees: [], data: dendrogramY}};\n const {xKeysByGroups, yKeysByGroups} = groups[facetKey];\n const {hierarchyX, hierarchyY} = dendrogramsData[facetKey];\n const maxHeightX = Math.max(...hierarchyX.map(root => root.data.height));\n const maxHeightY = Math.max(...hierarchyY.map(root => root.data.height));\n if (dendrogramX) {\n this.dendrograms[facetKey].x.trees = hierarchyX.map((hierarchy, idx) => {\n const groupKey = xGroupKeys[idx];\n const xKeys = xKeysByGroups[groupKey];\n cluster()\n .separation(() => 1)\n .size([xKeys.length * this.step.x[facetKey], dendrogramX.size])(\n hierarchy as HierarchyNode<unknown>\n );\n const root = hierarchy as HierarchyPointNode<Cluster>;\n const heightScale = scaleLinear()\n .domain(dendrogramX.position === 'top' ? [0, maxHeightX] : [maxHeightX, 0])\n .range([dendrogramX.size, 0]);\n updateLinksHeight(root, heightScale, 'y');\n addShiftToLinkCoord(root, this.scales.x[facetKey](xKeys[0]), 'x');\n return root;\n });\n this.dendrograms[facetKey].x.data = dendrogramX;\n }\n if (dendrogramY) {\n this.dendrograms[facetKey].y.trees = hierarchyY.map((hierarchy, idx) => {\n const groupKey = yGroupKeys[idx];\n const yKeys = yKeysByGroups[groupKey];\n cluster()\n .separation(() => 1)\n .size([yKeys.length * this.step.y[facetKey], dendrogramY.size])(\n hierarchy as HierarchyNode<unknown>\n );\n const root = hierarchy as HierarchyPointNode<Cluster>;\n const heightScale = scaleLinear()\n .domain(dendrogramY.position === 'left' ? [0, maxHeightY] : [maxHeightY, 0])\n .range([dendrogramY.size, 0]);\n addShiftToLinkCoord(root, this.scales.y[facetKey](yKeys[0]), 'x', 'y');\n updateLinksHeight(root, heightScale, 'x');\n return root;\n });\n this.dendrograms[facetKey].y.data = dendrogramY;\n }\n });\n }\n\n updateDendrogramAesScales(inheritedAes: HeatmapSettingsImpl['inheritedDendrogramAes']) {\n if (!inheritedAes) {\n return;\n }\n const usedColumns = Object.keys(inheritedAes);\n this.dendrogramAesScales = usedColumns.reduce((res: DendrogramAesScales, columnName) => {\n const aesMap = inheritedAes[columnName];\n const columnValues: string[] = Object.keys(aesMap);\n res[columnName] = scaleOrdinal<string, AesItem, AesItem>()\n .domain(columnValues)\n .range(\n columnValues.map(value => ({\n ...DEFAULT_AES,\n ...aesMap[value],\n }))\n )\n .unknown(DEFAULT_AES);\n return res;\n }, {});\n }\n\n render(\n settingsId: string,\n chartSettings: HeatmapSettingsImpl['chartSettings'],\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n aes: HeatmapSettingsImpl['aes'],\n groupedCellsData: GroupedCellsData,\n annotations: HeatmapSettingsImpl['annotations'],\n valueColumn: ColumnName,\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n dendrogramsData: DendrogramsData,\n inheritedDendrogramAes: HeatmapSettingsImpl['inheritedDendrogramAes'],\n cellUniqValues: DataValue[],\n normalization: HeatmapSettingsImpl['normalization'],\n onTooltipHintSwitch: (v:boolean) => void\n ) {\n const {meta, facets} = groupedCellsData;\n const {facetKeys, xGroupKeys, yGroupKeys, valueExtent} = meta;\n const {xAxis, yAxis, title, size, valueType} = chartSettings;\n this.updateChartsSizes(size);\n this.updateAesScale(valueType, valueExtent, aes, annotations, groupedCellsData, cellUniqValues, normalization);\n this.updateScales(facetKeys, groupedCellsData, aes.groupGap, facetSettings, size, chartSettings.xAxis, chartSettings.yAxis, dendrogramX, dendrogramY);\n // caption sizes are needed for chart paddings in chart dimensions\n this.updateCaptionsSize(groupedCellsData, xAxis, yAxis, facetSettings);\n this.updateChartDimensions(\n size,\n facetKeys,\n xGroupKeys,\n yGroupKeys,\n facetSettings,\n xAxis,\n yAxis,\n annotations,\n dendrogramX,\n dendrogramY\n );\n this.updateLegendSize(valueType, chartSettings.legend, annotations, valueColumn, valueExtent);\n this.updateMargins(title);\n this.updateDendrogram(facetKeys, xGroupKeys, yGroupKeys, facets, dendrogramsData, dendrogramX, dendrogramY);\n this.updateDendrogramAesScales(inheritedDendrogramAes);\n const component = (\n <ChartsGroup\n aes={aes}\n annotations={annotations}\n annotationColorScales={this.annotationColorScales}\n captionsSizes={this.captionsSizes}\n cellsMeta={meta}\n columnsCount={this.columnsCount}\n chartsDimensions={this.chartsDimensions}\n chartSettings={chartSettings}\n chartSizes={this.chartSizes}\n colorScale={this.colorScale as (v: unknown) => string}\n dendrogramAesScales={this.dendrogramAesScales}\n dendrograms={this.dendrograms}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n groupedCells={facets}\n labelAngles={this.labelAngles}\n legend={this.legend}\n margins={this.margins}\n scales={this.scales}\n settingsId={settingsId}\n step={this.step}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["updateLinksHeight","root","scale","coord","setHeight","d","addShiftToLinkCoord","shift","coordFrom","coordTo","setX","getSteps","count","valueExtent","min","max","steps","i","step","getContinuousColorRange","normalization","colorsCount","extent","ChartRenderer","__publicField","jsx","Fragment","DEFAULT_WIDTH","DEFAULT_HEIGHT","MIN_MARGIN","TITLE_LINE","scaleOrdinal","scaleLinear","_a","node","createRoot","title","TITLE_LINE_HEIGHT","TITLE_MARGIN","valueType","legend","annotations","columnValue","legendHeight","legendItems","emptySizes","getDefaultLabels","values","res","v","getContinuousLegendTicks","tickPositionScale","labels","item","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","groupedCells","xAxis","yAxis","facetSettings","textMeasurer","TextMeasurer","xGroupKeys","yGroupKeys","xGroupLabels","yGroupLabels","xKeysByGroups","yKeysByGroups","xLabels","yLabels","getMaxTextLength","keys","maxLabelSize","key","l","xKeys","lodash","yKeys","maxXLabelSize","maxYLabelSize","maxXGroupLabelSize","maxYGroupLabelSize","xCaptionTail","yCaptionTail","calculateCaptionTails","xGroupAngle","yGroupAngle","xLabelAngle","yLabelAngle","size","facetKeys","dendrogramX","dendrogramY","facetCount","maxNRows","maxNCols","width","height","sharedX","sharedY","currentLeft","currentTop","index","currentColumn","chartSides","getChartEdgeSides","stepX","stepY","sideElementSizes","calculateChartSideElementSizes","annotationsTitleSizes","calculateAnnotationTitleSizes","getPadding","side","CHART_SIDE_ELEMENTS","el","MIN_PADDING","padding","sideElementBBoxes","calculateSideElementsBBoxes","outerWidth","outerHeight","chartsWidth","sum","chartsHeight","_key","groupGap","meta","facets","sortX","arr","a","b","sortY","facetKey","facetGroup","xCounts","xGroupKey","yCounts","yGroupKey","xCellsCount","yCellsCount","xStep","yStep","xPositions","currentX","xKey","axisKeys","yPositions","currentY","yKey","aes","groupedCellsData","cellUniqValues","valueKeys","createDiscreteColorScale","xDataByKeys","yDataByKeys","colors","type","axis","valueColumn","data","discreteValues","createContinuousColorScale","groups","dendrogramsData","hierarchyX","hierarchyY","maxHeightX","maxHeightY","hierarchy","idx","groupKey","cluster","heightScale","inheritedAes","usedColumns","columnName","aesMap","columnValues","value","DEFAULT_AES","settingsId","chartSettings","inheritedDendrogramAes","onTooltipHintSwitch","component","ChartsGroup","message","Error"],"mappings":"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"}
1
+ {"version":3,"file":"ChartRenderer.js","sources":["../../src/heatmap/ChartRenderer.tsx"],"sourcesContent":["import {Error} from '../common/Error';\nimport {DEFAULT_AES} from './constants';\nimport type {\n AnnotationColorScales,\n CaptionsSizes,\n ChartDendrograms,\n ChartDimensionsData,\n ChartSizes,\n ChartsScales,\n Cluster,\n DendrogramAesScales,\n LabelAngles,\n Margins,\n} from './components/types';\nimport type {GroupedCellsData} from './getCells';\nimport type {DendrogramsData} from './getDendrograms';\nimport type {HeatmapSettingsImpl} from './HeatmapSettingsImpl';\nimport {\n calculateAnnotationTitleSizes,\n calculateChartSideElementSizes,\n calculateSideElementsBBoxes,\n createContinuousColorScale,\n createDiscreteColorScale,\n} from './utils';\nimport {calculateCaptionTails} from './utils/calculateCaptionTails';\nimport type {AesItem, ColumnName, DataValue} from '../types';\nimport {getChartEdgeSides} from '../utils/getChartEdgeSides';\nimport {getContinuousLegendTicks} from '../utils/getContinuousLegendTicks';\nimport {extent} from 'd3-array';\nimport type {HierarchyNode, HierarchyPointNode} from 'd3-hierarchy';\nimport {cluster} from 'd3-hierarchy';\nimport type {ScaleLinear, ScaleOrdinal} from 'd3-scale';\nimport {scaleLinear, scaleOrdinal} from 'd3-scale';\nimport lodash from 'lodash';\nimport {CHART_SIDE_ELEMENTS, LEGEND_OFFSET, MIN_MARGIN, MIN_PADDING, TITLE_LINE} from './constants';\nimport {DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN} from '../constants';\nimport type {ReactElement} from 'react';\nimport React from 'react';\nimport type {Root} from 'react-dom/client';\nimport {createRoot} from 'react-dom/client';\nimport {ChartsGroup} from './components/ChartsGroup';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\n\nconst COS_PI_4 = Math.cos(Math.PI / 4);\nconst INCLINE_OFFSET = 5; // height of little triangle of text for captions inclined 45deg\nfunction updateLinksHeight(root: HierarchyPointNode<Cluster>, scale: (v: number) => number, coord: 'x' | 'y') {\n function setHeight(d: HierarchyPointNode<Cluster>) {\n d[coord] = scale(d.data.height);\n if (d.children) d.children.forEach(setHeight);\n }\n setHeight(root);\n}\n\n// add shift to move nodes positions with group gaps\nfunction addShiftToLinkCoord(\n root: HierarchyPointNode<Cluster>,\n shift: number,\n coordFrom: 'x' | 'y',\n coordTo = coordFrom\n) {\n function setX(d: HierarchyPointNode<Cluster>) {\n d[coordTo] = d[coordFrom] + shift;\n if (d.children) d.children.forEach(setX);\n }\n setX(root);\n}\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n const steps = count % 2 === 0 ? [] : [min];\n for (let i = 1; i < count / 2 + 1; i++) {\n steps.push(min + i);\n steps.unshift(min - i);\n }\n return steps;\n }\n if (count < 2) {\n return [min, max];\n }\n const step = (max - min) / (count - 1);\n const steps = [];\n for (let i = 0; i < count - 1; i++) {\n steps.push(min + step * i);\n }\n steps.push(max);\n return steps;\n};\n\nfunction getContinuousColorRange(normalization:HeatmapSettingsImpl['normalization'], colorsCount: number, valueExtent: number[]) {\n let extent = valueExtent;\n if (normalization) {\n if (normalization.colorRange) {\n extent = normalization.colorRange;\n }\n if (normalization.method === 'standardScaling') {\n extent = [-2, 2];\n }\n if (normalization.method === 'meanNormalization') {\n extent = [-0.75, 0.75];\n }\n }\n return getSteps(colorsCount, extent);\n}\n\nfunction getMaxTextLength (keys:string[], labels:Record<string, string>, textMeasurer: TextMeasurer) {\n let maxLabelSize = 0;\n for (const key of keys) {\n const l = textMeasurer.getTextWidth(labels[key]);\n if (l > maxLabelSize) {\n maxLabelSize = l;\n }\n }\n return maxLabelSize;\n}\n\nfunction getCaptionHeight (size:number, angle:number) {\n if (angle === 90) {\n return size;\n }\n if (angle === 45) {\n return size * COS_PI_4 + (size > 0 ? 2 * INCLINE_OFFSET : 0) ;\n }\n return TITLE_LINE;\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptions: 100,\n yAxisCaptions: 100,\n xGroupCaptions: TITLE_LINE,\n yGroupCaptions: TITLE_LINE,\n xCaptionTail: 0,\n yCaptionTail: 0,\n };\n labelAngles: LabelAngles = {\n xAxisLabels: 0,\n yAxisLabels: 0,\n xGroupLabels: 0,\n yGroupLabels: 0,\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n // scales grouped by facet\n x: {null: scaleOrdinal<string, number>().domain(['null']).range([1])},\n y: {null: scaleOrdinal<string, number>().domain(['null']).range([1])},\n };\n step: {\n x: Record<string, number>;\n y: Record<string, number>;\n } = {x: {}, y: {}};\n colorScale: ScaleLinear<string, string> | ScaleOrdinal<string, string, string> = scaleLinear<string, string>()\n .domain([0, 1])\n .range(['white', 'black']);\n annotationColorScales: AnnotationColorScales = {};\n dendrogramAesScales: DendrogramAesScales = {};\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n dendrograms: Record<string, ChartDendrograms> = {};\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateMargins(title: HeatmapSettingsImpl['chartSettings']['title']) {\n this.margins = {\n top: title.show ? TITLE_LINE_HEIGHT + TITLE_MARGIN * 2 : MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: this.legend.width + MIN_MARGIN,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight =\n this.margins.top + Math.max(this.chartSizes.chartsHeight + this.margins.bottom, this.legend.height);\n }\n\n updateLegendSize(\n valueType: HeatmapSettingsImpl['chartSettings']['valueType'],\n legend: HeatmapSettingsImpl['chartSettings']['legend'],\n annotations: HeatmapSettingsImpl['annotations'],\n columnValue: ColumnName,\n valueExtent: [number, number]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n const legendHeight = this.chartSizes.chartHeight;\n const legendItems: LegendItem[] = [];\n const emptySizes = {width:0, height:0, left:0, top: 0};\n \n const getDefaultLabels = (values:(string|number)[]) => values.reduce((res:Record<string, string>, v:string|number) => {res[v] = String(v); return res;}, {});\n if (valueType === 'continuous') {\n const scale = this.colorScale as ScaleLinear<string, string>;\n const values = getContinuousLegendTicks(scale, valueExtent);\n const tickPositionScale = scaleLinear([values[0], values[values.length - 1]], [legendHeight, 0]); //TODO: update during adding log scale for heatmap\n const title = columnValue.label ?? columnValue.value;\n legendItems.push({\n ...emptySizes,\n type: 'continuous',\n id: 'heatmapValue',\n scale,\n values,\n title,\n tickPositionScale\n });\n } else if (valueType === 'discrete') {\n const scale = this.colorScale as ScaleOrdinal<string, string>;\n const title = columnValue.label ?? columnValue.value;\n const values = scale.domain();\n const labels = getDefaultLabels(values);\n\n legendItems.push({...emptySizes, type: 'discreteColor', id: 'heatmapValue', title, scale, values, labels });\n }\n annotations.forEach(item => {\n const title = item.valueColumn.label ?? item.valueColumn.value;\n if (item.type === 'continuous') {\n const scale = this.annotationColorScales[item.id].scale as ScaleLinear<string, string>;\n const values = getContinuousLegendTicks(scale, valueExtent);\n const tickPositionScale = scaleLinear([values[0], values[values.length - 1]], [legendHeight, 0]); //TODO: update during adding log scale for heatmap\n\n legendItems.push({...emptySizes, type: 'continuous', id: item.id, tickPositionScale, title, scale, values});\n }\n if (item.type === 'discrete') {\n const scale = this.annotationColorScales[item.id].scale as ScaleOrdinal<string, string>;\n const values = scale.domain();\n const labels = getDefaultLabels(values);\n\n legendItems.push({...emptySizes, type: 'discreteColor', id: item.id, title, scale, values, labels });\n }\n });\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items\n };\n }\n\n updateCaptionsSize(\n groupedCells: GroupedCellsData,\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n facetSettings: HeatmapSettingsImpl['facetSettings']\n ) {\n const textMeasurer = new TextMeasurer('bold 16px Manrope');\n const {xGroupKeys, yGroupKeys, xGroupLabels, yGroupLabels, xKeysByGroups, yKeysByGroups, xLabels, yLabels} = groupedCells.meta;\n this.labelAngles = {\n xAxisLabels: xAxis.axisLabelsAngle,\n yAxisLabels: yAxis.axisLabelsAngle,\n xGroupLabels: xAxis.groupLabelsAngle,\n yGroupLabels: yAxis.groupLabelsAngle,\n };\n\n const maxXLabelSize = xGroupKeys.reduce((res, key) => Math.max(res, getMaxTextLength(xKeysByGroups[key], xLabels, textMeasurer)), 0) ;\n const maxYLabelSize = yGroupKeys.reduce((res, key) => Math.max(res, getMaxTextLength(yKeysByGroups[key], yLabels, textMeasurer)), 0) ;\n const maxXGroupLabelSize = getMaxTextLength(xGroupKeys, xGroupLabels, textMeasurer);\n const maxYGroupLabelSize = getMaxTextLength(yGroupKeys, yGroupLabels, textMeasurer);\n const {xCaptionTail, yCaptionTail} = calculateCaptionTails(\n this.labelAngles,\n facetSettings,\n this.scales,\n this.step,\n groupedCells,\n textMeasurer\n );\n this.captionsSizes = {\n xCaptionTail,\n yCaptionTail,\n xGroupCaptions: getCaptionHeight(maxXGroupLabelSize, this.labelAngles.xGroupLabels),\n yGroupCaptions: getCaptionHeight(maxYGroupLabelSize, this.labelAngles.yGroupLabels),\n xAxisCaptions: getCaptionHeight(maxXLabelSize, this.labelAngles.xAxisLabels),\n yAxisCaptions: getCaptionHeight(maxYLabelSize, this.labelAngles.yAxisLabels),\n };\n }\n\n updateChartDimensions(\n size: HeatmapSettingsImpl['chartSettings']['size'],\n facetKeys: string[],\n xGroupKeys: string[],\n yGroupKeys: string[],\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n annotations: HeatmapSettingsImpl['annotations'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY']\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n const {width, height} = size;\n const {sharedX, sharedY} = facetSettings;\n\n this.chartsDimensions = {};\n\n let currentLeft = 0;\n let currentTop = 0;\n facetKeys.forEach((key, index) => {\n const currentColumn = (index % this.columnsCount) + 1;\n const chartSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const stepX = this.step.x[key];\n const stepY = this.step.y[key];\n const sideElementSizes = calculateChartSideElementSizes(\n xAxis,\n yAxis,\n this.captionsSizes,\n annotations,\n dendrogramX,\n dendrogramY,\n chartSides,\n sharedX,\n sharedY,\n facetKeys,\n xGroupKeys,\n yGroupKeys,\n stepX,\n stepY\n );\n const annotationsTitleSizes = calculateAnnotationTitleSizes(annotations, chartSides, sharedX, sharedY);\n function getPadding(side: 'left' | 'right' | 'top' | 'bottom') {\n return Math.max(\n CHART_SIDE_ELEMENTS[side].reduce((res, el) => res + sideElementSizes[side][el], 0),\n annotationsTitleSizes[side],\n MIN_PADDING\n );\n }\n const padding = {\n left: getPadding('left'),\n right: getPadding('right'),\n top: getPadding('top'),\n bottom: getPadding('bottom'),\n };\n if (padding.left < this.captionsSizes.xCaptionTail) {\n padding.left = this.captionsSizes.xCaptionTail;\n }\n if (padding.bottom < this.captionsSizes.yCaptionTail) {\n padding.bottom = this.captionsSizes.yCaptionTail;\n }\n const sideElementBBoxes = calculateSideElementsBBoxes(sideElementSizes, width, height);\n const outerWidth = width + padding.left + padding.right;\n const outerHeight = height + padding.top + padding.bottom;\n this.chartsDimensions[key] = {\n left: currentLeft,\n top: currentTop,\n inner: {width, height},\n outer: {width: outerWidth, height: outerHeight},\n padding,\n sideElementBBoxes,\n chartEdgeSides: chartSides,\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n });\n\n // sum of widths of first row\n const chartsWidth = facetKeys\n .slice(0, this.columnsCount)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.width, 0);\n // sum of heights of first column\n const chartsHeight = facetKeys\n .filter((_key, index) => index % this.columnsCount === 0)\n .reduce((sum, key) => sum + this.chartsDimensions[key].outer.height, 0);\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateChartsSizes(size: HeatmapSettingsImpl['chartSettings']['size']) {\n const {width, height} = size;\n this.chartSizes.chartWidth = width;\n this.chartSizes.chartHeight = height;\n }\n\n // update scales for cell positions, x and y for each facet\n updateScales(\n facetKeys: string[],\n groupedCells: GroupedCellsData,\n groupGap: number,\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n size: HeatmapSettingsImpl['chartSettings']['size'],\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'],\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'],\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n ) {\n const {width, height} = size;\n const {meta, facets} = groupedCells;\n const {sharedX, sharedY} = facetSettings;\n const sortX = (arr: string[], labels: Record<string, string> = {}) => {\n return arr.sort((a, b) => xAxis.sorting === 'asc'\n ? (labels[a] ?? a).localeCompare((labels[b] ?? b), 'en', {numeric: true})\n : (labels[b] ?? b).localeCompare((labels[a] ?? a), 'en', {numeric: true})\n );\n };\n const sortY = (arr: string[], labels: Record<string, string> = {}) => {\n return arr.sort((a, b) => yAxis.sorting === 'asc'\n ? (labels[a] ?? a).localeCompare((labels[b] ?? b), 'en', {numeric: true})\n : (labels[b] ?? b).localeCompare((labels[a] ?? a), 'en', {numeric: true})\n );\n };\n facetKeys.forEach(facetKey => {\n const facetGroup = facets[facetKey];\n const xGroupKeys = sortX(meta.xGroupKeys);\n const yGroupKeys = sortY(meta.yGroupKeys);\n const {xKeysByGroups} = sharedX ? meta : facetGroup;\n const {yKeysByGroups} = sharedY ? meta : facetGroup;\n // for shared facets max cells counts in group should be used\n const xCounts = xGroupKeys.map(xGroupKey => xKeysByGroups[xGroupKey].length);\n const yCounts = yGroupKeys.map(yGroupKey => yKeysByGroups[yGroupKey].length);\n const xCellsCount = xCounts.reduce((sum, count) => sum + count, 0);\n const yCellsCount = yCounts.reduce((sum, count) => sum + count, 0);\n const xStep = (width - (xCounts.filter(count => count > 0).length - 1) * groupGap) / xCellsCount;\n const yStep = (height - (yCounts.filter(count => count > 0).length - 1) * groupGap) / yCellsCount;\n\n const xPositions: number[] = [];\n const xKeys: string[] = [];\n let currentX = 0;\n xGroupKeys.forEach(xKey => {\n const axisKeys = dendrogramX ? xKeysByGroups[xKey] : sortX(xKeysByGroups[xKey], meta.xLabels);\n xKeys.push(...axisKeys);\n axisKeys.forEach(() => {\n xPositions.push(currentX);\n currentX += xStep;\n });\n // do not add offset for empty group\n if (axisKeys.length > 0) {\n currentX += groupGap;\n }\n });\n\n const yPositions: number[] = [];\n const yKeys: string[] = [];\n let currentY = 0;\n yGroupKeys.forEach(yKey => {\n const axisKeys = dendrogramY ? yKeysByGroups[yKey] : sortY(yKeysByGroups[yKey], meta.yLabels);\n yKeys.push(...axisKeys);\n axisKeys.forEach(() => {\n yPositions.push(currentY);\n currentY += yStep;\n });\n // do not add offset for empty group\n if (axisKeys.length > 0) {\n currentY += groupGap;\n }\n });\n\n this.scales.x[facetKey] = scaleOrdinal<string, number>().domain(xKeys).range(xPositions);\n this.scales.y[facetKey] = scaleOrdinal<string, number>().domain(yKeys).range(yPositions);\n this.step.x[facetKey] = xStep;\n this.step.y[facetKey] = yStep;\n });\n }\n\n updateAesScale(\n valueType: 'discrete' | 'continuous',\n valueExtent: [number, number],\n aes: HeatmapSettingsImpl['aes'],\n annotations: HeatmapSettingsImpl['annotations'],\n groupedCellsData: GroupedCellsData,\n cellUniqValues: DataValue[],\n normalization: HeatmapSettingsImpl['normalization']\n ) {\n if (valueType === 'continuous') {\n if (aes.valueColors) {\n this.colorScale = scaleLinear<string, string>()\n .domain(aes.valuesByColors ?? getContinuousColorRange(normalization, aes.valueColors.length, valueExtent))\n .range(aes.valueColors);\n } else if (aes.colorsList) {\n this.colorScale = scaleLinear<string, string>()\n .domain(getContinuousColorRange(normalization, aes.colorsList.length, valueExtent))\n .range(aes.colorsList);\n }\n } else {\n if (aes.colorsMap) {\n const valueKeys = Object.entries(aes.colorsMap);\n this.colorScale = scaleOrdinal<string, string>()\n .domain(valueKeys.map(v => v[0]))\n .range(valueKeys.map(v => v[1]))\n .unknown('#ccc');\n } else if (aes.colorsList) {\n this.colorScale = createDiscreteColorScale(aes.colorsList, cellUniqValues.map(String));\n }\n }\n\n const {xDataByKeys, yDataByKeys} = groupedCellsData.meta;\n annotations.forEach(item => {\n const {colors, type, axis, valueColumn} = item;\n const data = (axis === 'x' ? xDataByKeys : yDataByKeys)[valueColumn.value];\n if (type === 'discrete') {\n const discreteValues = lodash.uniq(Object.values(data).map(String)).sort();\n this.annotationColorScales[item.id] = {\n type: 'discrete',\n scale: createDiscreteColorScale(colors, discreteValues),\n };\n } else {\n const values = Object.values(data).map(Number);\n if (!values.length) {\n return;\n }\n const [min = values[0], max = values[0]] = extent(values);\n this.annotationColorScales[item.id] = {\n type: 'continuous',\n scale: createContinuousColorScale(colors, min, max, 0, 0.5, 1),\n };\n }\n });\n }\n\n updateDendrogram(\n facetKeys: string[],\n xGroupKeys: string[],\n yGroupKeys: string[],\n groups: GroupedCellsData['facets'],\n dendrogramsData: DendrogramsData,\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY']\n ) {\n facetKeys.forEach(facetKey => {\n this.dendrograms[facetKey] = {x: {treesByGroupKey: {}, data: dendrogramX}, y: {treesByGroupKey: {}, data: dendrogramY}};\n const {xKeysByGroups, yKeysByGroups} = groups[facetKey];\n const {hierarchyByGroupX, hierarchyByGroupY} = dendrogramsData[facetKey];\n if (dendrogramX) {\n const maxHeightX = xGroupKeys.reduce((res, xKey) => Math.max(res, hierarchyByGroupX[xKey]?.data.height), 0);\n this.dendrograms[facetKey].x.treesByGroupKey = xGroupKeys.reduce((res, groupKey) => {\n const hierarchy = hierarchyByGroupX[groupKey];\n const xKeys = xKeysByGroups[groupKey];\n cluster()\n .separation(() => 1)\n .size([xKeys.length * this.step.x[facetKey], dendrogramX.size])(\n hierarchy as HierarchyNode<unknown>\n );\n const root = hierarchy as HierarchyPointNode<Cluster>;\n const heightScale = scaleLinear()\n .domain(dendrogramX.position === 'top' ? [0, maxHeightX] : [maxHeightX, 0])\n .range([dendrogramX.size, 0]);\n updateLinksHeight(root, heightScale, 'y');\n addShiftToLinkCoord(root, this.scales.x[facetKey](xKeys[0]), 'x');\n res[groupKey] = root;\n return res;\n }, {} as Record<string, HierarchyPointNode<Cluster>>);\n this.dendrograms[facetKey].x.data = dendrogramX;\n }\n if (dendrogramY) {\n const maxHeightY = yGroupKeys.reduce((res, yKey) => Math.max(res, hierarchyByGroupY[yKey]?.data.height), 0);\n this.dendrograms[facetKey].y.treesByGroupKey = yGroupKeys.reduce((res, groupKey) => {\n const hierarchy = hierarchyByGroupY[groupKey];\n const yKeys = yKeysByGroups[groupKey];\n cluster()\n .separation(() => 1)\n .size([yKeys.length * this.step.y[facetKey], dendrogramY.size])(\n hierarchy as HierarchyNode<unknown>\n );\n const root = hierarchy as HierarchyPointNode<Cluster>;\n const heightScale = scaleLinear()\n .domain(dendrogramY.position === 'left' ? [0, maxHeightY] : [maxHeightY, 0])\n .range([dendrogramY.size, 0]);\n addShiftToLinkCoord(root, this.scales.y[facetKey](yKeys[0]), 'x', 'y');\n updateLinksHeight(root, heightScale, 'x');\n res[groupKey] = root;\n return res;\n }, {} as Record<string, HierarchyPointNode<Cluster>>);\n this.dendrograms[facetKey].y.data = dendrogramY;\n }\n });\n }\n\n updateDendrogramAesScales(inheritedAes: HeatmapSettingsImpl['inheritedDendrogramAes']) {\n if (!inheritedAes) {\n return;\n }\n const usedColumns = Object.keys(inheritedAes);\n this.dendrogramAesScales = usedColumns.reduce((res: DendrogramAesScales, columnName) => {\n const aesMap = inheritedAes[columnName];\n const columnValues: string[] = Object.keys(aesMap);\n res[columnName] = scaleOrdinal<string, AesItem, AesItem>()\n .domain(columnValues)\n .range(\n columnValues.map(value => ({\n ...DEFAULT_AES,\n ...aesMap[value],\n }))\n )\n .unknown(DEFAULT_AES);\n return res;\n }, {});\n }\n\n render(\n settingsId: string,\n chartSettings: HeatmapSettingsImpl['chartSettings'],\n facetSettings: HeatmapSettingsImpl['facetSettings'],\n aes: HeatmapSettingsImpl['aes'],\n groupedCellsData: GroupedCellsData,\n annotations: HeatmapSettingsImpl['annotations'],\n valueColumn: ColumnName,\n dendrogramX: HeatmapSettingsImpl['dendrogramX'],\n dendrogramY: HeatmapSettingsImpl['dendrogramY'],\n dendrogramsData: DendrogramsData,\n inheritedDendrogramAes: HeatmapSettingsImpl['inheritedDendrogramAes'],\n cellUniqValues: DataValue[],\n normalization: HeatmapSettingsImpl['normalization'],\n onTooltipHintSwitch: (v:boolean) => void\n ) {\n const {meta, facets} = groupedCellsData;\n const {facetKeys, xGroupKeys, yGroupKeys, valueExtent} = meta;\n const {xAxis, yAxis, title, size, valueType} = chartSettings;\n this.updateChartsSizes(size);\n this.updateAesScale(valueType, valueExtent, aes, annotations, groupedCellsData, cellUniqValues, normalization);\n this.updateScales(facetKeys, groupedCellsData, aes.groupGap, facetSettings, size, chartSettings.xAxis, chartSettings.yAxis, dendrogramX, dendrogramY);\n // caption sizes are needed for chart paddings in chart dimensions\n this.updateCaptionsSize(groupedCellsData, xAxis, yAxis, facetSettings);\n this.updateChartDimensions(\n size,\n facetKeys,\n xGroupKeys,\n yGroupKeys,\n facetSettings,\n xAxis,\n yAxis,\n annotations,\n dendrogramX,\n dendrogramY\n );\n this.updateLegendSize(valueType, chartSettings.legend, annotations, valueColumn, valueExtent);\n this.updateMargins(title);\n this.updateDendrogram(facetKeys, xGroupKeys, yGroupKeys, facets, dendrogramsData, dendrogramX, dendrogramY);\n this.updateDendrogramAesScales(inheritedDendrogramAes);\n const component = (\n <ChartsGroup\n aes={aes}\n annotations={annotations}\n annotationColorScales={this.annotationColorScales}\n captionsSizes={this.captionsSizes}\n cellsMeta={meta}\n columnsCount={this.columnsCount}\n chartsDimensions={this.chartsDimensions}\n chartSettings={chartSettings}\n chartSizes={this.chartSizes}\n colorScale={this.colorScale as (v: unknown) => string}\n dendrogramAesScales={this.dendrogramAesScales}\n dendrograms={this.dendrograms}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n groupedCells={facets}\n labelAngles={this.labelAngles}\n legend={this.legend}\n margins={this.margins}\n scales={this.scales}\n settingsId={settingsId}\n step={this.step}\n xGroupKeys={xGroupKeys}\n yGroupKeys={yGroupKeys}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["COS_PI_4","INCLINE_OFFSET","updateLinksHeight","root","scale","coord","setHeight","d","addShiftToLinkCoord","shift","coordFrom","coordTo","setX","getSteps","count","valueExtent","min","max","steps","i","step","getContinuousColorRange","normalization","colorsCount","extent","getMaxTextLength","keys","labels","textMeasurer","maxLabelSize","key","l","getCaptionHeight","size","angle","TITLE_LINE","ChartRenderer","__publicField","jsx","Fragment","DEFAULT_WIDTH","DEFAULT_HEIGHT","MIN_MARGIN","scaleOrdinal","scaleLinear","_a","node","createRoot","title","TITLE_LINE_HEIGHT","TITLE_MARGIN","valueType","legend","annotations","columnValue","legendHeight","legendItems","emptySizes","getDefaultLabels","values","res","v","getContinuousLegendTicks","tickPositionScale","item","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","groupedCells","xAxis","yAxis","facetSettings","TextMeasurer","xGroupKeys","yGroupKeys","xGroupLabels","yGroupLabels","xKeysByGroups","yKeysByGroups","xLabels","yLabels","maxXLabelSize","maxYLabelSize","maxXGroupLabelSize","maxYGroupLabelSize","xCaptionTail","yCaptionTail","calculateCaptionTails","facetKeys","dendrogramX","dendrogramY","facetCount","maxNRows","maxNCols","width","height","sharedX","sharedY","currentLeft","currentTop","index","currentColumn","chartSides","getChartEdgeSides","stepX","stepY","sideElementSizes","calculateChartSideElementSizes","annotationsTitleSizes","calculateAnnotationTitleSizes","getPadding","side","CHART_SIDE_ELEMENTS","el","MIN_PADDING","padding","sideElementBBoxes","calculateSideElementsBBoxes","outerWidth","outerHeight","chartsWidth","sum","chartsHeight","_key","groupGap","meta","facets","sortX","arr","a","b","sortY","facetKey","facetGroup","xCounts","xGroupKey","yCounts","yGroupKey","xCellsCount","yCellsCount","xStep","yStep","xPositions","xKeys","currentX","xKey","axisKeys","yPositions","yKeys","currentY","yKey","aes","groupedCellsData","cellUniqValues","valueKeys","createDiscreteColorScale","xDataByKeys","yDataByKeys","colors","type","axis","valueColumn","data","discreteValues","lodash","createContinuousColorScale","groups","dendrogramsData","hierarchyByGroupX","hierarchyByGroupY","maxHeightX","groupKey","hierarchy","cluster","heightScale","maxHeightY","inheritedAes","usedColumns","columnName","aesMap","columnValues","value","DEFAULT_AES","settingsId","chartSettings","inheritedDendrogramAes","onTooltipHintSwitch","component","ChartsGroup","message","Error"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"GroupCaptions.d.ts","sourceRoot":"","sources":["../../../../src/heatmap/components/Captions/GroupCaptions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAE,uBAAuB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAChF,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAGnE,UAAU,kBAAkB;IACxB,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;CAClB;AACD,wBAAgB,aAAa,CAAC,EAC1B,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,WAAW,EACX,KAAK,GACR,EAAE,kBAAkB,2CA0FpB"}
1
+ {"version":3,"file":"GroupCaptions.d.ts","sourceRoot":"","sources":["../../../../src/heatmap/components/Captions/GroupCaptions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAE,uBAAuB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAChF,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AAGnE,UAAU,kBAAkB;IACxB,iBAAiB,EAAE,uBAAuB,CAAC;IAC3C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;CAClB;AACD,wBAAgB,aAAa,CAAC,EAC1B,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,WAAW,EACX,KAAK,GACR,EAAE,kBAAkB,2CAiGpB"}
@@ -1,34 +1,43 @@
1
1
  import { j as n } from "../../../node_modules/react/jsx-runtime.js";
2
+ import { TICK_OFFSET as e } from "../../constants.js";
2
3
  function R({
3
4
  sideElementBBoxes: t,
4
- xGroupKeys: j,
5
- yGroupKeys: $,
6
- xKeysByGroups: f,
7
- yKeysByGroups: x,
8
- xGroupLabels: m,
9
- yGroupLabels: V,
10
- scales: d,
11
- stepX: k,
12
- stepY: w,
13
- xAxis: L,
14
- yAxis: C,
15
- labelAngles: c,
16
- debug: b
5
+ xGroupKeys: V,
6
+ yGroupKeys: k,
7
+ xKeysByGroups: x,
8
+ yKeysByGroups: b,
9
+ xGroupLabels: w,
10
+ yGroupLabels: C,
11
+ scales: j,
12
+ stepX: L,
13
+ stepY: T,
14
+ xAxis: F,
15
+ yAxis: P,
16
+ labelAngles: m,
17
+ debug: $
17
18
  }) {
18
- const G = t.top.groups.isVisible || t.bottom.groups.isVisible, a = t.top.groups.isVisible ? t.top.groups : t.bottom.groups, P = t.left.groups.isVisible || t.right.groups.isVisible, r = t.left.groups.isVisible ? t.left.groups : t.right.groups;
19
+ const W = t.top.groups.isVisible || t.bottom.groups.isVisible, a = t.top.groups.isVisible ? t.top.groups : t.bottom.groups, A = t.left.groups.isVisible || t.right.groups.isVisible, i = t.left.groups.isVisible ? t.left.groups : t.right.groups;
19
20
  return /* @__PURE__ */ n.jsxs("g", { children: [
20
- G && /* @__PURE__ */ n.jsx("g", { transform: `translate(${a.x},${a.y})`, children: j.map((o) => {
21
- const h = f[o].length;
22
- if (h === 0)
21
+ W && /* @__PURE__ */ n.jsx("g", { transform: `translate(${a.x},${a.y})`, children: V.map((o) => {
22
+ const l = x[o].length;
23
+ if (l === 0)
23
24
  return null;
24
- const s = c.xGroupLabels !== 0, i = L.groupingPosition === "top", l = h * k, p = d.x(f[o][0]) + l / 2, g = s ? i ? a.height : 0 : a.height / 2, u = -c.xGroupLabels, e = s ? i ? "start" : "end" : "middle";
25
- return /* @__PURE__ */ n.jsxs("g", { transform: `translate(${p},${g})`, children: [
26
- /* @__PURE__ */ n.jsx("text", { transform: `rotate(${u})`, dominantBaseline: "central", textAnchor: e, children: m[o] }),
27
- b && /* @__PURE__ */ n.jsx(
25
+ const r = m.xGroupLabels, c = r !== 0, g = F.groupingPosition === "top", h = l * L, s = j.x(x[o][0]) + h / 2, p = c ? g ? a.height : 0 : a.height / 2, u = -r, f = r === 45 ? 2 * e : r === 90 ? e : 0, d = c ? g ? "start" : "end" : "middle";
26
+ return /* @__PURE__ */ n.jsxs("g", { transform: `translate(${s},${p + f})`, children: [
27
+ /* @__PURE__ */ n.jsx(
28
+ "text",
29
+ {
30
+ transform: `rotate(${u})`,
31
+ dominantBaseline: "central",
32
+ textAnchor: d,
33
+ children: w[o]
34
+ }
35
+ ),
36
+ $ && /* @__PURE__ */ n.jsx(
28
37
  "rect",
29
38
  {
30
- x: -l / 2,
31
- width: l,
39
+ x: -h / 2,
40
+ width: h,
32
41
  height: a.height,
33
42
  stroke: "black",
34
43
  fill: "none"
@@ -36,29 +45,29 @@ function R({
36
45
  )
37
46
  ] }, o);
38
47
  }) }),
39
- P && /* @__PURE__ */ n.jsx("g", { transform: `translate(${r.x},${r.y})`, children: $.map((o) => {
40
- const h = x[o].length;
41
- if (h === 0)
48
+ A && /* @__PURE__ */ n.jsx("g", { transform: `translate(${i.x},${i.y})`, children: k.map((o) => {
49
+ const l = b[o].length;
50
+ if (l === 0)
42
51
  return null;
43
- const s = h * w, i = C.groupingPosition === "left", l = i ? r.width : 0, p = d.y(x[o][0]) + s / 2, g = c.yGroupLabels !== 0, u = c.yGroupLabels === 45 ? -45 : (i ? -1 : 1) * (90 - c.yGroupLabels), e = g ? i ? "end" : "start" : "middle";
44
- return /* @__PURE__ */ n.jsxs("g", { transform: `translate(${l},${p})`, children: [
52
+ const r = l * T, c = P.groupingPosition === "left", g = c ? i.width : 0, h = j.y(b[o][0]) + r / 2, s = m.yGroupLabels, p = s !== 0, u = s === 45 ? -45 : (c ? -1 : 1) * (90 - s), f = s === 45 ? 2 * e : s === 90 ? e : 0, d = p ? c ? "end" : "start" : "middle";
53
+ return /* @__PURE__ */ n.jsxs("g", { transform: `translate(${g - f},${h})`, children: [
45
54
  /* @__PURE__ */ n.jsx(
46
55
  "text",
47
56
  {
48
- y: g ? 0 : -r.width / 2,
57
+ y: p ? 0 : -i.width / 2,
49
58
  transform: `rotate(${u})`,
50
59
  dominantBaseline: "central",
51
- textAnchor: e,
52
- children: V[o]
60
+ textAnchor: d,
61
+ children: C[o]
53
62
  }
54
63
  ),
55
- b && /* @__PURE__ */ n.jsx(
64
+ $ && /* @__PURE__ */ n.jsx(
56
65
  "rect",
57
66
  {
58
- x: -r.width / 2,
59
- y: -s / 2,
60
- width: r.width,
61
- height: s,
67
+ x: -i.width / 2,
68
+ y: -r / 2,
69
+ width: i.width,
70
+ height: r,
62
71
  stroke: "black",
63
72
  fill: "none"
64
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GroupCaptions.js","sources":["../../../../src/heatmap/components/Captions/GroupCaptions.tsx"],"sourcesContent":["import type {ChartScales, ChartSideElementsBBoxes, LabelAngles} from '../types';\nimport type {HeatmapSettingsImpl} from '../../HeatmapSettingsImpl';\nimport React from 'react';\n\ninterface GroupCaptionsProps {\n sideElementBBoxes: ChartSideElementsBBoxes;\n xGroupKeys: string[];\n yGroupKeys: string[];\n xKeysByGroups: Record<string, string[]>;\n yKeysByGroups: Record<string, string[]>;\n xGroupLabels: Record<string, string>;\n yGroupLabels: Record<string, string>;\n scales: ChartScales;\n stepX: number;\n stepY: number;\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'];\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'];\n labelAngles: LabelAngles;\n debug: boolean;\n}\nexport function GroupCaptions({\n sideElementBBoxes,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n xGroupLabels,\n yGroupLabels,\n scales,\n stepX,\n stepY,\n xAxis,\n yAxis,\n labelAngles,\n debug,\n}: GroupCaptionsProps) {\n const xGroupsVisible = sideElementBBoxes.top.groups.isVisible || sideElementBBoxes.bottom.groups.isVisible;\n const xGroupsBBox = sideElementBBoxes.top.groups.isVisible\n ? sideElementBBoxes.top.groups\n : sideElementBBoxes.bottom.groups;\n\n const yGroupsVisible = sideElementBBoxes.left.groups.isVisible || sideElementBBoxes.right.groups.isVisible;\n const yGroupsBBox = sideElementBBoxes.left.groups.isVisible\n ? sideElementBBoxes.left.groups\n : sideElementBBoxes.right.groups;\n\n return (\n <g>\n {/* x group titles */}\n {xGroupsVisible && (\n <g transform={`translate(${xGroupsBBox.x},${xGroupsBBox.y})`}>\n {xGroupKeys.map(xGroupKey => {\n const keysCount = xKeysByGroups[xGroupKey].length;\n if (keysCount === 0) {\n return null;\n }\n const inclined = labelAngles.xGroupLabels !== 0;\n const onTop = xAxis.groupingPosition === 'top';\n const groupWidth = keysCount * stepX;\n const x = scales.x(xKeysByGroups[xGroupKey][0]) + groupWidth / 2;\n const y = inclined ? (onTop ? xGroupsBBox.height : 0) : xGroupsBBox.height / 2;\n const angle = -labelAngles.xGroupLabels;\n const textAnchor = !inclined ? 'middle' : onTop ? 'start' : 'end';\n return (\n <g key={xGroupKey} transform={`translate(${x},${y})`}>\n <text transform={`rotate(${angle})`} dominantBaseline=\"central\" textAnchor={textAnchor}>\n {xGroupLabels[xGroupKey]}\n </text>\n {debug && (\n <rect\n x={-groupWidth / 2}\n width={groupWidth}\n height={xGroupsBBox.height}\n stroke=\"black\"\n fill=\"none\"\n />\n )}\n </g>\n );\n })}\n </g>\n )}\n {/* y group titles */}\n {yGroupsVisible && (\n <g transform={`translate(${yGroupsBBox.x},${yGroupsBBox.y})`}>\n {yGroupKeys.map(yGroupKey => {\n const keysCount = yKeysByGroups[yGroupKey].length;\n if (keysCount === 0) {\n return null;\n }\n const groupWidth = keysCount * stepY;\n const onLeft = yAxis.groupingPosition === 'left';\n const x = onLeft ? yGroupsBBox.width : 0;\n const y = scales.y(yKeysByGroups[yGroupKey][0]) + groupWidth / 2;\n const inclined = labelAngles.yGroupLabels !== 0;\n const angle =\n labelAngles.yGroupLabels === 45 ? -45 : (onLeft ? -1 : 1) * (90 - labelAngles.yGroupLabels);\n const textAnchor = !inclined ? 'middle' : onLeft ? 'end' : 'start';\n return (\n <g key={yGroupKey} transform={`translate(${x},${y})`}>\n <text\n y={inclined ? 0 : -yGroupsBBox.width / 2}\n transform={`rotate(${angle})`}\n dominantBaseline=\"central\"\n textAnchor={textAnchor}\n >\n {yGroupLabels[yGroupKey]}\n </text>\n {debug && (\n <rect\n x={-yGroupsBBox.width / 2}\n y={-groupWidth / 2}\n width={yGroupsBBox.width}\n height={groupWidth}\n stroke=\"black\"\n fill=\"none\"\n />\n )}\n </g>\n );\n })}\n </g>\n )}\n </g>\n );\n}\n"],"names":["GroupCaptions","sideElementBBoxes","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","xGroupLabels","yGroupLabels","scales","stepX","stepY","xAxis","yAxis","labelAngles","debug","xGroupsVisible","xGroupsBBox","yGroupsVisible","yGroupsBBox","jsx","xGroupKey","keysCount","inclined","onTop","groupWidth","x","y","angle","textAnchor","yGroupKey","onLeft"],"mappings":"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"}
1
+ {"version":3,"file":"GroupCaptions.js","sources":["../../../../src/heatmap/components/Captions/GroupCaptions.tsx"],"sourcesContent":["import {TICK_OFFSET} from '../../constants';\nimport type {ChartScales, ChartSideElementsBBoxes, LabelAngles} from '../types';\nimport type {HeatmapSettingsImpl} from '../../HeatmapSettingsImpl';\nimport React from 'react';\n\ninterface GroupCaptionsProps {\n sideElementBBoxes: ChartSideElementsBBoxes;\n xGroupKeys: string[];\n yGroupKeys: string[];\n xKeysByGroups: Record<string, string[]>;\n yKeysByGroups: Record<string, string[]>;\n xGroupLabels: Record<string, string>;\n yGroupLabels: Record<string, string>;\n scales: ChartScales;\n stepX: number;\n stepY: number;\n xAxis: HeatmapSettingsImpl['chartSettings']['xAxis'];\n yAxis: HeatmapSettingsImpl['chartSettings']['yAxis'];\n labelAngles: LabelAngles;\n debug: boolean;\n}\nexport function GroupCaptions({\n sideElementBBoxes,\n xGroupKeys,\n yGroupKeys,\n xKeysByGroups,\n yKeysByGroups,\n xGroupLabels,\n yGroupLabels,\n scales,\n stepX,\n stepY,\n xAxis,\n yAxis,\n labelAngles,\n debug,\n}: GroupCaptionsProps) {\n const xGroupsVisible = sideElementBBoxes.top.groups.isVisible || sideElementBBoxes.bottom.groups.isVisible;\n const xGroupsBBox = sideElementBBoxes.top.groups.isVisible\n ? sideElementBBoxes.top.groups\n : sideElementBBoxes.bottom.groups;\n\n const yGroupsVisible = sideElementBBoxes.left.groups.isVisible || sideElementBBoxes.right.groups.isVisible;\n const yGroupsBBox = sideElementBBoxes.left.groups.isVisible\n ? sideElementBBoxes.left.groups\n : sideElementBBoxes.right.groups;\n\n return (\n <g>\n {/* x group titles */}\n {xGroupsVisible && (\n <g transform={`translate(${xGroupsBBox.x},${xGroupsBBox.y})`}>\n {xGroupKeys.map(xGroupKey => {\n const keysCount = xKeysByGroups[xGroupKey].length;\n if (keysCount === 0) {\n return null;\n }\n const angle = labelAngles.xGroupLabels;\n const inclined = angle !== 0;\n const onTop = xAxis.groupingPosition === 'top';\n const groupWidth = keysCount * stepX;\n const x = scales.x(xKeysByGroups[xGroupKey][0]) + groupWidth / 2;\n const y = inclined ? (onTop ? xGroupsBBox.height : 0) : xGroupsBBox.height / 2;\n const rotate = -angle;\n const offset = angle === 45 ? 2 * TICK_OFFSET : angle === 90 ? TICK_OFFSET : 0;\n const textAnchor = !inclined ? 'middle' : onTop ? 'start' : 'end';\n return (\n <g key={xGroupKey} transform={`translate(${x},${y + offset})`}>\n <text\n transform={`rotate(${rotate})`}\n dominantBaseline=\"central\"\n textAnchor={textAnchor}\n >\n {xGroupLabels[xGroupKey]}\n </text>\n {debug && (\n <rect\n x={-groupWidth / 2}\n width={groupWidth}\n height={xGroupsBBox.height}\n stroke=\"black\"\n fill=\"none\"\n />\n )}\n </g>\n );\n })}\n </g>\n )}\n {/* y group titles */}\n {yGroupsVisible && (\n <g transform={`translate(${yGroupsBBox.x},${yGroupsBBox.y})`}>\n {yGroupKeys.map(yGroupKey => {\n const keysCount = yKeysByGroups[yGroupKey].length;\n if (keysCount === 0) {\n return null;\n }\n const groupWidth = keysCount * stepY;\n const onLeft = yAxis.groupingPosition === 'left';\n const x = onLeft ? yGroupsBBox.width : 0;\n const y = scales.y(yKeysByGroups[yGroupKey][0]) + groupWidth / 2;\n const angle = labelAngles.yGroupLabels;\n const inclined = angle !== 0;\n const rotate = angle === 45 ? -45 : (onLeft ? -1 : 1) * (90 - angle);\n const offset = angle === 45 ? 2 * TICK_OFFSET : angle === 90 ? TICK_OFFSET : 0;\n const textAnchor = !inclined ? 'middle' : onLeft ? 'end' : 'start';\n return (\n <g key={yGroupKey} transform={`translate(${x - offset},${y})`}>\n <text\n y={inclined ? 0 : -yGroupsBBox.width / 2}\n transform={`rotate(${rotate})`}\n dominantBaseline=\"central\"\n textAnchor={textAnchor}\n >\n {yGroupLabels[yGroupKey]}\n </text>\n {debug && (\n <rect\n x={-yGroupsBBox.width / 2}\n y={-groupWidth / 2}\n width={yGroupsBBox.width}\n height={groupWidth}\n stroke=\"black\"\n fill=\"none\"\n />\n )}\n </g>\n );\n })}\n </g>\n )}\n </g>\n );\n}\n"],"names":["GroupCaptions","sideElementBBoxes","xGroupKeys","yGroupKeys","xKeysByGroups","yKeysByGroups","xGroupLabels","yGroupLabels","scales","stepX","stepY","xAxis","yAxis","labelAngles","debug","xGroupsVisible","xGroupsBBox","yGroupsVisible","yGroupsBBox","jsx","xGroupKey","keysCount","angle","inclined","onTop","groupWidth","x","y","rotate","offset","TICK_OFFSET","textAnchor","jsxs","yGroupKey","onLeft"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/heatmap/components/Chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAKlE,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA4CtM,wBAAgB,KAAK,CAAC,SAAS,EAAE,EAC7B,WAAW,EACX,QAAQ,EACR,UAAU,EACV,MAAM,EACN,KAAK,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,YAAY,GACf,EAAE;IACC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7E,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC;IACzC,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACpD,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC,IAAI,GAAC,qBAAqB,CAAC,CAAC;CAC1D,2CAgLA"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../../src/heatmap/components/Chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,OAAO,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAKlE,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AA4CtM,wBAAgB,KAAK,CAAC,SAAS,EAAE,EAC7B,WAAW,EACX,QAAQ,EACR,UAAU,EACV,MAAM,EACN,KAAK,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,UAAU,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,UAAU,EACV,OAAO,EACP,iBAAiB,EACjB,YAAY,GACf,EAAE;IACC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,mBAAmB,CAAC;IAChC,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7E,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,aAAa,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC7F,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC;IACzC,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACpD,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAChD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC,IAAI,GAAC,qBAAqB,CAAC,CAAC;CAC1D,2CAkLA"}