66// Copyright 2016, Federico Zivolo
77//
88
9- let React = require ( 'react' )
10- let findDOMNode = require ( 'react-dom' ) . findDOMNode
9+ import { Component } from 'react'
1110
12- // cross browser requestAnimationFrame
13- const requestFrame = ( function ( ) {
14- let raf = (
15- window . requestAnimationFrame ||
16- window . mozRequestAnimationFrame ||
17- window . webkitRequestAnimationFrame ||
18- function ( fn ) { return window . setTimeout ( fn , 20 ) }
19- )
20- return function ( fn ) {
21- return raf ( fn )
22- }
23- } ) ( )
24-
25- // cross browser cancelAnimationFrame
26- const cancelFrame = ( function ( ) {
27- var cancel = (
28- window . cancelAnimationFrame ||
29- window . mozCancelAnimationFrame ||
30- window . webkitCancelAnimationFrame ||
31- window . clearTimeout
32- )
33- return function ( id ) {
34- return cancel ( id )
35- }
36- } ) ( )
37-
38- function resizeListener ( e ) {
39- let win = e . target || e . srcElement ;
40- if ( win . __resizeRAF__ ) {
41- cancelFrame ( win . __resizeRAF__ )
42- }
43- win . __resizeRAF__ = requestFrame ( function ( ) {
44- let trigger = win . __resizeTrigger__
45- trigger . __resizeListeners__ . forEach ( function ( fn ) {
46- fn . call ( trigger , e )
47- } )
48- } )
49- }
50-
51- let ResizeAware = React . createClass ( {
11+ export default class ResizeAware extends Component {
5212 render ( ) {
5313 let rootStyle = this . props . style
5414 if ( rootStyle . position === 'initial' ) {
@@ -67,7 +27,7 @@ let ResizeAware = React.createClass({
6727 }
6828
6929 return (
70- < div { ...this . props } style = { rootStyle } >
30+ < div ref = 'container' { ...this . props } style = { rootStyle } >
7131 { this . props . children }
7232 < object
7333 type = 'text/html'
@@ -76,23 +36,23 @@ let ResizeAware = React.createClass({
7636 onLoad = { ( e ) => { this . objectLoad ( e ) } } />
7737 </ div >
7838 )
79- } ,
39+ }
8040
8141 componentDidMount ( ) {
8242 // init the resizeElement
8343 this . refs . resizeElement . data = 'about:blank'
84- } ,
44+ }
8545
8646 componentWillUnmount ( ) {
8747 this . state . resizeTarget . removeEventListener ( 'resize' , this . state . resizeFn )
88- } ,
48+ }
8949
9050 // function called on component resize
9151 // a `resize` event will be triggered on the component
9252 onResize ( evt ) {
9353 var event = new Event ( 'resize' )
94- findDOMNode ( this ) . dispatchEvent ( event )
95- } ,
54+ this . refs . container . dispatchEvent ( event )
55+ }
9656
9757 // called when the object is loaded
9858 objectLoad ( evt ) {
@@ -103,6 +63,5 @@ let ResizeAware = React.createClass({
10363 this . state . resizeTarget . addEventListener ( 'resize' , this . state . resizeFn )
10464 } )
10565 }
106- } )
10766
108- module . exports = ResizeAware
67+ }
0 commit comments