@semcore/d3-chart 2.2.0 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +113 -0
  3. package/lib/cjs/Area.js +9 -9
  4. package/lib/cjs/Area.js.map +1 -1
  5. package/lib/cjs/Axis.js +19 -17
  6. package/lib/cjs/Axis.js.map +1 -1
  7. package/lib/cjs/Bar.js +11 -11
  8. package/lib/cjs/Bar.js.map +1 -1
  9. package/lib/cjs/Bubble.js +12 -12
  10. package/lib/cjs/Bubble.js.map +1 -1
  11. package/lib/cjs/ClipPath.js +1 -1
  12. package/lib/cjs/ClipPath.js.map +1 -1
  13. package/lib/cjs/Donut.js +8 -8
  14. package/lib/cjs/Donut.js.map +1 -1
  15. package/lib/cjs/Dots.js +9 -9
  16. package/lib/cjs/Dots.js.map +1 -1
  17. package/lib/cjs/GroupBar.js +8 -8
  18. package/lib/cjs/GroupBar.js.map +1 -1
  19. package/lib/cjs/HorizontalBar.js +11 -11
  20. package/lib/cjs/HorizontalBar.js.map +1 -1
  21. package/lib/cjs/Hover.js +4 -4
  22. package/lib/cjs/Hover.js.map +1 -1
  23. package/lib/cjs/Line.js +8 -8
  24. package/lib/cjs/Line.js.map +1 -1
  25. package/lib/cjs/Plot.js +4 -4
  26. package/lib/cjs/Plot.js.map +1 -1
  27. package/lib/cjs/RadialTree.js +99 -59
  28. package/lib/cjs/RadialTree.js.map +1 -1
  29. package/lib/cjs/ReferenceLine.js +10 -10
  30. package/lib/cjs/ReferenceLine.js.map +1 -1
  31. package/lib/cjs/ResponsiveContainer.js +1 -1
  32. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  33. package/lib/cjs/ScatterPlot.js +7 -7
  34. package/lib/cjs/ScatterPlot.js.map +1 -1
  35. package/lib/cjs/StackBar.js +8 -8
  36. package/lib/cjs/StackBar.js.map +1 -1
  37. package/lib/cjs/StackedArea.js +8 -8
  38. package/lib/cjs/StackedArea.js.map +1 -1
  39. package/lib/cjs/Tooltip.js +15 -11
  40. package/lib/cjs/Tooltip.js.map +1 -1
  41. package/lib/cjs/Venn.js +9 -9
  42. package/lib/cjs/Venn.js.map +1 -1
  43. package/lib/cjs/color.js.map +1 -1
  44. package/lib/cjs/createElement.js +3 -2
  45. package/lib/cjs/createElement.js.map +1 -1
  46. package/lib/cjs/index.js.map +1 -1
  47. package/lib/cjs/style/radial-tree.shadow.css +0 -1
  48. package/lib/cjs/utils.js.map +1 -1
  49. package/lib/es6/Area.js +9 -9
  50. package/lib/es6/Area.js.map +1 -1
  51. package/lib/es6/Axis.js +19 -17
  52. package/lib/es6/Axis.js.map +1 -1
  53. package/lib/es6/Bar.js +11 -11
  54. package/lib/es6/Bar.js.map +1 -1
  55. package/lib/es6/Bubble.js +12 -12
  56. package/lib/es6/Bubble.js.map +1 -1
  57. package/lib/es6/ClipPath.js +1 -1
  58. package/lib/es6/ClipPath.js.map +1 -1
  59. package/lib/es6/Donut.js +8 -8
  60. package/lib/es6/Donut.js.map +1 -1
  61. package/lib/es6/Dots.js +9 -9
  62. package/lib/es6/Dots.js.map +1 -1
  63. package/lib/es6/GroupBar.js +8 -8
  64. package/lib/es6/GroupBar.js.map +1 -1
  65. package/lib/es6/HorizontalBar.js +11 -11
  66. package/lib/es6/HorizontalBar.js.map +1 -1
  67. package/lib/es6/Hover.js +4 -4
  68. package/lib/es6/Hover.js.map +1 -1
  69. package/lib/es6/Line.js +8 -8
  70. package/lib/es6/Line.js.map +1 -1
  71. package/lib/es6/Plot.js +4 -4
  72. package/lib/es6/Plot.js.map +1 -1
  73. package/lib/es6/RadialTree.js +99 -59
  74. package/lib/es6/RadialTree.js.map +1 -1
  75. package/lib/es6/ReferenceLine.js +10 -10
  76. package/lib/es6/ReferenceLine.js.map +1 -1
  77. package/lib/es6/ResponsiveContainer.js +1 -1
  78. package/lib/es6/ResponsiveContainer.js.map +1 -1
  79. package/lib/es6/ScatterPlot.js +7 -7
  80. package/lib/es6/ScatterPlot.js.map +1 -1
  81. package/lib/es6/StackBar.js +8 -8
  82. package/lib/es6/StackBar.js.map +1 -1
  83. package/lib/es6/StackedArea.js +8 -8
  84. package/lib/es6/StackedArea.js.map +1 -1
  85. package/lib/es6/Tooltip.js +15 -11
  86. package/lib/es6/Tooltip.js.map +1 -1
  87. package/lib/es6/Venn.js +9 -9
  88. package/lib/es6/Venn.js.map +1 -1
  89. package/lib/es6/color.js.map +1 -1
  90. package/lib/es6/createElement.js +3 -2
  91. package/lib/es6/createElement.js.map +1 -1
  92. package/lib/es6/index.js.map +1 -1
  93. package/lib/es6/style/radial-tree.shadow.css +0 -1
  94. package/lib/es6/utils.js.map +1 -1
  95. package/package.json +2 -2
  96. package/src/Area.jsx +0 -137
  97. package/src/Axis.jsx +0 -314
  98. package/src/Bar.jsx +0 -149
  99. package/src/Bubble.jsx +0 -165
  100. package/src/ClipPath.jsx +0 -47
  101. package/src/Donut.jsx +0 -319
  102. package/src/Dots.jsx +0 -97
  103. package/src/GroupBar.jsx +0 -76
  104. package/src/HorizontalBar.jsx +0 -135
  105. package/src/Hover.jsx +0 -153
  106. package/src/Line.jsx +0 -89
  107. package/src/Plot.jsx +0 -79
  108. package/src/RadialTree.tsx +0 -767
  109. package/src/ReferenceLine.jsx +0 -146
  110. package/src/ResponsiveContainer.jsx +0 -84
  111. package/src/ScatterPlot.jsx +0 -112
  112. package/src/StackBar.jsx +0 -105
  113. package/src/StackedArea.jsx +0 -65
  114. package/src/Tooltip.jsx +0 -145
  115. package/src/Venn.jsx +0 -114
  116. package/src/color.js +0 -21
  117. package/src/createElement.jsx +0 -135
  118. package/src/index.js +0 -27
  119. package/src/style/area.shadow.css +0 -37
  120. package/src/style/axis.shadow.css +0 -85
  121. package/src/style/bar.shadow.css +0 -21
  122. package/src/style/bubble.shadow.css +0 -45
  123. package/src/style/donut.shadow.css +0 -24
  124. package/src/style/dot.shadow.css +0 -29
  125. package/src/style/hover.shadow.css +0 -9
  126. package/src/style/line.shadow.css +0 -29
  127. package/src/style/plot.shadow.css +0 -6
  128. package/src/style/radial-tree.shadow.css +0 -34
  129. package/src/style/reference-line.shadow.css +0 -37
  130. package/src/style/scatterplot.shadow.css +0 -27
  131. package/src/style/tooltip.shadow.css +0 -36
  132. package/src/style/var.css +0 -125
  133. package/src/style/venn.shadow.css +0 -29
  134. package/src/types/Area.d.ts +0 -48
  135. package/src/types/Axis.d.ts +0 -64
  136. package/src/types/Bar.d.ts +0 -52
  137. package/src/types/Bubble.d.ts +0 -32
  138. package/src/types/ClipPath.d.ts +0 -26
  139. package/src/types/Donut.d.ts +0 -46
  140. package/src/types/GroupBar.d.ts +0 -20
  141. package/src/types/HorizontalBar.d.ts +0 -29
  142. package/src/types/Hover.d.ts +0 -15
  143. package/src/types/Line.d.ts +0 -50
  144. package/src/types/Plot.d.ts +0 -16
  145. package/src/types/ReferenceLine.d.ts +0 -31
  146. package/src/types/ResponsiveContainer.d.ts +0 -20
  147. package/src/types/ScatterPlot.d.ts +0 -27
  148. package/src/types/StackBar.d.ts +0 -26
  149. package/src/types/StackedArea.d.ts +0 -26
  150. package/src/types/Tooltip.d.ts +0 -33
  151. package/src/types/Venn.d.ts +0 -45
  152. package/src/types/context.d.ts +0 -6
  153. package/src/types/index.d.ts +0 -56
  154. package/src/utils.ts +0 -227
@@ -21,7 +21,6 @@ SCap {
21
21
  SLabel {
22
22
  fill: var(--color);
23
23
  cursor: var(--text-cursor);
24
- transform-origin: var(--transform-origin);
25
24
  }
26
25
  SRadian:hover SLabel {
27
26
  fill: var(--color-hovered);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils.ts"],"names":["extent","bisector","scaleQuantize","CONSTANT","VIRTUAL_ELEMENT","Symbol","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","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","bisect","center","step","index","findIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","getBandwidth","Math","abs","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","split","line","append","createTextNode","display","body","textWidth","offsetWidth","remove"],"mappings":"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","sourcesContent":["import { extent, bisector, Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n ScaleIdentity,\n ScaleTime,\n ScaleContinuousNumeric,\n ScaleBand,\n ScalePoint,\n NumberValue,\n} from 'd3-scale';\nimport React from 'react';\n\nconst CONSTANT = {\n VIRTUAL_ELEMENT: Symbol('VIRTUAL_ELEMENT'),\n} as const;\n\nexport { CONSTANT };\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 | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if (scale.invert) return scale.invert(value);\n\n const range = scale.range() as number[];\n const domain = scale.domain();\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 Iterable<{ [key in Key]: Numeric | null | undefined }> = Iterable<{\n [key in Key]: Numeric | null | undefined;\n }>,\n>(\n data: Data,\n key: Key,\n) => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]);\n }\n return extent(data, key);\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 Data extends {\n [key: string]: number;\n } = {},\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: string,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function') {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n }\n // detect bar chart\n else if ('step' in scale && typeof scale.step !== 'undefined') {\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\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 getBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale) => {\n if ('bandwidth' in scale) {\n return scale.bandwidth();\n }\n\n const range = scale.range();\n const domain = scale.domain();\n return Math.abs(range[range.length - 1] - range[0]) / domain.length;\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 span.remove();\n return textWidth;\n});\n"],"file":"utils.js"}
1
+ {"version":3,"file":"utils.js","names":["extent","bisector","scaleQuantize","CONSTANT","VIRTUAL_ELEMENT","Symbol","eventToPoint","event","svgRoot","node","currentTarget","target","rect","getBoundingClientRect","clientX","left","clientLeft","clientY","top","clientTop","invert","scale","value","range","domain","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","bisect","center","step","index","findIndex","console","warn","roundedPath","w","h","r","tl","tr","bl","br","result","getBandwidth","Math","abs","memoize","func","results","args","argsKey","join","measureText","text","fontSize","span","document","createElement","style","split","line","append","createTextNode","display","body","textWidth","offsetWidth","remove"],"sources":["../../src/utils.ts"],"sourcesContent":["import { extent, bisector, Numeric } from 'd3-array';\nimport {\n scaleQuantize,\n ScaleIdentity,\n ScaleTime,\n ScaleContinuousNumeric,\n ScaleBand,\n ScalePoint,\n NumberValue,\n} from 'd3-scale';\nimport React from 'react';\n\nconst CONSTANT = {\n VIRTUAL_ELEMENT: Symbol('VIRTUAL_ELEMENT'),\n} as const;\n\nexport { CONSTANT };\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 | ScaleTime<unknown, unknown>\n | ScaleContinuousNumeric<unknown, unknown>;\nexport const invert = <Scale extends InvertableScale = InvertableScale>(\n scale: Scale,\n value: number,\n) => {\n if (scale.invert) return scale.invert(value);\n\n const range = scale.range() as number[];\n const domain = scale.domain();\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 Iterable<{ [key in Key]: Numeric | null | undefined }> = Iterable<{\n [key in Key]: Numeric | null | undefined;\n }>,\n>(\n data: Data,\n key: Key,\n) => {\n if (typeof key === 'string') {\n return extent(data, (d) => d[key]);\n }\n return extent(data, key);\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 Data extends {\n [key: string]: number;\n } = {},\n Scale extends IndexFromDataScale = IndexFromDataScale,\n>(\n data: Data[],\n scale: Scale,\n key: string,\n value: number,\n) => {\n // detect line chart\n if ('invert' in scale && typeof scale.invert === 'function') {\n const bisect = bisector((d: { [key: string]: number }) => d[key]).center;\n return bisect(data, value);\n }\n // detect bar chart\n else if ('step' in scale && typeof scale.step !== 'undefined') {\n const index = data.findIndex((d) => d[key] === value);\n return index >= 0 ? index : null;\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 getBandwidth = <Scale extends ScaleBand<{}>>(scale: Scale) => {\n if ('bandwidth' in scale) {\n return scale.bandwidth();\n }\n\n const range = scale.range();\n const domain = scale.domain();\n return Math.abs(range[range.length - 1] - range[0]) / domain.length;\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 span.remove();\n return textWidth;\n});\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@semcore/d3-chart",
3
3
  "description": "SEMRush D3 Chart Component",
4
- "version": "2.2.0",
4
+ "version": "2.2.3",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
8
8
  "sideEffects": false,
9
- "author": "Roman Lysov <r.lysov@semrush.com>",
9
+ "author": "UI-kit team <ui-kit-team@semrush.com>",
10
10
  "license": "MIT",
11
11
  "scripts": {
12
12
  "build": "build --source=js,ts",
package/src/Area.jsx DELETED
@@ -1,137 +0,0 @@
1
- import React from 'react';
2
- import { area, curveLinear, line } from 'd3-shape';
3
- import Dots from './Dots';
4
- import { Component, sstyled } from '@semcore/core';
5
- import createElement from './createElement';
6
- import { definedData, scaleOfBandwidth, getNullData, definedNullData } from './utils';
7
- import ClipPath from './ClipPath';
8
- import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
9
- import findComponent from '@semcore/utils/lib/findComponent';
10
-
11
- import style from './style/area.shadow.css';
12
-
13
- class AreaRoot extends Component {
14
- static displayName = 'Area';
15
- static style = style;
16
- static enhance = [uniqueIDEnhancement()];
17
-
18
- static defaultProps = ({ x, y, y0, $rootProps, curve = curveLinear, scale }) => {
19
- const [xScale, yScale] = scale || $rootProps.scale;
20
- const yRange = yScale.range();
21
-
22
- return {
23
- d3: area()
24
- .defined(definedData(x, y))
25
- .curve(curve)
26
- .x((p) => scaleOfBandwidth(xScale, p[x]))
27
- .y0((p) => (p[y0] ? scaleOfBandwidth(yScale, p[y0]) : yRange[0]))
28
- .y1((p) => scaleOfBandwidth(yScale, p[y])),
29
- d3Line: line()
30
- .defined(definedData(x, y))
31
- .curve(curve)
32
- .x((p) => scaleOfBandwidth(xScale, p[x]))
33
- .y((p) => scaleOfBandwidth(yScale, p[y])),
34
- duration: 500,
35
- };
36
- };
37
-
38
- getDotsProps() {
39
- const { x, y, color, data, d3Line } = this.asProps;
40
-
41
- return {
42
- x,
43
- y,
44
- data,
45
- d3: d3Line,
46
- color,
47
- };
48
- }
49
-
50
- getNullProps() {
51
- const { x, y, color, data, d3Line } = this.asProps;
52
- return {
53
- data: getNullData(data, definedNullData(x, y), y),
54
- d3: d3Line,
55
- color,
56
- };
57
- }
58
-
59
- getLineProps() {
60
- const { duration, color, data, d3Line, uid } = this.asProps;
61
-
62
- return {
63
- uid,
64
- data,
65
- d3: d3Line,
66
- color,
67
- duration,
68
- };
69
- }
70
-
71
- render() {
72
- const SArea = this.Element;
73
- const SAreaLine = 'path';
74
- const { styles, hide, d3, d3Line, data, color, uid, size, duration, Children } = this.asProps;
75
- const advanceMode = !!findComponent(Children, [Area.Line.displayName]);
76
-
77
- return sstyled(styles)(
78
- <>
79
- {!advanceMode && (
80
- <SAreaLine
81
- clipPath={`url(#${uid})`}
82
- d={d3Line(data)}
83
- color={color}
84
- use:duration={`${duration}ms`}
85
- />
86
- )}
87
- <SArea
88
- clipPath={`url(#${uid})`}
89
- render="path"
90
- d={d3(data)}
91
- hide={hide}
92
- color={color}
93
- use:duration={`${duration}ms`}
94
- />
95
- {duration && (
96
- <ClipPath
97
- setAttributeTag={(rect) => {
98
- rect.setAttribute('width', size[0]);
99
- }}
100
- id={uid}
101
- x="0"
102
- y="0"
103
- width={0}
104
- height={size[1]}
105
- transition={`width ${duration}ms ease-in-out`}
106
- />
107
- )}
108
- </>,
109
- );
110
- }
111
- }
112
-
113
- function Line(props) {
114
- const { Element: SAreaLine, styles, d3, data, color, duration, uid } = props;
115
- return sstyled(styles)(
116
- <SAreaLine
117
- render="path"
118
- clipPath={`url(#${uid})`}
119
- d={d3(data)}
120
- color={color}
121
- use:duration={`${duration}ms`}
122
- />,
123
- );
124
- }
125
-
126
- function Null(props) {
127
- const { Element: SNull, styles, d3, data, hide, color } = props;
128
- return sstyled(styles)(<SNull render="path" d={d3(data)} hide={hide} color={color} />);
129
- }
130
-
131
- const Area = createElement(AreaRoot, {
132
- Dots,
133
- Null,
134
- Line,
135
- });
136
-
137
- export default Area;
package/src/Axis.jsx DELETED
@@ -1,314 +0,0 @@
1
- import React from 'react';
2
- import { Component, sstyled } from '@semcore/core';
3
- import createElement from './createElement';
4
- import { scaleOfBandwidth } from './utils';
5
-
6
- import style from './style/axis.shadow.css';
7
-
8
- const CUSTOM_0 = Symbol('custom_0');
9
- const CUSTOM_1 = Symbol('custom_1');
10
-
11
- const MAP_INDEX_SCALE_SYMBOL = {
12
- 0: CUSTOM_0,
13
- 1: CUSTOM_1,
14
- };
15
-
16
- const MAP_POSITION_REVERT = {
17
- top: 'bottom',
18
- right: 'left',
19
- bottom: 'top',
20
- left: 'right',
21
- };
22
-
23
- const MAP_POSITION_AXIS = {
24
- top: ([xScale, yScale]) => {
25
- const xRange = xScale.range();
26
- const yRange = yScale.range();
27
- return {
28
- x1: xRange[0],
29
- y1: yRange[1],
30
- x2: xRange[1],
31
- y2: yRange[1],
32
- };
33
- },
34
- bottom: ([xScale, yScale]) => {
35
- const xRange = xScale.range();
36
- const yRange = yScale.range();
37
- return {
38
- x1: xRange[0],
39
- y1: yRange[0],
40
- x2: xRange[1],
41
- y2: yRange[0],
42
- };
43
- },
44
- right: ([xScale, yScale]) => {
45
- const xRange = xScale.range();
46
- const yRange = yScale.range();
47
- return {
48
- x1: xRange[1],
49
- y1: yRange[0],
50
- x2: xRange[1],
51
- y2: yRange[1],
52
- };
53
- },
54
- left: ([xScale, yScale]) => {
55
- const xRange = xScale.range();
56
- const yRange = yScale.range();
57
- return {
58
- x1: xRange[0],
59
- y1: yRange[0],
60
- x2: xRange[0],
61
- y2: yRange[1],
62
- };
63
- },
64
- [CUSTOM_0]: ([xScale, yScale], pos) => {
65
- const xRange = xScale.range();
66
- return {
67
- x1: xRange[0],
68
- y1: scaleOfBandwidth(yScale, pos),
69
- x2: xRange[1],
70
- y2: scaleOfBandwidth(yScale, pos),
71
- };
72
- },
73
- [CUSTOM_1]: ([xScale, yScale], pos) => {
74
- const yRange = yScale.range();
75
- return {
76
- x1: scaleOfBandwidth(xScale, pos),
77
- y1: yRange[0],
78
- x2: scaleOfBandwidth(xScale, pos),
79
- y2: yRange[1],
80
- };
81
- },
82
- };
83
-
84
- const MAP_POSITION_TICK = {
85
- top: ([xScale, yScale], value) => {
86
- const yRange = yScale.range();
87
- return {
88
- x: scaleOfBandwidth(xScale, value),
89
- y: yRange[1],
90
- };
91
- },
92
- bottom: ([xScale, yScale], value) => {
93
- const yRange = yScale.range();
94
- return {
95
- x: scaleOfBandwidth(xScale, value),
96
- y: yRange[0],
97
- };
98
- },
99
- right: ([xScale, yScale], value) => {
100
- const xRange = xScale.range();
101
- return {
102
- x: xRange[1],
103
- y: scaleOfBandwidth(yScale, value),
104
- };
105
- },
106
- left: ([xScale, yScale], value) => {
107
- const xRange = xScale.range();
108
- return {
109
- x: xRange[0],
110
- y: scaleOfBandwidth(yScale, value),
111
- };
112
- },
113
- [CUSTOM_0]: ([xScale, yScale], value, pos) => {
114
- return {
115
- x: scaleOfBandwidth(xScale, value),
116
- y: scaleOfBandwidth(yScale, pos),
117
- };
118
- },
119
- [CUSTOM_1]: ([xScale, yScale], value, pos) => {
120
- return {
121
- x: scaleOfBandwidth(xScale, pos),
122
- y: scaleOfBandwidth(yScale, value),
123
- };
124
- },
125
- };
126
-
127
- const MAP_POSITION_GRID = {
128
- 0: ([xScale, yScale], value) => {
129
- const yRange = yScale.range();
130
- const x = scaleOfBandwidth(xScale, value);
131
- return {
132
- x1: x,
133
- y1: yRange[0],
134
- x2: x,
135
- y2: yRange[1],
136
- };
137
- },
138
- 1: ([xScale, yScale], value) => {
139
- const xRange = xScale.range();
140
- const y = scaleOfBandwidth(yScale, value);
141
- return {
142
- x1: xRange[0],
143
- y1: y,
144
- x2: xRange[1],
145
- y2: y,
146
- };
147
- },
148
- };
149
-
150
- const OFFSET_TITLE = 10;
151
- const MAP_POSITION_TITlE = {
152
- top: ([xScale]) => {
153
- const xRange = xScale.range();
154
- return {
155
- x: (xRange[1] + xRange[0]) / 2,
156
- y: OFFSET_TITLE,
157
- };
158
- },
159
- bottom: ([xScale], [, height]) => {
160
- const xRange = xScale.range();
161
- return {
162
- x: (xRange[1] + xRange[0]) / 2,
163
- y: height - OFFSET_TITLE,
164
- };
165
- },
166
- right: ([, yScale], [width]) => {
167
- const yRange = yScale.range();
168
- return {
169
- x: width - OFFSET_TITLE,
170
- y: (yRange[0] + yRange[1]) / 2,
171
- };
172
- },
173
- left: ([, yScale]) => {
174
- const yRange = yScale.range();
175
- return {
176
- x: OFFSET_TITLE,
177
- y: (yRange[0] + yRange[1]) / 2,
178
- };
179
- },
180
- };
181
-
182
- function renderValue(value) {
183
- if (value instanceof Date) {
184
- return value.toLocaleDateString();
185
- }
186
- return value;
187
- }
188
-
189
- class AxisRoot extends Component {
190
- static displayName = 'Axis';
191
-
192
- static style = style;
193
-
194
- get ticks() {
195
- const { ticks, indexScale, scale } = this.asProps;
196
- const scl = scale[indexScale];
197
- return ticks || (scl.ticks && scl.ticks()) || (scl.domain && scl.domain()) || [];
198
- }
199
-
200
- getTitleProps() {
201
- const { position } = this.asProps;
202
- return {
203
- position: MAP_POSITION_REVERT[position],
204
- };
205
- }
206
-
207
- getTicksProps() {
208
- const { position, indexScale } = this.asProps;
209
- return {
210
- ticks: this.ticks,
211
- indexScale,
212
- position,
213
- };
214
- }
215
-
216
- getGridProps() {
217
- const { indexScale } = this.asProps;
218
- return {
219
- ticks: this.ticks,
220
- indexScale,
221
- };
222
- }
223
-
224
- render() {
225
- const SAxis = this.Element;
226
- const { styles, position, scale, hide, indexScale } = this.asProps;
227
-
228
- const pos =
229
- MAP_POSITION_AXIS[position] ?? MAP_POSITION_AXIS[MAP_INDEX_SCALE_SYMBOL[indexScale]];
230
-
231
- return sstyled(styles)(<SAxis render="line" hide={hide} {...pos(scale, position)} />);
232
- }
233
- }
234
-
235
- function Ticks(props) {
236
- const { Element: STick, styles, scale, ticks, position, hide, indexScale } = props;
237
-
238
- const pos = MAP_POSITION_TICK[position] ?? MAP_POSITION_TICK[MAP_INDEX_SCALE_SYMBOL[indexScale]];
239
- const positionClass = MAP_POSITION_TICK[position] ? position : 'custom_' + indexScale;
240
-
241
- return ticks.map((value, i) => {
242
- return sstyled(styles)(
243
- <STick
244
- key={i}
245
- render="text"
246
- childrenPosition="inside"
247
- __excludeProps={['data', 'scale', 'format', 'value']}
248
- value={value}
249
- index={i}
250
- position={positionClass}
251
- hide={hide}
252
- {...pos(scale, value, position)}
253
- >
254
- {renderValue(value)}
255
- </STick>,
256
- );
257
- });
258
- }
259
-
260
- function Grid(props) {
261
- const { Element: SGrid, styles, scale, ticks, indexScale } = props;
262
-
263
- return ticks.map((value, i) => {
264
- return sstyled(styles)(
265
- <SGrid key={i} render="line" {...MAP_POSITION_GRID[indexScale](scale, value)} />,
266
- );
267
- });
268
- }
269
-
270
- function Title(props) {
271
- const { Element: STitle, styles, scale, position, size } = props;
272
-
273
- const { x, y } = MAP_POSITION_TITlE[position](scale, size);
274
-
275
- const sstyles = sstyled(styles);
276
- const sTitleStyles = sstyles.cn('STitle', {
277
- 'transform-origin': `${x.toFixed(2)}px ${y.toFixed(2)}px`,
278
- });
279
-
280
- return sstyled(styles)(
281
- <STitle
282
- render="text"
283
- childrenPosition="inside"
284
- position={position}
285
- className={sTitleStyles.className}
286
- style={sTitleStyles.style}
287
- x={x}
288
- y={y}
289
- />,
290
- );
291
- }
292
-
293
- const XAxis = createElement(AxisRoot, {
294
- Ticks,
295
- Grid,
296
- Title,
297
- });
298
- XAxis.defaultProps = {
299
- indexScale: 0,
300
- position: 'bottom',
301
- };
302
-
303
- const YAxis = createElement(AxisRoot, {
304
- Ticks,
305
- Grid,
306
- Title,
307
- });
308
- YAxis.defaultProps = {
309
- indexScale: 1,
310
- position: 'left',
311
- hide: true,
312
- };
313
-
314
- export { XAxis, YAxis };
package/src/Bar.jsx DELETED
@@ -1,149 +0,0 @@
1
- import React from 'react';
2
- import { transition } from 'd3-transition';
3
- import { Component, sstyled } from '@semcore/core';
4
- import uniqueIDEnhancement from '@semcore/utils/lib/uniqueID';
5
- import createElement from './createElement';
6
- import ClipPath from './ClipPath';
7
- import { getBandwidth, roundedPath } from './utils';
8
-
9
- import style from './style/bar.shadow.css';
10
-
11
- class BarRoot extends Component {
12
- static displayName = 'Bar';
13
- static style = style;
14
- static enhance = [uniqueIDEnhancement()];
15
-
16
- static defaultProps = {
17
- offset: [0, 0],
18
- duration: 500,
19
- r: 2,
20
- hMin: 4,
21
- };
22
-
23
- getBackgroundProps(props, index) {
24
- const { x, data } = this.asProps;
25
- return {
26
- value: data[index][x],
27
- };
28
- }
29
-
30
- animationBar() {
31
- const { duration, uid } = this.asProps;
32
- const selectRect = transition().selection().selectAll(`#${uid} rect`);
33
- const selectRectNode = selectRect.node();
34
-
35
- if (duration > 0 && selectRectNode && selectRectNode.getAttribute('y') !== '0') {
36
- selectRect.transition().duration(duration).attr('y', 0);
37
- }
38
- }
39
-
40
- componentDidUpdate() {
41
- this.animationBar();
42
- }
43
-
44
- componentDidMount() {
45
- this.animationBar();
46
- }
47
-
48
- renderBar(d, i) {
49
- const SBar = this.Element;
50
- const {
51
- styles,
52
- color,
53
- x,
54
- y,
55
- y0,
56
- scale,
57
- hide,
58
- offset,
59
- duration,
60
- uid,
61
- r,
62
- hMin,
63
- width: widthProps,
64
- } = this.asProps;
65
-
66
- const [xScale, yScale] = scale;
67
- const barY = yScale(Math.max(d[y0] ?? 0, d[y])) + offset[1] - (Object.is(d[y], 0) ? hMin : 0);
68
- const barX = xScale(d[x]) + offset[0];
69
- const height =
70
- Math.abs(yScale(d[y]) - Math.min(yScale(yScale.domain()[0]), yScale(d[y0] ?? 0))) || hMin;
71
- const width = widthProps || getBandwidth(xScale);
72
- const dSvg = getRect({
73
- x: barX,
74
- y: barY,
75
- width,
76
- height,
77
- radius: Array.isArray(r) ? r[i] : r,
78
- position: d[y] > 0 || Object.is(d[y], 0) ? 'top' : 'bottom',
79
- });
80
-
81
- return sstyled(styles)(
82
- <SBar
83
- key={`bar-${i}`}
84
- render="path"
85
- clipPath={`url(#${uid})`}
86
- __excludeProps={['data', 'scale', 'value']}
87
- childrenPosition="above"
88
- value={d}
89
- index={i}
90
- hide={hide}
91
- color={color}
92
- x={barX}
93
- y={barY}
94
- width={width}
95
- height={height}
96
- d={dSvg}
97
- use:duration={`${duration}ms`}
98
- />,
99
- );
100
- }
101
- render() {
102
- const { data, uid, size, duration } = this.asProps;
103
- return (
104
- <>
105
- {data.map(this.renderBar.bind(this))}
106
- {duration && (
107
- <ClipPath
108
- key={`${uid}-animation`}
109
- id={uid}
110
- x="0"
111
- y={size[1]}
112
- width={size[0]}
113
- height={`${size[1]}px`}
114
- />
115
- )}
116
- </>
117
- );
118
- }
119
- }
120
-
121
- function Background(props) {
122
- const { Element: SBackground, styles, scale, value } = props;
123
-
124
- const [xScale, yScale] = scale;
125
- const yRange = yScale.range();
126
-
127
- return sstyled(styles)(
128
- <SBackground
129
- render="rect"
130
- childrenPosition="above"
131
- width={xScale.bandwidth()}
132
- height={yRange[0] - yRange[1]}
133
- x={xScale(value)}
134
- y={yRange[1]}
135
- />,
136
- );
137
- }
138
-
139
- function getRect({ x, y, width, height, radius, position }) {
140
- if (height <= radius) return '';
141
- if (radius) {
142
- if (position === 'top')
143
- return roundedPath(x, y, width, height, radius, true, true, false, false);
144
- return roundedPath(x, y, width, height, radius, false, false, true, true);
145
- }
146
- return roundedPath(x, y, width, height, radius);
147
- }
148
-
149
- export default createElement(BarRoot, { Background });