@@ -3,9 +3,39 @@ import React from "react"
33import { select } from "d3-selection"
44import { arc , line , curveLinearClosed } from "d3-shape"
55import { Mark } from "semiotic-mark"
6+ import { interpolateNumber } from "d3-interpolate"
67
78const twoPI = Math . PI * 2
89
10+ export const arcTweener = ( oldProps , newProps ) => {
11+ const innerRadiusInterpolator = interpolateNumber (
12+ oldProps . innerRadius ,
13+ newProps . innerRadius
14+ )
15+ const outerRadiusInterpolator = interpolateNumber (
16+ oldProps . outerRadius ,
17+ newProps . outerRadius
18+ )
19+ const startAngleInterpolator = interpolateNumber (
20+ oldProps . startAngle ,
21+ newProps . startAngle
22+ )
23+ const endAngleInterpolator = interpolateNumber (
24+ oldProps . endAngle ,
25+ newProps . endAngle
26+ )
27+
28+ return t => {
29+ const sliceGenerator = arc ( )
30+ . innerRadius ( innerRadiusInterpolator ( t ) )
31+ . outerRadius ( outerRadiusInterpolator ( t ) )
32+ return sliceGenerator ( {
33+ startAngle : startAngleInterpolator ( t ) ,
34+ endAngle : endAngleInterpolator ( t )
35+ } )
36+ }
37+ }
38+
939export const drawAreaConnector = ( {
1040 x1,
1141 x2,
@@ -71,10 +101,10 @@ export const hexToRgb = hex => {
71101 const result = / ^ # ? ( [ a - f \d ] { 2 } ) ( [ a - f \d ] { 2 } ) ( [ a - f \d ] { 2 } ) $ / i. exec ( hex )
72102 return result
73103 ? [
74- parseInt ( result [ 1 ] , 16 ) ,
75- parseInt ( result [ 2 ] , 16 ) ,
76- parseInt ( result [ 3 ] , 16 )
77- ]
104+ parseInt ( result [ 1 ] , 16 ) ,
105+ parseInt ( result [ 2 ] , 16 ) ,
106+ parseInt ( result [ 3 ] , 16 )
107+ ]
78108 : [ 0 , 0 , 0 ]
79109}
80110
0 commit comments