avocado-old/packages/react/sprite.coffee
2019-03-17 23:45:48 -05:00

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