@semcore/d3-chart 17.0.0-prerelease.8 → 17.0.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.
- package/CHANGELOG.md +14 -1
- package/lib/cjs/Bubble.js +20 -15
- package/lib/cjs/Bubble.js.map +1 -1
- package/lib/cjs/a11y/PlotA11yView.js +5 -5
- package/lib/cjs/a11y/PlotA11yView.js.map +1 -1
- package/lib/cjs/component/Chart/AbstractChart.js +5 -17
- package/lib/cjs/component/Chart/AbstractChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.js +197 -57
- package/lib/cjs/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/cjs/component/Chart/CigaretteChart.type.js.map +1 -1
- package/lib/cjs/style/bubble.shadow.css +4 -0
- package/lib/cjs/utils.js +3 -2
- package/lib/cjs/utils.js.map +1 -1
- package/lib/es6/Bubble.js +20 -15
- package/lib/es6/Bubble.js.map +1 -1
- package/lib/es6/a11y/PlotA11yView.js +4 -3
- package/lib/es6/a11y/PlotA11yView.js.map +1 -1
- package/lib/es6/component/Chart/AbstractChart.js +5 -17
- package/lib/es6/component/Chart/AbstractChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.js +199 -59
- package/lib/es6/component/Chart/CigaretteChart.js.map +1 -1
- package/lib/es6/component/Chart/CigaretteChart.type.js.map +1 -1
- package/lib/es6/style/bubble.shadow.css +4 -0
- package/lib/es6/utils.js +3 -2
- package/lib/es6/utils.js.map +1 -1
- package/lib/esm/AnimatedClipPath.mjs +1 -1
- package/lib/esm/Area.mjs +2 -3
- package/lib/esm/Axis.mjs +4 -7
- package/lib/esm/Bar.mjs +1 -2
- package/lib/esm/Bubble.mjs +24 -21
- package/lib/esm/CompactHorizontalBar.mjs +4 -4
- package/lib/esm/Donut.mjs +5 -4
- package/lib/esm/Dots.mjs +1 -2
- package/lib/esm/HorizontalBar.mjs +1 -2
- package/lib/esm/Hover.mjs +2 -3
- package/lib/esm/Line.mjs +2 -3
- package/lib/esm/Pattern.mjs +6 -7
- package/lib/esm/Plot.mjs +3 -5
- package/lib/esm/Radar.mjs +7 -10
- package/lib/esm/RadialTree.mjs +17 -63
- package/lib/esm/Reference.mjs +0 -1
- package/lib/esm/ResponsiveContainer.mjs +3 -5
- package/lib/esm/ScatterPlot.mjs +2 -2
- package/lib/esm/StackBar.mjs +2 -2
- package/lib/esm/StackedArea.mjs +2 -2
- package/lib/esm/Tooltip.mjs +5 -8
- package/lib/esm/Venn.mjs +3 -3
- package/lib/esm/a11y/DataAccessibilityTable.mjs +2 -4
- package/lib/esm/a11y/PlotA11yModule.mjs +2 -2
- package/lib/esm/a11y/PlotA11yView.mjs +11 -19
- package/lib/esm/a11y/focus.mjs +2 -2
- package/lib/esm/a11y/hints.mjs +3 -3
- package/lib/esm/a11y/insights.mjs +15 -20
- package/lib/esm/a11y/intl.mjs +1 -1
- package/lib/esm/a11y/locale.mjs +1 -2
- package/lib/esm/a11y/serialize.mjs +17 -17
- package/lib/esm/component/Chart/AbstractChart.mjs +20 -34
- package/lib/esm/component/Chart/AreaChart.mjs +5 -4
- package/lib/esm/component/Chart/BarChart.mjs +4 -3
- package/lib/esm/component/Chart/BubbleChart.mjs +8 -8
- package/lib/esm/component/Chart/CigaretteChart.mjs +204 -64
- package/lib/esm/component/Chart/CompactHorizontalBarChart.mjs +2 -1
- package/lib/esm/component/Chart/DonutChart.mjs +3 -2
- package/lib/esm/component/Chart/HistogramChart.mjs +5 -4
- package/lib/esm/component/Chart/LineChart.mjs +5 -4
- package/lib/esm/component/Chart/RadarChart.mjs +4 -5
- package/lib/esm/component/Chart/ScatterPlotChart.mjs +3 -2
- package/lib/esm/component/Chart/VennChart.mjs +3 -3
- package/lib/esm/component/ChartLegend/BaseLegend.mjs +9 -14
- package/lib/esm/component/ChartLegend/LegendFlex/LegendFlex.mjs +1 -2
- package/lib/esm/component/ChartLegend/LegendItem/LegendItem.mjs +1 -2
- package/lib/esm/component/ChartLegend/LegendTable/LegendTable.mjs +2 -4
- package/lib/esm/component/ChartLegend/index.mjs +2 -0
- package/lib/esm/component/Cigarette/Cigarette.mjs +1 -2
- package/lib/esm/component/StackGroupBar/StackGroupBar.mjs +2 -3
- package/lib/esm/createElement.mjs +1 -1
- package/lib/esm/index.mjs +1 -0
- package/lib/esm/style/bubble.shadow.css +4 -0
- package/lib/esm/utils.mjs +3 -3
- package/lib/types/a11y/PlotA11yView.d.ts +1 -1
- package/lib/types/component/Chart/AbstractChart.d.ts +4 -7
- package/lib/types/component/Chart/CigaretteChart.type.d.ts +7 -4
- package/package.json +17 -17
package/lib/es6/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":["EventEmitter","extent","bisector","scaleQuantize","scaleBand","scaleSqrt","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","paddingOuter","step","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","PlotEventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]);\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [min, max];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"utils.js","names":["EventEmitter","extent","bisector","scaleQuantize","scaleBand","scaleSqrt","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","paddingOuter","step","slice","reverse","definedNullData","x","y","plot","definedData","undefined","scaleOfBandwidth","bandwidth","minMax","data","key","d","getNullData","defined","name","reduce","acc","i","push","prev","next","defNext","find","length","defPrev","getIndexFromData","Array","isArray","bisect","center","index","findIndex","keys","Object","map","_key","item","interpolateValue","lastKeyIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","scaleToBand","band","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","line","split","append","createTextNode","display","body","textWidth","offsetWidth","textHeight","offsetHeight","remove","Math","max","idCounter","uniqueId","prefix","Symbol","getChartDefaultColorName","getBubbleChartValueScale","z","el","getScatterPlotRadius","valueKey","calculateBubbleDomain","miniestValue","min","maxestValue","pixelRatio","abs","valueScale","minValueShift","maxValueShift","floor","PlotEventEmitter"],"sources":["../../src/utils.ts"],"sourcesContent":["import EventEmitter from '@semcore/core/lib/utils/eventEmitter';\nimport { extent, bisector, type Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n type ScaleIdentity,\n type ScaleTime,\n type ScaleContinuousNumeric,\n type ScaleBand,\n type ScalePoint,\n type NumberValue,\n scaleBand,\n scaleSqrt,\n} from 'd3-scale';\nimport type React from 'react';\n\nexport const eventToPoint = (event: React.MouseEvent<HTMLElement>, svgRoot: SVGElement) => {\n const node = (event.currentTarget || event.target) as HTMLElement;\n const rect = svgRoot.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n};\n\ntype InvertableScale =\n | ScaleIdentity\n | ScaleBand<{}>\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if ('invert' in scale && scale.invert) return scale.invert(value);\n\n const range = scale.range() as [number, number];\n const domain = scale.domain();\n if ('paddingOuter' in scale) {\n range[0] += scale.paddingOuter() * scale.step();\n range[1] -= scale.paddingOuter() * scale.step();\n }\n\n return scaleQuantize()\n .domain((range[0] <= range[1] ? range : range.slice().reverse()) as NumberValue[])\n .range((range[0] <= range[1] ? domain : domain.slice().reverse()) as number[])(value);\n};\n\nexport const definedNullData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[y] !== null;\n\nexport const definedData = (x: number, y: number) => (plot: { [xOrY: number]: unknown }) =>\n plot[x] !== null && plot[x] !== undefined && plot[y] !== null && plot[y] !== undefined;\n\nexport const scaleOfBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale, value: number) =>\n scale.bandwidth ? scale(value)! + scale.bandwidth() / 2 : scale(value);\n\nexport const minMax = <\n Key extends string = string,\n Data extends { [key: string]: Numeric | null | undefined }[] = {\n [key: string]: Numeric | null | undefined;\n }[],\n>(\n data: Data,\n key: Key,\n): [min: Data[0][Key], max: Data[0][Key]] => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]) as any;\n }\n return extent(data, key) as any;\n};\n\nexport const getNullData = <\n Name extends string = string,\n Data extends { [name in Name]?: unknown | null } = {},\n>(\n data: Data[],\n defined: (data: Data) => boolean,\n name: Name,\n) =>\n data.reduce((acc, d, i, data) => {\n if (defined(d)) {\n acc.push({\n [name]: null,\n } as Data);\n } else {\n const prev = data[i - 1];\n const next = data[i + 1];\n\n if (i === 0) {\n const defNext = data.find(defined);\n acc.push({\n ...d,\n [name]: defNext ? defNext[name] : null,\n });\n }\n\n // prev\n if (prev && defined(prev)) {\n acc.push(prev);\n }\n\n // next\n if (next && defined(next)) {\n acc.push(next);\n }\n\n if (data.length - 1 === i) {\n const defPrev = data.slice().reverse().find(defined);\n acc.push({\n ...d,\n [name]: defPrev ? defPrev[name] : null,\n });\n }\n }\n return acc;\n }, [] as Data[]);\n\ntype IndexFromDataScale =\n | ScaleIdentity\n | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>\n | ScaleBand<{}>\n | ScalePoint<{}>;\nexport const getIndexFromData = <\n Key extends string,\n Data extends {\n [key in Key]: number;\n } = { [key in Key]: number },\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: Key,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function' && Array.isArray(data)) {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n } else if ('step' in scale && typeof scale.step !== 'undefined' && Array.isArray(data)) { // detect bar chart\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\n } else if ('invert' in scale && typeof scale.invert === 'function' && !Array.isArray(data)) { // detect cigarette chart\n const keys = Object.keys(data);\n const domain = keys.map((_key, index) => {\n return keys.slice(0, index).reduce((acc, item) => {\n if (data[item] !== interpolateValue) {\n acc = acc + data[item];\n }\n\n return acc;\n }, 0);\n });\n\n let key = null;\n\n const lastKeyIndex = keys.length - 1;\n\n if (value > domain[lastKeyIndex]) {\n key = keys[lastKeyIndex];\n } else {\n for (let i = 0; i < lastKeyIndex; i++) {\n if (i === 0 && value < domain[i]) {\n break;\n }\n\n if (value > domain[i] && value < domain[i + 1]) {\n key = keys[i];\n break;\n }\n }\n }\n\n return key;\n } else {\n // eslint-disable-next-line no-console\n console.warn('[d3-chart/utils/getIndexFromData] encountered incompatible scale type');\n return null;\n }\n};\n\nexport const roundedPath = (\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n tl = false,\n tr = false,\n bl = false,\n br = false,\n) => {\n let result = `M${x + r},${y}`;\n result += `h${w - 2 * r}`;\n if (tr) {\n result += `a${r},${r} 0 0 1 ${r},${r}`;\n } else {\n result += `h${r}`;\n result += `v${r}`;\n }\n result += `v${h - 2 * r}`;\n if (br) {\n result += `a${r},${r} 0 0 1 ${-r},${r}`;\n } else {\n result += `v${r}`;\n result += `h${-r}`;\n }\n result += `h${2 * r - w}`;\n if (bl) {\n result += `a${r},${r} 0 0 1 ${-r},${-r}`;\n } else {\n result += `h${-r}`;\n result += `v${-r}`;\n }\n result += `v${2 * r - h}`;\n if (tl) {\n result += `a${r},${r} 0 0 1 ${r},${-r}`;\n } else {\n result += `v${-r}`;\n result += `h${r}`;\n }\n result += 'z';\n return result;\n};\n\nexport const scaleToBand = (scale: ScaleBand<{}>) => {\n if ('bandwidth' in scale) {\n return scale;\n }\n\n const band = scaleBand()\n .range((scale as any).range())\n .domain((scale as any).domain());\n\n return band;\n};\n\nexport const memoize = <Func extends (...args: any[]) => any>(func: Func): Func => {\n const results: { [cacheKey: string]: any } = {};\n return ((...args: any[]) => {\n const argsKey = args.join(',');\n if (!results[argsKey]) {\n results[argsKey] = func(...args);\n }\n return results[argsKey];\n }) as Func;\n};\n\nexport const measureText = memoize((text: string, fontSize?: number) => {\n if (!text) return 0;\n\n const span = document.createElement('span');\n if (fontSize) {\n span.style.fontSize = `${fontSize}px`;\n }\n for (const line of text.split('\\n')) {\n span.append(document.createTextNode(line));\n span.append(document.createElement('br'));\n }\n span.style.display = 'inline-block';\n document.body.append(span);\n const textWidth = span.offsetWidth;\n const textHeight = span.offsetHeight;\n span.remove();\n return Math.max(textWidth, textHeight);\n});\n\nlet idCounter = 0;\nexport const uniqueId = (prefix = 'id-') => `${prefix}${idCounter++}`;\n\nexport const interpolateValue = Symbol('intergalactic-d3-chart-line-interpolate');\n\nexport const getChartDefaultColorName = (index: number) => {\n index++;\n if (index < 1) index = 1;\n if (index > 24) index %= 24;\n\n return `chart-palette-order-${index}`;\n};\n\nexport const getBubbleChartValueScale = (data: any[], key: string) => {\n const z = scaleSqrt()\n .domain([0, Math.max(...data.map((el) => el[key]))])\n .range([5.5, 50.5]); // min/max radius\n\n return z;\n};\n\nexport const getScatterPlotRadius = (valueKey?: string): number => {\n return valueKey !== undefined ? 12 : 5.5;\n};\n\ntype BubbleChartDataItem = {\n value: number;\n x: number;\n y: number;\n};\n\nexport const calculateBubbleDomain = (\n data: Array<BubbleChartDataItem>,\n key: 'x' | 'y',\n range: [number, number],\n): [min: number, max: number] => {\n const miniestValue = data.reduce(\n (acc, item) => {\n if (item[key] - item.value < acc.min) {\n acc.min = item[key] - item.value;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, min: data[0][key] - data[0].value },\n ).value;\n const maxestValue = data.reduce(\n (acc, item) => {\n if (item.value + item[key] > acc.max) {\n acc.max = item.value + item.x;\n acc.value = item.value;\n }\n return acc;\n },\n { value: data[0].value, max: data[0].value + data[0][key] },\n ).value;\n\n let [min, max] = minMax(data, key);\n\n const pixelRatio = Math.abs(max - min) / Math.abs(range[0] - range[1]);\n const valueScale = getBubbleChartValueScale(data, 'value');\n const minValueShift = valueScale(miniestValue) * pixelRatio;\n const maxValueShift = valueScale(maxestValue) * pixelRatio;\n min -= minValueShift * 2;\n max += maxValueShift * 2;\n\n return [Math.floor(min), Math.floor(max)];\n};\n\ntype CommonEvents = {\n setTooltipVisible: (visible: boolean) => void;\n setTooltipPosition: (x: number, y: number) => void;\n};\n\ntype Events = {\n [K in keyof CommonEvents as `${K}_${string}`]: CommonEvents[K];\n};\n\nexport const PlotEventEmitter = EventEmitter<Events>;\n"],"mappings":"AAAA,OAAOA,YAAY,MAAM,sCAAsC;AAC/D,SAASC,MAAM,EAAEC,QAAQ,QAAsB,UAAU;AACzD,SACEC,aAAa,EAObC,SAAS,EACTC,SAAS,QACJ,UAAU;AAGjB,OAAO,MAAMC,YAAY,GAAGA,CAACC,KAAoC,EAAEC,OAAmB,KAAK;EACzF,MAAMC,IAAI,GAAIF,KAAK,CAACG,aAAa,IAAIH,KAAK,CAACI,MAAsB;EACjE,MAAMC,IAAI,GAAGJ,OAAO,CAACK,qBAAqB,CAAC,CAAC;EAC5C,OAAO,CAACN,KAAK,CAACO,OAAO,GAAGF,IAAI,CAACG,IAAI,GAAGN,IAAI,CAACO,UAAU,EAAET,KAAK,CAACU,OAAO,GAAGL,IAAI,CAACM,GAAG,GAAGT,IAAI,CAACU,SAAS,CAAC;AACjG,CAAC;AAOD,OAAO,MAAMC,MAAM,GAAGA,CACpBC,KAAY,EACZC,KAAa,KACV;EACH,IAAI,QAAQ,IAAID,KAAK,IAAIA,KAAK,CAACD,MAAM,EAAE,OAAOC,KAAK,CAACD,MAAM,CAACE,KAAK,CAAC;EAEjE,MAAMC,KAAK,GAAGF,KAAK,CAACE,KAAK,CAAC,CAAqB;EAC/C,MAAMC,MAAM,GAAGH,KAAK,CAACG,MAAM,CAAC,CAAC;EAC7B,IAAI,cAAc,IAAIH,KAAK,EAAE;IAC3BE,KAAK,CAAC,CAAC,CAAC,IAAIF,KAAK,CAACI,YAAY,CAAC,CAAC,GAAGJ,KAAK,CAACK,IAAI,CAAC,CAAC;IAC/CH,KAAK,CAAC,CAAC,CAAC,IAAIF,KAAK,CAACI,YAAY,CAAC,CAAC,GAAGJ,KAAK,CAACK,IAAI,CAAC,CAAC;EACjD;EAEA,OAAOvB,aAAa,CAAC,CAAC,CACnBqB,MAAM,CAAED,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,GAAGA,KAAK,CAACI,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAmB,CAAC,CACjFL,KAAK,CAAEA,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,GAAGC,MAAM,GAAGA,MAAM,CAACG,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAc,CAAC,CAACN,KAAK,CAAC;AACzF,CAAC;AAED,OAAO,MAAMO,eAAe,GAAGA,CAACC,CAAS,EAAEC,CAAS,KAAMC,IAAiC,IACzFA,IAAI,CAACF,CAAC,CAAC,KAAK,IAAI,IAAIE,IAAI,CAACD,CAAC,CAAC,KAAK,IAAI;AAEtC,OAAO,MAAME,WAAW,GAAGA,CAACH,CAAS,EAAEC,CAAS,KAAMC,IAAiC,IACrFA,IAAI,CAACF,CAAC,CAAC,KAAK,IAAI,IAAIE,IAAI,CAACF,CAAC,CAAC,KAAKI,SAAS,IAAIF,IAAI,CAACD,CAAC,CAAC,KAAK,IAAI,IAAIC,IAAI,CAACD,CAAC,CAAC,KAAKG,SAAS;AAExF,OAAO,MAAMC,gBAAgB,GAAGA,CAA8Bd,KAAY,EAAEC,KAAa,KACvFD,KAAK,CAACe,SAAS,GAAGf,KAAK,CAACC,KAAK,CAAC,GAAID,KAAK,CAACe,SAAS,CAAC,CAAC,GAAG,CAAC,GAAGf,KAAK,CAACC,KAAK,CAAC;AAExE,OAAO,MAAMe,MAAM,GAAGA,CAMpBC,IAAU,EACVC,GAAQ,KACmC;EAC3C,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOtC,MAAM,CAACqC,IAAI,EAAGE,CAAC,IAAKA,CAAC,CAACD,GAAG,CAAC,CAAC;EACpC;EACA,OAAOtC,MAAM,CAACqC,IAAI,EAAEC,GAAG,CAAC;AAC1B,CAAC;AAED,OAAO,MAAME,WAAW,GAAGA,CAIzBH,IAAY,EACZI,OAAgC,EAChCC,IAAU,KAEVL,IAAI,CAACM,MAAM,CAAC,CAACC,GAAG,EAAEL,CAAC,EAAEM,CAAC,EAAER,IAAI,KAAK;EAC/B,IAAII,OAAO,CAACF,CAAC,CAAC,EAAE;IACdK,GAAG,CAACE,IAAI,CAAC;MACP,CAACJ,IAAI,GAAG;IACV,CAAS,CAAC;EACZ,CAAC,MAAM;IACL,MAAMK,IAAI,GAAGV,IAAI,CAACQ,CAAC,GAAG,CAAC,CAAC;IACxB,MAAMG,IAAI,GAAGX,IAAI,CAACQ,CAAC,GAAG,CAAC,CAAC;IAExB,IAAIA,CAAC,KAAK,CAAC,EAAE;MACX,MAAMI,OAAO,GAAGZ,IAAI,CAACa,IAAI,CAACT,OAAO,CAAC;MAClCG,GAAG,CAACE,IAAI,CAAC;QACP,GAAGP,CAAC;QACJ,CAACG,IAAI,GAAGO,OAAO,GAAGA,OAAO,CAACP,IAAI,CAAC,GAAG;MACpC,CAAC,CAAC;IACJ;;IAEA;IACA,IAAIK,IAAI,IAAIN,OAAO,CAACM,IAAI,CAAC,EAAE;MACzBH,GAAG,CAACE,IAAI,CAACC,IAAI,CAAC;IAChB;;IAEA;IACA,IAAIC,IAAI,IAAIP,OAAO,CAACO,IAAI,CAAC,EAAE;MACzBJ,GAAG,CAACE,IAAI,CAACE,IAAI,CAAC;IAChB;IAEA,IAAIX,IAAI,CAACc,MAAM,GAAG,CAAC,KAAKN,CAAC,EAAE;MACzB,MAAMO,OAAO,GAAGf,IAAI,CAACX,KAAK,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,CAACuB,IAAI,CAACT,OAAO,CAAC;MACpDG,GAAG,CAACE,IAAI,CAAC;QACP,GAAGP,CAAC;QACJ,CAACG,IAAI,GAAGU,OAAO,GAAGA,OAAO,CAACV,IAAI,CAAC,GAAG;MACpC,CAAC,CAAC;IACJ;EACF;EACA,OAAOE,GAAG;AACZ,CAAC,EAAE,EAAY,CAAC;AAQlB,OAAO,MAAMS,gBAAgB,GAAGA,CAO9BhB,IAAY,EACZjB,KAAY,EACZkB,GAAQ,EACRjB,KAAa,KACV;EACH;EACA,IAAI,QAAQ,IAAID,KAAK,IAAI,OAAOA,KAAK,CAACD,MAAM,KAAK,UAAU,IAAImC,KAAK,CAACC,OAAO,CAAClB,IAAI,CAAC,EAAE;IAClF,MAAMmB,MAAM,GAAGvD,QAAQ,CAAEsC,CAA4B,IAAKA,CAAC,CAACD,GAAG,CAAC,CAAC,CAACmB,MAAM;IACxE,OAAOD,MAAM,CAACnB,IAAI,EAAEhB,KAAK,CAAC;EAC5B,CAAC,MAAM,IAAI,MAAM,IAAID,KAAK,IAAI,OAAOA,KAAK,CAACK,IAAI,KAAK,WAAW,IAAI6B,KAAK,CAACC,OAAO,CAAClB,IAAI,CAAC,EAAE;IAAE;IACxF,MAAMqB,KAAK,GAAGrB,IAAI,CAACsB,SAAS,CAAEpB,CAAC,IAAKA,CAAC,CAACD,GAAG,CAAC,KAAKjB,KAAK,CAAC;IACrD,OAAOqC,KAAK,IAAI,CAAC,GAAGA,KAAK,GAAG,IAAI;EAClC,CAAC,MAAM,IAAI,QAAQ,IAAItC,KAAK,IAAI,OAAOA,KAAK,CAACD,MAAM,KAAK,UAAU,IAAI,CAACmC,KAAK,CAACC,OAAO,CAAClB,IAAI,CAAC,EAAE;IAAE;IAC5F,MAAMuB,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACvB,IAAI,CAAC;IAC9B,MAAMd,MAAM,GAAGqC,IAAI,CAACE,GAAG,CAAC,CAACC,IAAI,EAAEL,KAAK,KAAK;MACvC,OAAOE,IAAI,CAAClC,KAAK,CAAC,CAAC,EAAEgC,KAAK,CAAC,CAACf,MAAM,CAAC,CAACC,GAAG,EAAEoB,IAAI,KAAK;QAChD,IAAI3B,IAAI,CAAC2B,IAAI,CAAC,KAAKC,gBAAgB,EAAE;UACnCrB,GAAG,GAAGA,GAAG,GAAGP,IAAI,CAAC2B,IAAI,CAAC;QACxB;QAEA,OAAOpB,GAAG;MACZ,CAAC,EAAE,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,IAAIN,GAAG,GAAG,IAAI;IAEd,MAAM4B,YAAY,GAAGN,IAAI,CAACT,MAAM,GAAG,CAAC;IAEpC,IAAI9B,KAAK,GAAGE,MAAM,CAAC2C,YAAY,CAAC,EAAE;MAChC5B,GAAG,GAAGsB,IAAI,CAACM,YAAY,CAAC;IAC1B,CAAC,MAAM;MACL,KAAK,IAAIrB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqB,YAAY,EAAErB,CAAC,EAAE,EAAE;QACrC,IAAIA,CAAC,KAAK,CAAC,IAAIxB,KAAK,GAAGE,MAAM,CAACsB,CAAC,CAAC,EAAE;UAChC;QACF;QAEA,IAAIxB,KAAK,GAAGE,MAAM,CAACsB,CAAC,CAAC,IAAIxB,KAAK,GAAGE,MAAM,CAACsB,CAAC,GAAG,CAAC,CAAC,EAAE;UAC9CP,GAAG,GAAGsB,IAAI,CAACf,CAAC,CAAC;UACb;QACF;MACF;IACF;IAEA,OAAOP,GAAG;EACZ,CAAC,MAAM;IACL;IACA6B,OAAO,CAACC,IAAI,CAAC,uEAAuE,CAAC;IACrF,OAAO,IAAI;EACb;AACF,CAAC;AAED,OAAO,MAAMC,WAAW,GAAGA,CACzBxC,CAAS,EACTC,CAAS,EACTwC,CAAS,EACTC,CAAS,EACTC,CAAS,EACTC,EAAE,GAAG,KAAK,EACVC,EAAE,GAAG,KAAK,EACVC,EAAE,GAAG,KAAK,EACVC,EAAE,GAAG,KAAK,KACP;EACH,IAAIC,MAAM,GAAG,IAAIhD,CAAC,GAAG2C,CAAC,IAAI1C,CAAC,EAAE;EAC7B+C,MAAM,IAAI,IAAIP,CAAC,GAAG,CAAC,GAAGE,CAAC,EAAE;EACzB,IAAIE,EAAE,EAAE;IACNG,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAUA,CAAC,IAAIA,CAAC,EAAE;EACxC,CAAC,MAAM;IACLK,MAAM,IAAI,IAAIL,CAAC,EAAE;IACjBK,MAAM,IAAI,IAAIL,CAAC,EAAE;EACnB;EACAK,MAAM,IAAI,IAAIN,CAAC,GAAG,CAAC,GAAGC,CAAC,EAAE;EACzB,IAAII,EAAE,EAAE;IACNC,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAU,CAACA,CAAC,IAAIA,CAAC,EAAE;EACzC,CAAC,MAAM;IACLK,MAAM,IAAI,IAAIL,CAAC,EAAE;IACjBK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;EACpB;EACAK,MAAM,IAAI,IAAI,CAAC,GAAGL,CAAC,GAAGF,CAAC,EAAE;EACzB,IAAIK,EAAE,EAAE;IACNE,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAU,CAACA,CAAC,IAAI,CAACA,CAAC,EAAE;EAC1C,CAAC,MAAM;IACLK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;IAClBK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;EACpB;EACAK,MAAM,IAAI,IAAI,CAAC,GAAGL,CAAC,GAAGD,CAAC,EAAE;EACzB,IAAIE,EAAE,EAAE;IACNI,MAAM,IAAI,IAAIL,CAAC,IAAIA,CAAC,UAAUA,CAAC,IAAI,CAACA,CAAC,EAAE;EACzC,CAAC,MAAM;IACLK,MAAM,IAAI,IAAI,CAACL,CAAC,EAAE;IAClBK,MAAM,IAAI,IAAIL,CAAC,EAAE;EACnB;EACAK,MAAM,IAAI,GAAG;EACb,OAAOA,MAAM;AACf,CAAC;AAED,OAAO,MAAMC,WAAW,GAAI1D,KAAoB,IAAK;EACnD,IAAI,WAAW,IAAIA,KAAK,EAAE;IACxB,OAAOA,KAAK;EACd;EAEA,MAAM2D,IAAI,GAAG5E,SAAS,CAAC,CAAC,CACrBmB,KAAK,CAAEF,KAAK,CAASE,KAAK,CAAC,CAAC,CAAC,CAC7BC,MAAM,CAAEH,KAAK,CAASG,MAAM,CAAC,CAAC,CAAC;EAElC,OAAOwD,IAAI;AACb,CAAC;AAED,OAAO,MAAMC,OAAO,GAA0CC,IAAU,IAAW;EACjF,MAAMC,OAAoC,GAAG,CAAC,CAAC;EAC/C,OAAQ,CAAC,GAAGC,IAAW,KAAK;IAC1B,MAAMC,OAAO,GAAGD,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,CAACH,OAAO,CAACE,OAAO,CAAC,EAAE;MACrBF,OAAO,CAACE,OAAO,CAAC,GAAGH,IAAI,CAAC,GAAGE,IAAI,CAAC;IAClC;IACA,OAAOD,OAAO,CAACE,OAAO,CAAC;EACzB,CAAC;AACH,CAAC;AAED,OAAO,MAAME,WAAW,GAAGN,OAAO,CAAC,CAACO,IAAY,EAAEC,QAAiB,KAAK;EACtE,IAAI,CAACD,IAAI,EAAE,OAAO,CAAC;EAEnB,MAAME,IAAI,GAAGC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;EAC3C,IAAIH,QAAQ,EAAE;IACZC,IAAI,CAACG,KAAK,CAACJ,QAAQ,GAAG,GAAGA,QAAQ,IAAI;EACvC;EACA,KAAK,MAAMK,IAAI,IAAIN,IAAI,CAACO,KAAK,CAAC,IAAI,CAAC,EAAE;IACnCL,IAAI,CAACM,MAAM,CAACL,QAAQ,CAACM,cAAc,CAACH,IAAI,CAAC,CAAC;IAC1CJ,IAAI,CAACM,MAAM,CAACL,QAAQ,CAACC,aAAa,CAAC,IAAI,CAAC,CAAC;EAC3C;EACAF,IAAI,CAACG,KAAK,CAACK,OAAO,GAAG,cAAc;EACnCP,QAAQ,CAACQ,IAAI,CAACH,MAAM,CAACN,IAAI,CAAC;EAC1B,MAAMU,SAAS,GAAGV,IAAI,CAACW,WAAW;EAClC,MAAMC,UAAU,GAAGZ,IAAI,CAACa,YAAY;EACpCb,IAAI,CAACc,MAAM,CAAC,CAAC;EACb,OAAOC,IAAI,CAACC,GAAG,CAACN,SAAS,EAAEE,UAAU,CAAC;AACxC,CAAC,CAAC;AAEF,IAAIK,SAAS,GAAG,CAAC;AACjB,OAAO,MAAMC,QAAQ,GAAGA,CAACC,MAAM,GAAG,KAAK,KAAK,GAAGA,MAAM,GAAGF,SAAS,EAAE,EAAE;AAErE,OAAO,MAAMzC,gBAAgB,GAAG4C,MAAM,CAAC,yCAAyC,CAAC;AAEjF,OAAO,MAAMC,wBAAwB,GAAIpD,KAAa,IAAK;EACzDA,KAAK,EAAE;EACP,IAAIA,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC;EACxB,IAAIA,KAAK,GAAG,EAAE,EAAEA,KAAK,IAAI,EAAE;EAE3B,OAAO,uBAAuBA,KAAK,EAAE;AACvC,CAAC;AAED,OAAO,MAAMqD,wBAAwB,GAAGA,CAAC1E,IAAW,EAAEC,GAAW,KAAK;EACpE,MAAM0E,CAAC,GAAG5G,SAAS,CAAC,CAAC,CAClBmB,MAAM,CAAC,CAAC,CAAC,EAAEiF,IAAI,CAACC,GAAG,CAAC,GAAGpE,IAAI,CAACyB,GAAG,CAAEmD,EAAE,IAAKA,EAAE,CAAC3E,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACnDhB,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;;EAEvB,OAAO0F,CAAC;AACV,CAAC;AAED,OAAO,MAAME,oBAAoB,GAAIC,QAAiB,IAAa;EACjE,OAAOA,QAAQ,KAAKlF,SAAS,GAAG,EAAE,GAAG,GAAG;AAC1C,CAAC;AAQD,OAAO,MAAMmF,qBAAqB,GAAGA,CACnC/E,IAAgC,EAChCC,GAAc,EACdhB,KAAuB,KACQ;EAC/B,MAAM+F,YAAY,GAAGhF,IAAI,CAACM,MAAM,CAC9B,CAACC,GAAG,EAAEoB,IAAI,KAAK;IACb,IAAIA,IAAI,CAAC1B,GAAG,CAAC,GAAG0B,IAAI,CAAC3C,KAAK,GAAGuB,GAAG,CAAC0E,GAAG,EAAE;MACpC1E,GAAG,CAAC0E,GAAG,GAAGtD,IAAI,CAAC1B,GAAG,CAAC,GAAG0B,IAAI,CAAC3C,KAAK;MAChCuB,GAAG,CAACvB,KAAK,GAAG2C,IAAI,CAAC3C,KAAK;IACxB;IACA,OAAOuB,GAAG;EACZ,CAAC,EACD;IAAEvB,KAAK,EAAEgB,IAAI,CAAC,CAAC,CAAC,CAAChB,KAAK;IAAEiG,GAAG,EAAEjF,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG,CAAC,GAAGD,IAAI,CAAC,CAAC,CAAC,CAAChB;EAAM,CAC5D,CAAC,CAACA,KAAK;EACP,MAAMkG,WAAW,GAAGlF,IAAI,CAACM,MAAM,CAC7B,CAACC,GAAG,EAAEoB,IAAI,KAAK;IACb,IAAIA,IAAI,CAAC3C,KAAK,GAAG2C,IAAI,CAAC1B,GAAG,CAAC,GAAGM,GAAG,CAAC6D,GAAG,EAAE;MACpC7D,GAAG,CAAC6D,GAAG,GAAGzC,IAAI,CAAC3C,KAAK,GAAG2C,IAAI,CAACnC,CAAC;MAC7Be,GAAG,CAACvB,KAAK,GAAG2C,IAAI,CAAC3C,KAAK;IACxB;IACA,OAAOuB,GAAG;EACZ,CAAC,EACD;IAAEvB,KAAK,EAAEgB,IAAI,CAAC,CAAC,CAAC,CAAChB,KAAK;IAAEoF,GAAG,EAAEpE,IAAI,CAAC,CAAC,CAAC,CAAChB,KAAK,GAAGgB,IAAI,CAAC,CAAC,CAAC,CAACC,GAAG;EAAE,CAC5D,CAAC,CAACjB,KAAK;EAEP,IAAI,CAACiG,GAAG,EAAEb,GAAG,CAAC,GAAGrE,MAAM,CAACC,IAAI,EAAEC,GAAG,CAAC;EAElC,MAAMkF,UAAU,GAAGhB,IAAI,CAACiB,GAAG,CAAChB,GAAG,GAAGa,GAAG,CAAC,GAAGd,IAAI,CAACiB,GAAG,CAACnG,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAAC;EACtE,MAAMoG,UAAU,GAAGX,wBAAwB,CAAC1E,IAAI,EAAE,OAAO,CAAC;EAC1D,MAAMsF,aAAa,GAAGD,UAAU,CAACL,YAAY,CAAC,GAAGG,UAAU;EAC3D,MAAMI,aAAa,GAAGF,UAAU,CAACH,WAAW,CAAC,GAAGC,UAAU;EAC1DF,GAAG,IAAIK,aAAa,GAAG,CAAC;EACxBlB,GAAG,IAAImB,aAAa,GAAG,CAAC;EAExB,OAAO,CAACpB,IAAI,CAACqB,KAAK,CAACP,GAAG,CAAC,EAAEd,IAAI,CAACqB,KAAK,CAACpB,GAAG,CAAC,CAAC;AAC3C,CAAC;AAWD,OAAO,MAAMqB,gBAAgB,GAAG/H,YAAoB","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
3
|
-
import {
|
|
3
|
+
import { Component, createComponent } from "@semcore/core";
|
|
4
4
|
import propsForElement from "@semcore/core/lib/utils/propsForElement";
|
|
5
5
|
import React from "react";
|
|
6
6
|
class AnimatedClipPath extends Component {
|
package/lib/esm/Area.mjs
CHANGED
|
@@ -3,15 +3,14 @@ import { sstyled, Component } from "@semcore/core";
|
|
|
3
3
|
import findComponent from "@semcore/core/lib/utils/findComponent";
|
|
4
4
|
import uniqueIDEnhancement from "@semcore/core/lib/utils/uniqueID";
|
|
5
5
|
import { bisector } from "d3-array";
|
|
6
|
-
import { line,
|
|
6
|
+
import { line, curveLinear, area } from "d3-shape";
|
|
7
7
|
import React from "react";
|
|
8
8
|
import AnimatedClipPath from "./AnimatedClipPath.mjs";
|
|
9
9
|
import { SvgElement } from "./component/SvgElement.mjs";
|
|
10
10
|
import createElement from "./createElement.mjs";
|
|
11
11
|
import Dots from "./Dots.mjs";
|
|
12
12
|
import { PatternFill } from "./Pattern.mjs";
|
|
13
|
-
import { interpolateValue, getNullData, eventToPoint, invert,
|
|
14
|
-
/*!__reshadow-styles__:"./style/area.shadow.css"*/
|
|
13
|
+
import { interpolateValue, getNullData, definedNullData, eventToPoint, invert, definedData, scaleOfBandwidth } from "./utils.mjs";
|
|
15
14
|
const style = (
|
|
16
15
|
/*__reshadow_css_start__*/
|
|
17
16
|
(sstyled.insert(
|
package/lib/esm/Axis.mjs
CHANGED
|
@@ -4,7 +4,6 @@ import { sstyled, Component } from "@semcore/core";
|
|
|
4
4
|
import React, { useState, useEffect } from "react";
|
|
5
5
|
import createElement from "./createElement.mjs";
|
|
6
6
|
import { scaleOfBandwidth } from "./utils.mjs";
|
|
7
|
-
/*!__reshadow-styles__:"./style/axis.shadow.css"*/
|
|
8
7
|
const style = (
|
|
9
8
|
/*__reshadow_css_start__*/
|
|
10
9
|
(sstyled.insert(
|
|
@@ -31,8 +30,8 @@ const style = (
|
|
|
31
30
|
"_position_custom_1": "_position_custom_1_yb2p1_gg_"
|
|
32
31
|
})
|
|
33
32
|
);
|
|
34
|
-
const CUSTOM_0 = Symbol("custom_0");
|
|
35
|
-
const CUSTOM_1 = Symbol("custom_1");
|
|
33
|
+
const CUSTOM_0 = /* @__PURE__ */ Symbol("custom_0");
|
|
34
|
+
const CUSTOM_1 = /* @__PURE__ */ Symbol("custom_1");
|
|
36
35
|
const MAP_INDEX_SCALE_SYMBOL = {
|
|
37
36
|
0: CUSTOM_0,
|
|
38
37
|
1: CUSTOM_1
|
|
@@ -243,14 +242,13 @@ function measureTextWidth(rootRef, text, fontSize = 12) {
|
|
|
243
242
|
}
|
|
244
243
|
class AxisRoot extends Component {
|
|
245
244
|
get ticks() {
|
|
246
|
-
var _a, _b;
|
|
247
245
|
const {
|
|
248
246
|
ticks,
|
|
249
247
|
indexScale,
|
|
250
248
|
scale
|
|
251
249
|
} = this.asProps;
|
|
252
250
|
const scl = scale[indexScale];
|
|
253
|
-
return ticks ||
|
|
251
|
+
return ticks || scl.ticks?.() || scl.domain?.() || [];
|
|
254
252
|
}
|
|
255
253
|
getTitleProps() {
|
|
256
254
|
const {
|
|
@@ -304,7 +302,6 @@ _defineProperty(AxisRoot, "displayName", "Axis");
|
|
|
304
302
|
_defineProperty(AxisRoot, "style", style);
|
|
305
303
|
_defineProperty(AxisRoot, "defaultProps", {});
|
|
306
304
|
function Ticks(props) {
|
|
307
|
-
var _a, _b;
|
|
308
305
|
const {
|
|
309
306
|
Element: STick,
|
|
310
307
|
styles,
|
|
@@ -323,7 +320,7 @@ function Ticks(props) {
|
|
|
323
320
|
useEffect(() => {
|
|
324
321
|
if (rootRef.current) setRootRefElement(rootRef.current);
|
|
325
322
|
}, []);
|
|
326
|
-
const tickBandwidth =
|
|
323
|
+
const tickBandwidth = scale[indexScale]?.bandwidth?.();
|
|
327
324
|
const ticksWithLines = ticks.map((tick) => ({
|
|
328
325
|
tick,
|
|
329
326
|
lines: typeof tick === "string" && multiline && rootRefElement ? splitTextByWidth(rootRefElement, tick, tickBandwidth) : []
|
package/lib/esm/Bar.mjs
CHANGED
|
@@ -7,7 +7,6 @@ import AnimatedClipPath from "./AnimatedClipPath.mjs";
|
|
|
7
7
|
import createElement from "./createElement.mjs";
|
|
8
8
|
import { PatternFill } from "./Pattern.mjs";
|
|
9
9
|
import { scaleToBand, roundedPath } from "./utils.mjs";
|
|
10
|
-
/*!__reshadow-styles__:"./style/bar.shadow.css"*/
|
|
11
10
|
const style = (
|
|
12
11
|
/*__reshadow_css_start__*/
|
|
13
12
|
(sstyled.insert(
|
|
@@ -102,7 +101,7 @@ class BarRoot extends Component {
|
|
|
102
101
|
const width = Math.min(bandWidth, maxBarSize);
|
|
103
102
|
const barX = xScale(d[x]) + bandWidth / 2 - width / 2 + offset[0];
|
|
104
103
|
const barY = yScale(Math.max(d[y0] ?? 0, height <= hMin && d[y] > 0 ? 0 : d[y])) + offset[1] - calcPartBarY(d[y], hMin, height);
|
|
105
|
-
const handleClick = (event) => onClick
|
|
104
|
+
const handleClick = (event) => onClick?.(d, event, i, y);
|
|
106
105
|
const dSvg = getRect({
|
|
107
106
|
x: barX,
|
|
108
107
|
y: barY,
|
package/lib/esm/Bubble.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { sstyled,
|
|
2
|
+
import { sstyled, Component, assignProps } from "@semcore/core";
|
|
3
3
|
import { callAllEventHandlers } from "@semcore/core/lib/utils/assignProps";
|
|
4
4
|
import findComponent from "@semcore/core/lib/utils/findComponent";
|
|
5
5
|
import uniqueIDEnhancement from "@semcore/core/lib/utils/uniqueID";
|
|
@@ -10,28 +10,28 @@ import createElement from "./createElement.mjs";
|
|
|
10
10
|
import { PatternFill } from "./Pattern.mjs";
|
|
11
11
|
import Tooltip from "./Tooltip.mjs";
|
|
12
12
|
import { getBubbleChartValueScale, measureText } from "./utils.mjs";
|
|
13
|
-
/*!__reshadow-styles__:"./style/bubble.shadow.css"*/
|
|
14
13
|
const style = (
|
|
15
14
|
/*__reshadow_css_start__*/
|
|
16
15
|
(sstyled.insert(
|
|
17
16
|
/*__inner_css_start__*/
|
|
18
|
-
".
|
|
17
|
+
".___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}",
|
|
19
18
|
/*__inner_css_end__*/
|
|
20
|
-
"
|
|
19
|
+
"1e3ic_gg_"
|
|
21
20
|
), /*__reshadow_css_end__*/
|
|
22
21
|
{
|
|
23
|
-
"_visible_false": "
|
|
24
|
-
"__SBubble": "
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
22
|
+
"_visible_false": "_visible_false_1e3ic_gg_",
|
|
23
|
+
"__SBubble": "___SBubble_1e3ic_gg_",
|
|
24
|
+
"_clickable": "__clickable_1e3ic_gg_",
|
|
25
|
+
"_color": "__color_1e3ic_gg_",
|
|
26
|
+
"--color": "--color_1e3ic",
|
|
27
|
+
"_pattern": "__pattern_1e3ic_gg_",
|
|
28
|
+
"--pattern": "--pattern_1e3ic",
|
|
29
|
+
"_transparent": "__transparent_1e3ic_gg_",
|
|
30
|
+
"__SCenter": "___SCenter_1e3ic_gg_",
|
|
31
|
+
"__SLabel": "___SLabel_1e3ic_gg_",
|
|
32
|
+
"_position_right": "_position_right_1e3ic_gg_",
|
|
33
|
+
"_position_left": "_position_left_1e3ic_gg_",
|
|
34
|
+
"--duration": "--duration_1e3ic"
|
|
35
35
|
})
|
|
36
36
|
);
|
|
37
37
|
class BubbleRoot extends Component {
|
|
@@ -72,8 +72,7 @@ class BubbleRoot extends Component {
|
|
|
72
72
|
const selectRectNode = selectRect.node();
|
|
73
73
|
if (selectRectNode) {
|
|
74
74
|
selectRect.transition().duration(duration).attr("r", function(_, ind) {
|
|
75
|
-
|
|
76
|
-
return z((_a = data[ind]) == null ? void 0 : _a[value]);
|
|
75
|
+
return z(data[ind]?.[value]);
|
|
77
76
|
});
|
|
78
77
|
}
|
|
79
78
|
}
|
|
@@ -103,7 +102,7 @@ class BubbleRoot extends Component {
|
|
|
103
102
|
const {
|
|
104
103
|
onClick
|
|
105
104
|
} = this.asProps;
|
|
106
|
-
onClick
|
|
105
|
+
onClick?.(index, e);
|
|
107
106
|
};
|
|
108
107
|
}
|
|
109
108
|
getCircleProps() {
|
|
@@ -123,7 +122,8 @@ class BubbleRoot extends Component {
|
|
|
123
122
|
data,
|
|
124
123
|
transparent,
|
|
125
124
|
resolveColor,
|
|
126
|
-
patterns
|
|
125
|
+
patterns,
|
|
126
|
+
onClick
|
|
127
127
|
} = this.asProps;
|
|
128
128
|
return {
|
|
129
129
|
color,
|
|
@@ -143,6 +143,7 @@ class BubbleRoot extends Component {
|
|
|
143
143
|
resolveColor,
|
|
144
144
|
patterns,
|
|
145
145
|
bindHandlerTooltip: this.bindHandlerTooltip,
|
|
146
|
+
clickable: Boolean(onClick),
|
|
146
147
|
onClickCircleRoot: this.handlerOnClick.bind(this)
|
|
147
148
|
};
|
|
148
149
|
}
|
|
@@ -218,6 +219,7 @@ function BubbleCircle(props) {
|
|
|
218
219
|
bindHandlerTooltip,
|
|
219
220
|
Element,
|
|
220
221
|
visible = true,
|
|
222
|
+
clickable,
|
|
221
223
|
onClick,
|
|
222
224
|
onClickCircleRoot
|
|
223
225
|
} = props;
|
|
@@ -269,7 +271,8 @@ function BubbleCircle(props) {
|
|
|
269
271
|
"pattern": patterns ? `url(#${uid}-${index}-pattern)` : void 0,
|
|
270
272
|
"r": z(circleData[value]),
|
|
271
273
|
"use:duration": `${duration}ms`,
|
|
272
|
-
"transparent": transparent
|
|
274
|
+
"transparent": transparent,
|
|
275
|
+
"clickable": clickable || Boolean(onClick)
|
|
273
276
|
})), patterns && /* @__PURE__ */ React.createElement(PatternFill, _ref3.cn("PatternFill", {
|
|
274
277
|
"id": `${uid}-${index}-pattern`,
|
|
275
278
|
"patternKey": circleData[color],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { sstyled,
|
|
2
|
+
import { sstyled, Component, assignProps } from "@semcore/core";
|
|
3
3
|
import { Box } from "@semcore/base-components";
|
|
4
4
|
import { callAllEventHandlers } from "@semcore/core/lib/utils/assignProps";
|
|
5
5
|
import canUseDOM from "@semcore/core/lib/utils/canUseDOM";
|
|
@@ -10,8 +10,7 @@ import AnimatedClipPath from "./AnimatedClipPath.mjs";
|
|
|
10
10
|
import createElement from "./createElement.mjs";
|
|
11
11
|
import { PatternFill } from "./Pattern.mjs";
|
|
12
12
|
import Tooltip from "./Tooltip.mjs";
|
|
13
|
-
import {
|
|
14
|
-
/*!__reshadow-styles__:"./style/bar.shadow.css"*/
|
|
13
|
+
import { scaleToBand, roundedPath, eventToPoint } from "./utils.mjs";
|
|
15
14
|
const style = (
|
|
16
15
|
/*__reshadow_css_start__*/
|
|
17
16
|
(sstyled.insert(
|
|
@@ -334,7 +333,7 @@ function Bar(props) {
|
|
|
334
333
|
hide
|
|
335
334
|
} = props;
|
|
336
335
|
const onClickHandler = React.useCallback((event) => {
|
|
337
|
-
onClick
|
|
336
|
+
onClick?.(index, event);
|
|
338
337
|
}, [onClick, index]);
|
|
339
338
|
const contextValue = React.useMemo(() => ({
|
|
340
339
|
onClick: onClickHandler,
|
|
@@ -552,6 +551,7 @@ function CompactHorizontalBarTooltip(props) {
|
|
|
552
551
|
}, _ref4)
|
|
553
552
|
}));
|
|
554
553
|
}
|
|
554
|
+
;
|
|
555
555
|
const CompactHorizontalBar = createElement(CompactHorizontalBarRoot, {
|
|
556
556
|
Annotation,
|
|
557
557
|
Label,
|
package/lib/esm/Donut.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { sstyled,
|
|
2
|
+
import { sstyled, Component, assignProps } from "@semcore/core";
|
|
3
3
|
import { callAllEventHandlers } from "@semcore/core/lib/utils/assignProps";
|
|
4
4
|
import canUseDOM from "@semcore/core/lib/utils/canUseDOM";
|
|
5
5
|
import getOriginChildren from "@semcore/core/lib/utils/getOriginChildren";
|
|
@@ -12,7 +12,6 @@ import createElement from "./createElement.mjs";
|
|
|
12
12
|
import { PatternFill } from "./Pattern.mjs";
|
|
13
13
|
import Tooltip from "./Tooltip.mjs";
|
|
14
14
|
import { getChartDefaultColorName } from "./utils.mjs";
|
|
15
|
-
/*!__reshadow-styles__:"./style/donut.shadow.css"*/
|
|
16
15
|
const style = (
|
|
17
16
|
/*__reshadow_css_start__*/
|
|
18
17
|
(sstyled.insert(
|
|
@@ -32,7 +31,7 @@ const style = (
|
|
|
32
31
|
"__SLabel": "___SLabel_1s4vb_gg_"
|
|
33
32
|
})
|
|
34
33
|
);
|
|
35
|
-
const DEFAULT_INSTANCE = Symbol("DEFAULT_INSTANCE");
|
|
34
|
+
const DEFAULT_INSTANCE = /* @__PURE__ */ Symbol("DEFAULT_INSTANCE");
|
|
36
35
|
function transitionAnglePie({
|
|
37
36
|
selector,
|
|
38
37
|
duration,
|
|
@@ -334,7 +333,8 @@ _defineProperty(DonutRoot, "defaultProps", ({
|
|
|
334
333
|
}) => {
|
|
335
334
|
const d3Arc = arc().outerRadius(outerRadius || getOuterRadius({
|
|
336
335
|
size,
|
|
337
|
-
halfsize
|
|
336
|
+
halfsize,
|
|
337
|
+
outerRadius
|
|
338
338
|
})).innerRadius(innerRadius).padAngle(paddingAngle);
|
|
339
339
|
const d3ArcOut = arc().outerRadius((outerRadius || getOuterRadius({
|
|
340
340
|
size,
|
|
@@ -463,6 +463,7 @@ function DonutTooltip(props) {
|
|
|
463
463
|
}, _ref)
|
|
464
464
|
}));
|
|
465
465
|
}
|
|
466
|
+
;
|
|
466
467
|
const Donut = createElement(DonutRoot, {
|
|
467
468
|
Pie,
|
|
468
469
|
Label,
|
package/lib/esm/Dots.mjs
CHANGED
|
@@ -4,8 +4,7 @@ import { bisector } from "d3-array";
|
|
|
4
4
|
import React from "react";
|
|
5
5
|
import createElement from "./createElement.mjs";
|
|
6
6
|
import { getPatternSymbolSize, PatternSymbol } from "./Pattern.mjs";
|
|
7
|
-
import { interpolateValue, eventToPoint, invert
|
|
8
|
-
/*!__reshadow-styles__:"./style/dot.shadow.css"*/
|
|
7
|
+
import { getChartDefaultColorName, interpolateValue, eventToPoint, invert } from "./utils.mjs";
|
|
9
8
|
const style = (
|
|
10
9
|
/*__reshadow_css_start__*/
|
|
11
10
|
(sstyled.insert(
|
|
@@ -6,7 +6,6 @@ import AnimatedClipPath from "./AnimatedClipPath.mjs";
|
|
|
6
6
|
import createElement from "./createElement.mjs";
|
|
7
7
|
import { PatternFill } from "./Pattern.mjs";
|
|
8
8
|
import { scaleToBand, roundedPath } from "./utils.mjs";
|
|
9
|
-
/*!__reshadow-styles__:"./style/bar.shadow.css"*/
|
|
10
9
|
const style = (
|
|
11
10
|
/*__reshadow_css_start__*/
|
|
12
11
|
(sstyled.insert(
|
|
@@ -85,7 +84,7 @@ class HorizontalBarRoot extends Component {
|
|
|
85
84
|
const width = Number(d[x] - (d[x0] ?? 0)) === 0 ? 0 : Math.max(absWidth, wMin);
|
|
86
85
|
const barY = yScale(d[y]) + bandHeight / 2 - height / 2 + offset[1];
|
|
87
86
|
const barX = xScale(Math.min(d[x0] ?? 0, width <= wMin && d[x] < 0 ? 0 : d[x])) + offset[0] - calcPartBarX(d[x], wMin, width);
|
|
88
|
-
const handleClick = (event) => onClick
|
|
87
|
+
const handleClick = (event) => onClick?.(d, event, i, x);
|
|
89
88
|
const dSvg = getHorizontalRect({
|
|
90
89
|
x: barX,
|
|
91
90
|
y: barY,
|
package/lib/esm/Hover.mjs
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { sstyled,
|
|
2
|
+
import { sstyled, Component, assignProps } from "@semcore/core";
|
|
3
3
|
import canUseDOM from "@semcore/core/lib/utils/canUseDOM";
|
|
4
4
|
import { hasParent } from "@semcore/core/lib/utils/hasParent";
|
|
5
5
|
import trottle from "@semcore/core/lib/utils/rafTrottle";
|
|
6
6
|
import React from "react";
|
|
7
7
|
import createElement from "./createElement.mjs";
|
|
8
8
|
import Tooltip from "./Tooltip.mjs";
|
|
9
|
-
import {
|
|
10
|
-
/*!__reshadow-styles__:"./style/hover.shadow.css"*/
|
|
9
|
+
import { eventToPoint, invert, getIndexFromData, scaleOfBandwidth, scaleToBand } from "./utils.mjs";
|
|
11
10
|
const style = (
|
|
12
11
|
/*__reshadow_css_start__*/
|
|
13
12
|
(sstyled.insert(
|
package/lib/esm/Line.mjs
CHANGED
|
@@ -2,14 +2,13 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
|
2
2
|
import { sstyled, Component } from "@semcore/core";
|
|
3
3
|
import uniqueIDEnhancement, { useUID } from "@semcore/core/lib/utils/uniqueID";
|
|
4
4
|
import { bisector } from "d3-array";
|
|
5
|
-
import {
|
|
5
|
+
import { line, curveLinear, curveCardinal, area } from "d3-shape";
|
|
6
6
|
import React from "react";
|
|
7
7
|
import AnimatedClipPath from "./AnimatedClipPath.mjs";
|
|
8
8
|
import createElement from "./createElement.mjs";
|
|
9
9
|
import Dots from "./Dots.mjs";
|
|
10
10
|
import { resolvePatternDasharray } from "./Pattern.mjs";
|
|
11
|
-
import { interpolateValue,
|
|
12
|
-
/*!__reshadow-styles__:"./style/line.shadow.css"*/
|
|
11
|
+
import { interpolateValue, getNullData, definedNullData, eventToPoint, invert, getChartDefaultColorName, definedData, scaleOfBandwidth } from "./utils.mjs";
|
|
13
12
|
const style = (
|
|
14
13
|
/*__reshadow_css_start__*/
|
|
15
14
|
(sstyled.insert(
|
package/lib/esm/Pattern.mjs
CHANGED
|
@@ -483,9 +483,8 @@ const getPatternSymbolSize = ({
|
|
|
483
483
|
patternKey,
|
|
484
484
|
patterns
|
|
485
485
|
}) => {
|
|
486
|
-
var _a;
|
|
487
486
|
const patternData = resolvePattern(patternKey, patterns);
|
|
488
|
-
if (!
|
|
487
|
+
if (!patternData?.symbol?.size) return [10, 10];
|
|
489
488
|
return patternData.symbol.size;
|
|
490
489
|
};
|
|
491
490
|
const PatternSymbol = ({
|
|
@@ -496,10 +495,10 @@ const PatternSymbol = ({
|
|
|
496
495
|
}) => {
|
|
497
496
|
const DefaultSymbol = React.useMemo(() => {
|
|
498
497
|
const patternData = resolvePattern(patternKey, patterns);
|
|
499
|
-
const children = patternData
|
|
500
|
-
const viewBox = patternData
|
|
501
|
-
const width = patternData
|
|
502
|
-
const height = patternData
|
|
498
|
+
const children = patternData?.symbol.children;
|
|
499
|
+
const viewBox = patternData?.symbol.viewBox;
|
|
500
|
+
const width = patternData?.symbol.size[0];
|
|
501
|
+
const height = patternData?.symbol.size[1];
|
|
503
502
|
return (props2) => /* @__PURE__ */ React.createElement("svg", _extends({
|
|
504
503
|
fill: color,
|
|
505
504
|
x: "0",
|
|
@@ -516,7 +515,7 @@ const PatternSymbol = ({
|
|
|
516
515
|
};
|
|
517
516
|
const resolvePatternDasharray = (patternKey, patterns) => {
|
|
518
517
|
const pattern = resolvePattern(patternKey, patterns);
|
|
519
|
-
return pattern
|
|
518
|
+
return pattern?.dasharray;
|
|
520
519
|
};
|
|
521
520
|
export {
|
|
522
521
|
PatternFill,
|
package/lib/esm/Plot.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import {
|
|
2
|
+
import { sstyled, Component, assignProps, createComponent } from "@semcore/core";
|
|
3
3
|
import { Box } from "@semcore/base-components";
|
|
4
4
|
import i18nEnhance from "@semcore/core/lib/utils/enhances/i18nEnhance";
|
|
5
5
|
import resolveColorEnhance from "@semcore/core/lib/utils/enhances/resolveColorEnhance";
|
|
@@ -9,7 +9,6 @@ import { makeDataHintsContainer, makeDataHintsHandlers } from "./a11y/hints.mjs"
|
|
|
9
9
|
import { PlotA11yModule } from "./a11y/PlotA11yModule.mjs";
|
|
10
10
|
import { localizedMessages } from "./translations/__intergalactic-dynamic-locales.mjs";
|
|
11
11
|
import { uniqueId, eventToPoint } from "./utils.mjs";
|
|
12
|
-
/*!__reshadow-styles__:"./style/plot.shadow.css"*/
|
|
13
12
|
const style = (
|
|
14
13
|
/*__reshadow_css_start__*/
|
|
15
14
|
(sstyled.insert(
|
|
@@ -53,7 +52,6 @@ class PlotRoot extends Component {
|
|
|
53
52
|
this.eventEmitter = props.eventEmitter || new EventEmitter();
|
|
54
53
|
}
|
|
55
54
|
setContext() {
|
|
56
|
-
var _a, _b;
|
|
57
55
|
const {
|
|
58
56
|
scale,
|
|
59
57
|
data,
|
|
@@ -64,8 +62,8 @@ class PlotRoot extends Component {
|
|
|
64
62
|
patterns,
|
|
65
63
|
duration
|
|
66
64
|
} = this.asProps;
|
|
67
|
-
const yScaleDomain =
|
|
68
|
-
if (
|
|
65
|
+
const yScaleDomain = scale?.[1]?.domain?.();
|
|
66
|
+
if (yScaleDomain?.length && data?.length) {
|
|
69
67
|
this.dataHintsHandler.setPointsDensity(data.length / width, Math.abs(yScaleDomain[1] - yScaleDomain[0]) / height);
|
|
70
68
|
}
|
|
71
69
|
return {
|
package/lib/esm/Radar.mjs
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { sstyled,
|
|
2
|
+
import { sstyled, Component, assignProps } from "@semcore/core";
|
|
3
3
|
import canUseDOM from "@semcore/core/lib/utils/canUseDOM";
|
|
4
4
|
import getOriginChildren from "@semcore/core/lib/utils/getOriginChildren";
|
|
5
5
|
import trottle from "@semcore/core/lib/utils/rafTrottle";
|
|
6
6
|
import uniqueIDEnhancement from "@semcore/core/lib/utils/uniqueID";
|
|
7
7
|
import { polygonContains } from "d3-polygon";
|
|
8
|
-
import {
|
|
8
|
+
import { lineRadial, curveLinearClosed, arc, line } from "d3-shape";
|
|
9
9
|
import React, { cloneElement } from "react";
|
|
10
10
|
import createElement from "./createElement.mjs";
|
|
11
|
-
import { getPatternSymbolSize, PatternSymbol
|
|
11
|
+
import { PatternFill, getPatternSymbolSize, PatternSymbol } from "./Pattern.mjs";
|
|
12
12
|
import Tooltip from "./Tooltip.mjs";
|
|
13
|
-
import {
|
|
14
|
-
/*!__reshadow-styles__:"./style/radar.shadow.css"*/
|
|
13
|
+
import { measureText, getChartDefaultColorName, eventToPoint } from "./utils.mjs";
|
|
15
14
|
const style = (
|
|
16
15
|
/*__reshadow_css_start__*/
|
|
17
16
|
(sstyled.insert(
|
|
@@ -71,12 +70,11 @@ function getLabelPlacement(i, total, angleOffset) {
|
|
|
71
70
|
}
|
|
72
71
|
function computeTextWidth(texts, textSize, defaultWidth = 50, defaultHeight = 20) {
|
|
73
72
|
const widths = texts.map((text) => {
|
|
74
|
-
var _a, _b;
|
|
75
73
|
if (typeof text === "string") {
|
|
76
74
|
return measureText(text, textSize);
|
|
77
75
|
}
|
|
78
76
|
if (/* @__PURE__ */ React.isValidElement(text)) {
|
|
79
|
-
return Math.max(
|
|
77
|
+
return Math.max(text.props?.width || defaultWidth, text.props?.height || defaultHeight);
|
|
80
78
|
}
|
|
81
79
|
return defaultWidth;
|
|
82
80
|
});
|
|
@@ -506,8 +504,7 @@ class AxisRoot extends Component {
|
|
|
506
504
|
this.unsubscribeTooltipVisible = eventEmitter.subscribe("setTooltipRenderingProps", this.handleTooltipRenderingProps);
|
|
507
505
|
}
|
|
508
506
|
componentWillUnmount() {
|
|
509
|
-
|
|
510
|
-
(_a = this.unsubscribeTooltipVisible) == null ? void 0 : _a.call(this);
|
|
507
|
+
this.unsubscribeTooltipVisible?.();
|
|
511
508
|
}
|
|
512
509
|
render() {
|
|
513
510
|
var _ref7;
|
|
@@ -626,7 +623,7 @@ function AxisLabels(props) {
|
|
|
626
623
|
const {
|
|
627
624
|
width = 0,
|
|
628
625
|
height = 0
|
|
629
|
-
} =
|
|
626
|
+
} = category?.props ?? {};
|
|
630
627
|
const [xOffset, yOffset] = getLabelOffsetPosition(xDirection, yDirection, width, height);
|
|
631
628
|
return /* @__PURE__ */ cloneElement(category, {
|
|
632
629
|
key: i,
|