39 lines
728 B
CoffeeScript
39 lines
728 B
CoffeeScript
|
import PropTypes from 'prop-types';
|
||
|
import * as React from 'react'
|
||
|
|
||
|
import {Sprite} from '@avocado/graphics'
|
||
|
|
||
|
import Image from './image'
|
||
|
|
||
|
class SpriteComponent extends React.Component
|
||
|
|
||
|
constructor: (props) ->
|
||
|
|
||
|
super props
|
||
|
|
||
|
@sprite = new Sprite()
|
||
|
@sprite.on 'imageOrCanvasChanged sourceRectangleChanged', =>
|
||
|
@props.tickContainer()
|
||
|
|
||
|
@defaultProps: image: null
|
||
|
|
||
|
@propTypes:
|
||
|
|
||
|
children: PropTypes.element
|
||
|
|
||
|
componentWillUnmount: -> @sprite.destroy()
|
||
|
|
||
|
render: ->
|
||
|
|
||
|
image = React.Children.only @props.children
|
||
|
|
||
|
child = React.cloneElement image,
|
||
|
|
||
|
setIntoSprite: (image) => @sprite.setImageOrCanvas image
|
||
|
|
||
|
@props.setIntoContainer @sprite
|
||
|
|
||
|
return child
|
||
|
|
||
|
export default SpriteComponent
|