Sha256: bb84e8cc7e0f0ee0147debd18c59accd2058961facd40bb104e0c5fff78c690a

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

createHelper = (component, name) ->
    unless component.prototype[name]
        Object.defineProperty(component.prototype, name,
            configurable: true, enumerable: true
            get: -> @data?.states[name]
            set: (val) ->
                @data?.rebind("#{name}": val)
        )

extendComponent = (component) ->
    names = _.keys(component.prototype.dataObjects).concat(['collection', 'model'])
    for name in _.uniq(names)
        createHelper(component, name)

Lanes.React.Component = {

    defaultMixins: [
        Lanes.React.Mixins.Data
        Lanes.React.Mixins.Viewport
        Lanes.React.Mixins.Component
    ]

    extend: (klass, mixins = @defaultMixins) ->
        klass::mixins ||= []
        klass::mixins = _.uniq(klass::mixins.concat(mixins))
        comp = React.createClass(klass.prototype)
        extendComponent(comp)
        return Lanes.lib.HotReload.remember(comp)
}

Lanes.React.BaseComponent = {
    extend: (klass, mixins = @defaultMixins) ->
        comp = React.createClass(klass.prototype)
        return Lanes.lib.HotReload.remember(comp)
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
lanes-0.5.0 client/lanes/react/Component.coffee
lanes-0.4.0 client/lanes/react/Component.coffee