@@ -38,6 +38,11 @@ const canvasTypes = [
38
38
}
39
39
] ;
40
40
41
+ const dimensionsPropTypes = PropTypes . oneOfType ( [
42
+ PropTypes . number ,
43
+ PropTypes . string
44
+ ] ) ;
45
+
41
46
export default class extends PureComponent {
42
47
static propTypes = {
43
48
loadTimeOffset : PropTypes . number ,
@@ -48,8 +53,8 @@ export default class extends PureComponent {
48
53
gridColor : PropTypes . string ,
49
54
backgroundColor : PropTypes . string ,
50
55
hideGrid : PropTypes . bool ,
51
- canvasWidth : PropTypes . number ,
52
- canvasHeight : PropTypes . number ,
56
+ canvasWidth : dimensionsPropTypes ,
57
+ canvasHeight : dimensionsPropTypes ,
53
58
disabled : PropTypes . bool ,
54
59
imgSrc : PropTypes . string ,
55
60
saveData : PropTypes . string ,
@@ -101,10 +106,10 @@ export default class extends PureComponent {
101
106
} ) ;
102
107
this . chainLength = this . props . lazyRadius * window . devicePixelRatio ;
103
108
104
- const observeCanvas = new ResizeObserver ( ( entries , observer ) =>
109
+ this . canvasObserver = new ResizeObserver ( ( entries , observer ) =>
105
110
this . handleCanvasResize ( entries , observer )
106
111
) ;
107
- observeCanvas . observe ( this . canvasContainer ) ;
112
+ this . canvasObserver . observe ( this . canvasContainer ) ;
108
113
109
114
this . drawImage ( ) ;
110
115
this . loop ( ) ;
@@ -148,6 +153,10 @@ export default class extends PureComponent {
148
153
}
149
154
}
150
155
156
+ componentWillUnmount = ( ) => {
157
+ this . canvasObserver . unobserve ( this . canvasContainer ) ;
158
+ } ;
159
+
151
160
drawImage = ( ) => {
152
161
if ( ! this . props . imgSrc ) return ;
153
162
0 commit comments