@milaboratories/miplots4 1.0.133 → 1.0.135

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 (148) hide show
  1. package/dist/{discrete/components → common}/BandAxis.d.ts +2 -2
  2. package/dist/common/BandAxis.d.ts.map +1 -0
  3. package/dist/{discrete/components → common}/BandAxis.js +3 -3
  4. package/dist/common/BandAxis.js.map +1 -0
  5. package/dist/common/ContinuousGrid.d.ts +3 -3
  6. package/dist/common/ContinuousGrid.d.ts.map +1 -1
  7. package/dist/common/ContinuousGrid.js.map +1 -1
  8. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  9. package/dist/discrete/ChartRenderer.js +192 -265
  10. package/dist/discrete/ChartRenderer.js.map +1 -1
  11. package/dist/discrete/DiscreteSettingsImpl.d.ts +17 -2
  12. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  13. package/dist/discrete/DiscreteSettingsImpl.js +93 -67
  14. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  15. package/dist/discrete/components/Chart.d.ts.map +1 -1
  16. package/dist/discrete/components/Chart.js +153 -136
  17. package/dist/discrete/components/Chart.js.map +1 -1
  18. package/dist/discrete/components/Grid.d.ts +3 -3
  19. package/dist/discrete/components/Grid.d.ts.map +1 -1
  20. package/dist/discrete/components/Grid.js.map +1 -1
  21. package/dist/discrete/components/layers/StackedAreaElement.d.ts +24 -0
  22. package/dist/discrete/components/layers/StackedAreaElement.d.ts.map +1 -0
  23. package/dist/discrete/components/layers/StackedAreaElement.js +105 -0
  24. package/dist/discrete/components/layers/StackedAreaElement.js.map +1 -0
  25. package/dist/discrete/components/layers/StackedBarElement.d.ts +3 -1
  26. package/dist/discrete/components/layers/StackedBarElement.d.ts.map +1 -1
  27. package/dist/discrete/components/layers/StackedBarElement.js +67 -60
  28. package/dist/discrete/components/layers/StackedBarElement.js.map +1 -1
  29. package/dist/discrete/components/types.d.ts +5 -3
  30. package/dist/discrete/components/types.d.ts.map +1 -1
  31. package/dist/discrete/index.d.ts.map +1 -1
  32. package/dist/discrete/index.js +58 -55
  33. package/dist/discrete/index.js.map +1 -1
  34. package/dist/discrete/layers/index.d.ts +1 -0
  35. package/dist/discrete/layers/index.d.ts.map +1 -1
  36. package/dist/discrete/layers/stackedArea.d.ts +10 -0
  37. package/dist/discrete/layers/stackedArea.d.ts.map +1 -0
  38. package/dist/discrete/layers/stackedArea.js +17 -0
  39. package/dist/discrete/layers/stackedArea.js.map +1 -0
  40. package/dist/discrete/layers/types.d.ts +12 -1
  41. package/dist/discrete/layers/types.d.ts.map +1 -1
  42. package/dist/discrete/utils/index.d.ts +1 -1
  43. package/dist/discrete/utils/index.d.ts.map +1 -1
  44. package/dist/histogram/ChartRenderer.js +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/node_modules/d3-scale/src/band.js +45 -35
  48. package/dist/node_modules/d3-scale/src/band.js.map +1 -1
  49. package/dist/scatterplot/ChartRenderer.d.ts +10 -5
  50. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  51. package/dist/scatterplot/ChartRenderer.js +276 -197
  52. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  53. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +5 -3
  54. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  55. package/dist/scatterplot/ScatterplotSettingsImpl.js +53 -53
  56. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  57. package/dist/scatterplot/components/Chart.d.ts +3 -1
  58. package/dist/scatterplot/components/Chart.d.ts.map +1 -1
  59. package/dist/scatterplot/components/Chart.js +23 -19
  60. package/dist/scatterplot/components/Chart.js.map +1 -1
  61. package/dist/scatterplot/components/ChartAxis.d.ts +3 -1
  62. package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -1
  63. package/dist/scatterplot/components/ChartAxis.js +31 -27
  64. package/dist/scatterplot/components/ChartAxis.js.map +1 -1
  65. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  66. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  67. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  68. package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -1
  69. package/dist/scatterplot/components/ChartTrendsData.js +20 -17
  70. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  71. package/dist/scatterplot/components/ChartsGroup.d.ts +5 -1
  72. package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -1
  73. package/dist/scatterplot/components/ChartsGroup.js +49 -46
  74. package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
  75. package/dist/scatterplot/components/Grid.d.ts +3 -3
  76. package/dist/scatterplot/components/Grid.d.ts.map +1 -1
  77. package/dist/scatterplot/components/Grid.js +31 -27
  78. package/dist/scatterplot/components/Grid.js.map +1 -1
  79. package/dist/scatterplot/components/types.d.ts +15 -5
  80. package/dist/scatterplot/components/types.d.ts.map +1 -1
  81. package/dist/scatterplot/dots.d.ts +2 -2
  82. package/dist/scatterplot/dots.d.ts.map +1 -1
  83. package/dist/scatterplot/dots.js.map +1 -1
  84. package/dist/scatterplot/getLayersData.d.ts +3 -2
  85. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  86. package/dist/scatterplot/getLayersData.js +29 -18
  87. package/dist/scatterplot/getLayersData.js.map +1 -1
  88. package/dist/scatterplot/index.d.ts +3 -0
  89. package/dist/scatterplot/index.d.ts.map +1 -1
  90. package/dist/scatterplot/index.js +73 -59
  91. package/dist/scatterplot/index.js.map +1 -1
  92. package/dist/scatterplot/linearRegression.d.ts +4 -6
  93. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  94. package/dist/scatterplot/linearRegression.js.map +1 -1
  95. package/dist/scatterplot/utils/isNumericScale.d.ts +6 -0
  96. package/dist/scatterplot/utils/isNumericScale.d.ts.map +1 -0
  97. package/dist/scatterplot/utils/isNumericScale.js +11 -0
  98. package/dist/scatterplot/utils/isNumericScale.js.map +1 -0
  99. package/dist/scatterplot-umap/ChartRenderer.js +1 -1
  100. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  101. package/dist/scatterplot-umap/SettingsImpl.d.ts +7 -4
  102. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  103. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  104. package/dist/scatterplot-umap/components/LowerSVG.js +7 -7
  105. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  106. package/dist/types/bubble.d.ts +12 -12
  107. package/dist/types/common.d.ts +186 -21
  108. package/dist/types/common.d.ts.map +1 -1
  109. package/dist/types/common.js +36 -26
  110. package/dist/types/common.js.map +1 -1
  111. package/dist/types/dendro.d.ts +22 -22
  112. package/dist/types/discrete.d.ts +291 -53
  113. package/dist/types/discrete.d.ts.map +1 -1
  114. package/dist/types/discrete.js +48 -33
  115. package/dist/types/discrete.js.map +1 -1
  116. package/dist/types/heatmap.d.ts +12 -12
  117. package/dist/types/histogram.d.ts +4 -4
  118. package/dist/types/scatterplot-umap.d.ts +4 -34
  119. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  120. package/dist/types/scatterplot-umap.js +1 -1
  121. package/dist/types/scatterplot-umap.js.map +1 -1
  122. package/dist/types/scatterplot.d.ts +186 -32
  123. package/dist/types/scatterplot.d.ts.map +1 -1
  124. package/dist/utils/createMultilineDiscreteLabels.d.ts +4 -0
  125. package/dist/utils/createMultilineDiscreteLabels.d.ts.map +1 -0
  126. package/dist/utils/createMultilineDiscreteLabels.js +32 -0
  127. package/dist/utils/createMultilineDiscreteLabels.js.map +1 -0
  128. package/dist/utils/getFacetRowsColumns.d.ts +3 -0
  129. package/dist/utils/getFacetRowsColumns.d.ts.map +1 -0
  130. package/dist/utils/getFacetRowsColumns.js +18 -0
  131. package/dist/utils/getFacetRowsColumns.js.map +1 -0
  132. package/dist/utils/measureMultilineDiscreteLabels.d.ts +9 -0
  133. package/dist/utils/measureMultilineDiscreteLabels.d.ts.map +1 -0
  134. package/dist/utils/measureMultilineDiscreteLabels.js +63 -0
  135. package/dist/utils/measureMultilineDiscreteLabels.js.map +1 -0
  136. package/dist/utils/splitTextByWidth.d.ts.map +1 -0
  137. package/dist/{discrete/utils → utils}/splitTextByWidth.js +1 -1
  138. package/dist/utils/splitTextByWidth.js.map +1 -0
  139. package/package.json +1 -1
  140. package/dist/discrete/components/BandAxis.d.ts.map +0 -1
  141. package/dist/discrete/components/BandAxis.js.map +0 -1
  142. package/dist/discrete/utils/splitTextByWidth.d.ts.map +0 -1
  143. package/dist/discrete/utils/splitTextByWidth.js.map +0 -1
  144. package/dist/scatterplot/components/Axis.d.ts +0 -13
  145. package/dist/scatterplot/components/Axis.d.ts.map +0 -1
  146. package/dist/scatterplot/components/Axis.js +0 -59
  147. package/dist/scatterplot/components/Axis.js.map +0 -1
  148. /package/dist/{discrete/utils → utils}/splitTextByWidth.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"StackedBarElement.js","sources":["../../../../src/discrete/components/layers/StackedBarElement.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { Tooltip } from '../../../common/Tooltip';\nimport type { AesItem, GroupingData, InheritAesDiscrete, Orientation } from '../../../types';\nimport { numberFormat } from '../../../utils/numberFormat';\nimport type { StackedBarLayer } from '../../DiscreteSettingsImpl';\nimport type { StackedBar } from '../../layers';\nimport type { ChartScales } from '../types';\n\ninterface StackedBarProps {\n facetKey: string;\n scales: ChartScales;\n geom: StackedBar;\n orientation: Orientation;\n aes: StackedBarLayer['aes'];\n normalize: boolean;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n elementsAmount: number;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n primaryGrouping: string,\n secondaryGrouping: string\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return scales.xPrimaryAes(primaryGrouping)[field] as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return scales.xSecondaryAes(secondaryGrouping)[field] as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getTooltipContent(secondaryGrouping:GroupingData, geom:StackedBar, secondaryKey: string, normalize:boolean) {\n const keyLabel = secondaryGrouping.valueLabels[secondaryKey];\n const heightValue = numberFormat(geom.valuesMap[secondaryKey].height) + (normalize ? '%' : '');\n return keyLabel ? [keyLabel, heightValue] : [heightValue];\n}\n\nexport function StackedBarElement({\n facetKey,\n scales,\n orientation,\n geom,\n aes,\n sideDistances,\n showTooltips,\n elementsAmount,\n normalize,\n secondaryGrouping,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n}: StackedBarProps) {\n const isVertical = orientation === 'vertical';\n const boxOuterWidth = scales.xPrimary.bandwidth();\n const boxXPosition = (scales.xPrimary(geom.primaryGrouping) ?? 0) + boxOuterWidth / 2;\n const boxWidth = aes.width === 'auto' ? boxOuterWidth * 0.8 : Math.min(boxOuterWidth, aes.width);\n const secondaryKeys = scales.xSecondary.domain().reverse();\n const yValues:Record<string, {y1: number, y2: number}> = {};\n let currentHeight = 0;\n secondaryKeys.forEach(secondaryKey => {\n if (!geom.valuesMap[secondaryKey]) {\n return;\n }\n const height = geom.valuesMap[secondaryKey].height;\n yValues[secondaryKey] = {\n y1: currentHeight,\n y2: currentHeight + height,\n };\n currentHeight += height;\n });\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g opacity={aes.opacity} strokeWidth={aes.lineWidth}>\n {secondaryKeys.map(key => {\n if (!geom.valuesMap[key]) {\n return null;\n }\n const {y1, y2} = yValues[key];\n const y1Px = scales.y(y1);\n const y2Px = scales.y(y2);\n const boxHeight = Math.abs(y1Px - y2Px);\n const lineColor = getAesValue(scales, 'lineColor', aes.lineColor, geom.primaryGrouping, key);\n const fillColor = getAesValue(scales, 'fillColor', aes.fillColor, geom.primaryGrouping, key);\n const globalKey = `stackedBar_${String(geom.primaryGrouping)}_${String(key)}`;\n\n const section = (\n <rect\n width={isVertical ? boxWidth : boxHeight}\n height={isVertical ? boxHeight : boxWidth}\n x={isVertical ? boxXPosition - boxWidth / 2 : Math.min(y1Px, y2Px)}\n y={isVertical ? Math.min(y1Px, y2Px) : boxXPosition - boxWidth / 2}\n fill={fillColor}\n stroke={lineColor}\n onMouseOver={() => tooltipsData.onMouseEnter(globalKey, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n const highlightedSection = tooltipsData.selectedData === globalKey && facetKey === tooltipsData.currentFacet && dimmedBackground;\n return (\n <g key={key}>\n {highlightedSection ? createPortal(section, activeElementContainer) : section}\n {showTooltips && (\n <Tooltip\n content={getTooltipContent(secondaryGrouping, geom, key, normalize)}\n x={isVertical ? boxXPosition : (y1Px + y2Px) / 2}\n y={isVertical ? (y1Px + y2Px) / 2 : boxXPosition}\n sideDistances={sideDistances}\n horizontal={isVertical}\n offset={elementsAmount > 1 ? boxOuterWidth / 2 : boxOuterWidth / 4}\n active={globalKey === tooltipsData.selectedData && facetKey === tooltipsData.currentFacet}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n })}\n </g>\n );\n}\n"],"names":["getAesValue","scales","field","value","primaryGrouping","secondaryGrouping","getTooltipContent","geom","secondaryKey","normalize","keyLabel","heightValue","numberFormat","StackedBarElement","facetKey","orientation","aes","sideDistances","showTooltips","elementsAmount","activeElementContainer","tooltipsContainer","tooltipsData","isVertical","boxOuterWidth","boxXPosition","boxWidth","secondaryKeys","yValues","currentHeight","height","dimmedBackground","jsx","key","y1","y2","y1Px","y2Px","boxHeight","lineColor","fillColor","globalKey","section","highlightedSection","createPortal","Tooltip"],"mappings":"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"}
1
+ {"version":3,"file":"StackedBarElement.js","sources":["../../../../src/discrete/components/layers/StackedBarElement.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { Tooltip } from '../../../common/Tooltip';\nimport type { AesItem, GroupingData, InheritAesDiscrete, Orientation } from '../../../types';\nimport { numberFormat } from '../../../utils/numberFormat';\nimport type { StackedBarLayer } from '../../DiscreteSettingsImpl';\nimport type { StackedBar } from '../../layers';\nimport type { ChartScales } from '../types';\n\ninterface StackedBarProps {\n facetKey: string;\n scales: ChartScales;\n geom: StackedBar;\n orientation: Orientation;\n aes: StackedBarLayer['aes'];\n normalize: boolean;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n elementsAmount: number;\n secondaryGrouping: GroupingData;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n activeKey?: string | null;\n onSectionHover?: (key: string | null) => void;\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n primaryGrouping: string,\n secondaryGrouping: string\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return scales.xPrimaryAes(primaryGrouping)[field] as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return scales.xSecondaryAes(secondaryGrouping)[field] as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getTooltipContent(secondaryGrouping:GroupingData, geom:StackedBar, secondaryKey: string, normalize:boolean) {\n const keyLabel = secondaryGrouping.valueLabels[secondaryKey];\n const heightValue = numberFormat(geom.valuesMap[secondaryKey].height) + (normalize ? '%' : '');\n return keyLabel ? [keyLabel, heightValue] : [heightValue];\n}\n\nexport function StackedBarElement({\n facetKey,\n scales,\n orientation,\n geom,\n aes,\n sideDistances,\n showTooltips,\n elementsAmount,\n normalize,\n secondaryGrouping,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n activeKey,\n onSectionHover\n}: StackedBarProps) {\n const isVertical = orientation === 'vertical';\n const boxOuterWidth = scales.xPrimary.bandwidth();\n const boxXPosition = (scales.xPrimary(geom.primaryGrouping) ?? 0) + boxOuterWidth / 2;\n const boxWidth = aes.width === 'auto' ? boxOuterWidth * 0.8 : Math.min(boxOuterWidth, aes.width);\n const boxOffset = (boxOuterWidth - boxWidth) / 2;\n const secondaryKeys = scales.xSecondary.domain().reverse();\n const yValues:Record<string, {y1: number, y2: number}> = {};\n let currentHeight = 0;\n secondaryKeys.forEach(secondaryKey => {\n if (!geom.valuesMap[secondaryKey]) {\n return;\n }\n const height = geom.valuesMap[secondaryKey].height;\n yValues[secondaryKey] = {\n y1: currentHeight,\n y2: currentHeight + height,\n };\n currentHeight += height;\n });\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n\n return (\n <g opacity={aes.opacity} strokeWidth={aes.lineWidth}>\n {secondaryKeys.map(key => {\n if (!geom.valuesMap[key]) {\n return null;\n }\n const {y1, y2} = yValues[key];\n const y1Px = scales.y(y1);\n const y2Px = scales.y(y2);\n const boxHeight = Math.abs(y1Px - y2Px);\n const lineColor = getAesValue(scales, 'lineColor', aes.lineColor, geom.primaryGrouping, key);\n const fillColor = getAesValue(scales, 'fillColor', aes.fillColor, geom.primaryGrouping, key);\n const globalKey = `stackedBar_${String(geom.primaryGrouping)}_${String(key)}`;\n\n const section = (\n <rect\n width={isVertical ? boxWidth : boxHeight}\n height={isVertical ? boxHeight : boxWidth}\n x={isVertical ? boxXPosition - boxWidth / 2 : Math.min(y1Px, y2Px)}\n y={isVertical ? Math.min(y1Px, y2Px) : boxXPosition - boxWidth / 2}\n fill={fillColor}\n stroke={lineColor}\n onMouseEnter={() => {\n tooltipsData.onMouseEnter(globalKey, facetKey);\n if (onSectionHover) {\n onSectionHover(key);\n }\n }}\n onMouseLeave={() => {\n tooltipsData.onMouseLeave();\n if (onSectionHover) {\n onSectionHover(null);\n }\n }}\n opacity={activeKey && key !== activeKey ? 0.5 : 1}\n />\n );\n const highlightedSection = tooltipsData.selectedData === globalKey && facetKey === tooltipsData.currentFacet && dimmedBackground;\n return (\n <g key={key}>\n {highlightedSection ? createPortal(section, activeElementContainer) : section}\n {showTooltips && (\n <Tooltip\n content={getTooltipContent(secondaryGrouping, geom, key, normalize)}\n x={isVertical ? boxXPosition - boxOffset + 4 : (y1Px + y2Px) / 2}\n y={isVertical ? (y1Px + y2Px) / 2 : boxXPosition + boxOffset - 4}\n sideDistances={sideDistances}\n horizontal={isVertical}\n offset={elementsAmount > 1 ? boxOuterWidth / 2 : boxOuterWidth / 4}\n active={globalKey === tooltipsData.selectedData && facetKey === tooltipsData.currentFacet}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n })}\n </g>\n );\n}\n"],"names":["getAesValue","scales","field","value","primaryGrouping","secondaryGrouping","getTooltipContent","geom","secondaryKey","normalize","keyLabel","heightValue","numberFormat","StackedBarElement","facetKey","orientation","aes","sideDistances","showTooltips","elementsAmount","activeElementContainer","tooltipsContainer","tooltipsData","activeKey","onSectionHover","isVertical","boxOuterWidth","boxXPosition","boxWidth","boxOffset","secondaryKeys","yValues","currentHeight","height","dimmedBackground","jsx","key","y1","y2","y1Px","y2Px","boxHeight","lineColor","fillColor","globalKey","section","highlightedSection","createPortal","Tooltip"],"mappings":"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"}
@@ -48,8 +48,10 @@ export interface ChartDimensionsData {
48
48
  chartEdgeSides: ('top' | 'bottom' | 'left' | 'right')[];
49
49
  }
50
50
  export interface CaptionsSizes {
51
- xAxisCaptionsWidthByRows: number[];
52
- xCaptionsTail: number;
53
- yAxisCaptionsWidth: number;
51
+ bottomAxisCaptionsWidthByRows: number[];
52
+ leftAxisCaptionsWidthByColumns: number[];
53
+ bottomCaptionsTail: number;
54
+ leftCaptionsTail: number;
55
+ leftAxisCaptionsWidth: number;
54
56
  }
55
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/discrete/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAErF,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,aAAa,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAE5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IACtD,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC1B,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/discrete/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAErF,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,aAAa,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC;IAE5C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC;IACtD,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC1B,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,8BAA8B,EAAE,MAAM,EAAE,CAAC;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;CACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discrete/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAmC,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAIH,oBAAoB,EAUvB,MAAM,wBAAwB,CAAC;AAehC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoE3D,qBAAa,aAAc,SAAQ,aAAa;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,UAAU,EAAE,SAAS,EAAE,CAAC;QACxB,eAAe,EAAE,SAAS,EAAE,CAAC;QAC7B,eAAe,EAAE,YAAY,CAAC;QAC9B,iBAAiB,EAAE,YAAY,CAAC;QAChC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC5B,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,YAAY,EAAE,OAAO,CAAC;KACzB,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,qBAAqB;IAS9F,KAAK,CAAC,IAAI,EAAE,WAAW;IAevB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB;IAyBjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB;IAiBtG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IAuGX,gBAAgB;IA2BhB,YAAY;CAyBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discrete/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExD,OAAO,KAAK,EAAmC,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvH,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAIH,oBAAoB,EAUvB,MAAM,wBAAwB,CAAC;AAgBhC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAoE3D,qBAAa,aAAc,SAAQ,aAAa;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,UAAU,EAAE,SAAS,EAAE,CAAC;QACxB,eAAe,EAAE,SAAS,EAAE,CAAC;QAC7B,eAAe,EAAE,YAAY,CAAC;QAC9B,iBAAiB,EAAE,YAAY,CAAC;QAChC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC5B,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,YAAY,EAAE,OAAO,CAAC;KACzB,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,CAAC,EAAE,qBAAqB;IAS9F,KAAK,CAAC,IAAI,EAAE,WAAW;IAevB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB;IAyBjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB;IAiBtG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA0GX,gBAAgB;IA2BhB,YAAY;CAyBf"}
@@ -7,25 +7,26 @@ import { AbstractChart as T } from "../AbstractChart.js";
7
7
  import { NO_GROUPED as C } from "../DataFrame.js";
8
8
  import P from "./ChartRenderer.js";
9
9
  import { MAX_GROUPS_COUNT as w, MAX_FACETS_COUNT as U } from "./constants.js";
10
- import { DiscreteSettingsImpl as E, StatLayer as L, BoxLayer as O, ViolinLayer as I, DotLayer as F, LineLayer as V, ErrorBarLayer as $, BarLayer as j, StackedBarLayer as H, BinnedDotsLayer as M, PairedPointsLayer as X, SinaLayer as q, LogoPlotLayer as z } from "./DiscreteSettingsImpl.js";
11
- import { getBoxesData as J } from "./layers/boxes.js";
12
- import { getViolinsData as Q } from "./layers/violins.js";
13
- import { getSinaData as W } from "./layers/sina.js";
14
- import { getDotsData as Y } from "./layers/dots.js";
15
- import { getLinesData as Z } from "./layers/lines.js";
16
- import { getErrorBarsData as tt } from "./layers/errorbars.js";
17
- import { getBarsData as at } from "./layers/bar.js";
18
- import { getStackedBarsData as et } from "./layers/stackedBar.js";
19
- import { getBinnedDotsData as rt } from "./layers/binnedDots.js";
20
- import { getPairedPointsData as ot } from "./layers/pairedPoints.js";
21
- import { getLogoData as nt } from "./layers/logo.js";
22
- import { getStatsData as st } from "./layers/stats/index.js";
10
+ import { DiscreteSettingsImpl as E, StatLayer as L, BoxLayer as O, ViolinLayer as I, DotLayer as F, LineLayer as V, ErrorBarLayer as $, BarLayer as j, StackedBarLayer as H, StackedAreaLayer as M, BinnedDotsLayer as X, PairedPointsLayer as q, SinaLayer as z, LogoPlotLayer as J } from "./DiscreteSettingsImpl.js";
11
+ import { getBoxesData as Q } from "./layers/boxes.js";
12
+ import { getViolinsData as W } from "./layers/violins.js";
13
+ import { getSinaData as Y } from "./layers/sina.js";
14
+ import { getDotsData as Z } from "./layers/dots.js";
15
+ import { getLinesData as tt } from "./layers/lines.js";
16
+ import { getErrorBarsData as at } from "./layers/errorbars.js";
17
+ import { getBarsData as et } from "./layers/bar.js";
18
+ import { getStackedBarsData as rt } from "./layers/stackedBar.js";
19
+ import { getStackedAreaData as ot } from "./layers/stackedArea.js";
20
+ import { getBinnedDotsData as nt } from "./layers/binnedDots.js";
21
+ import { getPairedPointsData as st } from "./layers/pairedPoints.js";
22
+ import { getLogoData as it } from "./layers/logo.js";
23
+ import { getStatsData as lt } from "./layers/stats/index.js";
23
24
  import { getFacetStringKey as B } from "./utils/getFacetStringKey.js";
24
- function v(l, n, e = null) {
25
+ function S(l, n, e = null) {
25
26
  const t = n.value, o = l.getColumnCategories(t);
26
27
  return _.intersection(e ?? o, o).map(String);
27
28
  }
28
- function S(l) {
29
+ function v(l) {
29
30
  if (!l.length)
30
31
  return [];
31
32
  let n = [[]];
@@ -59,7 +60,7 @@ function G(l, n) {
59
60
  inheritedAes: n.inheritedAes ?? null
60
61
  };
61
62
  }
62
- class bt extends T {
63
+ class At extends T {
63
64
  constructor(e, t, o) {
64
65
  super(e, t);
65
66
  D(this, "settings");
@@ -94,98 +95,100 @@ class bt extends T {
94
95
  return this._updateChart(), x(this.chartRenderer.component);
95
96
  }
96
97
  _needUpdateCalculatedDataBySettings(e, t) {
97
- var o, s, i, c, r, u, d, m;
98
- return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((o = e.primaryGrouping) == null ? void 0 : o.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((i = e.secondaryGrouping) == null ? void 0 : i.columnName.value) ?? "") !== (((c = t.secondaryGrouping) == null ? void 0 : c.columnName.value) ?? "") || (((r = e.primaryGrouping) == null ? void 0 : r.allowNullGroup) ?? "") !== (((u = t.primaryGrouping) == null ? void 0 : u.allowNullGroup) ?? "") || (((d = e.secondaryGrouping) == null ? void 0 : d.allowNullGroup) ?? "") !== (((m = t.secondaryGrouping) == null ? void 0 : m.allowNullGroup) ?? "") || e.facetBy.some((y, f) => {
98
+ var o, s, i, h, r, u, d, m;
99
+ return e.chartSettings.yAxis.scale !== t.chartSettings.yAxis.scale || (((o = e.primaryGrouping) == null ? void 0 : o.columnName.value) ?? "") !== (((s = t.primaryGrouping) == null ? void 0 : s.columnName.value) ?? "") || (((i = e.secondaryGrouping) == null ? void 0 : i.columnName.value) ?? "") !== (((h = t.secondaryGrouping) == null ? void 0 : h.columnName.value) ?? "") || (((r = e.primaryGrouping) == null ? void 0 : r.allowNullGroup) ?? "") !== (((u = t.primaryGrouping) == null ? void 0 : u.allowNullGroup) ?? "") || (((d = e.secondaryGrouping) == null ? void 0 : d.allowNullGroup) ?? "") !== (((m = t.secondaryGrouping) == null ? void 0 : m.allowNullGroup) ?? "") || e.facetBy.some((g, f) => {
99
100
  var p;
100
- return y.value !== ((p = t.facetBy[f]) == null ? void 0 : p.value);
101
- }) || e.layers.length !== t.layers.length || e.layers.some((y, f) => !y.isEqualForCalculation(t.layers[f]));
101
+ return g.value !== ((p = t.facetBy[f]) == null ? void 0 : p.value);
102
+ }) || e.layers.length !== t.layers.length || e.layers.some((g, f) => !g.isEqualForCalculation(t.layers[f]));
102
103
  }
103
104
  _needUpdateCalculatedDataByData(e, t) {
104
105
  const o = Object.keys(e.data), s = Object.keys(t.data);
105
106
  return e.id !== t.id || o.length !== s.length || o.some((i) => {
106
- var c;
107
- return e.data[i].length !== ((c = t.data[i]) == null ? void 0 : c.length);
107
+ var h;
108
+ return e.data[i].length !== ((h = t.data[i]) == null ? void 0 : h.length);
108
109
  });
109
110
  }
110
111
  _updateData() {
111
- const { chartSettings: e, y: t, keyColumn: o, facetBy: s, layers: i, facetSettings: c } = this.settings, { yAxis: r } = e, u = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = G(this.data, this.settings.primaryGrouping), m = G(this.data, this.settings.secondaryGrouping), y = s.map((a) => a.value), f = i.some((a) => a.type === "logo" || a.type === "bar");
112
+ const { chartSettings: e, y: t, keyColumn: o, facetBy: s, layers: i, facetSettings: h } = this.settings, { yAxis: r } = e, u = this.data.getColumn(t.value).every((a) => a === null || !(Number(a) < 0)), d = G(this.data, this.settings.primaryGrouping), m = G(this.data, this.settings.secondaryGrouping), g = s.map((a) => a.value), f = i.some((a) => a.type === "logo" || a.type === "bar");
112
113
  if (!f && d.keys.length > w)
113
114
  throw Error(`Too many primary groups (${d.keys.length})`);
114
115
  if (!f && m.keys.length > w)
115
116
  throw Error(`Too many secondary groups (${m.keys.length})`);
116
- const p = s.length ? S(
117
+ const p = s.length ? v(
117
118
  s.map((a) => {
118
- var g;
119
- return v(this.data, a, (g = c == null ? void 0 : c.order) == null ? void 0 : g[a.value]);
119
+ var y;
120
+ return S(this.data, a, (y = h == null ? void 0 : h.order) == null ? void 0 : y[a.value]);
120
121
  })
121
122
  ) : [[C]];
122
123
  if (p.length > U)
123
124
  throw Error(`Too many facets (${p.length})`);
124
- this.data.setGrouping([...y, d.value, m.value]);
125
- const h = {
125
+ this.data.setGrouping([...g, d.value, m.value]);
126
+ const c = {
126
127
  facet: p,
127
128
  primary: d.value !== null ? d.keys : [C],
128
129
  secondary: m.value !== null ? m.keys : [C]
129
- }, b = h.facet.reduce((a, g) => (a[B(g)] = h.primary.filter(
130
- (A) => this.data.getRowsByGrouping([...g, A]).length > 0
131
- ).map(String), a), {}), N = i.filter((a) => !(a instanceof L)).map((a) => {
130
+ }, k = c.facet.reduce((a, y) => (a[B(y)] = c.primary.filter(
131
+ (A) => this.data.getRowsByGrouping([...y, A]).length > 0
132
+ ).map(String), a), {}), b = i.filter((a) => !(a instanceof L)).map((a) => {
132
133
  if (a instanceof O)
133
- return J(a, h, this.data, t, o, r);
134
+ return Q(a, c, this.data, t, o, r);
134
135
  if (a instanceof I)
135
- return Q(a, h, this.data, t, r);
136
+ return W(a, c, this.data, t, r);
136
137
  if (a instanceof F)
137
- return Y(a, h, this.data, t, r, o);
138
+ return Z(a, c, this.data, t, r, o);
138
139
  if (a instanceof V)
139
- return Z(a, h, this.data, t, r);
140
+ return tt(a, c, this.data, t, r);
140
141
  if (a instanceof $)
141
- return tt(a, h, this.data, t, r);
142
+ return at(a, c, this.data, t, r);
142
143
  if (a instanceof j)
143
- return at(a, h, this.data, t, r);
144
+ return et(a, c, this.data, t, r);
144
145
  if (a instanceof H)
145
- return et(a, h, this.data, t);
146
+ return rt(a, c, this.data, t);
146
147
  if (a instanceof M)
147
- return rt(a, h, this.data, t, r);
148
+ return ot(a, c, this.data, t);
148
149
  if (a instanceof X)
149
- return ot(a, h, this.data, t, r);
150
+ return nt(a, c, this.data, t, r);
150
151
  if (a instanceof q)
151
- return W(a, h, this.data, t, r);
152
+ return st(a, c, this.data, t, r);
152
153
  if (a instanceof z)
153
- return nt(a, h, this.data, t);
154
+ return Y(a, c, this.data, t, r);
155
+ if (a instanceof J)
156
+ return it(a, c, this.data, t);
154
157
  throw new Error("Unknown layer type");
155
- }), k = i.filter((a) => a instanceof L).map((a) => {
158
+ }), N = i.filter((a) => a instanceof L).map((a) => {
156
159
  if (d.value === null)
157
160
  throw new Error("Cannot calculate p-value without data grouping");
158
- return st(a, h.facet, h.primary, t, this.data);
161
+ return lt(a, c.facet, c.primary, t, this.data);
159
162
  });
160
163
  this.calculatedData = {
161
- layersData: N,
162
- statsLayersData: k,
164
+ layersData: b,
165
+ statsLayersData: N,
163
166
  primaryGrouping: d,
164
167
  secondaryGrouping: m,
165
168
  facetKeyLists: p,
166
- nonEmptyGroupsByFacets: b,
169
+ nonEmptyGroupsByFacets: k,
167
170
  onlyPositive: u
168
171
  };
169
172
  }
170
173
  _updateAesInData() {
171
174
  if (this.calculatedData === null)
172
175
  return;
173
- const { layers: e, facetBy: t, primaryGrouping: o, secondaryGrouping: s, facetSettings: i } = this.settings, c = e.filter((r) => !(r instanceof L));
174
- for (let r = 0; r < c.length; r++) {
175
- const u = c[r];
176
+ const { layers: e, facetBy: t, primaryGrouping: o, secondaryGrouping: s, facetSettings: i } = this.settings, h = e.filter((r) => !(r instanceof L));
177
+ for (let r = 0; r < h.length; r++) {
178
+ const u = h[r];
176
179
  "aes" in u && (this.calculatedData.layersData[r].aes = u.aes);
177
180
  }
178
- this.calculatedData.primaryGrouping = G(this.data, o), this.calculatedData.secondaryGrouping = G(this.data, s), this.calculatedData.facetKeyLists = t.length ? S(
181
+ this.calculatedData.primaryGrouping = G(this.data, o), this.calculatedData.secondaryGrouping = G(this.data, s), this.calculatedData.facetKeyLists = t.length ? v(
179
182
  t.map((r) => {
180
183
  var u;
181
- return v(this.data, r, (u = i == null ? void 0 : i.order) == null ? void 0 : u[r.value]);
184
+ return S(this.data, r, (u = i == null ? void 0 : i.order) == null ? void 0 : u[r.value]);
182
185
  })
183
186
  ) : [[C]];
184
187
  }
185
188
  _updateChart() {
186
189
  if (!this.calculatedData)
187
190
  return;
188
- const { id: e, chartSettings: t, keyColumn: o, facetSettings: s } = this.settings, i = this.calculatedData.facetKeyLists.map(B), c = this.calculatedData.facetKeyLists.map((r) => r.map((u) => u === C ? "null" : u));
191
+ const { id: e, chartSettings: t, keyColumn: o, facetSettings: s } = this.settings, i = this.calculatedData.facetKeyLists.map(B), h = this.calculatedData.facetKeyLists.map((r) => r.map((u) => u === C ? "null" : u));
189
192
  this.chartRenderer.render(
190
193
  this.data,
191
194
  e,
@@ -194,7 +197,7 @@ class bt extends T {
194
197
  this.calculatedData.secondaryGrouping,
195
198
  s,
196
199
  i,
197
- c,
200
+ h,
198
201
  this.calculatedData.layersData,
199
202
  this.calculatedData.statsLayersData,
200
203
  o,
@@ -205,6 +208,6 @@ class bt extends T {
205
208
  }
206
209
  }
207
210
  export {
208
- bt as ChartDiscrete
211
+ At as ChartDiscrete
209
212
  };
210
213
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport type { Category, ColumnName, DataValue, DiscreteEventHandlers, DiscreteSettings, GroupingData } from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from './constants';\nimport {\n BarLayer,\n BinnedDotsLayer,\n BoxLayer,\n DiscreteSettingsImpl,\n DotLayer,\n ErrorBarLayer,\n LineLayer,\n LogoPlotLayer,\n PairedPointsLayer,\n SinaLayer,\n StackedBarLayer,\n StatLayer,\n ViolinLayer,\n} from './DiscreteSettingsImpl';\nimport {\n getBarsData,\n getBinnedDotsData,\n getBoxesData,\n getDotsData,\n getErrorBarsData,\n getLinesData,\n getPairedPointsData,\n getSinaData,\n getStackedBarsData,\n getStatsData,\n getViolinsData,\n} from './layers';\nimport { getLogoData } from './layers/logo';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getFacetStringKey } from './utils/getFacetStringKey';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping']\n): GroupingData {\n if (!grouping) {\n return {\n keys: ['null'],\n value: null,\n label: '',\n valueLabels: {null: ''},\n inheritedAes: null,\n };\n }\n\n const groupingColumnId = grouping.columnName.value;\n const groupingColumnLabelId = grouping.columnName.valueLabels;\n const categories = data.getColumnCategories(groupingColumnId, false);\n const getValueLabel = (category: Category) => {\n return groupingColumnLabelId \n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\n };\n \n const keys = data.getColumnCategories(groupingColumnId, !grouping.allowNullGroup);\n const orderedKeys = grouping.order === undefined ? keys : intersection(grouping.order.map(String), keys);\n\n return {\n keys: orderedKeys,\n value: groupingColumnId,\n label: grouping.columnName.label ?? groupingColumnId,\n valueLabels: categories.reduce((res: Record<string, string>, category: Category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {}),\n inheritedAes: grouping.inheritedAes ?? null,\n };\n}\n\nexport class ChartDiscrete extends AbstractChart {\n settings: DiscreteSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n layersData: LayerData[];\n statsLayersData: StatsData[];\n primaryGrouping: GroupingData;\n secondaryGrouping: GroupingData;\n facetKeyLists: GroupKey[][];\n nonEmptyGroupsByFacets: Record<string, string[]>;\n onlyPositive: boolean;\n } | null = null;\n\n constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers) {\n super(data, settings);\n\n this.settings = new DiscreteSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: DiscreteSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new DiscreteSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for discrete');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: DiscreteSettingsImpl, settings: DiscreteSettingsImpl) {\n return (\n prevSettings.chartSettings.yAxis.scale !== settings.chartSettings.yAxis.scale ||\n (prevSettings.primaryGrouping?.columnName.value ?? '') !==\n (settings.primaryGrouping?.columnName.value ?? '') ||\n (prevSettings.secondaryGrouping?.columnName.value ?? '') !==\n (settings.secondaryGrouping?.columnName.value ?? '') ||\n (prevSettings.primaryGrouping?.allowNullGroup ?? '') !==\n (settings.primaryGrouping?.allowNullGroup ?? '') ||\n (prevSettings.secondaryGrouping?.allowNullGroup ?? '') !==\n (settings.secondaryGrouping?.allowNullGroup ?? '') ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => !l.isEqualForCalculation(settings.layers[idx] as typeof l))\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {chartSettings, y, keyColumn, facetBy, layers, facetSettings} = this.settings;\n const {yAxis} = chartSettings;\n\n const onlyPositive = this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n });\n // console.info('only positive Y:', onlyPositive);\n\n const primaryGrouping = getGroupingData(this.data, this.settings.primaryGrouping);\n const secondaryGrouping = getGroupingData(this.data, this.settings.secondaryGrouping);\n const facetGroupingValues = facetBy.map(column => column.value);\n const hasLogoOrBarLayer = layers.some(l => l.type === 'logo' || l.type === 'bar');\n\n if (!hasLogoOrBarLayer && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many primary groups (${primaryGrouping.keys.length})`);\n }\n if (!hasLogoOrBarLayer && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many secondary groups (${secondaryGrouping.keys.length})`);\n }\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n const facetKeyLists:(GroupKey)[][] = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n\n if (facetKeyLists.length > MAX_FACETS_COUNT) {\n throw Error(`Too many facets (${facetKeyLists.length})`);\n }\n this.data.setGrouping([...facetGroupingValues, primaryGrouping.value, secondaryGrouping.value]);\n const groupingKeys = {\n facet: facetKeyLists,\n primary: (primaryGrouping.value !== null ? primaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n secondary: (secondaryGrouping.value !== null ? secondaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n };\n\n const nonEmptyGroupsByFacets = groupingKeys.facet.reduce((res: Record<string, string[]>, facetKey) => {\n res[getFacetStringKey(facetKey)] = groupingKeys.primary.filter(\n primaryKey => this.data.getRowsByGrouping([...facetKey, primaryKey]).length > 0\n ).map(String);\n return res;\n }, {});\n\n const layersData = layers\n .filter(layer => !(layer instanceof StatLayer))\n .map(layer => {\n if (layer instanceof BoxLayer) {\n return getBoxesData(layer, groupingKeys, this.data, y, keyColumn, yAxis);\n }\n if (layer instanceof ViolinLayer) {\n return getViolinsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof DotLayer) {\n return getDotsData(layer, groupingKeys, this.data, y, yAxis, keyColumn);\n }\n if (layer instanceof LineLayer) {\n return getLinesData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof ErrorBarLayer) {\n return getErrorBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof BarLayer) {\n return getBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof StackedBarLayer) {\n return getStackedBarsData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof BinnedDotsLayer) {\n return getBinnedDotsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof PairedPointsLayer) {\n return getPairedPointsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof SinaLayer) {\n return getSinaData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof LogoPlotLayer) {\n return getLogoData(layer, groupingKeys, this.data, y);\n }\n throw new Error('Unknown layer type');\n });\n const statsLayersData = layers\n .filter(layer => layer instanceof StatLayer)\n .map(layer => {\n if (primaryGrouping.value === null) {\n throw new Error('Cannot calculate p-value without data grouping');\n }\n return getStatsData(layer as StatLayer, groupingKeys.facet, groupingKeys.primary, y, this.data);\n });\n this.calculatedData = {\n layersData,\n statsLayersData,\n primaryGrouping,\n secondaryGrouping,\n facetKeyLists,\n nonEmptyGroupsByFacets,\n onlyPositive,\n };\n }\n\n _updateAesInData() {\n if (this.calculatedData === null) {\n return;\n }\n const {layers, facetBy, primaryGrouping, secondaryGrouping, facetSettings} = this.settings;\n\n // updating aes in layers (except for stat layers with p-value), layers data is not recalculating\n const noStatLayers = layers.filter(layer => !(layer instanceof StatLayer));\n for (let i = 0; i < noStatLayers.length; i++) {\n const layer = noStatLayers[i];\n if ('aes' in layer) {\n this.calculatedData.layersData[i].aes = layer.aes;\n }\n }\n\n // updating grouping to update linked aes\n this.calculatedData.primaryGrouping = getGroupingData(this.data, primaryGrouping);\n this.calculatedData.secondaryGrouping = getGroupingData(this.data, secondaryGrouping);\n\n // updating for possibly changed facetSettings.order\n this.calculatedData.facetKeyLists = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, keyColumn, facetSettings} = this.settings;\n\n const facetKeys = this.calculatedData.facetKeyLists.map(getFacetStringKey);\n const facetLabels = this.calculatedData.facetKeyLists.map(v => v.map(v => v === NO_GROUPED ? 'null' : v)) as string[][];\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n facetKeys,\n facetLabels,\n this.calculatedData.layersData,\n this.calculatedData.statsLayersData,\n keyColumn,\n this.calculatedData.nonEmptyGroupsByFacets,\n this.calculatedData.onlyPositive,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","getGroupingData","grouping","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","hasLogoOrBarLayer","MAX_GROUPS_COUNT","facetKeyLists","NO_GROUPED","MAX_FACETS_COUNT","groupingKeys","nonEmptyGroupsByFacets","facetKey","getFacetStringKey","primaryKey","layersData","layer","StatLayer","BoxLayer","getBoxesData","ViolinLayer","getViolinsData","DotLayer","getDotsData","LineLayer","getLinesData","ErrorBarLayer","getErrorBarsData","BarLayer","getBarsData","StackedBarLayer","getStackedBarsData","BinnedDotsLayer","getBinnedDotsData","PairedPointsLayer","getPairedPointsData","SinaLayer","getSinaData","LogoPlotLayer","getLogoData","statsLayersData","getStatsData","noStatLayers","i","id","facetKeys","facetLabels"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport type { Category, ColumnName, DataValue, DiscreteEventHandlers, DiscreteSettings, GroupingData } from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from './constants';\nimport {\n BarLayer,\n BinnedDotsLayer,\n BoxLayer,\n DiscreteSettingsImpl,\n DotLayer,\n ErrorBarLayer,\n LineLayer,\n LogoPlotLayer,\n PairedPointsLayer,\n SinaLayer, StackedAreaLayer,\n StackedBarLayer,\n StatLayer,\n ViolinLayer,\n} from './DiscreteSettingsImpl';\nimport {\n getBarsData,\n getBinnedDotsData,\n getBoxesData,\n getDotsData,\n getErrorBarsData,\n getLinesData,\n getPairedPointsData,\n getSinaData,\n getStackedBarsData,\n getStatsData,\n getViolinsData,\n} from './layers';\nimport { getLogoData } from './layers/logo';\nimport {getStackedAreaData} from './layers/stackedArea';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getFacetStringKey } from './utils/getFacetStringKey';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping']\n): GroupingData {\n if (!grouping) {\n return {\n keys: ['null'],\n value: null,\n label: '',\n valueLabels: {null: ''},\n inheritedAes: null,\n };\n }\n\n const groupingColumnId = grouping.columnName.value;\n const groupingColumnLabelId = grouping.columnName.valueLabels;\n const categories = data.getColumnCategories(groupingColumnId, false);\n const getValueLabel = (category: Category) => {\n return groupingColumnLabelId \n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\n };\n \n const keys = data.getColumnCategories(groupingColumnId, !grouping.allowNullGroup);\n const orderedKeys = grouping.order === undefined ? keys : intersection(grouping.order.map(String), keys);\n\n return {\n keys: orderedKeys,\n value: groupingColumnId,\n label: grouping.columnName.label ?? groupingColumnId,\n valueLabels: categories.reduce((res: Record<string, string>, category: Category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {}),\n inheritedAes: grouping.inheritedAes ?? null,\n };\n}\n\nexport class ChartDiscrete extends AbstractChart {\n settings: DiscreteSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n layersData: LayerData[];\n statsLayersData: StatsData[];\n primaryGrouping: GroupingData;\n secondaryGrouping: GroupingData;\n facetKeyLists: GroupKey[][];\n nonEmptyGroupsByFacets: Record<string, string[]>;\n onlyPositive: boolean;\n } | null = null;\n\n constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers) {\n super(data, settings);\n\n this.settings = new DiscreteSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: DiscreteSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new DiscreteSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for discrete');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: DiscreteSettingsImpl, settings: DiscreteSettingsImpl) {\n return (\n prevSettings.chartSettings.yAxis.scale !== settings.chartSettings.yAxis.scale ||\n (prevSettings.primaryGrouping?.columnName.value ?? '') !==\n (settings.primaryGrouping?.columnName.value ?? '') ||\n (prevSettings.secondaryGrouping?.columnName.value ?? '') !==\n (settings.secondaryGrouping?.columnName.value ?? '') ||\n (prevSettings.primaryGrouping?.allowNullGroup ?? '') !==\n (settings.primaryGrouping?.allowNullGroup ?? '') ||\n (prevSettings.secondaryGrouping?.allowNullGroup ?? '') !==\n (settings.secondaryGrouping?.allowNullGroup ?? '') ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => !l.isEqualForCalculation(settings.layers[idx] as typeof l))\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {chartSettings, y, keyColumn, facetBy, layers, facetSettings} = this.settings;\n const {yAxis} = chartSettings;\n\n const onlyPositive = this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n });\n // console.info('only positive Y:', onlyPositive);\n\n const primaryGrouping = getGroupingData(this.data, this.settings.primaryGrouping);\n const secondaryGrouping = getGroupingData(this.data, this.settings.secondaryGrouping);\n const facetGroupingValues = facetBy.map(column => column.value);\n const hasLogoOrBarLayer = layers.some(l => l.type === 'logo' || l.type === 'bar');\n\n if (!hasLogoOrBarLayer && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many primary groups (${primaryGrouping.keys.length})`);\n }\n if (!hasLogoOrBarLayer && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n throw Error(`Too many secondary groups (${secondaryGrouping.keys.length})`);\n }\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n const facetKeyLists:(GroupKey)[][] = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n\n if (facetKeyLists.length > MAX_FACETS_COUNT) {\n throw Error(`Too many facets (${facetKeyLists.length})`);\n }\n this.data.setGrouping([...facetGroupingValues, primaryGrouping.value, secondaryGrouping.value]);\n const groupingKeys = {\n facet: facetKeyLists,\n primary: (primaryGrouping.value !== null ? primaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n secondary: (secondaryGrouping.value !== null ? secondaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n };\n\n const nonEmptyGroupsByFacets = groupingKeys.facet.reduce((res: Record<string, string[]>, facetKey) => {\n res[getFacetStringKey(facetKey)] = groupingKeys.primary.filter(\n primaryKey => this.data.getRowsByGrouping([...facetKey, primaryKey]).length > 0\n ).map(String);\n return res;\n }, {});\n\n const layersData = layers\n .filter(layer => !(layer instanceof StatLayer))\n .map(layer => {\n if (layer instanceof BoxLayer) {\n return getBoxesData(layer, groupingKeys, this.data, y, keyColumn, yAxis);\n }\n if (layer instanceof ViolinLayer) {\n return getViolinsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof DotLayer) {\n return getDotsData(layer, groupingKeys, this.data, y, yAxis, keyColumn);\n }\n if (layer instanceof LineLayer) {\n return getLinesData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof ErrorBarLayer) {\n return getErrorBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof BarLayer) {\n return getBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof StackedBarLayer) {\n return getStackedBarsData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof StackedAreaLayer) {\n return getStackedAreaData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof BinnedDotsLayer) {\n return getBinnedDotsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof PairedPointsLayer) {\n return getPairedPointsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof SinaLayer) {\n return getSinaData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof LogoPlotLayer) {\n return getLogoData(layer, groupingKeys, this.data, y);\n }\n throw new Error('Unknown layer type');\n });\n const statsLayersData = layers\n .filter(layer => layer instanceof StatLayer)\n .map(layer => {\n if (primaryGrouping.value === null) {\n throw new Error('Cannot calculate p-value without data grouping');\n }\n return getStatsData(layer as StatLayer, groupingKeys.facet, groupingKeys.primary, y, this.data);\n });\n this.calculatedData = {\n layersData,\n statsLayersData,\n primaryGrouping,\n secondaryGrouping,\n facetKeyLists,\n nonEmptyGroupsByFacets,\n onlyPositive,\n };\n }\n\n _updateAesInData() {\n if (this.calculatedData === null) {\n return;\n }\n const {layers, facetBy, primaryGrouping, secondaryGrouping, facetSettings} = this.settings;\n\n // updating aes in layers (except for stat layers with p-value), layers data is not recalculating\n const noStatLayers = layers.filter(layer => !(layer instanceof StatLayer));\n for (let i = 0; i < noStatLayers.length; i++) {\n const layer = noStatLayers[i];\n if ('aes' in layer) {\n this.calculatedData.layersData[i].aes = layer.aes;\n }\n }\n\n // updating grouping to update linked aes\n this.calculatedData.primaryGrouping = getGroupingData(this.data, primaryGrouping);\n this.calculatedData.secondaryGrouping = getGroupingData(this.data, secondaryGrouping);\n\n // updating for possibly changed facetSettings.order\n this.calculatedData.facetKeyLists = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, keyColumn, facetSettings} = this.settings;\n\n const facetKeys = this.calculatedData.facetKeyLists.map(getFacetStringKey);\n const facetLabels = this.calculatedData.facetKeyLists.map(v => v.map(v => v === NO_GROUPED ? 'null' : v)) as string[][];\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n facetKeys,\n facetLabels,\n this.calculatedData.layersData,\n this.calculatedData.statsLayersData,\n keyColumn,\n this.calculatedData.nonEmptyGroupsByFacets,\n this.calculatedData.onlyPositive,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","getGroupingData","grouping","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","hasLogoOrBarLayer","MAX_GROUPS_COUNT","facetKeyLists","NO_GROUPED","MAX_FACETS_COUNT","groupingKeys","nonEmptyGroupsByFacets","facetKey","getFacetStringKey","primaryKey","layersData","layer","StatLayer","BoxLayer","getBoxesData","ViolinLayer","getViolinsData","DotLayer","getDotsData","LineLayer","getLinesData","ErrorBarLayer","getErrorBarsData","BarLayer","getBarsData","StackedBarLayer","getStackedBarsData","StackedAreaLayer","getStackedAreaData","BinnedDotsLayer","getBinnedDotsData","PairedPointsLayer","getPairedPointsData","SinaLayer","getSinaData","LogoPlotLayer","getLogoData","statsLayersData","getStatsData","noStatLayers","i","id","facetKeys","facetLabels"],"mappings":"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"}
@@ -6,6 +6,7 @@ export * from './lines';
6
6
  export * from './errorbars';
7
7
  export * from './bar';
8
8
  export * from './stackedBar';
9
+ export * from './stackedArea';
9
10
  export * from './binnedDots';
10
11
  export * from './pairedPoints';
11
12
  export * from './logo';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { DataFrame, GroupKey } from '../../DataFrame';
2
+ import { ColumnName } from '../../types';
3
+ import { StackedAreaLayer } from '../DiscreteSettingsImpl';
4
+ import { StackedAreaData } from './types';
5
+ export declare function getStackedAreaData(layer: StackedAreaLayer, groupingKeys: {
6
+ facet: GroupKey[][];
7
+ primary: GroupKey[];
8
+ secondary: GroupKey[];
9
+ }, data: DataFrame, y: ColumnName): StackedAreaData;
10
+ //# sourceMappingURL=stackedArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stackedArea.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/stackedArea.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,yBAAyB,CAAC;AAEjF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,UAAU,GACd,eAAe,CAWjB"}
@@ -0,0 +1,17 @@
1
+ import { getStackedBarsData as r } from "./stackedBar.js";
2
+ function m(a, e, s, o) {
3
+ const t = r(a, e, s, o);
4
+ return {
5
+ type: "stackedArea",
6
+ geoms: t.geoms,
7
+ meta: {
8
+ ...t.meta,
9
+ showBars: a.showBars
10
+ },
11
+ aes: a.aes
12
+ };
13
+ }
14
+ export {
15
+ m as getStackedAreaData
16
+ };
17
+ //# sourceMappingURL=stackedArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stackedArea.js","sources":["../../../src/discrete/layers/stackedArea.ts"],"sourcesContent":["import type { DataFrame, GroupKey } from '../../DataFrame';\nimport type {ColumnName} from '../../types';\nimport type { StackedAreaLayer, StackedBarLayer } from '../DiscreteSettingsImpl';\nimport { getStackedBarsData } from './stackedBar';\nimport type { StackedAreaData } from './types';\n\nexport function getStackedAreaData(\n layer: StackedAreaLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): StackedAreaData {\n const stackedBars = getStackedBarsData(layer as unknown as StackedBarLayer, groupingKeys, data, y);\n return {\n type: 'stackedArea',\n geoms: stackedBars.geoms,\n meta: {\n ...stackedBars.meta,\n showBars: layer.showBars\n },\n aes: layer.aes,\n };\n}\n"],"names":["getStackedAreaData","layer","groupingKeys","data","y","stackedBars","getStackedBarsData"],"mappings":";AAMO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACe;AACf,QAAMC,IAAcC,EAAmBL,GAAqCC,GAAcC,GAAMC,CAAC;AACjG,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOC,EAAY;AAAA,IACnB,MAAM;AAAA,MACF,GAAGA,EAAY;AAAA,MACf,UAAUJ,EAAM;AAAA,IAAA;AAAA,IAEpB,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
@@ -1,5 +1,5 @@
1
1
  import { Bar, BinnedDots, Box, DotsGroup, ErrorBar, Line, LogoStack, PairedPoints, Sina, StackedBar, Violin } from './index';
2
- import { BarLayer, BinnedDotsLayer, BoxLayer, DiscreteLayer, DotLayer, ErrorBarLayer, LineLayer, LogoPlotLayer, PairedPointsLayer, SinaLayer, StackedBarLayer, StatLayer, ViolinLayer } from '../DiscreteSettingsImpl';
2
+ import { BarLayer, BinnedDotsLayer, BoxLayer, DiscreteLayer, DotLayer, ErrorBarLayer, LineLayer, LogoPlotLayer, PairedPointsLayer, SinaLayer, StackedAreaLayer, StackedBarLayer, StatLayer, ViolinLayer } from '../DiscreteSettingsImpl';
3
3
  export type Geom = Box | Violin | DotsGroup | Line | ErrorBar | Bar | StackedBar | BinnedDots | PairedPoints | Sina;
4
4
  export interface LayerData {
5
5
  type: string;
@@ -81,6 +81,17 @@ export interface StackedBarsData extends LayerData {
81
81
  };
82
82
  aes: StackedBarLayer['aes'];
83
83
  }
84
+ export interface StackedAreaData extends LayerData {
85
+ type: 'stackedArea';
86
+ geoms: StackedBarsData['geoms'];
87
+ meta: {
88
+ minY: number;
89
+ maxY: number;
90
+ normalize: boolean;
91
+ showBars: boolean;
92
+ };
93
+ aes: StackedAreaLayer['aes'];
94
+ }
84
95
  export interface LogoPlotData extends LayerData {
85
96
  type: 'logo';
86
97
  geoms: Record<string, LogoStack[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export * from './getChartStatsPadding';
2
2
  export * from './statsPValue';
3
3
  export * from './getOutliersBounds';
4
- export * from './splitTextByWidth';
4
+ export * from '../../utils/splitTextByWidth';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/discrete/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/discrete/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC"}
@@ -6,7 +6,7 @@ import { createRoot as G } from "../node_modules/react-dom/client.js";
6
6
  import { Error as Y } from "../common/Error.js";
7
7
  import { DataFrameProvider as O } from "../common/useDataFrame.js";
8
8
  import { DEFAULT_HEIGHT as w, DEFAULT_WIDTH as N, TITLE_LINE_HEIGHT as P, TITLE_MARGIN as U } from "../constants.js";
9
- import { splitTextByWidth as D } from "../discrete/utils/splitTextByWidth.js";
9
+ import { splitTextByWidth as D } from "../utils/splitTextByWidth.js";
10
10
  import { LEGEND_OFFSET as V, DEFAULT_COMMON_AES as B } from "../scatterplot/constants.js";
11
11
  import { getTicksAndFormat as Z } from "../scatterplot/utils/getTicksAndFormat.js";
12
12
  import { arrangeLegendParts as k } from "../utils/arrangeLegendParts.js";
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { ChartInterface } from './AbstractChart';
2
2
  import { DataByColumns } from './DataFrame';
3
3
  import { MiPlots } from './MiPlots';
4
- import { BubbleSettings, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, ScatterplotSettings, ScatterplotUmapSettings, Settings } from './types';
4
+ import { BubbleSettings, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsContinuous, AxisSettingsDiscrete } from './types';
5
5
  import { LassoControlsState, Polygon } from './scatterplot-umap/types';
6
6
  import { SCATTERPLOT_LASSO_EVENTS } from './scatterplot-umap/constants';
7
- export { BubbleSettings, ChartInterface, DataByColumns, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, MiPlots, ScatterplotSettings, ScatterplotUmapSettings, Settings, SCATTERPLOT_LASSO_EVENTS, LassoControlsState, Polygon };
7
+ export { BubbleSettings, ChartInterface, DataByColumns, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, MiPlots, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsDiscrete, AxisSettingsContinuous, SCATTERPLOT_LASSO_EVENTS, LassoControlsState, Polygon };
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5K,OAAO,KAAK,EAAC,kBAAkB,EAAE,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EACH,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAChG,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAC/C,uBAAuB,EAAE,QAAQ,EACjC,wBAAwB,EAAE,kBAAkB,EAAE,OAAO,EACxD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5K,OAAO,KAAK,EAAC,kBAAkB,EAAE,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAC,wBAAwB,EAAC,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE5E,OAAO,EACH,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAChG,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAC/C,uBAAuB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,sBAAsB,EAC/E,wBAAwB,EAAE,kBAAkB,EAAE,OAAO,EACxD,CAAC"}