@semcore/d3-chart 17.0.0-prerelease.30 → 17.0.0-prerelease.31

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.
@@ -18,6 +18,10 @@ g[visible='false'] {
18
18
  display: none;
19
19
  }
20
20
 
21
+ SBubble[clickable] {
22
+ cursor: pointer;
23
+ }
24
+
21
25
  SBubble[color] {
22
26
  fill: var(--color);
23
27
  }
package/lib/es6/Bubble.js CHANGED
@@ -11,21 +11,22 @@ import { SvgElement } from './component/SvgElement';
11
11
  import createElement from './createElement';
12
12
  import { PatternFill } from './Pattern';
13
13
  /*!__reshadow-styles__:"./style/bubble.shadow.css"*/
14
- const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SBubble_h0z26_gg_{fill:var(--intergalactic-chart-palette-order-1, #2bb3ff);stroke:var(--intergalactic-chart-grid-border, #ffffff);stroke-width:2px;transition-property:cx,cy;transition-duration:var(--duration_h0z26);transition-timing-function:ease-in-out;opacity:.5}@media (hover:hover){.___SBubble_h0z26_gg_:hover{opacity:.8}}g._visible_false_h0z26_gg_{display:none}.___SBubble_h0z26_gg_.__color_h0z26_gg_{fill:var(--color_h0z26)}.___SBubble_h0z26_gg_.__pattern_h0z26_gg_.__color_h0z26_gg_{fill:var(--pattern_h0z26);stroke:var(--color_h0z26);stroke-width:1px}.___SBubble_h0z26_gg_.__transparent_h0z26_gg_{opacity:.3}.___SCenter_h0z26_gg_{text-anchor:middle;font-size:calc(var(--intergalactic-fs-100, 12px) - 1px);stroke:var(--intergalactic-chart-palette-order-1, #2bb3ff)}.___SCenter_h0z26_gg_.__color_h0z26_gg_{stroke:var(--color_h0z26)}.___SCenter_h0z26_gg_.__transparent_h0z26_gg_{opacity:.3}.___SLabel_h0z26_gg_{fill:var(--intergalactic-chart-palette-order-1, #2bb3ff)}.___SLabel_h0z26_gg_._position_right_h0z26_gg_{text-anchor:end}.___SLabel_h0z26_gg_._position_left_h0z26_gg_{text-anchor:start}.___SLabel_h0z26_gg_.__color_h0z26_gg_{fill:var(--color_h0z26)}.___SLabel_h0z26_gg_.__transparent_h0z26_gg_{opacity:.3}", /*__inner_css_end__*/"h0z26_gg_"),
14
+ const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SBubble_1e3ic_gg_{fill:var(--intergalactic-chart-palette-order-1, #2bb3ff);stroke:var(--intergalactic-chart-grid-border, #ffffff);stroke-width:2px;transition-property:cx,cy;transition-duration:var(--duration_1e3ic);transition-timing-function:ease-in-out;opacity:.5}@media (hover:hover){.___SBubble_1e3ic_gg_:hover{opacity:.8}}g._visible_false_1e3ic_gg_{display:none}.___SBubble_1e3ic_gg_.__clickable_1e3ic_gg_{cursor:pointer}.___SBubble_1e3ic_gg_.__color_1e3ic_gg_{fill:var(--color_1e3ic)}.___SBubble_1e3ic_gg_.__pattern_1e3ic_gg_.__color_1e3ic_gg_{fill:var(--pattern_1e3ic);stroke:var(--color_1e3ic);stroke-width:1px}.___SBubble_1e3ic_gg_.__transparent_1e3ic_gg_{opacity:.3}.___SCenter_1e3ic_gg_{text-anchor:middle;font-size:calc(var(--intergalactic-fs-100, 12px) - 1px);stroke:var(--intergalactic-chart-palette-order-1, #2bb3ff)}.___SCenter_1e3ic_gg_.__color_1e3ic_gg_{stroke:var(--color_1e3ic)}.___SCenter_1e3ic_gg_.__transparent_1e3ic_gg_{opacity:.3}.___SLabel_1e3ic_gg_{fill:var(--intergalactic-chart-palette-order-1, #2bb3ff)}.___SLabel_1e3ic_gg_._position_right_1e3ic_gg_{text-anchor:end}.___SLabel_1e3ic_gg_._position_left_1e3ic_gg_{text-anchor:start}.___SLabel_1e3ic_gg_.__color_1e3ic_gg_{fill:var(--color_1e3ic)}.___SLabel_1e3ic_gg_.__transparent_1e3ic_gg_{opacity:.3}", /*__inner_css_end__*/"1e3ic_gg_"),
15
15
  /*__reshadow_css_end__*/
16
16
  {
17
- "_visible_false": "_visible_false_h0z26_gg_",
18
- "__SBubble": "___SBubble_h0z26_gg_",
19
- "_color": "__color_h0z26_gg_",
20
- "--color": "--color_h0z26",
21
- "_pattern": "__pattern_h0z26_gg_",
22
- "--pattern": "--pattern_h0z26",
23
- "_transparent": "__transparent_h0z26_gg_",
24
- "__SCenter": "___SCenter_h0z26_gg_",
25
- "__SLabel": "___SLabel_h0z26_gg_",
26
- "_position_right": "_position_right_h0z26_gg_",
27
- "_position_left": "_position_left_h0z26_gg_",
28
- "--duration": "--duration_h0z26"
17
+ "_visible_false": "_visible_false_1e3ic_gg_",
18
+ "__SBubble": "___SBubble_1e3ic_gg_",
19
+ "_clickable": "__clickable_1e3ic_gg_",
20
+ "_color": "__color_1e3ic_gg_",
21
+ "--color": "--color_1e3ic",
22
+ "_pattern": "__pattern_1e3ic_gg_",
23
+ "--pattern": "--pattern_1e3ic",
24
+ "_transparent": "__transparent_1e3ic_gg_",
25
+ "__SCenter": "___SCenter_1e3ic_gg_",
26
+ "__SLabel": "___SLabel_1e3ic_gg_",
27
+ "_position_right": "_position_right_1e3ic_gg_",
28
+ "_position_left": "_position_left_1e3ic_gg_",
29
+ "--duration": "--duration_1e3ic"
29
30
  });
30
31
  import Tooltip from './Tooltip';
31
32
  import { getBubbleChartValueScale, measureText } from './utils';
@@ -117,7 +118,8 @@ class BubbleRoot extends Component {
117
118
  data,
118
119
  transparent,
119
120
  resolveColor,
120
- patterns
121
+ patterns,
122
+ onClick
121
123
  } = this.asProps;
122
124
  return {
123
125
  color,
@@ -137,6 +139,7 @@ class BubbleRoot extends Component {
137
139
  resolveColor,
138
140
  patterns,
139
141
  bindHandlerTooltip: this.bindHandlerTooltip,
142
+ clickable: Boolean(onClick),
140
143
  onClickCircleRoot: this.handlerOnClick.bind(this)
141
144
  };
142
145
  }
@@ -213,6 +216,7 @@ function BubbleCircle(props) {
213
216
  bindHandlerTooltip,
214
217
  Element,
215
218
  visible = true,
219
+ clickable,
216
220
  onClick,
217
221
  onClickCircleRoot
218
222
  } = props;
@@ -264,7 +268,8 @@ function BubbleCircle(props) {
264
268
  "pattern": patterns ? `url(#${uid}-${index}-pattern)` : undefined,
265
269
  "r": z(circleData[value]),
266
270
  "use:duration": `${duration}ms`,
267
- "transparent": transparent
271
+ "transparent": transparent,
272
+ "clickable": clickable || Boolean(onClick)
268
273
  })), patterns && /*#__PURE__*/React.createElement(PatternFill, _ref3.cn("PatternFill", {
269
274
  "id": `${uid}-${index}-pattern`,
270
275
  "patternKey": circleData[color],
@@ -1 +1 @@
1
- {"version":3,"file":"Bubble.js","names":["Component","Root","sstyled","callAllEventHandlers","findComponent","uniqueIDEnhancement","transition","React","SvgElement","createElement","PatternFill","style","_sstyled","insert","Tooltip","getBubbleChartValueScale","measureText","BubbleRoot","constructor","args","_defineProperty","visible","props","tooltipProps","clientX","clientY","eventEmitter","plotId","asProps","emit","generateGetBoundingClientRect","x","y","width","height","top","right","bottom","left","animationCircle","duration","uid","data","value","z","selectRect","selection","selectAll","attr","selectRectNode","node","_","ind","componentDidUpdate","prevProps","prevX","prevY","prevValue","prevData","$rootProps","componentDidMount","handlerOnClick","index","e","stopPropagation","onClick","getCircleProps","color","scale","offset","styles","label","markedCross","size","transparent","resolveColor","patterns","bindHandlerTooltip","onClickCircleRoot","bind","render","Children","xScale","yScale","xSize","Math","abs","range","ySize","xMargin","min","yMargin","dataHintsHandler","specifyDataRowFields","establishDataType","isAdvancedMode","Boolean","Bubble","Circle","displayName","Fragment","map","idx","key","id","BubbleTooltip","_ref","arguments[0]","_ref2","SBubbleTooltip","cn","_assignProps","BubbleCircle","_ref3","Element","circleData","SBubble","SCenter","SLabel","margin","labelPosition","labelDistance","xIndex","undefined","_______childrenComponents"],"sources":["../../src/Bubble.jsx"],"sourcesContent":["import { Component, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent from '@semcore/core/lib/utils/findComponent';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport { transition } from 'd3-transition';\nimport React from 'react';\n\nimport { SvgElement } from './component/SvgElement';\nimport createElement from './createElement';\nimport { PatternFill } from './Pattern';\nimport style from './style/bubble.shadow.css';\nimport Tooltip from './Tooltip';\nimport { getBubbleChartValueScale, measureText } from './utils';\n\nclass BubbleRoot extends Component {\n static displayName = 'Bubble';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n offset: [0, 0],\n duration: 500,\n markedCross: true,\n };\n\n generateGetBoundingClientRect(x = 0, y = 0) {\n return () => ({ width: 0, height: 0, top: y, right: x, bottom: y, left: x });\n }\n\n bindHandlerTooltip = (visible, props, tooltipProps) => ({ clientX, clientY }) => {\n const { eventEmitter, plotId } = this.asProps;\n\n eventEmitter.emit(`setTooltipPosition_${plotId}`, clientX, clientY);\n eventEmitter.emit(`setTooltipRenderingProps_${plotId}`, props, tooltipProps);\n eventEmitter.emit(`setTooltipVisible_${plotId}`, visible);\n };\n\n animationCircle() {\n const { duration, uid, data, value } = this.asProps;\n const z = getBubbleChartValueScale(data, value);\n\n const selectRect = transition().selection().selectAll(`[id^=${uid}${uid}]`).attr('r', 0);\n\n const selectRectNode = selectRect.node();\n if (selectRectNode) {\n selectRect\n .transition()\n .duration(duration)\n .attr('r', function (_, ind) {\n return z(data[ind]?.[value]);\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { data, x, y, value } = this.asProps;\n const { x: prevX, y: prevY, value: prevValue } = prevProps;\n const prevData = prevProps.$rootProps.data;\n\n if (data !== prevData || x !== prevX || y !== prevY || value !== prevValue) {\n this.animationCircle();\n }\n }\n\n componentDidMount() {\n this.animationCircle();\n }\n\n handlerOnClick(index) {\n return (e) => {\n e.stopPropagation();\n\n const { onClick } = this.asProps;\n\n onClick?.(index, e);\n };\n }\n\n getCircleProps() {\n const {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n transparent,\n resolveColor,\n patterns,\n } = this.asProps;\n\n return {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n transparent,\n resolveColor,\n patterns,\n bindHandlerTooltip: this.bindHandlerTooltip,\n onClickCircleRoot: this.handlerOnClick.bind(this),\n };\n }\n\n render() {\n const { data, uid, scale, x, y, value, Children } = this.asProps;\n const [xScale, yScale] = scale;\n const xSize = Math.abs(xScale.range()[0] - xScale.range()[1]);\n const ySize = Math.abs(yScale.range()[0] - yScale.range()[1]);\n const xMargin = Math.min(xScale.range()[0], xScale.range()[1]);\n const yMargin = Math.min(yScale.range()[0], yScale.range()[1]);\n\n this.asProps.dataHintsHandler.specifyDataRowFields(x, y, value);\n this.asProps.dataHintsHandler.establishDataType('points-cloud');\n\n const isAdvancedMode = Boolean(findComponent(Children, [Bubble.Circle.displayName]));\n\n return (\n <>\n {isAdvancedMode\n ? (\n <Children />\n )\n : (\n data.map((_, idx) => <Bubble.Circle key={idx} index={idx} />)\n )}\n <clipPath aria-hidden id={uid}>\n <rect x={xMargin} y={yMargin} width={`${xSize}px`} height={`${ySize}px`} />\n {' '}\n </clipPath>\n </>\n );\n }\n}\n\nfunction BubbleTooltip(props) {\n const SBubbleTooltip = Root;\n return sstyled(props.styles)(<SBubbleTooltip render={Tooltip} excludeAnchorProps />);\n}\n\nfunction BubbleCircle(props) {\n const {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n transparent,\n resolveColor,\n patterns,\n index,\n bindHandlerTooltip,\n Element,\n visible = true,\n onClick,\n onClickCircleRoot,\n } = props;\n const circleData = data[index];\n\n if (!circleData) return null;\n\n const [xScale, yScale] = scale;\n\n const SBubble = Element;\n const SCenter = 'text';\n const SLabel = 'text';\n const z = getBubbleChartValueScale(data, value);\n\n const margin = Math.min(xScale.range()[0], xScale.range()[1]);\n\n const labelPosition =\n size[0] - 2 * margin - (xScale(circleData[x]) + offset[0] + z(circleData[value])) <\n measureText(circleData[label])\n ? 'right'\n : 'left';\n const labelDistance = {\n right: xScale(circleData[x]) + offset[0] - z(circleData[value]),\n left: xScale(circleData[x]) + offset[0] + z(circleData[value]),\n }[labelPosition];\n\n return sstyled(styles)(\n <SvgElement\n tag='g'\n key={`circle(#${index})`}\n onClickCapture={callAllEventHandlers(onClickCircleRoot(index), onClick)}\n onMouseMove={bindHandlerTooltip(true, props, { xIndex: index, index, patterns })}\n onMouseLeave={bindHandlerTooltip(false, props, { xIndex: index, index, patterns })}\n visible={`${visible}`}\n >\n {markedCross && (\n <SCenter\n aria-hidden\n x={xScale(circleData[x]) + offset[0]}\n y={yScale(circleData[y]) + offset[1]}\n dy='.3em'\n clipPath={`url(#${uid})`}\n color={resolveColor(circleData[color] ?? color)}\n transparent={transparent}\n >\n &#43;\n </SCenter>\n )}\n <SBubble\n aria-hidden\n id={`${uid}${uid}`}\n index={index}\n render='circle'\n clipPath={`url(#${uid})`}\n cx={xScale(circleData[x]) + offset[0]}\n cy={yScale(circleData[y]) + offset[1]}\n color={resolveColor(circleData[color])}\n pattern={patterns ? `url(#${uid}-${index}-pattern)` : undefined}\n r={z(circleData[value])}\n use:duration={`${duration}ms`}\n transparent={transparent}\n />\n {patterns && (\n <PatternFill\n id={`${uid}-${index}-pattern`}\n patternKey={circleData[color]}\n color={resolveColor(circleData[color])}\n patterns={patterns}\n />\n )}\n {circleData[label] && (\n <SLabel\n aria-hidden\n x={labelDistance}\n y={yScale(circleData[y]) + offset[1]}\n dy='.3em'\n clipPath={`url(#${uid})`}\n position={labelPosition}\n color={resolveColor(circleData[color])}\n transparent={transparent}\n >\n {circleData[label]}\n </SLabel>\n )}\n </SvgElement>,\n );\n}\n\nconst Bubble = createElement(BubbleRoot, {\n Tooltip: [BubbleTooltip, Tooltip._______childrenComponents],\n Circle: BubbleCircle,\n});\n\nexport default Bubble;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Bubble.js","names":["Component","Root","sstyled","callAllEventHandlers","findComponent","uniqueIDEnhancement","transition","React","SvgElement","createElement","PatternFill","style","_sstyled","insert","Tooltip","getBubbleChartValueScale","measureText","BubbleRoot","constructor","args","_defineProperty","visible","props","tooltipProps","clientX","clientY","eventEmitter","plotId","asProps","emit","generateGetBoundingClientRect","x","y","width","height","top","right","bottom","left","animationCircle","duration","uid","data","value","z","selectRect","selection","selectAll","attr","selectRectNode","node","_","ind","componentDidUpdate","prevProps","prevX","prevY","prevValue","prevData","$rootProps","componentDidMount","handlerOnClick","index","e","stopPropagation","onClick","getCircleProps","color","scale","offset","styles","label","markedCross","size","transparent","resolveColor","patterns","bindHandlerTooltip","clickable","Boolean","onClickCircleRoot","bind","render","Children","xScale","yScale","xSize","Math","abs","range","ySize","xMargin","min","yMargin","dataHintsHandler","specifyDataRowFields","establishDataType","isAdvancedMode","Bubble","Circle","displayName","Fragment","map","idx","key","id","BubbleTooltip","_ref","arguments[0]","_ref2","SBubbleTooltip","cn","_assignProps","BubbleCircle","_ref3","Element","circleData","SBubble","SCenter","SLabel","margin","labelPosition","labelDistance","xIndex","undefined","_______childrenComponents"],"sources":["../../src/Bubble.jsx"],"sourcesContent":["import { Component, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent from '@semcore/core/lib/utils/findComponent';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport { transition } from 'd3-transition';\nimport React from 'react';\n\nimport { SvgElement } from './component/SvgElement';\nimport createElement from './createElement';\nimport { PatternFill } from './Pattern';\nimport style from './style/bubble.shadow.css';\nimport Tooltip from './Tooltip';\nimport { getBubbleChartValueScale, measureText } from './utils';\n\nclass BubbleRoot extends Component {\n static displayName = 'Bubble';\n static style = style;\n static enhance = [uniqueIDEnhancement()];\n\n static defaultProps = {\n offset: [0, 0],\n duration: 500,\n markedCross: true,\n };\n\n generateGetBoundingClientRect(x = 0, y = 0) {\n return () => ({ width: 0, height: 0, top: y, right: x, bottom: y, left: x });\n }\n\n bindHandlerTooltip = (visible, props, tooltipProps) => ({ clientX, clientY }) => {\n const { eventEmitter, plotId } = this.asProps;\n\n eventEmitter.emit(`setTooltipPosition_${plotId}`, clientX, clientY);\n eventEmitter.emit(`setTooltipRenderingProps_${plotId}`, props, tooltipProps);\n eventEmitter.emit(`setTooltipVisible_${plotId}`, visible);\n };\n\n animationCircle() {\n const { duration, uid, data, value } = this.asProps;\n const z = getBubbleChartValueScale(data, value);\n\n const selectRect = transition().selection().selectAll(`[id^=${uid}${uid}]`).attr('r', 0);\n\n const selectRectNode = selectRect.node();\n if (selectRectNode) {\n selectRect\n .transition()\n .duration(duration)\n .attr('r', function (_, ind) {\n return z(data[ind]?.[value]);\n });\n }\n }\n\n componentDidUpdate(prevProps) {\n const { data, x, y, value } = this.asProps;\n const { x: prevX, y: prevY, value: prevValue } = prevProps;\n const prevData = prevProps.$rootProps.data;\n\n if (data !== prevData || x !== prevX || y !== prevY || value !== prevValue) {\n this.animationCircle();\n }\n }\n\n componentDidMount() {\n this.animationCircle();\n }\n\n handlerOnClick(index) {\n return (e) => {\n e.stopPropagation();\n\n const { onClick } = this.asProps;\n\n onClick?.(index, e);\n };\n }\n\n getCircleProps() {\n const {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n transparent,\n resolveColor,\n patterns,\n onClick,\n } = this.asProps;\n\n return {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n transparent,\n resolveColor,\n patterns,\n bindHandlerTooltip: this.bindHandlerTooltip,\n clickable: Boolean(onClick),\n onClickCircleRoot: this.handlerOnClick.bind(this),\n };\n }\n\n render() {\n const { data, uid, scale, x, y, value, Children } = this.asProps;\n const [xScale, yScale] = scale;\n const xSize = Math.abs(xScale.range()[0] - xScale.range()[1]);\n const ySize = Math.abs(yScale.range()[0] - yScale.range()[1]);\n const xMargin = Math.min(xScale.range()[0], xScale.range()[1]);\n const yMargin = Math.min(yScale.range()[0], yScale.range()[1]);\n\n this.asProps.dataHintsHandler.specifyDataRowFields(x, y, value);\n this.asProps.dataHintsHandler.establishDataType('points-cloud');\n\n const isAdvancedMode = Boolean(findComponent(Children, [Bubble.Circle.displayName]));\n\n return (\n <>\n {isAdvancedMode\n ? (\n <Children />\n )\n : (\n data.map((_, idx) => <Bubble.Circle key={idx} index={idx} />)\n )}\n <clipPath aria-hidden id={uid}>\n <rect x={xMargin} y={yMargin} width={`${xSize}px`} height={`${ySize}px`} />\n {' '}\n </clipPath>\n </>\n );\n }\n}\n\nfunction BubbleTooltip(props) {\n const SBubbleTooltip = Root;\n return sstyled(props.styles)(<SBubbleTooltip render={Tooltip} excludeAnchorProps />);\n}\n\nfunction BubbleCircle(props) {\n const {\n color,\n scale,\n x,\n y,\n offset,\n styles,\n uid,\n duration,\n value,\n label,\n markedCross,\n size,\n data,\n transparent,\n resolveColor,\n patterns,\n index,\n bindHandlerTooltip,\n Element,\n visible = true,\n clickable,\n onClick,\n onClickCircleRoot,\n } = props;\n const circleData = data[index];\n\n if (!circleData) return null;\n\n const [xScale, yScale] = scale;\n\n const SBubble = Element;\n const SCenter = 'text';\n const SLabel = 'text';\n const z = getBubbleChartValueScale(data, value);\n\n const margin = Math.min(xScale.range()[0], xScale.range()[1]);\n\n const labelPosition =\n size[0] - 2 * margin - (xScale(circleData[x]) + offset[0] + z(circleData[value])) <\n measureText(circleData[label])\n ? 'right'\n : 'left';\n const labelDistance = {\n right: xScale(circleData[x]) + offset[0] - z(circleData[value]),\n left: xScale(circleData[x]) + offset[0] + z(circleData[value]),\n }[labelPosition];\n\n return sstyled(styles)(\n <SvgElement\n tag='g'\n key={`circle(#${index})`}\n onClickCapture={callAllEventHandlers(onClickCircleRoot(index), onClick)}\n onMouseMove={bindHandlerTooltip(true, props, { xIndex: index, index, patterns })}\n onMouseLeave={bindHandlerTooltip(false, props, { xIndex: index, index, patterns })}\n visible={`${visible}`}\n >\n {markedCross && (\n <SCenter\n aria-hidden\n x={xScale(circleData[x]) + offset[0]}\n y={yScale(circleData[y]) + offset[1]}\n dy='.3em'\n clipPath={`url(#${uid})`}\n color={resolveColor(circleData[color] ?? color)}\n transparent={transparent}\n >\n &#43;\n </SCenter>\n )}\n <SBubble\n aria-hidden\n id={`${uid}${uid}`}\n index={index}\n render='circle'\n clipPath={`url(#${uid})`}\n cx={xScale(circleData[x]) + offset[0]}\n cy={yScale(circleData[y]) + offset[1]}\n color={resolveColor(circleData[color])}\n pattern={patterns ? `url(#${uid}-${index}-pattern)` : undefined}\n r={z(circleData[value])}\n use:duration={`${duration}ms`}\n transparent={transparent}\n clickable={clickable || Boolean(onClick)}\n />\n {patterns && (\n <PatternFill\n id={`${uid}-${index}-pattern`}\n patternKey={circleData[color]}\n color={resolveColor(circleData[color])}\n patterns={patterns}\n />\n )}\n {circleData[label] && (\n <SLabel\n aria-hidden\n x={labelDistance}\n y={yScale(circleData[y]) + offset[1]}\n dy='.3em'\n clipPath={`url(#${uid})`}\n position={labelPosition}\n color={resolveColor(circleData[color])}\n transparent={transparent}\n >\n {circleData[label]}\n </SLabel>\n )}\n </SvgElement>,\n );\n}\n\nconst Bubble = createElement(BubbleRoot, {\n Tooltip: [BubbleTooltip, Tooltip._______childrenComponents],\n Circle: BubbleCircle,\n});\n\nexport default Bubble;\n"],"mappings":"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","ignoreList":[]}
@@ -233,18 +233,6 @@ export class AbstractChart extends Component {
233
233
  }
234
234
  return total;
235
235
  }
236
- percentValue(data, key) {
237
- const total = this.totalValue(data);
238
- const value = data[key];
239
- if (typeof value === 'number' && total !== 0) {
240
- const percent = Math.round(100 * value / total);
241
- return `${percent}%`;
242
- }
243
- if (value === null) {
244
- return `0%`;
245
- }
246
- return NOT_A_VALUE;
247
- }
248
236
  getValueScale(values) {
249
237
  const max = Math.max(...values);
250
238
  const min = Math.min(...values);
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractChart.js","names":["Flex","Box","Component","Root","sstyled","extractAriaProps","callAllEventHandlers","Text","React","Fragment","Plot","XAxis","YAxis","makeDataHintsContainer","style","_sstyled","insert","interpolateValue","ChartLegend","ChartLegendTable","NOT_A_VALUE","AbstractChart","constructor","props","_defineProperty","setHighlightedLine","bind","handleChangeVisible","handleMouseEnter","handleMouseLeave","resolveColor","tooltipValueFormatter","handleWithTrendChange","state","dataDefinitions","getDefaultDataDefinitions","highlightedLine","withTrend","componentDidUpdate","prevProps","data","legendProps","setState","dataKeys","map","key","index","legendData","legendMap","dataDefinition","id","label","icon","undefined","checked","defaultChecked","color","columns","additionalInfo","count","Array","isArray","value","dataValue","Map","get","Number","total","Object","values","reduce","sum","i","percent","toFixed","createElement","use","groupKey","keys","filter","xTicks","invertAxis","xTicksCount","yTicksCount","asProps","scale","xScale","ticks","yTicks","yScale","flatValues","result","item","add","entries","forEach","Set","maxStackedValue","max","val","barSum","Date","isNaN","getMilliseconds","totalValue","allNotAValue","legendItem","NaN","percentValue","Math","round","getValueScale","min","avg","log10","valueScale","isVisible","prevState","findIndex","line","colorMap","toDateString","toString","defaultLegendProps","legendType","renderLegend","direction","showLegend","patterns","length","lProps","commonLegendProps","dataHints","size","shape","w","h","disableSelectItems","onChangeVisibleItem","disableHoverItems","onMouseEnterItem","onMouseLeaveItem","getLegendAriaLabel","flexLegendProps","trendLabel","trendIsVisible","onTrendIsVisibleChange","renderAxis","showXAxis","showYAxis","axisXValueFormatter","axisYValueFormatter","multilineXTicks","multilineYTicks","childrenX","children","childrenY","Ticks","multiline","Grid","getTooltipChildren","options","_ref","_ref3","STooltipChildrenWrapper","Tooltip","dataItem","styles","title","cn","Title","_assignProps","Dot","mr","textAlign","bold","renderTooltipTotalLine","showTotalInTooltip","mt","render","_ref2","_ref4","SChart","plotWidth","plotHeight","a11yAltTextConfig","duration","eventEmitter","showTooltip","extractedAriaProps","_assignProps2","renderTooltip","renderChart"],"sources":["../../../../src/component/Chart/AbstractChart.tsx"],"sourcesContent":["import { Flex, Box } from '@semcore/base-components';\nimport { Component, Root, sstyled } from '@semcore/core';\nimport { extractAriaProps } from '@semcore/core/lib/utils/ariaProps';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport { Text } from '@semcore/typography';\nimport type { ScaleBand, ScaleLinear, ScaleTime } from 'd3-scale';\nimport React, { Fragment } from 'react';\n\nimport type { BaseChartProps, BaseLegendProps, ListData, ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport type { HoverLine, HoverRect } from '../..';\n// @ts-ignore\nimport { Plot, XAxis, YAxis } from '../..';\nimport { makeDataHintsContainer } from '../../a11y/hints';\nimport style from '../../style/abstract-chart.shadow.css';\nimport { interpolateValue } from '../../utils';\nimport ChartLegend, { ChartLegendTable } from '../ChartLegend';\nimport type { LegendFlexProps } from '../ChartLegend/LegendFlex/LegendFlex.type';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport type { LegendTableProps } from '../ChartLegend/LegendTable/LegendTable.type';\n\nexport type ChartState = {\n dataDefinitions: Array<LegendItem & { columns: React.ReactNode[] }>;\n highlightedLine: number;\n withTrend: boolean;\n};\n\nexport const NOT_A_VALUE = 'n/a';\n\nexport abstract class AbstractChart<\n Data extends ListData | ObjectData,\n Props extends BaseChartProps<Data>,\n Enhancers extends readonly ((...args: any[]) => any)[] = [],\n DefaultProps = {},\n State extends ChartState = ChartState,\n> extends Component<Props, Enhancers, Readonly<{}>, DefaultProps, State> {\n public static style = style;\n public static defaultProps: Partial<BaseChartProps<any>> = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n };\n\n /**\n * Padding from the end's of chart to the container (except axis sides)\n */\n protected plotPadding = 6;\n\n protected dataHints = makeDataHintsContainer();\n\n constructor(props: Props) {\n super(props);\n\n this.setHighlightedLine = this.setHighlightedLine.bind(this);\n this.handleChangeVisible = this.handleChangeVisible.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.resolveColor = this.resolveColor.bind(this);\n this.tooltipValueFormatter = this.tooltipValueFormatter.bind(this);\n this.handleWithTrendChange = this.handleWithTrendChange.bind(this);\n\n this.state = {\n dataDefinitions: this.getDefaultDataDefinitions(),\n highlightedLine: -1,\n withTrend: false,\n } as State;\n }\n\n public componentDidUpdate(prevProps: Props) {\n if (prevProps.data !== this.props.data || prevProps.legendProps !== this.props.legendProps) {\n this.setState({ dataDefinitions: this.getDefaultDataDefinitions() });\n }\n }\n\n protected getDefaultDataDefinitions(): Array<LegendItem & { columns: React.ReactNode[] }> {\n const { data, legendProps } = this.props;\n\n return this.dataKeys.map((key, index) => {\n const legendData = legendProps?.legendMap?.[key];\n\n const dataDefinition: LegendItem & { columns: React.ReactNode[] } = {\n id: key,\n label: legendData?.label ?? key,\n icon: legendData?.icon ?? undefined,\n checked: legendData?.defaultChecked ?? true,\n color: this.resolveColor(key, index),\n columns: [],\n };\n\n if (legendData?.additionalInfo || legendData?.count) {\n dataDefinition.additionalInfo = legendData.additionalInfo\n ? { label: legendData.additionalInfo }\n : legendData.count\n ? { count: legendData.count }\n : undefined;\n }\n\n if (legendData && 'columns' in legendData) {\n dataDefinition.columns = legendData.columns || [];\n } else if (!Array.isArray(data)) {\n let value: number | undefined = undefined;\n let dataValue = data[key];\n\n if (data instanceof Map) {\n dataValue = data.get(key);\n }\n\n if (dataValue !== interpolateValue) {\n value = Number(dataValue);\n }\n\n const total = Object.values(data).reduce<number>((sum, i) => {\n if (i !== interpolateValue) {\n return sum + Number(i);\n }\n\n return sum;\n }, 0);\n const percent = value !== undefined ? ((value / total) * 100).toFixed(2) : undefined;\n\n dataDefinition.columns = [\n <Text key={`${key}_percent`} use='secondary'>\n {percent !== undefined ? `${percent}%` : ''}\n </Text>,\n <Text key={`${key}_value`} use={value ? 'primary' : 'secondary'}>\n {value ?? NOT_A_VALUE}\n </Text>,\n ];\n }\n\n return dataDefinition;\n });\n }\n\n protected abstract get xScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n protected abstract get yScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n\n protected abstract getLegendAriaLabel(): string;\n protected abstract renderChart(): React.ReactNode;\n protected abstract renderTooltip(): React.ReactNode;\n\n protected get dataKeys(): string[] {\n const { data, groupKey } = this.props;\n\n let dataKeys: string[];\n\n if (Array.isArray(data) && groupKey) {\n dataKeys = Object.keys(data[0]).filter((key) => key !== groupKey);\n } else {\n dataKeys = Object.keys(data);\n }\n\n return dataKeys;\n }\n\n protected get xTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.xScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && yTicksCount) {\n return scale.ticks(yTicksCount);\n } else if (xTicksCount) {\n return scale.ticks(xTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get yTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.yScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && xTicksCount) {\n return scale.ticks(xTicksCount);\n } else if (yTicksCount) {\n return scale.ticks(yTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey } = this.asProps;\n const values: any[] = Array.isArray(data) ? data : Object.values(data);\n\n const flatValues = values.reduce<Set<number>>((result, item) => {\n if (!groupKey && typeof item === 'number') {\n result.add(item);\n } else {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && typeof value === 'number') {\n result.add(value);\n }\n });\n }\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected get maxStackedValue(): number {\n const { data, groupKey } = this.asProps;\n\n if (!Array.isArray(data)) {\n const max = Object.values(data).reduce<number>((sum, val) => {\n if (typeof val === 'number') {\n sum = sum + val;\n }\n\n return sum;\n }, 0);\n\n return max;\n }\n\n const max = data.reduce((max, item) => {\n const barSum = Object.entries(item).reduce<number>((sum, [key, val]) => {\n if (key === groupKey) {\n return sum;\n }\n\n if (typeof val === 'number') {\n return sum + val;\n }\n\n if (val instanceof Date && !Number.isNaN(val.getMilliseconds())) {\n return sum + val.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (barSum > max) {\n max = barSum;\n }\n\n return max;\n }, 0);\n\n return max;\n }\n\n protected totalValue(data: ObjectData): number {\n const { dataDefinitions } = this.state;\n\n let allNotAValue = true;\n\n const total = dataDefinitions.reduce((sum, legendItem) => {\n const item = data[legendItem.id];\n\n if (item === null) {\n allNotAValue = false;\n return sum;\n }\n\n if (typeof item === 'number') {\n allNotAValue = false;\n return sum + item;\n }\n\n if (item instanceof Date && !Number.isNaN(item.getMilliseconds())) {\n allNotAValue = false;\n return sum + item.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (allNotAValue) {\n return Number.NaN;\n }\n\n return total;\n }\n\n protected percentValue(data: ObjectData, key: string): string {\n const total = this.totalValue(data);\n\n const value = data[key];\n\n if (typeof value === 'number' && total !== 0) {\n const percent = Math.round((100 * value) / total);\n\n return `${percent}%`;\n }\n\n if (value === null) {\n return `0%`;\n }\n\n return NOT_A_VALUE;\n }\n\n protected getValueScale(values: number[]): number {\n const max = Math.max(...values);\n const min = Math.min(...values);\n\n const avg = (max + min) / 2;\n const count = Math.round(Math.log10(avg));\n\n const valueScale = 100 / 10 ** count;\n\n return valueScale;\n }\n\n protected setHighlightedLine(index: number) {\n this.setState({ highlightedLine: index });\n }\n\n protected handleChangeVisible(id: string, isVisible: boolean) {\n this.setState((prevState) => {\n const dataDefinitions = prevState.dataDefinitions.map((item) => {\n if (item.id === id) {\n item.checked = isVisible;\n }\n\n return item;\n });\n\n return { dataDefinitions };\n });\n }\n\n protected handleWithTrendChange(isVisible: boolean) {\n this.setState({ withTrend: isVisible });\n }\n\n protected handleMouseEnter(id: string) {\n this.setHighlightedLine(this.state.dataDefinitions.findIndex((line) => line.id === id));\n }\n\n protected handleMouseLeave() {\n this.setHighlightedLine(-1);\n }\n\n protected resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `chart-palette-order-${index + 1}`;\n }\n\n protected tooltipValueFormatter(\n value?: string | number | typeof interpolateValue | Date,\n ): string {\n const { tooltipValueFormatter } = this.asProps;\n\n if (tooltipValueFormatter) {\n return tooltipValueFormatter(value);\n }\n\n if (value === undefined || value === interpolateValue) {\n return NOT_A_VALUE;\n }\n\n if (value === null) {\n return '0';\n }\n\n if (value instanceof Date) {\n return value.toDateString();\n }\n\n return value.toString();\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n return {\n legendType: 'Flex',\n };\n }\n\n protected renderLegend() {\n const { legendProps, direction, showLegend, patterns } = this.asProps;\n\n if (\n // we hide Legend for one item on chart except not manually set to show.\n showLegend === undefined && this.dataKeys.length === 1 ||\n showLegend === false\n ) {\n return null;\n }\n\n const { dataDefinitions, withTrend } = this.state;\n const lProps = {\n ...this.defaultLegendProps(),\n ...legendProps,\n };\n\n const commonLegendProps: LegendFlexProps | LegendTableProps = {\n 'dataHints': this.dataHints,\n 'items': dataDefinitions,\n 'size': lProps.size,\n 'shape': lProps.shape,\n 'w': lProps.w,\n 'h': lProps.h,\n patterns,\n 'direction':\n lProps.direction ?? (direction === 'row' || direction === 'row-reverse' ? 'column' : 'row'),\n 'onChangeVisibleItem': lProps.disableSelectItems\n ? undefined\n : callAllEventHandlers(lProps.onChangeVisibleItem, this.handleChangeVisible),\n 'onMouseEnterItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseEnterItem, this.handleMouseEnter),\n 'onMouseLeaveItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseLeaveItem, this.handleMouseLeave),\n 'aria-label': this.getLegendAriaLabel(),\n };\n\n if (lProps.legendType === 'Table') {\n return <ChartLegendTable {...(commonLegendProps as LegendTableProps)} />;\n }\n\n if ('withTrend' in lProps) {\n const flexLegendProps = {\n ...commonLegendProps,\n withTrend: true,\n trendLabel: lProps.trendLabel,\n trendIsVisible: withTrend,\n onTrendIsVisibleChange: this.handleWithTrendChange,\n };\n\n return <ChartLegend {...(flexLegendProps as LegendFlexProps)} />;\n }\n\n return <ChartLegend {...(commonLegendProps as LegendFlexProps)} />;\n }\n\n protected renderAxis(): React.ReactNode {\n const {\n invertAxis,\n showXAxis,\n showYAxis,\n data,\n axisXValueFormatter,\n axisYValueFormatter,\n multilineXTicks,\n multilineYTicks,\n } = this.asProps;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n const xTicks = this.xTicks;\n const yTicks = this.yTicks;\n\n const childrenX = axisXValueFormatter\n ? ({ value }: any) => ({ children: axisXValueFormatter(value) })\n : undefined;\n const childrenY = axisYValueFormatter\n ? ({ value }: any) => ({ children: axisYValueFormatter(value) })\n : undefined;\n\n return (\n <>\n {showYAxis && (\n <YAxis>\n {yTicks\n ? (\n <YAxis.Ticks multiline={multilineYTicks} ticks={yTicks}>{childrenY}</YAxis.Ticks>\n )\n : (\n <YAxis.Ticks multiline={multilineYTicks}>{childrenY}</YAxis.Ticks>\n )}\n {invertAxis !== true && (yTicks ? <YAxis.Grid ticks={yTicks} /> : <YAxis.Grid />)}\n </YAxis>\n )}\n\n {showXAxis && (\n <XAxis>\n {xTicks\n ? (\n <XAxis.Ticks multiline={multilineXTicks} ticks={xTicks}>{childrenX}</XAxis.Ticks>\n )\n : (\n <XAxis.Ticks multiline={multilineXTicks}>{childrenX}</XAxis.Ticks>\n )}\n {invertAxis === true && (xTicks ? <XAxis.Grid ticks={xTicks} /> : <XAxis.Grid />)}\n </XAxis>\n )}\n </>\n );\n }\n\n protected getTooltipChildren<D extends ObjectData>(options: {\n Tooltip: typeof HoverLine['Tooltip'] | typeof HoverRect['Tooltip'];\n dataItem: D;\n }) {\n const STooltipChildrenWrapper = Root;\n const { Tooltip, dataItem } = options;\n\n const { styles, groupKey } = this.asProps;\n const { dataDefinitions } = this.state;\n const title = dataItem[groupKey as keyof D]?.toString();\n\n return sstyled(styles)(\n <Flex direction='column'>\n { title && <Tooltip.Title>{title}</Tooltip.Title> }\n\n <STooltipChildrenWrapper\n render={Box}\n columnsCount='2'\n __excludeProps={['data']}\n >\n {dataDefinitions.map((item) => {\n return (\n item.checked && (\n <Fragment key={item.id}>\n <Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </Tooltip.Dot>\n <Text textAlign='end' bold>{this.tooltipValueFormatter(dataItem[item.id] as string)}</Text>\n </Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(dataItem)}\n </STooltipChildrenWrapper>\n </Flex>,\n );\n }\n\n protected renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue(dataItem);\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n public render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, a11yAltTextConfig, duration, eventEmitter, showTooltip } =\n this.asProps;\n\n const { extractedAriaProps } = extractAriaProps(this.asProps);\n\n return sstyled(styles)(\n <SChart render={Flex} gap={5} __excludeProps={['data', 'eventEmitter']} role='group'>\n {this.renderLegend()}\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n a11yAltTextConfig={a11yAltTextConfig}\n patterns={patterns}\n duration={duration}\n eventEmitter={eventEmitter}\n {...extractedAriaProps}\n >\n {this.renderAxis()}\n {!showTooltip ? null : this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </SChart>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"AbstractChart.js","names":["Flex","Box","Component","Root","sstyled","extractAriaProps","callAllEventHandlers","Text","React","Fragment","Plot","XAxis","YAxis","makeDataHintsContainer","style","_sstyled","insert","interpolateValue","ChartLegend","ChartLegendTable","NOT_A_VALUE","AbstractChart","constructor","props","_defineProperty","setHighlightedLine","bind","handleChangeVisible","handleMouseEnter","handleMouseLeave","resolveColor","tooltipValueFormatter","handleWithTrendChange","state","dataDefinitions","getDefaultDataDefinitions","highlightedLine","withTrend","componentDidUpdate","prevProps","data","legendProps","setState","dataKeys","map","key","index","legendData","legendMap","dataDefinition","id","label","icon","undefined","checked","defaultChecked","color","columns","additionalInfo","count","Array","isArray","value","dataValue","Map","get","Number","total","Object","values","reduce","sum","i","percent","toFixed","createElement","use","groupKey","keys","filter","xTicks","invertAxis","xTicksCount","yTicksCount","asProps","scale","xScale","ticks","yTicks","yScale","flatValues","result","item","add","entries","forEach","Set","maxStackedValue","max","val","barSum","Date","isNaN","getMilliseconds","totalValue","allNotAValue","legendItem","NaN","getValueScale","Math","min","avg","round","log10","valueScale","isVisible","prevState","findIndex","line","colorMap","toDateString","toString","defaultLegendProps","legendType","renderLegend","direction","showLegend","patterns","length","lProps","commonLegendProps","dataHints","size","shape","w","h","disableSelectItems","onChangeVisibleItem","disableHoverItems","onMouseEnterItem","onMouseLeaveItem","getLegendAriaLabel","flexLegendProps","trendLabel","trendIsVisible","onTrendIsVisibleChange","renderAxis","showXAxis","showYAxis","axisXValueFormatter","axisYValueFormatter","multilineXTicks","multilineYTicks","childrenX","children","childrenY","Ticks","multiline","Grid","getTooltipChildren","options","_ref","_ref3","STooltipChildrenWrapper","Tooltip","dataItem","styles","title","cn","Title","_assignProps","Dot","mr","textAlign","bold","renderTooltipTotalLine","showTotalInTooltip","mt","render","_ref2","_ref4","SChart","plotWidth","plotHeight","a11yAltTextConfig","duration","eventEmitter","showTooltip","extractedAriaProps","_assignProps2","renderTooltip","renderChart"],"sources":["../../../../src/component/Chart/AbstractChart.tsx"],"sourcesContent":["import { Flex, Box } from '@semcore/base-components';\nimport { Component, Root, sstyled } from '@semcore/core';\nimport { extractAriaProps } from '@semcore/core/lib/utils/ariaProps';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport { Text } from '@semcore/typography';\nimport type { ScaleBand, ScaleLinear, ScaleTime } from 'd3-scale';\nimport React, { Fragment } from 'react';\n\nimport type { BaseChartProps, BaseLegendProps, ListData, ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport type { HoverLine, HoverRect } from '../..';\n// @ts-ignore\nimport { Plot, XAxis, YAxis } from '../..';\nimport { makeDataHintsContainer } from '../../a11y/hints';\nimport style from '../../style/abstract-chart.shadow.css';\nimport { interpolateValue } from '../../utils';\nimport ChartLegend, { ChartLegendTable } from '../ChartLegend';\nimport type { LegendFlexProps } from '../ChartLegend/LegendFlex/LegendFlex.type';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport type { LegendTableProps } from '../ChartLegend/LegendTable/LegendTable.type';\n\nexport type ChartState = {\n dataDefinitions: Array<LegendItem & { columns: React.ReactNode[] }>;\n highlightedLine: number;\n withTrend: boolean;\n};\n\nexport const NOT_A_VALUE = 'n/a';\n\nexport abstract class AbstractChart<\n Data extends ListData | ObjectData,\n Props extends BaseChartProps<Data>,\n Enhancers extends readonly ((...args: any[]) => any)[] = [],\n DefaultProps = {},\n State extends ChartState = ChartState,\n> extends Component<Props, Enhancers, Readonly<{}>, DefaultProps, State> {\n public static style = style;\n public static defaultProps: Partial<BaseChartProps<any>> = {\n direction: 'column',\n showXAxis: true,\n showYAxis: true,\n showTooltip: true,\n };\n\n /**\n * Padding from the end's of chart to the container (except axis sides)\n */\n protected plotPadding = 6;\n\n protected dataHints = makeDataHintsContainer();\n\n constructor(props: Props) {\n super(props);\n\n this.setHighlightedLine = this.setHighlightedLine.bind(this);\n this.handleChangeVisible = this.handleChangeVisible.bind(this);\n this.handleMouseEnter = this.handleMouseEnter.bind(this);\n this.handleMouseLeave = this.handleMouseLeave.bind(this);\n this.resolveColor = this.resolveColor.bind(this);\n this.tooltipValueFormatter = this.tooltipValueFormatter.bind(this);\n this.handleWithTrendChange = this.handleWithTrendChange.bind(this);\n\n this.state = {\n dataDefinitions: this.getDefaultDataDefinitions(),\n highlightedLine: -1,\n withTrend: false,\n } as State;\n }\n\n public componentDidUpdate(prevProps: Props) {\n if (prevProps.data !== this.props.data || prevProps.legendProps !== this.props.legendProps) {\n this.setState({ dataDefinitions: this.getDefaultDataDefinitions() });\n }\n }\n\n protected getDefaultDataDefinitions(): Array<LegendItem & { columns: React.ReactNode[] }> {\n const { data, legendProps } = this.props;\n\n return this.dataKeys.map((key, index) => {\n const legendData = legendProps?.legendMap?.[key];\n\n const dataDefinition: LegendItem & { columns: React.ReactNode[] } = {\n id: key,\n label: legendData?.label ?? key,\n icon: legendData?.icon ?? undefined,\n checked: legendData?.defaultChecked ?? true,\n color: this.resolveColor(key, index),\n columns: [],\n };\n\n if (legendData?.additionalInfo || legendData?.count) {\n dataDefinition.additionalInfo = legendData.additionalInfo\n ? { label: legendData.additionalInfo }\n : legendData.count\n ? { count: legendData.count }\n : undefined;\n }\n\n if (legendData && 'columns' in legendData) {\n dataDefinition.columns = legendData.columns || [];\n } else if (!Array.isArray(data)) {\n let value: number | undefined = undefined;\n let dataValue = data[key];\n\n if (data instanceof Map) {\n dataValue = data.get(key);\n }\n\n if (dataValue !== interpolateValue) {\n value = Number(dataValue);\n }\n\n const total = Object.values(data).reduce<number>((sum, i) => {\n if (i !== interpolateValue) {\n return sum + Number(i);\n }\n\n return sum;\n }, 0);\n const percent = value !== undefined ? ((value / total) * 100).toFixed(2) : undefined;\n\n dataDefinition.columns = [\n <Text key={`${key}_percent`} use='secondary'>\n {percent !== undefined ? `${percent}%` : ''}\n </Text>,\n <Text key={`${key}_value`} use={value ? 'primary' : 'secondary'}>\n {value ?? NOT_A_VALUE}\n </Text>,\n ];\n }\n\n return dataDefinition;\n });\n }\n\n protected abstract get xScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n protected abstract get yScale(): ScaleBand<any> | ScaleLinear<any, any> | ScaleTime<any, any>;\n\n protected abstract getLegendAriaLabel(): string;\n protected abstract renderChart(): React.ReactNode;\n protected abstract renderTooltip(): React.ReactNode;\n\n protected get dataKeys(): string[] {\n const { data, groupKey } = this.props;\n\n let dataKeys: string[];\n\n if (Array.isArray(data) && groupKey) {\n dataKeys = Object.keys(data[0]).filter((key) => key !== groupKey);\n } else {\n dataKeys = Object.keys(data);\n }\n\n return dataKeys;\n }\n\n protected get xTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.xScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && yTicksCount) {\n return scale.ticks(yTicksCount);\n } else if (xTicksCount) {\n return scale.ticks(xTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get yTicks(): number[] | Date[] | undefined {\n const { data, invertAxis, xTicksCount, yTicksCount } = this.asProps;\n\n const scale = this.yScale;\n\n if (Array.isArray(data) && 'ticks' in scale) {\n if (invertAxis && xTicksCount) {\n return scale.ticks(xTicksCount);\n } else if (yTicksCount) {\n return scale.ticks(yTicksCount);\n }\n\n return undefined;\n }\n\n return undefined;\n }\n\n protected get flatValues(): Set<number> {\n const { data, groupKey } = this.asProps;\n const values: any[] = Array.isArray(data) ? data : Object.values(data);\n\n const flatValues = values.reduce<Set<number>>((result, item) => {\n if (!groupKey && typeof item === 'number') {\n result.add(item);\n } else {\n Object.entries(item).forEach(([key, value]) => {\n if (key !== groupKey && typeof value === 'number') {\n result.add(value);\n }\n });\n }\n\n return result;\n }, new Set());\n\n return flatValues;\n }\n\n protected get maxStackedValue(): number {\n const { data, groupKey } = this.asProps;\n\n if (!Array.isArray(data)) {\n const max = Object.values(data).reduce<number>((sum, val) => {\n if (typeof val === 'number') {\n sum = sum + val;\n }\n\n return sum;\n }, 0);\n\n return max;\n }\n\n const max = data.reduce((max, item) => {\n const barSum = Object.entries(item).reduce<number>((sum, [key, val]) => {\n if (key === groupKey) {\n return sum;\n }\n\n if (typeof val === 'number') {\n return sum + val;\n }\n\n if (val instanceof Date && !Number.isNaN(val.getMilliseconds())) {\n return sum + val.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (barSum > max) {\n max = barSum;\n }\n\n return max;\n }, 0);\n\n return max;\n }\n\n protected totalValue(data: ObjectData): number {\n const { dataDefinitions } = this.state;\n\n let allNotAValue = true;\n\n const total = dataDefinitions.reduce((sum, legendItem) => {\n const item = data[legendItem.id];\n\n if (item === null) {\n allNotAValue = false;\n return sum;\n }\n\n if (typeof item === 'number') {\n allNotAValue = false;\n return sum + item;\n }\n\n if (item instanceof Date && !Number.isNaN(item.getMilliseconds())) {\n allNotAValue = false;\n return sum + item.getMilliseconds();\n }\n\n return sum;\n }, 0);\n\n if (allNotAValue) {\n return Number.NaN;\n }\n\n return total;\n }\n\n protected getValueScale(values: number[]): number {\n const max = Math.max(...values);\n const min = Math.min(...values);\n\n const avg = (max + min) / 2;\n const count = Math.round(Math.log10(avg));\n\n const valueScale = 100 / 10 ** count;\n\n return valueScale;\n }\n\n protected setHighlightedLine(index: number) {\n this.setState({ highlightedLine: index });\n }\n\n protected handleChangeVisible(id: string, isVisible: boolean) {\n this.setState((prevState) => {\n const dataDefinitions = prevState.dataDefinitions.map((item) => {\n if (item.id === id) {\n item.checked = isVisible;\n }\n\n return item;\n });\n\n return { dataDefinitions };\n });\n }\n\n protected handleWithTrendChange(isVisible: boolean) {\n this.setState({ withTrend: isVisible });\n }\n\n protected handleMouseEnter(id: string) {\n this.setHighlightedLine(this.state.dataDefinitions.findIndex((line) => line.id === id));\n }\n\n protected handleMouseLeave() {\n this.setHighlightedLine(-1);\n }\n\n protected resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `chart-palette-order-${index + 1}`;\n }\n\n protected tooltipValueFormatter(\n value?: string | number | typeof interpolateValue | Date,\n ): string {\n const { tooltipValueFormatter } = this.asProps;\n\n if (tooltipValueFormatter) {\n return tooltipValueFormatter(value);\n }\n\n if (value === undefined || value === interpolateValue) {\n return NOT_A_VALUE;\n }\n\n if (value === null) {\n return '0';\n }\n\n if (value instanceof Date) {\n return value.toDateString();\n }\n\n return value.toString();\n }\n\n protected defaultLegendProps(): Partial<BaseLegendProps> {\n return {\n legendType: 'Flex',\n };\n }\n\n protected renderLegend() {\n const { legendProps, direction, showLegend, patterns } = this.asProps;\n\n if (\n // we hide Legend for one item on chart except not manually set to show.\n showLegend === undefined && this.dataKeys.length === 1 ||\n showLegend === false\n ) {\n return null;\n }\n\n const { dataDefinitions, withTrend } = this.state;\n const lProps = {\n ...this.defaultLegendProps(),\n ...legendProps,\n };\n\n const commonLegendProps: LegendFlexProps | LegendTableProps = {\n 'dataHints': this.dataHints,\n 'items': dataDefinitions,\n 'size': lProps.size,\n 'shape': lProps.shape,\n 'w': lProps.w,\n 'h': lProps.h,\n patterns,\n 'direction':\n lProps.direction ?? (direction === 'row' || direction === 'row-reverse' ? 'column' : 'row'),\n 'onChangeVisibleItem': lProps.disableSelectItems\n ? undefined\n : callAllEventHandlers(lProps.onChangeVisibleItem, this.handleChangeVisible),\n 'onMouseEnterItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseEnterItem, this.handleMouseEnter),\n 'onMouseLeaveItem': lProps.disableHoverItems\n ? undefined\n : callAllEventHandlers(lProps.onMouseLeaveItem, this.handleMouseLeave),\n 'aria-label': this.getLegendAriaLabel(),\n };\n\n if (lProps.legendType === 'Table') {\n return <ChartLegendTable {...(commonLegendProps as LegendTableProps)} />;\n }\n\n if ('withTrend' in lProps) {\n const flexLegendProps = {\n ...commonLegendProps,\n withTrend: true,\n trendLabel: lProps.trendLabel,\n trendIsVisible: withTrend,\n onTrendIsVisibleChange: this.handleWithTrendChange,\n };\n\n return <ChartLegend {...(flexLegendProps as LegendFlexProps)} />;\n }\n\n return <ChartLegend {...(commonLegendProps as LegendFlexProps)} />;\n }\n\n protected renderAxis(): React.ReactNode {\n const {\n invertAxis,\n showXAxis,\n showYAxis,\n data,\n axisXValueFormatter,\n axisYValueFormatter,\n multilineXTicks,\n multilineYTicks,\n } = this.asProps;\n\n if (!Array.isArray(data)) {\n return null;\n }\n\n const xTicks = this.xTicks;\n const yTicks = this.yTicks;\n\n const childrenX = axisXValueFormatter\n ? ({ value }: any) => ({ children: axisXValueFormatter(value) })\n : undefined;\n const childrenY = axisYValueFormatter\n ? ({ value }: any) => ({ children: axisYValueFormatter(value) })\n : undefined;\n\n return (\n <>\n {showYAxis && (\n <YAxis>\n {yTicks\n ? (\n <YAxis.Ticks multiline={multilineYTicks} ticks={yTicks}>{childrenY}</YAxis.Ticks>\n )\n : (\n <YAxis.Ticks multiline={multilineYTicks}>{childrenY}</YAxis.Ticks>\n )}\n {invertAxis !== true && (yTicks ? <YAxis.Grid ticks={yTicks} /> : <YAxis.Grid />)}\n </YAxis>\n )}\n\n {showXAxis && (\n <XAxis>\n {xTicks\n ? (\n <XAxis.Ticks multiline={multilineXTicks} ticks={xTicks}>{childrenX}</XAxis.Ticks>\n )\n : (\n <XAxis.Ticks multiline={multilineXTicks}>{childrenX}</XAxis.Ticks>\n )}\n {invertAxis === true && (xTicks ? <XAxis.Grid ticks={xTicks} /> : <XAxis.Grid />)}\n </XAxis>\n )}\n </>\n );\n }\n\n protected getTooltipChildren<D extends ObjectData>(options: {\n Tooltip: typeof HoverLine['Tooltip'] | typeof HoverRect['Tooltip'];\n dataItem: D;\n }) {\n const STooltipChildrenWrapper = Root;\n const { Tooltip, dataItem } = options;\n\n const { styles, groupKey } = this.asProps;\n const { dataDefinitions } = this.state;\n const title = dataItem[groupKey as keyof D]?.toString();\n\n return sstyled(styles)(\n <Flex direction='column'>\n { title && <Tooltip.Title>{title}</Tooltip.Title> }\n\n <STooltipChildrenWrapper\n render={Box}\n columnsCount='2'\n __excludeProps={['data']}\n >\n {dataDefinitions.map((item) => {\n return (\n item.checked && (\n <Fragment key={item.id}>\n <Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </Tooltip.Dot>\n <Text textAlign='end' bold>{this.tooltipValueFormatter(dataItem[item.id] as string)}</Text>\n </Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(dataItem)}\n </STooltipChildrenWrapper>\n </Flex>,\n );\n }\n\n protected renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue(dataItem);\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n public render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, a11yAltTextConfig, duration, eventEmitter, showTooltip } =\n this.asProps;\n\n const { extractedAriaProps } = extractAriaProps(this.asProps);\n\n return sstyled(styles)(\n <SChart render={Flex} gap={5} __excludeProps={['data', 'eventEmitter']} role='group'>\n {this.renderLegend()}\n <Plot\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n a11yAltTextConfig={a11yAltTextConfig}\n patterns={patterns}\n duration={duration}\n eventEmitter={eventEmitter}\n {...extractedAriaProps}\n >\n {this.renderAxis()}\n {!showTooltip ? null : this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </SChart>,\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -316,6 +316,22 @@ class CigaretteChartComponent extends AbstractChart {
316
316
  };
317
317
  });
318
318
  }
319
+ percentValue(data, key) {
320
+ const {
321
+ percentFormatter
322
+ } = this.asProps;
323
+ const total = this.totalValue();
324
+ const value = data[key];
325
+ if (typeof value === 'number' && total !== 0) {
326
+ const rawPercent = 100 * value / total;
327
+ const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);
328
+ return `${formattedPercent}%`;
329
+ }
330
+ if (value === null) {
331
+ return `0%`;
332
+ }
333
+ return NOT_A_VALUE;
334
+ }
319
335
  renderTooltipTotalLine(dataItem) {
320
336
  const {
321
337
  showTotalInTooltip,
@@ -1 +1 @@
1
- {"version":3,"file":"CigaretteChart.js","names":["Box","Flex","createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","trottle","uniqueIDEnhancement","Divider","Text","scaleThreshold","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","eventToPoint","interpolateValue","Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","constructor","props","_defineProperty","createRef","event","plotRef","current","pX","pY","setState","prevState","state","activeDataDefinitions","dataDefinitions","filter","checked","activePositiveDataDefinitions","data","asProps","id","itemValue","resolveColor","index","colorMap","getDefaultDataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","computeCigaretteItems","plotWidth","plotHeight","invertAxis","minimalBarWidth","reverse","count","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","result","dd","value","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","smallItem","donors","donorCapacity","s","d","donor","available","share","taken","xScale","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","dataItem","showTotalInTooltip","total","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","_assignProps3","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { Box, Flex } from '@semcore/base-components';\nimport { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Text } from '@semcore/typography';\nimport { scaleThreshold, scaleLinear, scaleBand } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartDataKey, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { eventToPoint, interpolateValue } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst DEFAULT_MINIMAL_BAR_WIDTH = 2;\nconst DEFAULT_GAP = 2;\n\ntype ScaleThresholdConfig = { range: Array<CigaretteChartDataKey>; domain: Array<number> };\n\ntype CigaretteChartState = ChartState & {\n pX: number | null;\n pY: number | null;\n};\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance,\n typeof CigaretteChartComponent.defaultProps,\n CigaretteChartState\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,\n };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n constructor(props: CigaretteChartProps) {\n super(props);\n\n this.state = {\n ...this.state,\n pX: null,\n pY: null,\n };\n }\n\n private plotRef = React.createRef<SVGElement>();\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n private get activeDataDefinitions() {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.filter(({ checked }) => checked);\n }\n\n private get activePositiveDataDefinitions() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.filter(({ id }) => {\n const itemValue = data[id];\n\n return typeof itemValue === 'number' && itemValue > 0;\n });\n }\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n private onPlotMouseMove = trottle((event: React.MouseEvent<HTMLElement>) => {\n if (!this.plotRef.current) return;\n\n const [pX, pY] = eventToPoint(event, this.plotRef.current);\n\n this.setState((prevState) => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState((prevState) => ({ pX: null, pY: null }));\n });\n\n protected override totalValue() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.reduce((acc, { id }) => {\n const itemValue = data[id];\n\n if (typeof itemValue === 'number') {\n acc += itemValue;\n }\n\n return acc;\n }, 0);\n }\n\n private computeCigaretteItems() {\n const { plotWidth, plotHeight, data, invertAxis, minimalBarWidth } = this.asProps;\n\n const dataDefinitions = invertAxis\n ? this.activeDataDefinitions\n : [...this.activeDataDefinitions].reverse();\n\n const count = this.activePositiveDataDefinitions.length;\n const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);\n const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);\n\n const totalValue = this.totalValue();\n\n const dataDefinitionsItemSize = dataDefinitions.map(({ id }) => {\n if (totalValue === 0) {\n return 0;\n }\n\n const itemValue = data[id];\n\n if (typeof itemValue !== 'number') return 0;\n\n return (itemValue / totalValue) * availableSpace;\n });\n\n const result = dataDefinitions.map((dd, index) => ({\n ...dd,\n value: data[dd.id],\n dataWidth: dataDefinitionsItemSize[index],\n visualWidth: dataDefinitionsItemSize[index],\n isMinVisible: false,\n }));\n\n const smallItems = result.filter((r) => {\n const { value, dataWidth } = r;\n\n if (typeof value !== 'number') return false;\n\n return value > 0 && dataWidth < minimalBarWidth;\n });\n\n if (smallItems.length === 0) return result;\n\n let extraNeeded = 0;\n\n for (const smallItem of smallItems) {\n extraNeeded += minimalBarWidth - smallItem.dataWidth;\n smallItem.visualWidth = minimalBarWidth;\n smallItem.isMinVisible = true;\n }\n\n const donors = result.filter((r) => !r.isMinVisible && r.dataWidth > minimalBarWidth);\n const donorCapacity = donors.reduce(\n (s, d) => s + (d.dataWidth - minimalBarWidth),\n 0,\n );\n\n for (const donor of donors) {\n const available = donor.dataWidth - minimalBarWidth;\n const share = available / donorCapacity;\n const taken = share * extraNeeded;\n donor.visualWidth = donor.dataWidth - taken;\n }\n\n return result;\n };\n\n get xScale() {\n const { plotWidth } = this.asProps;\n\n return scaleLinear([0, plotWidth]);\n }\n\n get yScale() {\n const { plotHeight } = this.asProps;\n\n return scaleLinear([plotHeight, 0]);\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n const items = this.computeCigaretteItems();\n\n return (\n <>\n {items.map((item, index) => {\n const { visualWidth, id } = item;\n const value = data[id];\n\n if (value === interpolateValue || value === null) {\n return null;\n }\n\n const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;\n const width = visualWidth;\n const y = DEFAULT_GAP;\n const x = this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset += visualWidth;\n\n if (index < items.length - 1) {\n this.offset += DEFAULT_GAP;\n }\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions, pX, pY } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n xIndex={pX !== null ? this.visualScale(pX) : undefined}\n yIndex={pY !== null ? this.visualScale(pY) : undefined}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return {\n children: null,\n };\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue();\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } = this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get visualScale() {\n const cigaretteItems = this.computeCigaretteItems();\n\n const { range, domain } = cigaretteItems.reduce<ScaleThresholdConfig>((acc, { id, visualWidth }, index) => {\n const { range, domain } = acc;\n\n if (visualWidth) {\n range.push(id);\n\n if (domain.length === 0) {\n domain.push(visualWidth + DEFAULT_GAP);\n\n return acc;\n }\n\n if (index !== cigaretteItems.length - 1) {\n const lastAddedDomain = domain[domain.length - 1];\n domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);\n }\n }\n\n return acc;\n }, { range: [], domain: [] });\n\n return scaleThreshold(domain, range);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"CigaretteChart.js","names":["Box","Flex","createComponent","Root","sstyled","i18nEnhance","resolveColorEnhance","trottle","uniqueIDEnhancement","Divider","Text","scaleThreshold","scaleLinear","React","HoverRect","Plot","AbstractChart","NOT_A_VALUE","AnimatedClipPath","localizedMessages","eventToPoint","interpolateValue","Cigarette","DEFAULT_MINIMAL_BAR_WIDTH","DEFAULT_GAP","CigaretteChartComponent","constructor","props","_defineProperty","createRef","event","plotRef","current","pX","pY","setState","prevState","state","activeDataDefinitions","dataDefinitions","filter","checked","activePositiveDataDefinitions","data","asProps","id","itemValue","resolveColor","index","colorMap","getDefaultDataDefinitions","map","dataDef","columns","slice","defaultLegendProps","legendType","w","totalValue","reduce","acc","computeCigaretteItems","plotWidth","plotHeight","invertAxis","minimalBarWidth","reverse","count","length","totalGapWidth","Math","max","availableSpace","dataDefinitionsItemSize","result","dd","value","dataWidth","visualWidth","isMinVisible","smallItems","r","extraNeeded","smallItem","donors","donorCapacity","s","d","donor","available","share","taken","xScale","yScale","renderChart","uid","duration","patterns","onClick","highlightedLine","offset","items","createElement","Fragment","item","height","width","y","x","key","dataKey","hide","color","direction","hovered","undefined","renderTooltip","_ref","tooltipTitle","tooltipViewType","showPercentValueInTooltip","styles","showTooltip","STooltipChildrenWrapper","Tooltip","wMin","hideHoverLine","xIndex","visualScale","yIndex","tooltipProps","_ref4","showPercentColumn","_ref3","find","dataDefItem","children","cn","_assignProps","Dot","mr","label","percentValue","tooltipValueFormatter","Title","_assignProps2","style","opacity","textAlign","bold","renderTooltipTotalLine","percentFormatter","total","rawPercent","formattedPercent","round","dataItem","showTotalInTooltip","mt","Number","isNaN","renderHeader","header","render","_ref2","_ref6","SChart","a11yAltTextConfig","_ref5","_assignProps3","dataHints","onPlotMouseMove","onPlotMouseLeave","renderLegend","_assignProps4","getLegendAriaLabel","getI18nText","chartType","cigaretteItems","range","domain","push","lastAddedDomain","showXAxis","showYAxis","showLegend","marginX","marginY","CigaretteChart"],"sources":["../../../../src/component/Chart/CigaretteChart.tsx"],"sourcesContent":["import { Box, Flex } from '@semcore/base-components';\nimport { createComponent, Root, sstyled } from '@semcore/core';\nimport i18nEnhance from '@semcore/core/lib/utils/enhances/i18nEnhance';\nimport resolveColorEnhance from '@semcore/core/lib/utils/enhances/resolveColorEnhance';\nimport trottle from '@semcore/core/lib/utils/rafTrottle';\nimport uniqueIDEnhancement from '@semcore/core/lib/utils/uniqueID';\nimport Divider from '@semcore/divider';\nimport { Text } from '@semcore/typography';\nimport { scaleThreshold, scaleLinear, scaleBand } from 'd3-scale';\nimport React from 'react';\n\nimport type { CigaretteChartData, CigaretteChartDataKey, CigaretteChartProps, CigaretteChartType } from './CigaretteChart.type';\n// @ts-ignore\nimport { HoverRect, Plot } from '../..';\nimport type { ChartState } from './AbstractChart';\nimport { AbstractChart, NOT_A_VALUE } from './AbstractChart';\nimport type { ObjectData } from './AbstractChart.type';\n// @ts-ignore\nimport AnimatedClipPath from '../../AnimatedClipPath';\nimport { localizedMessages } from '../../translations/__intergalactic-dynamic-locales';\nimport { eventToPoint, interpolateValue } from '../../utils';\nimport type { LegendItem } from '../ChartLegend/LegendItem/LegendItem.type';\nimport Cigarette from '../Cigarette/Cigarette';\n\nconst DEFAULT_MINIMAL_BAR_WIDTH = 2;\nconst DEFAULT_GAP = 2;\n\ntype ScaleThresholdConfig = { range: Array<CigaretteChartDataKey>; domain: Array<number> };\n\ntype CigaretteChartState = ChartState & {\n pX: number | null;\n pY: number | null;\n};\n\nclass CigaretteChartComponent extends AbstractChart<\n CigaretteChartData,\n CigaretteChartProps,\n typeof CigaretteChartComponent.enhance,\n typeof CigaretteChartComponent.defaultProps,\n CigaretteChartState\n> {\n static displayName = 'Cigarette.Bar';\n\n static defaultProps: any = (props: CigaretteChartProps) => {\n const invertAxis = props.invertAxis ?? true;\n return {\n invertAxis: invertAxis,\n showXAxis: false,\n showYAxis: false,\n showTooltip: true,\n showLegend: false,\n marginX: 0,\n marginY: 0,\n duration: 500,\n plotWidth: !invertAxis && !props.plotWidth ? 44 : props.plotWidth,\n plotHeight: invertAxis && !props.plotHeight ? 28 : props.plotHeight,\n showPercentValueInTooltip: false,\n minimalBarWidth: DEFAULT_MINIMAL_BAR_WIDTH,\n };\n };\n\n static enhance = [\n resolveColorEnhance(),\n uniqueIDEnhancement(),\n i18nEnhance(localizedMessages),\n ] as const;\n\n constructor(props: CigaretteChartProps) {\n super(props);\n\n this.state = {\n ...this.state,\n pX: null,\n pY: null,\n };\n }\n\n private plotRef = React.createRef<SVGElement>();\n\n protected override plotPadding = 0;\n\n private offset = 0;\n\n private get activeDataDefinitions() {\n const { dataDefinitions } = this.state;\n\n return dataDefinitions.filter(({ checked }) => checked);\n }\n\n private get activePositiveDataDefinitions() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.filter(({ id }) => {\n const itemValue = data[id];\n\n return typeof itemValue === 'number' && itemValue > 0;\n });\n }\n\n protected override resolveColor(id: string, index: number) {\n return this.props.colorMap?.[id] ?? `blue-${5 - index}00`;\n }\n\n protected override getDefaultDataDefinitions(): Array<\n LegendItem & { columns: React.ReactNode[] }\n > {\n const dataDefinitions = super.getDefaultDataDefinitions();\n\n return dataDefinitions.map((dataDef) => {\n dataDef.columns = dataDef.columns.slice(1);\n return dataDef;\n });\n }\n\n protected override defaultLegendProps() {\n return {\n legendType: 'Table' as const,\n w: 'fit-content',\n };\n }\n\n private onPlotMouseMove = trottle((event: React.MouseEvent<HTMLElement>) => {\n if (!this.plotRef.current) return;\n\n const [pX, pY] = eventToPoint(event, this.plotRef.current);\n\n this.setState((prevState) => ({ pX, pY }));\n });\n\n private onPlotMouseLeave = trottle(() => {\n this.setState((prevState) => ({ pX: null, pY: null }));\n });\n\n protected override totalValue() {\n const { data } = this.asProps;\n\n return this.activeDataDefinitions.reduce((acc, { id }) => {\n const itemValue = data[id];\n\n if (typeof itemValue === 'number') {\n acc += itemValue;\n }\n\n return acc;\n }, 0);\n }\n\n private computeCigaretteItems() {\n const { plotWidth, plotHeight, data, invertAxis, minimalBarWidth } = this.asProps;\n\n const dataDefinitions = invertAxis\n ? this.activeDataDefinitions\n : [...this.activeDataDefinitions].reverse();\n\n const count = this.activePositiveDataDefinitions.length;\n const totalGapWidth = DEFAULT_GAP * Math.max(0, count - 1);\n const availableSpace = Math.max(0, (invertAxis ? plotWidth : plotHeight) - totalGapWidth);\n\n const totalValue = this.totalValue();\n\n const dataDefinitionsItemSize = dataDefinitions.map(({ id }) => {\n if (totalValue === 0) {\n return 0;\n }\n\n const itemValue = data[id];\n\n if (typeof itemValue !== 'number') return 0;\n\n return (itemValue / totalValue) * availableSpace;\n });\n\n const result = dataDefinitions.map((dd, index) => ({\n ...dd,\n value: data[dd.id],\n dataWidth: dataDefinitionsItemSize[index],\n visualWidth: dataDefinitionsItemSize[index],\n isMinVisible: false,\n }));\n\n const smallItems = result.filter((r) => {\n const { value, dataWidth } = r;\n\n if (typeof value !== 'number') return false;\n\n return value > 0 && dataWidth < minimalBarWidth;\n });\n\n if (smallItems.length === 0) return result;\n\n let extraNeeded = 0;\n\n for (const smallItem of smallItems) {\n extraNeeded += minimalBarWidth - smallItem.dataWidth;\n smallItem.visualWidth = minimalBarWidth;\n smallItem.isMinVisible = true;\n }\n\n const donors = result.filter((r) => !r.isMinVisible && r.dataWidth > minimalBarWidth);\n const donorCapacity = donors.reduce(\n (s, d) => s + (d.dataWidth - minimalBarWidth),\n 0,\n );\n\n for (const donor of donors) {\n const available = donor.dataWidth - minimalBarWidth;\n const share = available / donorCapacity;\n const taken = share * extraNeeded;\n donor.visualWidth = donor.dataWidth - taken;\n }\n\n return result;\n };\n\n get xScale() {\n const { plotWidth } = this.asProps;\n\n return scaleLinear([0, plotWidth]);\n }\n\n get yScale() {\n const { plotHeight } = this.asProps;\n\n return scaleLinear([plotHeight, 0]);\n }\n\n renderChart() {\n const { invertAxis, data, uid, duration, patterns, plotHeight, plotWidth, onClick } =\n this.asProps;\n const { dataDefinitions, highlightedLine } = this.state;\n\n this.offset = 0;\n\n const items = this.computeCigaretteItems();\n\n return (\n <>\n {items.map((item, index) => {\n const { visualWidth, id } = item;\n const value = data[id];\n\n if (value === interpolateValue || value === null) {\n return null;\n }\n\n const height = invertAxis ? plotHeight - DEFAULT_GAP * 2 : plotWidth - DEFAULT_GAP * 2;\n const width = visualWidth;\n const y = DEFAULT_GAP;\n const x = this.offset;\n const r = height < 28 ? 2 : 4;\n\n this.offset += visualWidth;\n\n if (index < items.length - 1) {\n this.offset += DEFAULT_GAP;\n }\n\n return (\n <Cigarette\n key={item.id}\n dataKey={item.id}\n index={index}\n y={invertAxis ? y : x}\n x={invertAxis ? x : y}\n width={invertAxis ? width : height}\n height={invertAxis ? height : width}\n uid={uid}\n hide={!item.checked}\n duration={duration}\n r={index === 0 || index === dataDefinitions.length - 1 ? r : 0}\n color={item.color}\n patterns={patterns}\n direction={invertAxis ? 'horizontal' : 'vertical'}\n onClick={onClick}\n hovered={\n highlightedLine === index ? true : highlightedLine === -1 ? undefined : false\n }\n />\n );\n })}\n\n <AnimatedClipPath\n aria-hidden\n duration={duration}\n id={uid}\n x='0'\n y='0'\n width={invertAxis ? 0 : plotWidth}\n height={invertAxis ? plotHeight : 0}\n />\n </>\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { data, invertAxis, tooltipTitle, tooltipViewType, showPercentValueInTooltip, styles, showTooltip } =\n this.asProps;\n const { dataDefinitions, pX, pY } = this.state;\n const STooltipChildrenWrapper = Root;\n\n if (!showTooltip) {\n return null;\n }\n\n return (\n <HoverRect.Tooltip\n x={invertAxis ? '' : undefined}\n y={invertAxis ? undefined : ''}\n wMin={100}\n hideHoverLine={true}\n xIndex={pX !== null ? this.visualScale(pX) : undefined}\n yIndex={pY !== null ? this.visualScale(pY) : undefined}\n >\n {(tooltipProps: any) => {\n const dataKey = invertAxis ? tooltipProps.xIndex : tooltipProps.yIndex;\n const showPercentColumn = showPercentValueInTooltip && this.totalValue() !== 0;\n\n if (tooltipViewType === 'single') {\n const item = dataDefinitions.find((dataDefItem) => dataDefItem.id === dataKey);\n if (!item) {\n return {\n children: null,\n };\n }\n\n return {\n children: sstyled(styles)(\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary'>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold>{this.tooltipValueFormatter(data[item.id])}</Text>\n </STooltipChildrenWrapper>,\n ),\n };\n }\n\n return {\n children: sstyled(styles)(\n <Flex direction='column'>\n {tooltipTitle && (\n <HoverRect.Tooltip.Title>Some tooltip title</HoverRect.Tooltip.Title>\n )}\n\n <STooltipChildrenWrapper render={Box} columnsCount={showPercentColumn ? '3' : '2'} __excludeProps={['data']}>\n {dataDefinitions.map((item) => {\n const style = { opacity: item.id === dataKey ? 1 : 0.3 };\n return (\n item.checked && (\n <React.Fragment key={item.id}>\n <HoverRect.Tooltip.Dot mr={2} color={item.color} style={style}>\n {item.label}\n </HoverRect.Tooltip.Dot>\n { showPercentColumn && <Text textAlign='end' color='text-secondary' style={style}>{this.percentValue(data, item.id)}</Text> }\n <Text textAlign='end' bold style={style}>{this.tooltipValueFormatter(data[item.id])}</Text>\n </React.Fragment>\n )\n );\n })}\n\n {this.renderTooltipTotalLine(data)}\n </STooltipChildrenWrapper>\n </Flex>,\n ),\n };\n }}\n </HoverRect.Tooltip>\n );\n }\n\n protected percentValue(data: ObjectData, key: string): string {\n const { percentFormatter } = this.asProps;\n\n const total = this.totalValue();\n\n const value = data[key];\n\n if (typeof value === 'number' && total !== 0) {\n const rawPercent = (100 * value) / total;\n const formattedPercent = percentFormatter ? percentFormatter(rawPercent) : Math.round(rawPercent);\n\n return `${formattedPercent}%`;\n }\n\n if (value === null) {\n return `0%`;\n }\n\n return NOT_A_VALUE;\n }\n\n protected override renderTooltipTotalLine<D extends ObjectData>(dataItem: D) {\n const { showTotalInTooltip, showPercentValueInTooltip } = this.asProps;\n\n if (!showTotalInTooltip) {\n return null;\n }\n\n const total = this.totalValue();\n\n return (\n <>\n <Box mt={2} mr={2}>Total</Box>\n { showPercentValueInTooltip && total !== 0 && <Text mt={2} textAlign='end' color='text-secondary'>{Number.isNaN(total) ? NOT_A_VALUE : '100%'}</Text> }\n <Text mt={2} textAlign='end' bold>{Number.isNaN(total) ? NOT_A_VALUE : total}</Text>\n </>\n );\n }\n\n renderHeader() {\n return this.asProps.header ?? null;\n }\n\n override render() {\n const SChart = Root;\n const { styles, plotWidth, plotHeight, data, patterns, invertAxis, a11yAltTextConfig } = this.asProps;\n\n const header = this.renderHeader();\n\n if (invertAxis) {\n return sstyled(styles)(\n <SChart render={Flex} gap={6} direction='column' __excludeProps={['onClick', 'data']}>\n <Flex direction='column'>\n {header}\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n </Flex>\n {this.renderLegend()}\n </SChart>,\n );\n }\n\n return sstyled(styles)(\n <SChart render={Flex} gap={6} __excludeProps={['onClick', 'data']}>\n <Plot\n ref={this.plotRef}\n data={data}\n scale={[this.xScale, this.yScale]}\n width={plotWidth}\n height={plotHeight}\n dataHints={this.dataHints}\n patterns={patterns}\n a11yAltTextConfig={a11yAltTextConfig}\n onMouseMove={this.onPlotMouseMove}\n onMouseLeave={this.onPlotMouseLeave}\n >\n {this.renderTooltip()}\n {this.renderChart()}\n </Plot>\n <Flex direction='column' gap={2}>\n {header && (\n <>\n <Box>{header}</Box>\n <Divider />\n </>\n )}\n {this.renderLegend()}\n </Flex>\n </SChart>,\n );\n }\n\n protected getLegendAriaLabel(): string {\n return this.asProps.getI18nText('legendForChart', { chartType: 'Cigarette' });\n }\n\n private get visualScale() {\n const cigaretteItems = this.computeCigaretteItems();\n\n const { range, domain } = cigaretteItems.reduce<ScaleThresholdConfig>((acc, { id, visualWidth }, index) => {\n const { range, domain } = acc;\n\n if (visualWidth) {\n range.push(id);\n\n if (domain.length === 0) {\n domain.push(visualWidth + DEFAULT_GAP);\n\n return acc;\n }\n\n if (index !== cigaretteItems.length - 1) {\n const lastAddedDomain = domain[domain.length - 1];\n domain.push(lastAddedDomain + visualWidth + DEFAULT_GAP);\n }\n }\n\n return acc;\n }, { range: [], domain: [] });\n\n return scaleThreshold(domain, range);\n }\n}\n\nexport const CigaretteChart: CigaretteChartType = createComponent(CigaretteChartComponent);\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"CigaretteChart.type.js","names":[],"sources":["../../../../src/component/Chart/CigaretteChart.type.ts"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nimport type { BaseChartProps } from './AbstractChart.type';\nimport type { interpolateValue } from '../../utils';\n\nexport type CigaretteChartDataKey = string;\n\nexport type CigaretteChartData = Record<CigaretteChartDataKey, number | typeof interpolateValue>;\n\nexport type CigaretteChartProps = Intergalactic.InternalTypings.EfficientOmit<\n BaseChartProps<CigaretteChartData>,\n 'xScale' | 'yScale'\n> & {\n /** Title text displayed in the tooltip */\n tooltipTitle?: string;\n /** Controls whether the tooltip shows all data or single item data */\n tooltipViewType?: 'all' | 'single';\n /** Show percent value in tooltip */\n showPercentValueInTooltip?: boolean;\n /** Header content for the chart */\n header?: React.ReactNode;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Click handler that receives the data key and event */\n onClick?: (key: CigaretteChartDataKey, event: React.SyntheticEvent) => void;\n /** Minimal bar width in pixels. Default is `2`. */\n minimalBarWidth?: number;\n};\n\nexport type CigaretteChartType = Intergalactic.Component<'div', CigaretteChartProps>;\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"CigaretteChart.type.js","names":[],"sources":["../../../../src/component/Chart/CigaretteChart.type.ts"],"sourcesContent":["import type { Intergalactic } from '@semcore/core';\nimport type React from 'react';\n\nimport type { BaseChartProps } from './AbstractChart.type';\nimport type { interpolateValue } from '../../utils';\n\nexport type CigaretteChartDataKey = string;\n\nexport type CigaretteChartData = Record<CigaretteChartDataKey, number | typeof interpolateValue>;\n\nexport type CigaretteChartProps = Intergalactic.InternalTypings.EfficientOmit<\n BaseChartProps<CigaretteChartData>,\n 'xScale' | 'yScale'\n> & {\n /** Title text displayed in the tooltip */\n tooltipTitle?: string;\n /** Controls whether the tooltip shows all data or single item data */\n tooltipViewType?: 'all' | 'single';\n /** Show percent value in tooltip */\n showPercentValueInTooltip?: boolean;\n /** Custom percent formatter. */\n percentFormatter?: (value: number) => number;\n /** Header content for the chart */\n header?: React.ReactNode;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Click handler that receives the data key and event */\n onClick?: (key: CigaretteChartDataKey, event: React.SyntheticEvent) => void;\n /** Minimal bar width in pixels. Default is `2`. */\n minimalBarWidth?: number;\n};\n\nexport type CigaretteChartType = Intergalactic.Component<'div', CigaretteChartProps>;\n"],"mappings":"","ignoreList":[]}
@@ -18,6 +18,10 @@ g[visible='false'] {
18
18
  display: none;
19
19
  }
20
20
 
21
+ SBubble[clickable] {
22
+ cursor: pointer;
23
+ }
24
+
21
25
  SBubble[color] {
22
26
  fill: var(--color);
23
27
  }