@apia/charts 0.1.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/charts/util/parseMargin.ts","../src/charts/ChartContext.tsx","../src/charts/util/LegendItem.tsx","../src/charts/util/LegendContainer.tsx","../src/charts/horizontalBars/Bar.tsx","../src/charts/util/getBarColor.tsx","../src/charts/util/useChartStyles.ts","../src/charts/horizontalBars/HorizontalBars.tsx","../src/charts/pie/Slice.tsx","../src/charts/util/ChartSelector.tsx","../src/charts/pie/TextSlice.tsx","../src/charts/pie/Pie.tsx","../src/charts/verticalBars/Bar.tsx","../src/charts/verticalBars/VerticalBars.tsx","../src/charts/linear/Node.tsx","../src/charts/linear/LineChart.tsx","../src/charts/waterfallBars/WaterfallBar.tsx","../src/charts/waterfallBars/WaterfallBars.tsx","../src/charts/ChartRenderer.tsx","../src/widgets/tLight/TLight.tsx","../src/widgets/WidgetContainer.tsx"],"sourcesContent":["import { TChartRendererProps } from '../types';\n\nexport function parseMargin(\n margin: TChartRendererProps['margin'] = {\n left: 100,\n right: 50,\n top: 50,\n bottom: 70,\n },\n) {\n return typeof margin === 'number'\n ? { left: margin, right: margin, top: margin, bottom: margin }\n : margin;\n}\n","import { createContext } from 'react';\n\nexport type TChartContext = {\n chartId: string;\n};\n\nexport const ChartContext = createContext<TChartContext>({} as TChartContext);\n","import { SimpleButton } from '@apia/components';\nimport { icons } from '@apia/icons';\nimport { useContext } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { chartMethods } from '../ChartRenderer';\n\nconst LegendItem = ({\n groupId,\n title,\n color,\n className,\n isHighlighted,\n isAnyHighlighted,\n avoidEvent,\n}: {\n groupId: string;\n title: string;\n color: string;\n className?: string;\n isHighlighted: boolean;\n isAnyHighlighted: boolean;\n avoidEvent: boolean;\n}) => {\n const { chartId } = useContext(ChartContext);\n\n return (\n <SimpleButton\n variant=\"icon-outline\"\n className={`${className ?? ''} ${isHighlighted ? 'highlight' : ''}`}\n iconColor={color || 'black'}\n icon={color === 'transparent' ? undefined : icons.SquareFilled}\n sx={{\n opacity: isAnyHighlighted && !isHighlighted ? '0.15' : '1',\n }}\n onMouseEnter={() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', groupId);\n }}\n onMouseLeave={() => {\n if (avoidEvent) {\n return;\n }\n chartMethods(chartId, 'highlight', '');\n }}\n >\n {title}\n </SimpleButton>\n );\n};\n\nexport { LegendItem };\n","import { Box } from 'theme-ui';\nimport { LegendItem } from './LegendItem';\nimport { makeImperativeComponent } from '@apia/util';\n\nexport type TChartReference = {\n color: string;\n title: string;\n}[];\n\nexport const [legendContainerMethods, , LegendContainer] =\n makeImperativeComponent<\n {\n references: TChartReference;\n containerClassName?: string;\n itemClassName?: string;\n avoidEvent?: boolean;\n },\n never\n >()({\n initialState: {\n highlightedBarGroup: '',\n },\n methods: {\n highlight(setState, highlightedBarGroup: string) {\n setState({ highlightedBarGroup });\n },\n },\n Component: ({\n references,\n containerClassName,\n highlightedBarGroup,\n avoidEvent,\n }) => {\n return (\n <Box className={containerClassName}>\n {references.map((data) => {\n return (\n <LegendItem\n isHighlighted={data.title === highlightedBarGroup}\n isAnyHighlighted={highlightedBarGroup !== ''}\n groupId={data.title}\n key={data.title}\n color={data.color}\n title={data.title}\n avoidEvent={avoidEvent ?? false}\n />\n );\n })}\n </Box>\n );\n },\n });\n","import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from 'theme-ui';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport {} from 'react';\nimport { useTooltip } from '@apia/components';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n });\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value} - {parsedData[barGroup.index].columnName}\n </text>\n\n <Box\n as=\"rect\"\n className=\"chart__barRect\"\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n }\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, '');\n }\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import tinycolor from 'tinycolor2';\n\nexport function getBarColor(\n colors: string[],\n index: number,\n alwaysDiffer = false,\n) {\n const module = colors.length;\n let count = 0;\n let barColor = '';\n if (!alwaysDiffer) {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n let innerIndex = index;\n while (innerIndex >= module) {\n innerIndex = index / module;\n count++;\n }\n barColor = tinycolor(colors[index % module])\n .desaturate(count * 5)\n .toHex();\n }\n } else {\n if (colors[index]) {\n barColor = colors[index];\n } else {\n barColor = tinycolor(colors[index % module]).toHex();\n }\n }\n return barColor;\n}\n","import { ColorModesScale, ThemeUIStyleObject } from 'theme-ui';\nimport { IChartStylesSchemes, TChartStylesDefinition } from '../types';\nimport { getValueByPath } from '@apia/util';\nimport { useContext } from 'react';\nimport { ThemeProviderContext } from '@apia/theme';\n\nexport function useChartStyles(schemeName?: string): TChartStylesDefinition {\n const theme = useContext(ThemeProviderContext);\n\n if (!theme.layout)\n console.error('The layout property is missing in the current theme');\n\n const charts = ((theme.layout as Record<string, ThemeUIStyleObject>)\n ?.charts ?? {}) as IChartStylesSchemes;\n const defaultStyles = charts.common;\n const currentStylescheme = {\n schema: getValueByPath(\n theme.colors as ColorModesScale,\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n charts[schemeName || 'blue']?.schema as string,\n ) as string[],\n };\n return {\n ...defaultStyles,\n ...currentStylescheme,\n };\n}\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { Box } from 'theme-ui';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroupHorizontal } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { usePanelParametersSelector } from '@apia/dashboard';\nimport { Bar } from './Bar';\nimport { usePanAndZoom } from '@apia/util';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { useChartStyles } from '../util/useChartStyles';\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getYValue = (d: IParsedColumn) => d.columnName;\n\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst HorizontalBars = ({\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n outerClassName,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const yScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n innerHeight,\n ],\n domain: parsedData.map(getYValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, yScale.bandwidth()],\n });\n\n const xScaleLog = scaleLog<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const xScaleLine = scaleLinear<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const parameters = usePanelParametersSelector((global) => {\n return global;\n });\n\n const scale = parameters.PRMT_CHART_SCALE;\n\n const isLogScale = scale === '0';\n\n const xScale = useMemo(() => {\n if (!isLogScale) {\n return xScaleLine;\n }\n return xScaleLog;\n }, [isLogScale, xScaleLine, xScaleLog]);\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(\n `#${id} .__${(chartId as string) ?? outerClassName}`,\n )\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\n });\n });\n const styles = useChartStyles(chart.colorSchema);\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(styles.schema).length > 0\n ? getBarColor(arrayOrArray(styles.schema), index, isSingle)\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = setsWithColor.map((column) => {\n return {\n color: column[0].color ?? '',\n title: column[0].columnName,\n };\n });\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${outerClassName ?? ''} ${chartId} ${chart.title}`}\n sx={React.useMemo(() => {\n return {\n [`.__${(chartId as string) ?? outerClassName}`]: {\n transform: 'rotate(45deg)',\n transformOrigin: 'attr(x) 18px',\n },\n overflow: 'auto',\n position: 'relative',\n\n height: `${chart.ratio.height}px`,\n width: `${chart.ratio.width}px`,\n };\n }, [chart.ratio.height, chart.ratio.width, chartId, outerClassName])}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} ${className ? className : ''} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n style={{\n position: 'absolute',\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={effectiveMargin.left}\n >\n <BarGroupHorizontal\n data={parsedData}\n keys={columnNames}\n width={innerWidth}\n y0={getYValue}\n y0Scale={yScale}\n y1Scale={columnGroupScale}\n xScale={xScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\n top={barGroup.y0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n effectiveMargin={effectiveMargin}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroupHorizontal>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={() => ({\n display: 'none',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{\n className: 'tickLabel',\n }}\n labelOffset={50}\n />\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer\n id={chartId}\n containerClassName=\"legendContainer\"\n references={colorReference}\n />\n )}\n </>\n );\n};\n\nexport { HorizontalBars };\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { useTooltip } from '@apia/components';\nimport { useMemo, useState, useContext } from 'react';\nimport tinycolor from 'tinycolor2';\nimport { localPoint } from '@visx/event';\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\nimport { useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const Slice = ({\n arc,\n arcPath,\n chart,\n actualColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n arc: PieArcDatum<TApiaChartCoordinate>;\n arcPath: string | null;\n actualColor: string;\n}) => {\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: `#${tinycolor(actualColor).toHex()}`,\n }}\n >\n <strong>{arc.data.key}</strong>\n </div>\n {chart.showValues && (\n <div>{`${arc.value} ${\n arc.data.percentage ? '- ' + arc.data.percentage : ''\n }${arc.data.percentage ? '%' : ''}`}</div>\n )}\n </>\n ),\n });\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n setIsHighlighted(barName === arc.data.key);\n setIsAnyHighlighted(barName !== arc.data.key && barName !== '');\n },\n });\n const { chartId } = useContext(ChartContext);\n const name = arc.data;\n\n return (\n <path\n key={`arc-${name.key}-${name.value}`}\n style={useMemo(\n () => ({\n '&:hover': {\n fill: `#${tinycolor(actualColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n }),\n [actualColor],\n )}\n fill={\n isAnyHighlighted\n ? `#${tinycolor(actualColor).desaturate(70).toHex()}`\n : actualColor\n }\n opacity={isAnyHighlighted && !isHighlighted ? 0.15 : 1}\n d={arcPath ?? ''}\n onMouseEnter={(ev) => {\n legendContainerMethods.highlight(chartId, arc.data.key);\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n ></path>\n );\n};\n","// import { useLocalStorage } from '@apia/util';\nimport { Select } from 'theme-ui';\n\nfunction ChartSelector({\n chartId,\n pieces,\n className,\n current,\n setCurrent,\n}: {\n chartId: string;\n pieces: string[];\n className?: string;\n current: string;\n setCurrent: React.Dispatch<React.SetStateAction<string>>;\n}) {\n // const [chart, setChart] = useLocalStorage(`chartSelector_${chartId}`, '0');\n return (\n <Select\n sx={{ width: 'auto' }}\n name={`chartSelector_${chartId}`}\n className={`chartSelector_${chartId} ${className ?? ''}`}\n value={current ?? '0'}\n onChange={(ev) => {\n ev.preventDefault();\n setCurrent(ev.target.value);\n }}\n >\n {pieces\n .map((piece, i) => {\n return {\n label: piece,\n value: `${i}`,\n };\n })\n .map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}{' '}\n </Select>\n );\n}\n\nexport default ChartSelector;\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { useState } from 'react';\nimport { PieArcDatum } from '@visx/shape/lib/shapes/Pie';\nimport { useImperativeComponentEvents } from '@apia/util';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const TextSlice = ({\n arc,\n x,\n y,\n dy,\n}: Pick<TChartRendererProps, 'chart'> & {\n arc: PieArcDatum<TApiaChartCoordinate>;\n x: number;\n y: number;\n dy: string;\n}) => {\n const [isHighlighted, setIsHighlighted] = useState(false);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n setIsHighlighted(barName === arc.data.key);\n },\n });\n return (\n <text\n textAnchor=\"middle\"\n style={{\n opacity: isHighlighted ? 1 : 0,\n display: isHighlighted ? 'block' : 'none',\n transition: 'opacity 500ms',\n }}\n x={x}\n y={y}\n dy={dy}\n >\n {arc.value}\n </text>\n );\n};\n","import { TApiaChartCoordinate, TChartRendererProps } from '../types';\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\nimport { Box } from 'theme-ui';\nimport { Group } from '@visx/group';\nimport Pie from '@visx/shape/lib/shapes/Pie';\nimport { Slice } from './Slice';\nimport ChartSelector from '../util/ChartSelector';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { useRef, useEffect, useMemo, useState } from 'react';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { TextSlice } from './TextSlice';\nimport { spacing } from '@apia/theme';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nexport type TPieChartEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst PieChart = ({\n // margin = { top: 20, left: 100, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const [chartData, setChartData] = useState<{\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n }>(\n {} as {\n coordinate: TApiaChartCoordinate | TApiaChartCoordinate[];\n color: string;\n name: string;\n },\n );\n let innerWidth =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n let innerHeight =\n chart.ratio.width > chart.ratio.height\n ? chart.ratio.width\n : chart.ratio.height;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const piezas = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const [currentPie, setCurrentPie] = useState('0');\n useEffect(() => {\n setChartData(piezas[(currentPie as unknown as number) ?? 0]);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [currentPie]);\n\n const centerY = useMemo(() => {\n return innerHeight / 2.5;\n }, [innerHeight]);\n const centerX = useMemo(() => {\n return innerWidth / 2.5;\n }, [innerWidth]);\n const top = centerY;\n const left = centerX;\n\n const getValue = (d: TApiaChartCoordinate) =>\n Number(d.value) === 0 &&\n piezas.length === 1 &&\n arrayOrArray(piezas.map((p) => p.coordinate)[0]).length === 1\n ? 100\n : Number(d.value);\n const radius = Math.min(innerHeight, innerWidth) / 2.5;\n const piecesNames = piezas.map((piece) => {\n return piece.name;\n });\n const styles = useChartStyles(chart.colorSchema);\n\n const colorsArray = styles.schema;\n const names = arrayOrArray(arrayOrArray(chart.dataSets.data)[0].sets).map(\n (coord) => {\n return coord.key;\n },\n );\n const colorReference: TChartReference = names.map((name, index) => {\n return {\n title: name,\n color: getBarColor(arrayOrArray(colorsArray), index),\n };\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const previousPaths = useRef<(string | null)[]>([]);\n return (\n <>\n {piezas.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n <ChartSelector\n chartId={chartId}\n pieces={piecesNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n <Box\n ref={boxRef}\n key={chartData.name}\n className={`${className ? className : ''} ${chartId}`}\n sx={{ textAlign: 'center', pb: spacing(5) }}\n >\n <svg\n ref={elementRef}\n height={radius * 2}\n width={radius * 2}\n className={`_${chartId} chart__svg`}\n >\n <Group top={top ?? 0} left={left ?? 0}>\n <Pie\n data={arrayOrArray(chartData.coordinate)}\n pieValue={getValue}\n pieSort={null}\n outerRadius={radius}\n >\n {(pie) => {\n const paths = arrayOrArray(pie.arcs).map((arc) => {\n return pie.path(arc);\n });\n const result = pie.arcs.map((arc) => {\n const name = arc.data;\n\n const arcPath = pie.path(arc);\n return (\n <Slice\n arc={arc}\n arcPath={arcPath}\n chart={chart}\n key={`${name.key}_${name.value}`}\n actualColor={\n colorReference.find((color) => {\n return color.title === name.key;\n })?.color ?? ''\n }\n />\n );\n });\n previousPaths.current = paths;\n\n return result;\n }}\n </Pie>\n <Pie\n data={arrayOrArray(chartData.coordinate)}\n pieValue={getValue}\n pieSort={null}\n outerRadius={radius}\n >\n {(pie) => {\n return pie.arcs.map((arc) => {\n const name = arc.data;\n\n const angle = (arc.startAngle - Math.PI + arc.endAngle) / 2;\n\n const x = Math.cos(angle) * (radius * 0.75);\n\n const y = Math.sin(angle) * (radius * 0.75);\n\n return (\n <g key={`arc-${name.key}-${name.value}`}>\n <TextSlice\n arc={arc}\n chart={chart}\n dy=\"0.33em\"\n x={x}\n y={y}\n />\n </g>\n );\n });\n }}\n </Pie>\n </Group>\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer\n id={chartId}\n containerClassName=\"legendContainer\"\n references={colorReference}\n />\n )}\n </>\n );\n};\n\nexport { PieChart };\n","import tinycolor from 'tinycolor2';\nimport { BarGroup, BarGroupBar } from '@visx/shape/lib/types';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { Box } from 'theme-ui';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './VerticalBars';\nimport { useTooltip } from '@apia/components';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents } from '../ChartRenderer';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroup<string>;\n parsedData: IParsedColumn[];\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>{parsedData[barGroup.index].columnName}</strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>{bar.key}</div>\n </>\n ),\n });\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n }\n },\n });\n const { chartId } = useContext(ChartContext);\n\n return (\n <g>\n <text\n x={bar.x + bar.width / 2}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"middle\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n\n <Box\n as=\"rect\"\n className=\"chart__barRect\"\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n }\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point) return;\n\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, '');\n }\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"height\"\n from={0}\n to={bar.height}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n <animate\n attributeName=\"y\"\n from={bar.y + bar.height}\n to={bar.y}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n","import { uniqueId } from 'lodash';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { useLayoutEffect, useMemo } from 'react';\nimport { Box } from 'theme-ui';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroup } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { usePanelParametersSelector } from '@apia/dashboard';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Bar } from './Bar';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getXValue = (d: IParsedColumn) => d.columnName;\n\nexport type TVerticalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst VerticalBars = ({\n margin = { top: 20, left: 100, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const styles = useChartStyles(chart.colorSchema);\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const xScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: parsedData.map(getXValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, xScale.bandwidth()],\n });\n\n const yScaleLog = scaleLog<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const yScaleLine = scaleLinear<number>({\n range: [\n innerHeight,\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const parameters = usePanelParametersSelector((global) => {\n return global;\n });\n // const hideLegendsColors = arrayOrArray(chart.dataSets.data).some((data) => {\n // return arrayOrArray(data.sets).some(\n // (set) => set.color !== undefined && set.color !== '',\n // );\n // });\n\n const scale = parameters.PRMT_CHART_SCALE;\n\n const isLogScale = scale === '0';\n\n const yScale = useMemo(() => {\n if (!isLogScale) {\n return yScaleLine;\n }\n return yScaleLog;\n }, [isLogScale, yScaleLine, yScaleLog]);\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(styles.schema).length > 0\n ? getBarColor(arrayOrArray(styles.schema), index, isSingle)\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(styles.schema).length > 0\n ? getBarColor(arrayOrArray(styles.schema), index, isSingle)\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${className ?? ''} ${chart.title}`}\n sx={{\n overflow: 'hidden',\n }}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n >\n <BarGroup\n data={parsedData}\n keys={columnNames}\n height={innerHeight}\n x0={getXValue}\n x0Scale={xScale}\n x1Scale={columnGroupScale}\n yScale={yScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.x0}`}\n left={barGroup.x0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroup>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{\n className: 'tickLabel',\n }}\n labelOffset={50}\n />\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer\n id={chartId}\n containerClassName=\"legendContainer\"\n references={\n // hideLegendsColors\n // ? colorReference.map((ref) => {\n // return { ...ref, color: 'transparent' };\n // })\n colorReference\n }\n />\n )}\n </>\n );\n};\n\nexport { VerticalBars };\n","// import { useTooltip } from '@apia/components';\n// import { useMemo } from 'react';\nimport { Fragment } from 'theme-ui/jsx-runtime';\nimport tinycolor from 'tinycolor2';\nimport { TApiaChartColumn, TApiaChartCoordinate } from '../types';\n\nexport const Node = ({\n currentCircle,\n innerKey,\n cx,\n cy,\n // coordinate,\n color,\n setCurrentCircle,\n}: // column,\n{\n currentCircle: string[];\n innerKey: string;\n cx: number;\n cy: number;\n coordinate: TApiaChartCoordinate;\n color: string;\n setCurrentCircle: (value: React.SetStateAction<string[]>) => void;\n column: TApiaChartColumn;\n}) => {\n return (\n <Fragment key={innerKey}>\n {currentCircle.includes(innerKey) && (\n <circle\n r={6}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).saturate(25).toHex()}`}\n fill={`#${tinycolor(color).saturate(25).toHex()}`}\n />\n )}\n <circle\n r={3}\n cx={cx}\n cy={cy}\n stroke={`#${tinycolor(color).darken(15).toHex()}`}\n fill={`#${tinycolor(color).darken(15).toHex()}`}\n />\n <circle\n r={10}\n cx={cx}\n cy={cy}\n stroke=\"transparent\"\n fill=\"transparent\"\n onMouseEnter={() => {\n setCurrentCircle([innerKey]);\n }}\n onMouseLeave={() => {\n setCurrentCircle([]);\n }}\n style={{ cursor: 'pointer' }}\n />\n </Fragment>\n );\n};\n","import {\n arrayOrArray,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect, useEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box } from 'theme-ui';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport { uniqueId } from 'lodash';\nimport { Node } from './Node';\nimport { useTooltip } from '@apia/components';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const columns = arrayOrArray(chart.dataSets?.data);\n const data = columns.map((column) => column.sets);\n const allData = data.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n columns,\n xScale: scaleOrdinal<string, number>({\n domain: arrayOrArray(columns[0].sets).map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n min(allData, getY) ?? 0 < 0 ? min(allData, getY) ?? 0 : 0,\n max(allData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n min(allData, getY) ?? 1 > 0 ? min(allData, getY) ?? 1 : 1,\n max(allData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle) {\n effectiveMargin.left = 50;\n }\n let innerWidth = chart.ratio.width;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { columns, xScale, yScale, yScaleLog } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(columns[0].sets);\n const coordinatesArray = columns.map((col) => {\n return col.sets;\n });\n const step = innerWidth / coordinates.length;\n\n xScale.range(\n coordinates.map((_, i) => {\n if (i === 0) {\n return effectiveMargin.left;\n }\n return i * step + effectiveMargin.left;\n }),\n );\n\n yScale.range([\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom) / 2,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n const [nodes, setNodes] = useState<TChartNode[]>([]);\n useEffect(() => {\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = columns.map((column) => {\n return column.name;\n });\n const nodesData = addNameToProps(columnNames, coords, coordinates.length);\n setNodes(nodesData);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(styles.schema).length > 0\n ? getBarColor(arrayOrArray(styles.schema), index, isSingle)\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = setsWithColor.map((column) => {\n return {\n color: column.columnColor ?? '',\n title: column.returnColumnsArray[0].columnName,\n };\n });\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const { open } = useTooltip({\n children: nearNodesArray\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) => ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box key={`${node.columnName}_${node.xValue}_${node.yValue}`}>\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName + ' - ' + node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>{node.columnName}</strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>{node.xValue}</div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n });\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n\n return (\n <>\n <Box id={id} ref={boxRef}>\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX = ev.clientX;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = columns\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles.grid.stroke}\n strokeOpacity={styles.grid.opacity}\n />\n )}\n {columns.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n return (\n <g key={key}>\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n />\n <AxisBottom\n top={\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom) / 2\n }\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{\n className: 'tickLabel',\n }}\n labelOffset={50}\n />\n </svg>\n </Box>\n {colorReference.length > 1 && (\n <LegendContainer\n id={chartId}\n containerClassName=\"legendContainer\"\n references={colorReference}\n />\n )}\n </>\n );\n};\nexport { LineChart };\n","import { useTooltip } from '@apia/components';\nimport { Line } from '@visx/shape';\nimport { useMemo } from 'react';\nimport { TApiaChartDefinition } from '../types';\nimport tinycolor from 'tinycolor2';\nimport { Box } from 'theme-ui';\n\nconst WaterfallBar = ({\n width,\n height,\n x,\n y,\n fill,\n x1,\n lineY,\n x2,\n stroke,\n strokeDashArray,\n textX,\n textY,\n textContent,\n isLast,\n step,\n columnName,\n chart,\n}: {\n width: number;\n height: number;\n x: string | number;\n y: string | number;\n fill: string;\n x1: string | number;\n x2: string | number;\n lineY: string | number;\n stroke: string;\n strokeDashArray: string | number;\n textX: string | number;\n textY: string | number;\n textContent: string;\n isLast: boolean;\n step: {\n x: string;\n y: string;\n start: number;\n end: number;\n color: string;\n };\n columnName: string;\n chart: TApiaChartDefinition;\n}) => {\n const { open } = useTooltip({\n children: (\n <>\n <div\n style={{\n color: step.color,\n }}\n >\n <strong>{columnName}</strong>\n </div>\n {chart.showValues && <div>{step.y}</div>}\n <div>{step.x}</div>\n </>\n ),\n });\n\n return (\n <>\n <Box\n as={'rect'}\n sx={useMemo(() => {\n return {\n width: `${width}px`,\n height: `${height}px`,\n x: `${x}px`,\n y: `${y}px`,\n fill: `${fill}`,\n '&:hover': {\n fill: `#${tinycolor(fill).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms',\n };\n }, [fill, height, width, x, y])}\n onMouseEnter={(ev) => {\n open({\n attachToElement: () => ev.target as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }}\n onMouseLeave={() => {}}\n />\n\n {!isLast && (\n <Line\n x1={x1}\n x2={x2}\n y1={lineY}\n y2={lineY}\n stroke={stroke}\n strokeDasharray={strokeDashArray}\n />\n )}\n <text textAnchor=\"middle\" x={textX} y={textY}>\n {textContent}\n </text>\n </>\n );\n};\n\nexport { WaterfallBar };\n","import { Box } from 'theme-ui';\nimport { TChartRendererProps } from '../types';\nimport { arrayOrArray, usePanAndZoom } from '@apia/util';\nimport React, { useMemo, useLayoutEffect, useState } from 'react';\nimport { scaleBand, scaleLinear } from '@visx/scale';\nimport { extent } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { Group } from '@visx/group';\nimport { GridRows } from '@visx/grid';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { uniqueId } from 'lodash';\nimport ChartSelector from '../util/ChartSelector';\nimport { WaterfallBar } from './WaterfallBar';\nimport { LegendContainer } from '../util/LegendContainer';\n\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\ntype TDatum = { key: string; value: string };\n\nconst calculateWaterfallSteps = ({\n data,\n xAccessor,\n yAccessor,\n showFinal,\n colors,\n}: {\n data: TDatum[];\n xAccessor: (d: TDatum) => string;\n yAccessor: (d: TDatum) => string;\n showFinal: boolean;\n colors: {\n positive: string;\n negative: string;\n total: string;\n stepConnector: string;\n };\n}) => {\n // Holds cumulative value\n let cumulativeTotal = 0;\n\n // Calculate bars for each data point\n const steps = data.map((datum) => {\n const xValue = xAccessor(datum);\n const yValue = yAccessor(datum);\n\n const prevTotal = cumulativeTotal;\n cumulativeTotal += Number(yValue);\n\n return {\n x: xValue,\n y: yValue,\n start: prevTotal,\n end: cumulativeTotal,\n color: Number(yValue) > 0 ? colors.positive : colors.negative,\n };\n });\n\n // Add final Total bar\n if (showFinal) {\n steps.push({\n x: 'Total',\n y: cumulativeTotal as unknown as string,\n start: 0,\n end: cumulativeTotal,\n color: colors.total,\n });\n }\n\n return steps;\n};\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\nexport const WaterfallBars = ({\n margin = { top: 20, left: 100, bottom: 150, right: 70 },\n chart: {\n waterfallColors = {\n positive: '#49b86f',\n negative: '#c92e5b',\n total: '#434857',\n stepConnector: '#888d94',\n },\n ...chart\n },\n className,\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const getXValue = (d: TDatum) => d.key;\n const getYValue = (d: TDatum) => d.value;\n\n const charts = arrayOrArray(chart.dataSets?.data)\n .filter((piece) => !!piece.sets)\n .map((piece) => {\n return {\n ...piece,\n coordinate: piece.sets,\n };\n });\n const [currentPie, setCurrentPie] = useState('0');\n const chartNames = charts.map((piece) => {\n return piece.name;\n });\n const steps = useMemo(\n () =>\n calculateWaterfallSteps({\n data: arrayOrArray(chart.dataSets.data)[currentPie as unknown as number]\n .sets as TDatum[],\n xAccessor: getXValue,\n yAccessor: getYValue,\n showFinal: chart.showTotal ?? true,\n colors: waterfallColors,\n }),\n [chart.dataSets.data, chart.showTotal, currentPie, waterfallColors],\n );\n\n // Build scales\n const padding = 0.2;\n\n const xScale = scaleBand({\n domain: steps.map((step) => step.x),\n padding,\n range: [0, innerWidth],\n });\n\n const yDomain = useMemo(() => {\n const values = steps.flatMap((step) => [step.start, step.end]);\n const [min, max] = extent<number>(values);\n return min != null && max != null ? [min - 5, max + 5] : undefined;\n }, [steps]);\n\n const yScale = scaleLinear({\n domain: yDomain,\n nice: true,\n range: [innerHeight, 0],\n });\n\n const id = useMemo(() => `VerticalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n return (\n <>\n {charts.length > 1 && (\n <Box className=\"chart__combo__wrapper\">\n <ChartSelector\n chartId={chartId}\n pieces={chartNames}\n className=\"chartSelectorCombo\"\n current={currentPie}\n setCurrent={setCurrentPie}\n />\n </Box>\n )}\n <Box id={id} className={className} ref={boxRef}>\n <svg\n height={chart.ratio.height}\n width={chart.ratio.width}\n ref={elementRef}\n >\n <Group left={effectiveMargin.left} top={effectiveMargin.top}>\n <GridRows scale={yScale} width={innerWidth} strokeDasharray=\"5\" />\n {steps.map((step, index) => {\n const x = xScale(step.x);\n const y = yScale(Math.max(step.start, step.end));\n\n if (x == null || y == null) {\n return null;\n }\n\n const barHeight = Math.abs(yScale(step.start) - yScale(step.end));\n\n const isLast = index === steps.length - 1;\n const linePadding = 2;\n const x1 = x + xScale.bandwidth() + linePadding;\n const x2 = x + xScale.bandwidth() / (1 - padding) - linePadding;\n const lineY = step.end < step.start ? y + barHeight : y;\n\n const labelOffset = 10;\n const labelY =\n yScale(step.end) +\n ((step.y as unknown as number) < 0\n ? labelOffset\n : -labelOffset);\n\n let currentYValue = 0;\n steps\n .filter((_, i) => {\n if ((chart.showTotal ?? true) && !steps[i + 1]) {\n return false;\n }\n return i <= index;\n })\n .forEach((step) => {\n currentYValue += Number(step.y);\n });\n\n return (\n <WaterfallBar\n chart={chart}\n columnName={chartNames[currentPie as unknown as number]}\n fill={step.color}\n height={barHeight}\n isLast={isLast}\n key={index}\n lineY={lineY}\n step={step}\n stroke={waterfallColors.stepConnector}\n strokeDashArray={2}\n textContent={\n chart.showTotal ?? true\n ? step.y\n : (currentYValue as unknown as string)\n }\n textX={x + xScale.bandwidth() / 2}\n textY={labelY + 5}\n width={xScale.bandwidth()}\n x={x}\n y={y}\n x1={x1}\n x2={x2}\n />\n );\n })}\n <AxisLeft\n label={''}\n scale={yScale}\n hideAxisLine\n hideTicks\n tickLabelProps={() => ({\n textAnchor: 'end',\n verticalAnchor: 'middle',\n })}\n />\n <AxisBottom\n scale={xScale}\n top={innerHeight}\n tickLabelProps={() => ({\n textAnchor: 'middle',\n verticalAnchor: 'middle',\n className: 'tickLabel',\n })}\n />\n </Group>\n </svg>\n </Box>\n <LegendContainer\n id={chartId}\n avoidEvent\n references={[\n {\n title: arrayOrArray(chart.dataSets.data)[\n currentPie as unknown as number\n ].name,\n color: 'transparent',\n },\n ]}\n />\n </>\n );\n};\n","import { TApiaChartDefinition, TChartRendererProps } from './types';\nimport React, { useMemo, RefAttributes } from 'react';\nimport { Box } from 'theme-ui';\nimport { getVariant, makeStyledComponent, spacing } from '@apia/theme';\nimport { HorizontalBars } from './horizontalBars/HorizontalBars';\nimport { PieChart } from './pie/Pie';\nimport { getIndex, makeImperativeComponent } from '@apia/util';\nimport { VerticalBars } from './verticalBars/VerticalBars';\nimport { ChartContext } from './ChartContext';\nimport { LineChart } from './linear/LineChart';\nimport { WaterfallBars } from './waterfallBars/WaterfallBars';\n\nconst frontColor = 'hsl(196, 37%, 13%)';\n\nfunction useMultipleRefs<T extends HTMLElement | null>(\n ...refs: React.MutableRefObject<T>[]\n) {\n return React.useCallback(\n function setRef(element: T) {\n refs.forEach((current) => {\n // eslint-disable-next-line no-param-reassign\n if (current) current.current = element;\n });\n },\n [refs],\n );\n}\n\nexport type TChartEvents = {\n highlight: string;\n};\n\nexport const [, chartMethods, ChartRenderer] = makeImperativeComponent<\n {\n currentChart: TApiaChartDefinition;\n chartConfig?: Partial<Omit<TApiaChartDefinition, 'columns'>>;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowZoom?: boolean;\n } & RefAttributes<HTMLElement>,\n TChartEvents\n>()({\n Component: makeStyledComponent(\n 'ChartRenderer',\n 'layout.charts',\n {\n red: {\n schema: 'schemas.red',\n },\n orange: {\n schema: 'schemas.orange',\n },\n green: {\n schema: 'schemas.green',\n },\n blue: {\n schema: 'schemas.blue',\n },\n violet: {\n schema: 'schemas.violet',\n },\n turquoise: {\n schema: 'schemas.turquoise',\n },\n yellow: {\n schema: 'schemas.yellow',\n },\n grey: {\n schema: 'schemas.grey',\n },\n ocean: {\n schema: 'schemas.ocean',\n },\n sunset: {\n schema: 'schemas.sunset',\n },\n common: {\n axis: {\n stroke: frontColor,\n title: frontColor,\n },\n schema: frontColor,\n background: 'hsl(200deg 20% 98%)',\n grid: {\n stroke: frontColor,\n opacity: '0.1',\n },\n toolTip: {\n backgroundColor: 'rgb(232, 241, 255)',\n border: '1px solid #07c',\n color: frontColor,\n padding: '.3rem .5rem',\n borderRadius: '3px',\n fontSize: '18px',\n boxShadow: '0 1px 2px rgba(33,33,33,0.2)',\n lineHeight: '1em',\n },\n },\n '.legendContainer': {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing(3),\n flexWrap: 'wrap',\n },\n\n '.chart__combo__wrapper': {\n position: 'absolute',\n },\n },\n // eslint-disable-next-line react/display-name\n React.forwardRef(\n (\n {\n currentChart,\n chartId,\n allowZoom,\n }: {\n currentChart: TApiaChartDefinition;\n chartProps?: Partial<TChartRendererProps>;\n allowScaleChange?: boolean;\n chartId: string;\n allowModal?: boolean;\n allowZoom?: boolean;\n },\n ref,\n ) => {\n const innerRef = React.useRef<HTMLElement | null>(null);\n const setRefs = useMultipleRefs(\n ref as React.MutableRefObject<HTMLElement>,\n innerRef,\n );\n\n const contextValue = useMemo(() => ({ chartId }), [chartId]);\n const CurrentChart = getIndex(\n [PieChart, HorizontalBars, VerticalBars, LineChart, WaterfallBars],\n [\n currentChart.chartType === 'pie2D',\n currentChart.chartType === 'barH2D',\n currentChart.chartType === 'barV2D',\n currentChart.chartType === 'linear',\n currentChart.chartType === 'waterfall',\n ],\n 0,\n );\n\n return (\n <ChartContext.Provider value={contextValue}>\n <Box\n ref={setRefs}\n className=\"chart__chartRenderer\"\n {...getVariant('layout.charts')}\n >\n <CurrentChart\n chart={currentChart}\n chartId={chartId}\n parentRef={innerRef as React.MutableRefObject<HTMLElement>}\n allowZoom={allowZoom}\n />\n </Box>\n </ChartContext.Provider>\n );\n },\n ),\n true,\n ),\n});\n","import { Box } from 'theme-ui';\nimport { useGauge } from 'use-gauge';\nimport { TApiaWidgetProps } from '../types';\n\nconst START_ANGLE = 0;\nconst END_ANGLE = 360;\n\nexport const TLight = ({\n addBorder = false,\n colorRanges,\n maxValue,\n minValue,\n currentValue,\n height,\n valueRanges,\n width,\n currentValueColor,\n currentValueFontSize,\n}: TApiaWidgetProps) => {\n const value = currentValue;\n const diameter = Math.min(height, width);\n const domainMax = maxValue ?? valueRanges[valueRanges.length - 1];\n const domainMin = minValue ?? valueRanges[0];\n const gauge = useGauge({\n domain: [domainMin, domainMax],\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n numTicks: 0,\n diameter: diameter,\n });\n\n function getColor(value: number) {\n const index = valueRanges.findIndex((range) => value < range);\n\n if (index === -1) {\n return colorRanges[0];\n }\n\n return colorRanges[index - 1] ?? colorRanges[index];\n }\n\n return (\n <Box>\n <svg {...gauge.getSVGProps()} viewBox=\"-325 -325 600 600\">\n <g id=\"arcs\">\n <path\n {...gauge.getArcProps({\n offset: 20,\n startAngle: START_ANGLE,\n endAngle: END_ANGLE,\n })}\n stroke={addBorder ? 'black' : 'transparent'}\n fill={getColor(value)}\n strokeLinecap=\"round\"\n strokeWidth={5}\n />\n </g>\n <g>\n <text\n textAnchor=\"middle\"\n style={{ fontSize: `${currentValueFontSize ?? 100}px` }}\n alignmentBaseline=\"central\"\n fill={currentValueColor}\n >\n {value}\n </text>\n </g>\n </svg>\n </Box>\n );\n};\n","import React from 'react';\nimport { Box } from 'theme-ui';\n// import { SpeedMeter } from './speedMeter/SpeedMeter';\n// import { Oxford } from './oxford/Oxford';\n// import { Counter } from './counter/Counter';\n// import { Ring } from './ring/Ring';\nimport { TLight } from './tLight/TLight';\n// import { Thermometer } from './thermometer/Thermometer';\n// import { Scale } from './scale/Scale';\nimport { TWidgetData } from './types';\nimport { arrayOrArray } from '@apia/util';\nimport tinycolor from 'tinycolor2';\n// import { Custom } from './custom/Custom';\n\nexport const WidgetContainer = () => {\n const mockData: TWidgetData = {\n addBorder: true,\n backgColor: 'white',\n currentValue: 1010,\n height: 400,\n width: 400,\n maxValue: 1050,\n minValue: 1000,\n noValueColor: '',\n pointerColor: 'blue',\n ringAnchor: 5,\n scaleFontSize: 20,\n valueColor: 'darkblue',\n valueDecimals: 1,\n valueFontSize: 50,\n valueType: '',\n widKpiType: 0,\n zones: [\n {\n color: 'blue',\n maximum: 1020,\n minimum: 1000,\n transparency: 20,\n },\n {\n color: 'purple',\n maximum: 1040,\n minimum: 1020,\n transparency: 50,\n },\n {\n color: 'red',\n maximum: 1050,\n minimum: 1040,\n transparency: 0,\n },\n ],\n };\n\n const valueRanges = Array.from(\n new Set(\n arrayOrArray(mockData.zones)\n .map((zone) => {\n return [zone.minimum, zone.maximum];\n })\n .flat()\n .sort((a, b) => a - b),\n ),\n );\n\n const colorRanges = arrayOrArray(mockData.zones)\n .map((zone) => {\n return tinycolor(zone.color)\n .setAlpha(1 - zone.transparency / 100)\n .toPercentageRgbString();\n })\n .flat();\n\n return (\n <Box>\n <TLight\n addBorder={mockData.addBorder}\n backgroundColor={mockData.backgColor}\n colorRanges={colorRanges}\n currentValue={mockData.currentValue}\n decimals={mockData.valueDecimals}\n currentValueColor={mockData.valueColor}\n currentValueFontSize={mockData.valueFontSize}\n height={mockData.height}\n maxValue={mockData.maxValue}\n minValue={mockData.minValue}\n pointerColor={mockData.pointerColor}\n scaleValuesSize={mockData.scaleFontSize}\n valueRanges={valueRanges}\n width={mockData.width}\n />\n </Box>\n );\n};\n"],"names":["Bar","_a","__spreadValues","adjustDimensions","__spreadProps","Fragment","step","value"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "author": "felipearzuaga <felipearax.2012@gmail.com>",
3
+ "homepage": "",
4
+ "license": "MIT",
5
+ "name": "@apia/charts",
6
+ "sideEffects": false,
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "version": "0.1.0",
10
+ "scripts": {
11
+ "build": "rollup -c rollup.config.esb.mjs",
12
+ "buildDev": "rollup -c rollup.config.esb.mjs --dev",
13
+ "watch": "rollup -c rollup.config.esb.mjs --dev --watch"
14
+ },
15
+ "devDependencies": {
16
+ "@rollup/plugin-commonjs": "^24.0.1",
17
+ "@rollup/plugin-json": "^6.0.0",
18
+ "@rollup/plugin-node-resolve": "^15.0.1",
19
+ "@rollup/plugin-terser": "^0.4.0",
20
+ "@rollup/plugin-typescript": "^11.0.0",
21
+ "esbuild": "^0.17.14",
22
+ "rollup": "^3.20.2",
23
+ "rollup-plugin-bundle-analyzer": "^1.6.6",
24
+ "rollup-plugin-dts": "^5.3.0",
25
+ "rollup-plugin-esbuild": "^5.0.0",
26
+ "typescript": "^4.9.5"
27
+ },
28
+ "peerDependencies": {
29
+ "@emotion/react": "^11.10.6",
30
+ "react": "^18.2.0",
31
+ "react-dom": "^18.2.0",
32
+ "theme-ui": "^0.15.5"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public",
36
+ "registry": "https://registry.npmjs.org/"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "http://corp-gitlab-01.domst.st.net/products/apia/ApiaNPMPackages.git",
41
+ "directory": "packages/charts"
42
+ },
43
+ "dependencies": {
44
+ "@apia/components": "^0.1.0",
45
+ "@apia/dashboard": "^0.1.0",
46
+ "@apia/icons": "^0.1.0",
47
+ "@apia/theme": "^0.1.0",
48
+ "@apia/util": "^0.1.0",
49
+ "@types/d3-array": "^3.0.5",
50
+ "@types/lodash": "^4.14.194",
51
+ "@visx/axis": "^3.1.0",
52
+ "@visx/curve": "^3.0.0",
53
+ "@visx/event": "^3.0.1",
54
+ "@visx/group": "^3.0.0",
55
+ "@visx/legend": "^3.0.0",
56
+ "@visx/marker": "^3.0.0",
57
+ "@visx/react-spring": "^3.1.0",
58
+ "@visx/scale": "^3.0.0",
59
+ "@visx/shape": "^3.0.0",
60
+ "@visx/tooltip": "^3.1.2",
61
+ "@visx/visx": "^3.1.2",
62
+ "d3-array": "^3.2.4",
63
+ "lodash": "^4.17.21",
64
+ "react-spring": "^9.7.1",
65
+ "tinycolor2": "^1.6.0",
66
+ "use-gauge": "^0.6.0"
67
+ },
68
+ "gitHead": "86196b99a03a2e33392a8b95b847b4d036271a48"
69
+ }