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
|