@milaboratories/miplots4 1.0.166 → 1.0.167

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 (35) hide show
  1. package/dist/_virtual/index10.js +5 -2
  2. package/dist/_virtual/index10.js.map +1 -1
  3. package/dist/_virtual/index5.js +2 -5
  4. package/dist/_virtual/index5.js.map +1 -1
  5. package/dist/_virtual/index6.js +4 -4
  6. package/dist/_virtual/index7.js +1 -1
  7. package/dist/_virtual/index8.js +4 -4
  8. package/dist/_virtual/index9.js +3 -3
  9. package/dist/bubble/components/ChartsGroup.js +21 -21
  10. package/dist/bubble/components/ChartsGroup.js.map +1 -1
  11. package/dist/common/Tooltip.js +2 -2
  12. package/dist/common/Tooltip.js.map +1 -1
  13. package/dist/discrete/index.d.ts +2 -0
  14. package/dist/discrete/index.js +127 -123
  15. package/dist/discrete/index.js.map +1 -1
  16. package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
  17. package/dist/discrete/utils/getFacetLabels.d.ts +3 -0
  18. package/dist/discrete/utils/getFacetLabels.js +16 -0
  19. package/dist/discrete/utils/getFacetLabels.js.map +1 -0
  20. package/dist/heatmap/components/ChartsGroup.js +9 -9
  21. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  22. package/dist/heatmap/components/tooltipUtils.js +15 -15
  23. package/dist/heatmap/components/tooltipUtils.js.map +1 -1
  24. package/dist/heatmap/fillCellsData.js +88 -85
  25. package/dist/heatmap/fillCellsData.js.map +1 -1
  26. package/dist/histogram/getHistogramData.js +42 -41
  27. package/dist/histogram/getHistogramData.js.map +1 -1
  28. package/dist/histogram/index.d.ts +1 -0
  29. package/dist/histogram/index.js +59 -57
  30. package/dist/histogram/index.js.map +1 -1
  31. package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
  32. package/dist/scatterplot/index.d.ts +1 -0
  33. package/dist/scatterplot/index.js +61 -59
  34. package/dist/scatterplot/index.js.map +1 -1
  35. package/package.json +1 -1
@@ -1,5 +1,8 @@
1
- var e = { exports: {} };
1
+ import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
+ import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-wilcoxon@0.2.2/node_modules/@stdlib/stats-wilcoxon/lib/index.js";
3
+ var t = o();
4
+ const a = /* @__PURE__ */ r(t);
2
5
  export {
3
- e as __module
6
+ a as default
4
7
  };
5
8
  //# sourceMappingURL=index10.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index10.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index10.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,8 +1,5 @@
1
- import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-anova1@0.2.2/node_modules/@stdlib/stats-anova1/lib/index.js";
3
- var t = o();
4
- const i = /* @__PURE__ */ r(t);
1
+ var e = { exports: {} };
5
2
  export {
6
- i as default
3
+ e as __module
7
4
  };
8
5
  //# sourceMappingURL=index5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index5.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-ttest@0.2.2/node_modules/@stdlib/stats-ttest/lib/index.js";
3
- var e = t();
4
- const s = /* @__PURE__ */ r(e);
2
+ import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-anova1@0.2.2/node_modules/@stdlib/stats-anova1/lib/index.js";
3
+ var t = o();
4
+ const i = /* @__PURE__ */ r(t);
5
5
  export {
6
- s as default
6
+ i as default
7
7
  };
8
8
  //# sourceMappingURL=index6.js.map
@@ -1,5 +1,5 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-ttest2@0.2.2/node_modules/@stdlib/stats-ttest2/lib/index.js";
2
+ import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-ttest@0.2.2/node_modules/@stdlib/stats-ttest/lib/index.js";
3
3
  var e = t();
4
4
  const s = /* @__PURE__ */ r(e);
5
5
  export {
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-kruskal-test@0.2.2/node_modules/@stdlib/stats-kruskal-test/lib/index.js";
3
- var t = o();
4
- const i = /* @__PURE__ */ r(t);
2
+ import { __require as t } from "../node_modules/.pnpm/@stdlib_stats-ttest2@0.2.2/node_modules/@stdlib/stats-ttest2/lib/index.js";
3
+ var e = t();
4
+ const s = /* @__PURE__ */ r(e);
5
5
  export {
6
- i as default
6
+ s as default
7
7
  };
8
8
  //# sourceMappingURL=index8.js.map
@@ -1,8 +1,8 @@
1
1
  import { getDefaultExportFromCjs as r } from "./_commonjsHelpers.js";
2
- import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-wilcoxon@0.2.2/node_modules/@stdlib/stats-wilcoxon/lib/index.js";
2
+ import { __require as o } from "../node_modules/.pnpm/@stdlib_stats-kruskal-test@0.2.2/node_modules/@stdlib/stats-kruskal-test/lib/index.js";
3
3
  var t = o();
4
- const a = /* @__PURE__ */ r(t);
4
+ const i = /* @__PURE__ */ r(t);
5
5
  export {
6
- a as default
6
+ i as default
7
7
  };
8
8
  //# sourceMappingURL=index9.js.map
@@ -11,13 +11,13 @@ function U({
11
11
  margins: r,
12
12
  captionsSizes: a,
13
13
  settingsId: m,
14
- chartSettings: i,
14
+ chartSettings: n,
15
15
  chartSizes: o,
16
- chartsDimensions: l,
17
- facetKeys: e,
16
+ chartsDimensions: e,
17
+ facetKeys: l,
18
18
  scales: h,
19
- colorScale: x,
20
- sizeScale: g,
19
+ colorScale: g,
20
+ sizeScale: x,
21
21
  groupedCells: u,
22
22
  cellsMeta: j,
23
23
  step: d,
@@ -25,14 +25,14 @@ function U({
25
25
  aes: T,
26
26
  columnsCount: C,
27
27
  labelAngles: E,
28
- getCellTooltip: $,
29
- onTooltipHintSwitch: c
28
+ getCellTooltip: c,
29
+ onTooltipHintSwitch: $
30
30
  }) {
31
- const W = M(c, i.tooltips), [P, v] = p.useState(), s = p.useRef(null);
31
+ const W = M($), [P, v] = p.useState(), s = p.useRef(null);
32
32
  p.useEffect(() => {
33
33
  s.current && v(s.current);
34
34
  }, []);
35
- const f = l[e[0]].padding, F = l[e[C - 1]].padding, L = r.left + o.chartsWidth + N, R = r.top + f.top;
35
+ const f = e[l[0]].padding, F = e[l[C - 1]].padding, L = r.left + o.chartsWidth + N, R = r.top + f.top;
36
36
  return /* @__PURE__ */ t.jsx(H, { dataId: m, children: /* @__PURE__ */ t.jsxs(
37
37
  "svg",
38
38
  {
@@ -47,39 +47,39 @@ function U({
47
47
  /* @__PURE__ */ t.jsx(
48
48
  G,
49
49
  {
50
- title: [i.title.name],
51
- show: i.title.show,
52
- position: i.title.position,
50
+ title: [n.title.name],
51
+ show: n.title.show,
52
+ position: n.title.position,
53
53
  leftPadding: f.left,
54
54
  rightPadding: F.right,
55
55
  chartsWidth: o.chartsWidth
56
56
  }
57
57
  ),
58
- e.map((n) => {
59
- const { cells: B } = u[n];
58
+ l.map((i) => {
59
+ const { cells: B } = u[i];
60
60
  return /* @__PURE__ */ t.jsx(
61
61
  O,
62
62
  {
63
63
  captionsSizes: a,
64
- facetKey: n,
65
- dimensions: l[n],
64
+ facetKey: i,
65
+ dimensions: e[i],
66
66
  scales: h,
67
67
  cells: B,
68
68
  cellsMeta: j,
69
69
  stepX: d.x,
70
70
  stepY: d.y,
71
- colorScale: x,
72
- sizeScale: g,
73
- chartSettings: i,
71
+ colorScale: g,
72
+ sizeScale: x,
73
+ chartSettings: n,
74
74
  aes: T,
75
75
  labelAngles: E,
76
76
  margins: r,
77
77
  chartSizes: o,
78
78
  tooltipsData: W,
79
79
  tooltipsContainer: P,
80
- getTooltip: $
80
+ getTooltip: c
81
81
  },
82
- n
82
+ i
83
83
  );
84
84
  })
85
85
  ] }),
@@ -1 +1 @@
1
- {"version":3,"file":"ChartsGroup.js","sources":["../../../src/bubble/components/ChartsGroup.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { ChartsTitle } from '../../common/ChartsTitle';\nimport { ErrorBoundary } from '../../common/ErrorBoundary';\nimport fonts from '../../common/fonts';\nimport { Legend } from '../../common/Legend';\nimport { useTooltip } from '../../common/Tooltip';\nimport type { LegendData } from '../../common/types';\nimport type { DataValue } from '../../types';\nimport type { BubbleSettingsImpl } from '../BubbleSettingsImpl';\nimport { LEGEND_OFFSET } from '../constants';\nimport type { CellBubble, GroupedCellsBubble } from '../getGroupedCellsData';\nimport { Chart } from './Chart';\nimport type {\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes, LabelAngles, Margins\n} from './types';\n\nexport function ChartsGroup({\n margins,\n captionsSizes,\n settingsId,\n chartSettings,\n chartSizes,\n chartsDimensions,\n facetKeys,\n scales,\n colorScale,\n sizeScale,\n groupedCells,\n cellsMeta,\n step,\n legend,\n aes,\n columnsCount,\n labelAngles,\n getCellTooltip,\n onTooltipHintSwitch\n}: {\n margins: Margins;\n captionsSizes: CaptionsSizes;\n chartSettings: BubbleSettingsImpl['chartSettings'];\n facetSettings: BubbleSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n chartsDimensions: Record<string, ChartDimensionsData>;\n scales: ChartScales;\n facetKeys: string[];\n settingsId: string;\n colorScale: (value: DataValue) => string;\n sizeScale: (value: DataValue) => number;\n groupedCells: GroupedCellsBubble['facets'];\n cellsMeta: GroupedCellsBubble['meta'];\n step: {x: number; y: number};\n legend: LegendData;\n aes: BubbleSettingsImpl['aes'];\n columnsCount: number;\n labelAngles: LabelAngles;\n getCellTooltip: (cell: CellBubble) => string[],\n onTooltipHintSwitch: (v: boolean) => void\n}) {\n const tooltipsData = useTooltip<CellBubble>(onTooltipHintSwitch, chartSettings.tooltips);\n const [tooltipsContainer, setTooltipsContainer] = useState<SVGGElement>();\n const tooltipsRef = useRef<SVGGElement>(null);\n useEffect(() => {\n if (tooltipsRef.current) {\n setTooltipsContainer(tooltipsRef.current);\n }\n }, []);\n\n const leftTopChartPadding = chartsDimensions[facetKeys[0]].padding;\n const rightTopChartPadding = chartsDimensions[facetKeys[columnsCount - 1]].padding;\n\n const legendLeft = margins.left + chartSizes.chartsWidth + LEGEND_OFFSET;\n const legendTop = margins.top + leftTopChartPadding.top;\n\n return (\n <ErrorBoundary dataId={settingsId}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${chartSizes.totalWidth} ${chartSizes.totalHeight}`}\n width={chartSizes.totalWidth}\n height={chartSizes.totalHeight}\n fontFamily=\"Manrope\"\n >\n <defs>{fonts}</defs>\n <g transform={`translate(${margins.left},${margins.top})`}>\n <ChartsTitle\n title={[chartSettings.title.name]}\n show={chartSettings.title.show}\n position={chartSettings.title.position}\n leftPadding={leftTopChartPadding.left}\n rightPadding={rightTopChartPadding.right}\n chartsWidth={chartSizes.chartsWidth}\n />\n {facetKeys.map(facetKey => {\n const {cells} = groupedCells[facetKey];\n return (\n <Chart\n captionsSizes={captionsSizes}\n key={facetKey}\n facetKey={facetKey}\n dimensions={chartsDimensions[facetKey]}\n scales={scales}\n cells={cells}\n cellsMeta={cellsMeta}\n stepX={step.x}\n stepY={step.y}\n colorScale={colorScale}\n sizeScale={sizeScale}\n chartSettings={chartSettings}\n aes={aes}\n labelAngles={labelAngles}\n margins={margins}\n chartSizes={chartSizes}\n tooltipsData={tooltipsData}\n tooltipsContainer={tooltipsContainer}\n getTooltip={getCellTooltip}\n />\n );\n })}\n </g>\n <g transform={`translate(${legendLeft},${legendTop})`}>\n <Legend legendData={legend} />\n </g>\n <g ref={tooltipsRef} style={{outline: 'none'}} />\n </svg>\n </ErrorBoundary>\n );\n}\n"],"names":["ChartsGroup","margins","captionsSizes","settingsId","chartSettings","chartSizes","chartsDimensions","facetKeys","scales","colorScale","sizeScale","groupedCells","cellsMeta","step","legend","aes","columnsCount","labelAngles","getCellTooltip","onTooltipHintSwitch","tooltipsData","useTooltip","tooltipsContainer","setTooltipsContainer","useState","tooltipsRef","useRef","useEffect","leftTopChartPadding","rightTopChartPadding","legendLeft","LEGEND_OFFSET","legendTop","jsx","ErrorBoundary","jsxs","fonts","ChartsTitle","facetKey","cells","Chart","Legend"],"mappings":"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"}
1
+ {"version":3,"file":"ChartsGroup.js","sources":["../../../src/bubble/components/ChartsGroup.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { ChartsTitle } from '../../common/ChartsTitle';\nimport { ErrorBoundary } from '../../common/ErrorBoundary';\nimport fonts from '../../common/fonts';\nimport { Legend } from '../../common/Legend';\nimport { useTooltip } from '../../common/Tooltip';\nimport type { LegendData } from '../../common/types';\nimport type { DataValue } from '../../types';\nimport type { BubbleSettingsImpl } from '../BubbleSettingsImpl';\nimport { LEGEND_OFFSET } from '../constants';\nimport type { CellBubble, GroupedCellsBubble } from '../getGroupedCellsData';\nimport { Chart } from './Chart';\nimport type {\n CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes, LabelAngles, Margins\n} from './types';\n\nexport function ChartsGroup({\n margins,\n captionsSizes,\n settingsId,\n chartSettings,\n chartSizes,\n chartsDimensions,\n facetKeys,\n scales,\n colorScale,\n sizeScale,\n groupedCells,\n cellsMeta,\n step,\n legend,\n aes,\n columnsCount,\n labelAngles,\n getCellTooltip,\n onTooltipHintSwitch\n}: {\n margins: Margins;\n captionsSizes: CaptionsSizes;\n chartSettings: BubbleSettingsImpl['chartSettings'];\n facetSettings: BubbleSettingsImpl['facetSettings'];\n chartSizes: ChartSizes;\n chartsDimensions: Record<string, ChartDimensionsData>;\n scales: ChartScales;\n facetKeys: string[];\n settingsId: string;\n colorScale: (value: DataValue) => string;\n sizeScale: (value: DataValue) => number;\n groupedCells: GroupedCellsBubble['facets'];\n cellsMeta: GroupedCellsBubble['meta'];\n step: {x: number; y: number};\n legend: LegendData;\n aes: BubbleSettingsImpl['aes'];\n columnsCount: number;\n labelAngles: LabelAngles;\n getCellTooltip: (cell: CellBubble) => string[],\n onTooltipHintSwitch: (v: boolean) => void\n}) {\n const tooltipsData = useTooltip<CellBubble>(onTooltipHintSwitch);\n const [tooltipsContainer, setTooltipsContainer] = useState<SVGGElement>();\n const tooltipsRef = useRef<SVGGElement>(null);\n useEffect(() => {\n if (tooltipsRef.current) {\n setTooltipsContainer(tooltipsRef.current);\n }\n }, []);\n\n const leftTopChartPadding = chartsDimensions[facetKeys[0]].padding;\n const rightTopChartPadding = chartsDimensions[facetKeys[columnsCount - 1]].padding;\n\n const legendLeft = margins.left + chartSizes.chartsWidth + LEGEND_OFFSET;\n const legendTop = margins.top + leftTopChartPadding.top;\n\n return (\n <ErrorBoundary dataId={settingsId}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${chartSizes.totalWidth} ${chartSizes.totalHeight}`}\n width={chartSizes.totalWidth}\n height={chartSizes.totalHeight}\n fontFamily=\"Manrope\"\n >\n <defs>{fonts}</defs>\n <g transform={`translate(${margins.left},${margins.top})`}>\n <ChartsTitle\n title={[chartSettings.title.name]}\n show={chartSettings.title.show}\n position={chartSettings.title.position}\n leftPadding={leftTopChartPadding.left}\n rightPadding={rightTopChartPadding.right}\n chartsWidth={chartSizes.chartsWidth}\n />\n {facetKeys.map(facetKey => {\n const {cells} = groupedCells[facetKey];\n return (\n <Chart\n captionsSizes={captionsSizes}\n key={facetKey}\n facetKey={facetKey}\n dimensions={chartsDimensions[facetKey]}\n scales={scales}\n cells={cells}\n cellsMeta={cellsMeta}\n stepX={step.x}\n stepY={step.y}\n colorScale={colorScale}\n sizeScale={sizeScale}\n chartSettings={chartSettings}\n aes={aes}\n labelAngles={labelAngles}\n margins={margins}\n chartSizes={chartSizes}\n tooltipsData={tooltipsData}\n tooltipsContainer={tooltipsContainer}\n getTooltip={getCellTooltip}\n />\n );\n })}\n </g>\n <g transform={`translate(${legendLeft},${legendTop})`}>\n <Legend legendData={legend} />\n </g>\n <g ref={tooltipsRef} style={{outline: 'none'}} />\n </svg>\n </ErrorBoundary>\n );\n}\n"],"names":["ChartsGroup","margins","captionsSizes","settingsId","chartSettings","chartSizes","chartsDimensions","facetKeys","scales","colorScale","sizeScale","groupedCells","cellsMeta","step","legend","aes","columnsCount","labelAngles","getCellTooltip","onTooltipHintSwitch","tooltipsData","useTooltip","tooltipsContainer","setTooltipsContainer","useState","tooltipsRef","useRef","useEffect","leftTopChartPadding","rightTopChartPadding","legendLeft","LEGEND_OFFSET","legendTop","jsx","ErrorBoundary","jsxs","fonts","ChartsTitle","facetKey","cells","Chart","Legend"],"mappings":";;;;;;;;;AAmBO,SAASA,EAAY;AAAA,EACxB,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,qBAAAC;AACJ,GAqBG;AACC,QAAMC,IAAeC,EAAuBF,CAAmB,GACzD,CAACG,GAAmBC,CAAoB,IAAIC,WAAA,GAC5CC,IAAcC,EAAAA,OAAoB,IAAI;AAC5CC,EAAAA,EAAAA,UAAU,MAAM;AACZ,IAAIF,EAAY,WACZF,EAAqBE,EAAY,OAAO;AAAA,EAEhD,GAAG,CAAA,CAAE;AAEL,QAAMG,IAAsBtB,EAAiBC,EAAU,CAAC,CAAC,EAAE,SACrDsB,IAAuBvB,EAAiBC,EAAUS,IAAe,CAAC,CAAC,EAAE,SAErEc,IAAa7B,EAAQ,OAAOI,EAAW,cAAc0B,GACrDC,IAAY/B,EAAQ,MAAM2B,EAAoB;AAEpD,SACIK,gBAAAA,EAAAA,IAACC,GAAA,EAAc,QAAQ/B,GACnB,UAAAgC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,OAAM;AAAA,MACN,SAAS,OAAO9B,EAAW,UAAU,IAAIA,EAAW,WAAW;AAAA,MAC/D,OAAOA,EAAW;AAAA,MAClB,QAAQA,EAAW;AAAA,MACnB,YAAW;AAAA,MAEX,UAAA;AAAA,QAAA4B,gBAAAA,EAAAA,IAAC,UAAM,UAAAG,EAAA,CAAM;AAAA,QACbD,gBAAAA,EAAAA,KAAC,OAAE,WAAW,aAAalC,EAAQ,IAAI,IAAIA,EAAQ,GAAG,KAClD,UAAA;AAAA,UAAAgC,gBAAAA,EAAAA;AAAAA,YAACI;AAAA,YAAA;AAAA,cACG,OAAO,CAACjC,EAAc,MAAM,IAAI;AAAA,cAChC,MAAMA,EAAc,MAAM;AAAA,cAC1B,UAAUA,EAAc,MAAM;AAAA,cAC9B,aAAawB,EAAoB;AAAA,cACjC,cAAcC,EAAqB;AAAA,cACnC,aAAaxB,EAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAE3BE,EAAU,IAAI,CAAA+B,MAAY;AACvB,kBAAM,EAAC,OAAAC,EAAA,IAAS5B,EAAa2B,CAAQ;AACrC,mBACIL,gBAAAA,EAAAA;AAAAA,cAACO;AAAA,cAAA;AAAA,gBACG,eAAAtC;AAAA,gBAEA,UAAAoC;AAAA,gBACA,YAAYhC,EAAiBgC,CAAQ;AAAA,gBACrC,QAAA9B;AAAA,gBACA,OAAA+B;AAAA,gBACA,WAAA3B;AAAA,gBACA,OAAOC,EAAK;AAAA,gBACZ,OAAOA,EAAK;AAAA,gBACZ,YAAAJ;AAAA,gBACA,WAAAC;AAAA,gBACA,eAAAN;AAAA,gBACA,KAAAW;AAAA,gBACA,aAAAE;AAAA,gBACA,SAAAhB;AAAA,gBACA,YAAAI;AAAA,gBACA,cAAAe;AAAA,gBACA,mBAAAE;AAAA,gBACA,YAAYJ;AAAA,cAAA;AAAA,cAjBPoB;AAAA,YAAA;AAAA,UAoBjB,CAAC;AAAA,QAAA,GACL;AAAA,QACAL,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAW,aAAaH,CAAU,IAAIE,CAAS,KAC9C,UAAAC,gBAAAA,EAAAA,IAACQ,GAAA,EAAO,YAAY3B,EAAA,CAAQ,GAChC;AAAA,QACAmB,gBAAAA,MAAC,OAAE,KAAKR,GAAa,OAAO,EAAC,SAAS,SAAM,CAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEvD;AAER;"}
@@ -110,7 +110,7 @@ function re(n, t, s, e) {
110
110
  function ae(n = () => {
111
111
  }, t) {
112
112
  var H;
113
- const [s, e] = $.useState(null), [r, o] = $.useState(!1), c = $.useRef(!1), L = $.useRef(!1), h = $.useRef("null"), f = $.useRef(null), i = $.useRef(!t || !t.show || !((H = t.content) != null && H.length)), d = () => {
113
+ const [s, e] = $.useState(null), [r, o] = $.useState(!1), c = $.useRef(!1), L = $.useRef(!1), h = $.useRef("null"), f = $.useRef(null), i = $.useRef(t && (!t.show || !((H = t.content) != null && H.length))), d = () => {
114
114
  e(null), c.current = !1, f.current && (clearTimeout(f.current), f.current = null), n(!1);
115
115
  }, m = () => {
116
116
  L.current = !1, o(!1), d();
@@ -123,7 +123,7 @@ function ae(n = () => {
123
123
  }, []), Q = $.useCallback(m, []);
124
124
  return $.useEffect(() => {
125
125
  var p;
126
- i.current = !t || !t.show || !((p = t.content) != null && p.length);
126
+ i.current = t && (!t.show || !((p = t.content) != null && p.length));
127
127
  }, [t == null ? void 0 : t.content, t == null ? void 0 : t.show]), $.useEffect(() => {
128
128
  function p(T) {
129
129
  c.current && T.key === "Enter" && (L.current = !0, o(!0), f.current && (clearTimeout(f.current), f.current = null), n(!1));
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../src/common/Tooltip.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { BLACK } from '../constants';\nimport { exhaustive } from '../utils';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport type { TooltipSettings } from '../types';\n\ntype Direction = 'left'|'right'|'top'|'bottom';\ntype SideDistances = {\n left: number;\n right: number;\n top: number;\n bottom: number;\n};\n\nconst OFFSET_V = 8;\nconst OFFSET_H = 12;\nconst LINE_HEIGHT = 20;\nconst R = 6;\nconst TAIL_OFFSET = 5;\nconst POSITION_OFFSET = 8;\n\nconst ICON_W = 16;\nconst ICON_OFFSET = 8;\nconst ICONS_WIDTH = ICON_W * 2 + ICON_OFFSET + 16;\n\nconst GREY = '#CFD1DB';\nconst WHITE = '#fff';\n\nconst TOOLTIP_CLASS = 'miplots-tooltip';\n\nexport function getTooltipHeight(content: string[]) {\n return content.length * LINE_HEIGHT + 2 * OFFSET_V;\n}\nexport function getTooltipWidth(content: string[], hasIcons = false) {\n const textMeasurer = new TextMeasurer('600 14px Arial');\n return Math.max(...content.map((str, idx) => textMeasurer.getTextWidth(str) + (idx === 0 && hasIcons ? ICONS_WIDTH : 0))) + 2 * OFFSET_H;\n}\n\nfunction rightTooltipPath(width: number, height: number, shiftY: number) {\n const left = -TAIL_OFFSET - width;\n const right = -TAIL_OFFSET;\n const top = -height / 2 + shiftY;\n const bottom = height / 2 + shiftY;\n return `M 0,0 \n L ${right},${-TAIL_OFFSET} \n V ${top + R}\n Q ${right},${top} ${right - R},${top} \n H ${left + R} \n Q ${left},${top} ${left},${top + R}\n V ${bottom - R}\n Q ${left},${bottom} ${left + R},${bottom}\n H ${right - R}\n Q ${right},${bottom} ${right},${bottom - R}\n V ${TAIL_OFFSET} \n L 0,0 z`;\n}\nfunction leftTooltipPath(width: number, height: number, shiftY: number) {\n const left = TAIL_OFFSET;\n const right = TAIL_OFFSET + width;\n const top = -height / 2 + shiftY;\n const bottom = height / 2 + shiftY;\n return `M 0,0 \n L ${left},${-TAIL_OFFSET} \n V ${top + R}\n Q ${left},${top} ${left + R},${top} \n H ${right - R} \n Q ${right},${top} ${right},${top + R}\n V ${bottom - R}\n Q ${right},${bottom} ${right - R},${bottom}\n H ${left + R}\n Q ${left},${bottom} ${left},${bottom - R}\n V ${TAIL_OFFSET} \n L 0,0 z`;\n}\n\nfunction topTooltipPath(width: number, height: number, shiftX: number) {\n const left = -width / 2 + shiftX;\n const right = width / 2 + shiftX;\n const top = -TAIL_OFFSET - height;\n const bottom = -TAIL_OFFSET;\n return `M 0,0 \n L ${-TAIL_OFFSET},${bottom} \n H ${left + R}\n Q ${left},${bottom} ${left},${bottom - R} \n V ${top + R} \n Q ${left},${top} ${left + R},${top}\n H ${right - R}\n Q ${right},${top} ${right},${top + R}\n V ${bottom - R}\n Q ${right},${bottom} ${right - R},${bottom}\n H ${TAIL_OFFSET} \n L 0,0 z`;\n}\n\nfunction bottomTooltipPath(width: number, height: number, shiftX: number) {\n const left = -width / 2 + shiftX;\n const right = width / 2 + shiftX;\n const bottom = TAIL_OFFSET + height;\n const top = TAIL_OFFSET;\n return `M 0,0 \n L ${-TAIL_OFFSET},${top} \n H ${left + R}\n Q ${left},${top} ${left},${top + R} \n V ${bottom - R} \n Q ${left},${bottom} ${left + R},${bottom}\n H ${right - R}\n Q ${right},${bottom} ${right},${bottom - R}\n V ${top + R}\n Q ${right},${top} ${right - R},${top}\n H ${TAIL_OFFSET} \n L 0,0 z`;\n}\n\nfunction getPath(width: number, height: number, direction: Direction, shiftX: number, shiftY: number):string {\n switch (direction) {\n case 'left': return rightTooltipPath(width, height, shiftY);\n case 'right': return leftTooltipPath(width, height, shiftY);\n case 'top': return topTooltipPath(width, height, shiftX);\n case 'bottom': return bottomTooltipPath(width, height, shiftX);\n default: exhaustive(direction, 'Unknown tooltip direction');\n }\n}\n\nfunction getDirection(width: number, height: number, x: number, y: number, offset:number, sideDistances:SideDistances , horizontal: boolean):Direction {\n if (horizontal) {\n return sideDistances.right - x - offset - TAIL_OFFSET > width ? 'right' : 'left';\n }\n return sideDistances.top + y - offset - TAIL_OFFSET > height ? 'top' : 'bottom';\n}\n\nfunction getContentTransform (direction:Direction, width: number, height: number, offset:number, shiftX: number, shiftY: number) {\n if (direction === 'left' || direction === 'right') {\n return `translate(${(direction === 'left' ? -(offset + TAIL_OFFSET + width) : (offset + TAIL_OFFSET))},${-height / 2 + shiftY})`;\n }\n return `translate(${-width / 2 + shiftX},${direction === 'top' ? -(height + offset + TAIL_OFFSET) : offset + TAIL_OFFSET})`;\n\n}\nfunction getPathTransform (direction:Direction, offset:number) {\n if (direction === 'left' || direction === 'right') {\n return `translate(${direction === 'left' ? -offset : offset},0)`;\n }\n return `translate(0,${direction === 'top' ? -offset : offset})`;\n}\n\nfunction getShiftX (direction:Direction, sideDistances: SideDistances, x: number, width: number) {\n if (direction === 'left' || direction === 'right') {\n return 0;\n }\n const rightFreeSpace = sideDistances.right - x;\n const leftFreeSpace = sideDistances.left + x;\n if (rightFreeSpace < width / 2) {\n return rightFreeSpace - width / 2;\n }\n if (leftFreeSpace < width / 2) {\n return width / 2 - leftFreeSpace;\n }\n return 0;\n}\nfunction getShiftY (direction:Direction, sideDistances: SideDistances, y: number, height: number) {\n if (direction === 'top' || direction === 'bottom') {\n return 0;\n }\n const topFreeSpace = sideDistances.top + y;\n const bottomFreeSpace = sideDistances.bottom - y;\n if (topFreeSpace < height / 2) {\n return height / 2 - topFreeSpace;\n }\n if (bottomFreeSpace < height / 2) {\n return bottomFreeSpace - height / 2;\n }\n return 0;\n}\n\nexport type TooltipsData<T> = {\n active: boolean,\n fixed: boolean,\n selectedData: T | null,\n currentFacet: string,\n onMouseEnter: (elementData:T, facetKey?:string) => void,\n onMouseLeave: () => void,\n onClose: () => void\n}\n\nexport function useTooltip<T = unknown>(\n onTooltipHintSwitchOuterCallback: (v:boolean) => void = () => undefined,\n tooltipSettings?: TooltipSettings\n): TooltipsData<T> {\n const [selectedData, setSelectedData] = useState<T | null>(null);\n const [fixed, setFixed] = useState(false);\n const openRef = useRef(false);\n const fixedRef = useRef(false);\n const currentFacet = useRef('null');\n const hintTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const disabled = useRef(!tooltipSettings || (!tooltipSettings.show || !tooltipSettings.content?.length));\n\n const close = () => {\n setSelectedData(null);\n openRef.current = false;\n if (hintTimer.current) {\n clearTimeout(hintTimer.current);\n hintTimer.current = null;\n }\n onTooltipHintSwitchOuterCallback(false);\n };\n const closeFixed = () => {\n fixedRef.current = false;\n setFixed(false);\n close();\n };\n const onMouseEnter = useCallback((newElementData:T, facetKey?: string) => {\n if (fixedRef.current || disabled.current) {\n return;\n }\n setSelectedData(newElementData);\n openRef.current = true;\n currentFacet.current = facetKey ?? 'null';\n if (hintTimer.current) {\n clearTimeout(hintTimer.current);\n }\n hintTimer.current = setTimeout(() => {\n onTooltipHintSwitchOuterCallback(true);\n }, 2000);\n }, []);\n const onMouseLeave = useCallback(() => {\n if (fixedRef.current) {\n return;\n }\n close();\n }, []);\n\n const onClose = useCallback(closeFixed, []);\n\n useEffect(() => {\n disabled.current = !tooltipSettings || (!tooltipSettings.show || !tooltipSettings.content?.length);\n }, [tooltipSettings?.content, tooltipSettings?.show]);\n useEffect(() => {\n function handleEnter(e:KeyboardEvent) {\n if (openRef.current && e.key === 'Enter') {\n fixedRef.current = true;\n setFixed(true);\n if (hintTimer.current) {\n clearTimeout(hintTimer.current);\n hintTimer.current = null;\n }\n onTooltipHintSwitchOuterCallback(false);\n }\n }\n function handleClickOutside(e:MouseEvent) {\n if (!fixedRef.current) {\n return;\n }\n //const tooltipNodes = Array.from(document.getElementsByClassName(TOOLTIP_CLASS));\n const tooltipNode = document.querySelector(`.${TOOLTIP_CLASS}`);\n const clickedNode = e.target;\n if (tooltipNode && clickedNode && tooltipNode.contains(clickedNode as Node)) {\n return;\n }\n closeFixed();\n }\n document.addEventListener('keydown', handleEnter);\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('keydown', handleEnter);\n document.removeEventListener('click', handleClickOutside);\n };\n }, []);\n\n return {\n active: selectedData !== null,\n currentFacet: currentFacet.current,\n fixed,\n selectedData,\n onMouseEnter,\n onMouseLeave,\n onClose\n };\n}\n\nexport function Tooltip({\n content,\n x,\n y,\n active,\n fixed,\n container,\n sideDistances,\n onClose = () => undefined,\n offset = POSITION_OFFSET,\n horizontal = true,\n}: {\n content: string[];\n x: number;\n y: number;\n active: boolean;\n fixed: boolean;\n sideDistances: SideDistances;\n onClose?: () => void;\n offset?: number;\n horizontal?: boolean;\n container?: Element | null;\n}) {\n const width = getTooltipWidth(content, fixed);\n const height = getTooltipHeight(content);\n const direction = getDirection(width, height, x, y, offset, sideDistances, horizontal);\n // shifts for tooltip positioning not in center if it is close to chart edges\n const shiftX = getShiftX(direction, sideDistances, x, width);\n const shiftY = getShiftY(direction, sideDistances, y, height);\n\n const firstIconPosition = `translate(${width - ICON_W - OFFSET_H},${OFFSET_V})`;\n const secondIconPosition = `translate(${width - ICON_W * 2 - ICON_OFFSET - OFFSET_H},${OFFSET_V})`;\n\n const [copied, setCopied] = useState(false);\n const [hoveredClose, setHoveredClose] = useState(false);\n const [hoveredCopy, setHoveredCopy] = useState(false);\n\n function copyToClipboard () {\n window?.navigator?.clipboard.writeText(content.join('\\n'));\n setCopied(true);\n }\n \n if (!active || (!container && container !== null)) {\n return null;\n }\n\n const tooltip = (\n <g\n className={TOOLTIP_CLASS}\n transform={`translate(${sideDistances.left + x},${sideDistances.top + y})`}\n opacity={active ? 1 : 0}\n stroke=\"none\"\n fill=\"none\"\n style={{pointerEvents: fixed ? 'all' : 'none'}}\n >\n <path\n transform={getPathTransform(direction, offset)}\n d={getPath(width, height, direction, shiftX, shiftY)}\n fill={BLACK}\n />\n <g\n fontSize=\"14px\"\n fontFamily=\"Manrope\"\n fill=\"white\"\n transform={getContentTransform(direction, width, height, offset, shiftX, shiftY)}\n >\n {content.map((str, idx) => (\n <text\n key={idx}\n x={OFFSET_H}\n y={OFFSET_V + LINE_HEIGHT * idx + LINE_HEIGHT / 2}\n dominantBaseline=\"central\"\n >\n {str}\n </text>\n ))}\n {fixed && (\n <g transform={firstIconPosition}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.0006 2.93945L8.0006 6.93945L12.0006 2.93945L13.0613 4.00011L9.06126 8.00011L13.0613 12.0001L12.0006 13.0608L8.0006 9.06077L4.0006 13.0608L2.93994 12.0001L6.93994 8.00011L2.93994 4.00011L4.0006 2.93945Z\"\n fill={hoveredClose ? GREY : WHITE}\n />\n <rect\n x=\"-8\"\n y=\"-8\"\n width=\"24\"\n height=\"24\"\n fill=\"transparent\"\n onClick={onClose}\n onMouseOver={() => setHoveredClose(true)}\n onMouseLeave={() => setHoveredClose(false)}\n style={{cursor: 'pointer'}}\n />\n </g>\n )}\n {fixed && (\n <g transform={secondIconPosition}>\n {copied\n ? (\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M14.0601 4.43439L6.33313 12.5477L1.93945 7.93439L3.02566 6.8999L6.33313 10.3727L12.9739 3.3999L14.0601 4.43439Z\" fill=\"#07AD3E\"/>\n )\n : (\n <g>\n <g clipPath=\"url(#clip0_16418_6183)\">\n <path d=\"M16.0005 13H14.5005V1.5H3.00049V0H14.5005C15.3289 2.86102e-06 16.0005 0.671575 16.0005 1.5V13ZM1.34717 15.9922C0.641178 15.9205 0.0799799 15.3593 0.00830078 14.6533L0.000488281 14.5V4.5C0.000488281 3.72334 0.590765 3.08461 1.34717 3.00781L1.50049 3H11.5005L11.6538 3.00781C12.4102 3.08461 13.0005 3.72334 13.0005 4.5V14.5L12.9927 14.6533C12.921 15.3593 12.3598 15.9205 11.6538 15.9922L11.5005 16H1.50049L1.34717 15.9922ZM11.5005 4.5H1.50049V14.5H11.5005V4.5Z\"\n fill={hoveredCopy ? GREY : WHITE}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_16418_6183\">\n <rect width=\"16\" height=\"16\" transform=\"translate(0.000488281)\" fill=\"white\" />\n </clipPath>\n </defs>\n </g>\n )}\n <rect\n x=\"-8\"\n y=\"-8\"\n width=\"24\"\n height=\"24\"\n fill=\"transparent\"\n onClick={copyToClipboard}\n onMouseOver={() => setHoveredCopy(true)}\n onMouseLeave={() => setHoveredCopy(false)}\n style={{cursor: 'pointer'}}\n />\n </g>\n )}\n </g>\n </g>\n );\n\n return container === null ? tooltip : createPortal(\n tooltip,\n container\n );\n}\n"],"names":["OFFSET_V","OFFSET_H","LINE_HEIGHT","R","TAIL_OFFSET","POSITION_OFFSET","ICON_W","ICON_OFFSET","ICONS_WIDTH","GREY","WHITE","TOOLTIP_CLASS","getTooltipHeight","content","getTooltipWidth","hasIcons","textMeasurer","TextMeasurer","str","idx","rightTooltipPath","width","height","shiftY","left","right","top","bottom","leftTooltipPath","topTooltipPath","shiftX","bottomTooltipPath","getPath","direction","exhaustive","getDirection","x","y","offset","sideDistances","horizontal","getContentTransform","getPathTransform","getShiftX","rightFreeSpace","leftFreeSpace","getShiftY","topFreeSpace","bottomFreeSpace","useTooltip","onTooltipHintSwitchOuterCallback","tooltipSettings","selectedData","setSelectedData","useState","fixed","setFixed","openRef","useRef","fixedRef","currentFacet","hintTimer","disabled","_a","close","closeFixed","onMouseEnter","useCallback","newElementData","facetKey","onMouseLeave","onClose","useEffect","handleEnter","e","handleClickOutside","tooltipNode","clickedNode","Tooltip","active","container","firstIconPosition","secondIconPosition","copied","setCopied","hoveredClose","setHoveredClose","hoveredCopy","setHoveredCopy","copyToClipboard","tooltip","jsxs","jsx","BLACK","createPortal"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../src/common/Tooltip.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { BLACK } from '../constants';\nimport { exhaustive } from '../utils';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport type { TooltipSettings } from '../types';\n\ntype Direction = 'left'|'right'|'top'|'bottom';\ntype SideDistances = {\n left: number;\n right: number;\n top: number;\n bottom: number;\n};\n\nconst OFFSET_V = 8;\nconst OFFSET_H = 12;\nconst LINE_HEIGHT = 20;\nconst R = 6;\nconst TAIL_OFFSET = 5;\nconst POSITION_OFFSET = 8;\n\nconst ICON_W = 16;\nconst ICON_OFFSET = 8;\nconst ICONS_WIDTH = ICON_W * 2 + ICON_OFFSET + 16;\n\nconst GREY = '#CFD1DB';\nconst WHITE = '#fff';\n\nconst TOOLTIP_CLASS = 'miplots-tooltip';\n\nexport function getTooltipHeight(content: string[]) {\n return content.length * LINE_HEIGHT + 2 * OFFSET_V;\n}\nexport function getTooltipWidth(content: string[], hasIcons = false) {\n const textMeasurer = new TextMeasurer('600 14px Arial');\n return Math.max(...content.map((str, idx) => textMeasurer.getTextWidth(str) + (idx === 0 && hasIcons ? ICONS_WIDTH : 0))) + 2 * OFFSET_H;\n}\n\nfunction rightTooltipPath(width: number, height: number, shiftY: number) {\n const left = -TAIL_OFFSET - width;\n const right = -TAIL_OFFSET;\n const top = -height / 2 + shiftY;\n const bottom = height / 2 + shiftY;\n return `M 0,0 \n L ${right},${-TAIL_OFFSET} \n V ${top + R}\n Q ${right},${top} ${right - R},${top} \n H ${left + R} \n Q ${left},${top} ${left},${top + R}\n V ${bottom - R}\n Q ${left},${bottom} ${left + R},${bottom}\n H ${right - R}\n Q ${right},${bottom} ${right},${bottom - R}\n V ${TAIL_OFFSET} \n L 0,0 z`;\n}\nfunction leftTooltipPath(width: number, height: number, shiftY: number) {\n const left = TAIL_OFFSET;\n const right = TAIL_OFFSET + width;\n const top = -height / 2 + shiftY;\n const bottom = height / 2 + shiftY;\n return `M 0,0 \n L ${left},${-TAIL_OFFSET} \n V ${top + R}\n Q ${left},${top} ${left + R},${top} \n H ${right - R} \n Q ${right},${top} ${right},${top + R}\n V ${bottom - R}\n Q ${right},${bottom} ${right - R},${bottom}\n H ${left + R}\n Q ${left},${bottom} ${left},${bottom - R}\n V ${TAIL_OFFSET} \n L 0,0 z`;\n}\n\nfunction topTooltipPath(width: number, height: number, shiftX: number) {\n const left = -width / 2 + shiftX;\n const right = width / 2 + shiftX;\n const top = -TAIL_OFFSET - height;\n const bottom = -TAIL_OFFSET;\n return `M 0,0 \n L ${-TAIL_OFFSET},${bottom} \n H ${left + R}\n Q ${left},${bottom} ${left},${bottom - R} \n V ${top + R} \n Q ${left},${top} ${left + R},${top}\n H ${right - R}\n Q ${right},${top} ${right},${top + R}\n V ${bottom - R}\n Q ${right},${bottom} ${right - R},${bottom}\n H ${TAIL_OFFSET} \n L 0,0 z`;\n}\n\nfunction bottomTooltipPath(width: number, height: number, shiftX: number) {\n const left = -width / 2 + shiftX;\n const right = width / 2 + shiftX;\n const bottom = TAIL_OFFSET + height;\n const top = TAIL_OFFSET;\n return `M 0,0 \n L ${-TAIL_OFFSET},${top} \n H ${left + R}\n Q ${left},${top} ${left},${top + R} \n V ${bottom - R} \n Q ${left},${bottom} ${left + R},${bottom}\n H ${right - R}\n Q ${right},${bottom} ${right},${bottom - R}\n V ${top + R}\n Q ${right},${top} ${right - R},${top}\n H ${TAIL_OFFSET} \n L 0,0 z`;\n}\n\nfunction getPath(width: number, height: number, direction: Direction, shiftX: number, shiftY: number):string {\n switch (direction) {\n case 'left': return rightTooltipPath(width, height, shiftY);\n case 'right': return leftTooltipPath(width, height, shiftY);\n case 'top': return topTooltipPath(width, height, shiftX);\n case 'bottom': return bottomTooltipPath(width, height, shiftX);\n default: exhaustive(direction, 'Unknown tooltip direction');\n }\n}\n\nfunction getDirection(width: number, height: number, x: number, y: number, offset:number, sideDistances:SideDistances , horizontal: boolean):Direction {\n if (horizontal) {\n return sideDistances.right - x - offset - TAIL_OFFSET > width ? 'right' : 'left';\n }\n return sideDistances.top + y - offset - TAIL_OFFSET > height ? 'top' : 'bottom';\n}\n\nfunction getContentTransform (direction:Direction, width: number, height: number, offset:number, shiftX: number, shiftY: number) {\n if (direction === 'left' || direction === 'right') {\n return `translate(${(direction === 'left' ? -(offset + TAIL_OFFSET + width) : (offset + TAIL_OFFSET))},${-height / 2 + shiftY})`;\n }\n return `translate(${-width / 2 + shiftX},${direction === 'top' ? -(height + offset + TAIL_OFFSET) : offset + TAIL_OFFSET})`;\n\n}\nfunction getPathTransform (direction:Direction, offset:number) {\n if (direction === 'left' || direction === 'right') {\n return `translate(${direction === 'left' ? -offset : offset},0)`;\n }\n return `translate(0,${direction === 'top' ? -offset : offset})`;\n}\n\nfunction getShiftX (direction:Direction, sideDistances: SideDistances, x: number, width: number) {\n if (direction === 'left' || direction === 'right') {\n return 0;\n }\n const rightFreeSpace = sideDistances.right - x;\n const leftFreeSpace = sideDistances.left + x;\n if (rightFreeSpace < width / 2) {\n return rightFreeSpace - width / 2;\n }\n if (leftFreeSpace < width / 2) {\n return width / 2 - leftFreeSpace;\n }\n return 0;\n}\nfunction getShiftY (direction:Direction, sideDistances: SideDistances, y: number, height: number) {\n if (direction === 'top' || direction === 'bottom') {\n return 0;\n }\n const topFreeSpace = sideDistances.top + y;\n const bottomFreeSpace = sideDistances.bottom - y;\n if (topFreeSpace < height / 2) {\n return height / 2 - topFreeSpace;\n }\n if (bottomFreeSpace < height / 2) {\n return bottomFreeSpace - height / 2;\n }\n return 0;\n}\n\nexport type TooltipsData<T> = {\n active: boolean,\n fixed: boolean,\n selectedData: T | null,\n currentFacet: string,\n onMouseEnter: (elementData:T, facetKey?:string) => void,\n onMouseLeave: () => void,\n onClose: () => void\n}\n\nexport function useTooltip<T = unknown>(\n onTooltipHintSwitchOuterCallback: (v:boolean) => void = () => undefined,\n tooltipSettings?: TooltipSettings\n): TooltipsData<T> {\n const [selectedData, setSelectedData] = useState<T | null>(null);\n const [fixed, setFixed] = useState(false);\n const openRef = useRef(false);\n const fixedRef = useRef(false);\n const currentFacet = useRef('null');\n const hintTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const disabled = useRef(tooltipSettings && (!tooltipSettings.show || !tooltipSettings.content?.length));\n\n const close = () => {\n setSelectedData(null);\n openRef.current = false;\n if (hintTimer.current) {\n clearTimeout(hintTimer.current);\n hintTimer.current = null;\n }\n onTooltipHintSwitchOuterCallback(false);\n };\n const closeFixed = () => {\n fixedRef.current = false;\n setFixed(false);\n close();\n };\n const onMouseEnter = useCallback((newElementData:T, facetKey?: string) => {\n if (fixedRef.current || disabled.current) {\n return;\n }\n setSelectedData(newElementData);\n openRef.current = true;\n currentFacet.current = facetKey ?? 'null';\n if (hintTimer.current) {\n clearTimeout(hintTimer.current);\n }\n hintTimer.current = setTimeout(() => {\n onTooltipHintSwitchOuterCallback(true);\n }, 2000);\n }, []);\n const onMouseLeave = useCallback(() => {\n if (fixedRef.current) {\n return;\n }\n close();\n }, []);\n\n const onClose = useCallback(closeFixed, []);\n\n useEffect(() => {\n disabled.current = tooltipSettings && (!tooltipSettings.show || !tooltipSettings.content?.length);\n }, [tooltipSettings?.content, tooltipSettings?.show]);\n useEffect(() => {\n function handleEnter(e:KeyboardEvent) {\n if (openRef.current && e.key === 'Enter') {\n fixedRef.current = true;\n setFixed(true);\n if (hintTimer.current) {\n clearTimeout(hintTimer.current);\n hintTimer.current = null;\n }\n onTooltipHintSwitchOuterCallback(false);\n }\n }\n function handleClickOutside(e:MouseEvent) {\n if (!fixedRef.current) {\n return;\n }\n //const tooltipNodes = Array.from(document.getElementsByClassName(TOOLTIP_CLASS));\n const tooltipNode = document.querySelector(`.${TOOLTIP_CLASS}`);\n const clickedNode = e.target;\n if (tooltipNode && clickedNode && tooltipNode.contains(clickedNode as Node)) {\n return;\n }\n closeFixed();\n }\n document.addEventListener('keydown', handleEnter);\n document.addEventListener('click', handleClickOutside);\n return () => {\n document.removeEventListener('keydown', handleEnter);\n document.removeEventListener('click', handleClickOutside);\n };\n }, []);\n\n return {\n active: selectedData !== null,\n currentFacet: currentFacet.current,\n fixed,\n selectedData,\n onMouseEnter,\n onMouseLeave,\n onClose\n };\n}\n\nexport function Tooltip({\n content,\n x,\n y,\n active,\n fixed,\n container,\n sideDistances,\n onClose = () => undefined,\n offset = POSITION_OFFSET,\n horizontal = true,\n}: {\n content: string[];\n x: number;\n y: number;\n active: boolean;\n fixed: boolean;\n sideDistances: SideDistances;\n onClose?: () => void;\n offset?: number;\n horizontal?: boolean;\n container?: Element | null;\n}) {\n const width = getTooltipWidth(content, fixed);\n const height = getTooltipHeight(content);\n const direction = getDirection(width, height, x, y, offset, sideDistances, horizontal);\n // shifts for tooltip positioning not in center if it is close to chart edges\n const shiftX = getShiftX(direction, sideDistances, x, width);\n const shiftY = getShiftY(direction, sideDistances, y, height);\n\n const firstIconPosition = `translate(${width - ICON_W - OFFSET_H},${OFFSET_V})`;\n const secondIconPosition = `translate(${width - ICON_W * 2 - ICON_OFFSET - OFFSET_H},${OFFSET_V})`;\n\n const [copied, setCopied] = useState(false);\n const [hoveredClose, setHoveredClose] = useState(false);\n const [hoveredCopy, setHoveredCopy] = useState(false);\n\n function copyToClipboard () {\n window?.navigator?.clipboard.writeText(content.join('\\n'));\n setCopied(true);\n }\n \n if (!active || (!container && container !== null)) {\n return null;\n }\n\n const tooltip = (\n <g\n className={TOOLTIP_CLASS}\n transform={`translate(${sideDistances.left + x},${sideDistances.top + y})`}\n opacity={active ? 1 : 0}\n stroke=\"none\"\n fill=\"none\"\n style={{pointerEvents: fixed ? 'all' : 'none'}}\n >\n <path\n transform={getPathTransform(direction, offset)}\n d={getPath(width, height, direction, shiftX, shiftY)}\n fill={BLACK}\n />\n <g\n fontSize=\"14px\"\n fontFamily=\"Manrope\"\n fill=\"white\"\n transform={getContentTransform(direction, width, height, offset, shiftX, shiftY)}\n >\n {content.map((str, idx) => (\n <text\n key={idx}\n x={OFFSET_H}\n y={OFFSET_V + LINE_HEIGHT * idx + LINE_HEIGHT / 2}\n dominantBaseline=\"central\"\n >\n {str}\n </text>\n ))}\n {fixed && (\n <g transform={firstIconPosition}>\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.0006 2.93945L8.0006 6.93945L12.0006 2.93945L13.0613 4.00011L9.06126 8.00011L13.0613 12.0001L12.0006 13.0608L8.0006 9.06077L4.0006 13.0608L2.93994 12.0001L6.93994 8.00011L2.93994 4.00011L4.0006 2.93945Z\"\n fill={hoveredClose ? GREY : WHITE}\n />\n <rect\n x=\"-8\"\n y=\"-8\"\n width=\"24\"\n height=\"24\"\n fill=\"transparent\"\n onClick={onClose}\n onMouseOver={() => setHoveredClose(true)}\n onMouseLeave={() => setHoveredClose(false)}\n style={{cursor: 'pointer'}}\n />\n </g>\n )}\n {fixed && (\n <g transform={secondIconPosition}>\n {copied\n ? (\n <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M14.0601 4.43439L6.33313 12.5477L1.93945 7.93439L3.02566 6.8999L6.33313 10.3727L12.9739 3.3999L14.0601 4.43439Z\" fill=\"#07AD3E\"/>\n )\n : (\n <g>\n <g clipPath=\"url(#clip0_16418_6183)\">\n <path d=\"M16.0005 13H14.5005V1.5H3.00049V0H14.5005C15.3289 2.86102e-06 16.0005 0.671575 16.0005 1.5V13ZM1.34717 15.9922C0.641178 15.9205 0.0799799 15.3593 0.00830078 14.6533L0.000488281 14.5V4.5C0.000488281 3.72334 0.590765 3.08461 1.34717 3.00781L1.50049 3H11.5005L11.6538 3.00781C12.4102 3.08461 13.0005 3.72334 13.0005 4.5V14.5L12.9927 14.6533C12.921 15.3593 12.3598 15.9205 11.6538 15.9922L11.5005 16H1.50049L1.34717 15.9922ZM11.5005 4.5H1.50049V14.5H11.5005V4.5Z\"\n fill={hoveredCopy ? GREY : WHITE}\n />\n </g>\n <defs>\n <clipPath id=\"clip0_16418_6183\">\n <rect width=\"16\" height=\"16\" transform=\"translate(0.000488281)\" fill=\"white\" />\n </clipPath>\n </defs>\n </g>\n )}\n <rect\n x=\"-8\"\n y=\"-8\"\n width=\"24\"\n height=\"24\"\n fill=\"transparent\"\n onClick={copyToClipboard}\n onMouseOver={() => setHoveredCopy(true)}\n onMouseLeave={() => setHoveredCopy(false)}\n style={{cursor: 'pointer'}}\n />\n </g>\n )}\n </g>\n </g>\n );\n\n return container === null ? tooltip : createPortal(\n tooltip,\n container\n );\n}\n"],"names":["OFFSET_V","OFFSET_H","LINE_HEIGHT","R","TAIL_OFFSET","POSITION_OFFSET","ICON_W","ICON_OFFSET","ICONS_WIDTH","GREY","WHITE","TOOLTIP_CLASS","getTooltipHeight","content","getTooltipWidth","hasIcons","textMeasurer","TextMeasurer","str","idx","rightTooltipPath","width","height","shiftY","left","right","top","bottom","leftTooltipPath","topTooltipPath","shiftX","bottomTooltipPath","getPath","direction","exhaustive","getDirection","x","y","offset","sideDistances","horizontal","getContentTransform","getPathTransform","getShiftX","rightFreeSpace","leftFreeSpace","getShiftY","topFreeSpace","bottomFreeSpace","useTooltip","onTooltipHintSwitchOuterCallback","tooltipSettings","selectedData","setSelectedData","useState","fixed","setFixed","openRef","useRef","fixedRef","currentFacet","hintTimer","disabled","_a","close","closeFixed","onMouseEnter","useCallback","newElementData","facetKey","onMouseLeave","onClose","useEffect","handleEnter","e","handleClickOutside","tooltipNode","clickedNode","Tooltip","active","container","firstIconPosition","secondIconPosition","copied","setCopied","hoveredClose","setHoveredClose","hoveredCopy","setHoveredCopy","copyToClipboard","tooltip","jsxs","jsx","BLACK","createPortal"],"mappings":"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"}
@@ -16,6 +16,8 @@ export declare class ChartDiscrete extends AbstractChart {
16
16
  facetKeyLists: GroupKey[][];
17
17
  nonEmptyGroupsByFacets: Record<string, string[]>;
18
18
  onlyPositive: boolean;
19
+ facetKeys: string[];
20
+ facetLabels: Record<string, string[]>;
19
21
  } | null;
20
22
  constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers);
21
23
  mount(node: HTMLElement): void;