@semcore/d3-chart 2.2.2 → 2.2.5

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 (156) hide show
  1. package/CHANGELOG.md +22 -1
  2. package/lib/cjs/Area.js +9 -9
  3. package/lib/cjs/Area.js.map +1 -1
  4. package/lib/cjs/Axis.js +19 -17
  5. package/lib/cjs/Axis.js.map +1 -1
  6. package/lib/cjs/Bar.js +11 -11
  7. package/lib/cjs/Bar.js.map +1 -1
  8. package/lib/cjs/Bubble.js +12 -12
  9. package/lib/cjs/Bubble.js.map +1 -1
  10. package/lib/cjs/ClipPath.js +1 -1
  11. package/lib/cjs/ClipPath.js.map +1 -1
  12. package/lib/cjs/Donut.js +8 -8
  13. package/lib/cjs/Donut.js.map +1 -1
  14. package/lib/cjs/Dots.js +9 -9
  15. package/lib/cjs/Dots.js.map +1 -1
  16. package/lib/cjs/GroupBar.js +8 -8
  17. package/lib/cjs/GroupBar.js.map +1 -1
  18. package/lib/cjs/HorizontalBar.js +11 -11
  19. package/lib/cjs/HorizontalBar.js.map +1 -1
  20. package/lib/cjs/Hover.js +4 -4
  21. package/lib/cjs/Hover.js.map +1 -1
  22. package/lib/cjs/Line.js +8 -8
  23. package/lib/cjs/Line.js.map +1 -1
  24. package/lib/cjs/Plot.js +4 -4
  25. package/lib/cjs/Plot.js.map +1 -1
  26. package/lib/cjs/RadialTree.js +99 -59
  27. package/lib/cjs/RadialTree.js.map +1 -1
  28. package/lib/cjs/ReferenceLine.js +10 -10
  29. package/lib/cjs/ReferenceLine.js.map +1 -1
  30. package/lib/cjs/ResponsiveContainer.js +2 -1
  31. package/lib/cjs/ResponsiveContainer.js.map +1 -1
  32. package/lib/cjs/ScatterPlot.js +7 -7
  33. package/lib/cjs/ScatterPlot.js.map +1 -1
  34. package/lib/cjs/StackBar.js +8 -8
  35. package/lib/cjs/StackBar.js.map +1 -1
  36. package/lib/cjs/StackedArea.js +8 -8
  37. package/lib/cjs/StackedArea.js.map +1 -1
  38. package/lib/cjs/Tooltip.js +15 -11
  39. package/lib/cjs/Tooltip.js.map +1 -1
  40. package/lib/cjs/Venn.js +9 -9
  41. package/lib/cjs/Venn.js.map +1 -1
  42. package/lib/cjs/color.js.map +1 -1
  43. package/lib/cjs/createElement.js +1 -1
  44. package/lib/cjs/createElement.js.map +1 -1
  45. package/lib/cjs/index.js.map +1 -1
  46. package/lib/cjs/style/radial-tree.shadow.css +0 -1
  47. package/lib/cjs/types/index.d.ts +3 -0
  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 +2 -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 +1 -1
  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/types/index.d.ts +3 -0
  95. package/lib/es6/utils.js.map +1 -1
  96. package/lib/types/index.d.ts +3 -0
  97. package/package.json +1 -1
  98. package/src/Area.jsx +0 -137
  99. package/src/Axis.jsx +0 -314
  100. package/src/Bar.jsx +0 -149
  101. package/src/Bubble.jsx +0 -165
  102. package/src/ClipPath.jsx +0 -47
  103. package/src/Donut.jsx +0 -319
  104. package/src/Dots.jsx +0 -97
  105. package/src/GroupBar.jsx +0 -76
  106. package/src/HorizontalBar.jsx +0 -135
  107. package/src/Hover.jsx +0 -153
  108. package/src/Line.jsx +0 -89
  109. package/src/Plot.jsx +0 -79
  110. package/src/RadialTree.tsx +0 -767
  111. package/src/ReferenceLine.jsx +0 -146
  112. package/src/ResponsiveContainer.jsx +0 -84
  113. package/src/ScatterPlot.jsx +0 -112
  114. package/src/StackBar.jsx +0 -105
  115. package/src/StackedArea.jsx +0 -65
  116. package/src/Tooltip.jsx +0 -145
  117. package/src/Venn.jsx +0 -114
  118. package/src/color.js +0 -21
  119. package/src/createElement.jsx +0 -135
  120. package/src/index.js +0 -27
  121. package/src/style/area.shadow.css +0 -37
  122. package/src/style/axis.shadow.css +0 -85
  123. package/src/style/bar.shadow.css +0 -21
  124. package/src/style/bubble.shadow.css +0 -45
  125. package/src/style/donut.shadow.css +0 -24
  126. package/src/style/dot.shadow.css +0 -29
  127. package/src/style/hover.shadow.css +0 -9
  128. package/src/style/line.shadow.css +0 -29
  129. package/src/style/plot.shadow.css +0 -6
  130. package/src/style/radial-tree.shadow.css +0 -34
  131. package/src/style/reference-line.shadow.css +0 -37
  132. package/src/style/scatterplot.shadow.css +0 -27
  133. package/src/style/tooltip.shadow.css +0 -36
  134. package/src/style/var.css +0 -125
  135. package/src/style/venn.shadow.css +0 -29
  136. package/src/types/Area.d.ts +0 -48
  137. package/src/types/Axis.d.ts +0 -64
  138. package/src/types/Bar.d.ts +0 -52
  139. package/src/types/Bubble.d.ts +0 -32
  140. package/src/types/ClipPath.d.ts +0 -26
  141. package/src/types/Donut.d.ts +0 -46
  142. package/src/types/GroupBar.d.ts +0 -20
  143. package/src/types/HorizontalBar.d.ts +0 -29
  144. package/src/types/Hover.d.ts +0 -15
  145. package/src/types/Line.d.ts +0 -50
  146. package/src/types/Plot.d.ts +0 -16
  147. package/src/types/ReferenceLine.d.ts +0 -31
  148. package/src/types/ResponsiveContainer.d.ts +0 -20
  149. package/src/types/ScatterPlot.d.ts +0 -27
  150. package/src/types/StackBar.d.ts +0 -26
  151. package/src/types/StackedArea.d.ts +0 -26
  152. package/src/types/Tooltip.d.ts +0 -33
  153. package/src/types/Venn.d.ts +0 -45
  154. package/src/types/context.d.ts +0 -6
  155. package/src/types/index.d.ts +0 -56
  156. package/src/utils.ts +0 -227
@@ -54,3 +54,6 @@ export * from './Bubble';
54
54
 
55
55
  export { default as ReferenceLine } from './ReferenceLine';
56
56
  export * from './ReferenceLine';
57
+
58
+ export { default as Venn } from './Venn';
59
+ export * from './Venn';
@@ -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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"}
@@ -54,3 +54,6 @@ export * from './Bubble';
54
54
 
55
55
  export { default as ReferenceLine } from './ReferenceLine';
56
56
  export * from './ReferenceLine';
57
+
58
+ export { default as Venn } from './Venn';
59
+ export * from './Venn';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/d3-chart",
3
3
  "description": "SEMRush D3 Chart Component",
4
- "version": "2.2.2",
4
+ "version": "2.2.5",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.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 });