luda
Version:
A library helps to build cross-framework UI components.
42 lines (31 loc) • 1.23 kB
text/coffeescript
import luda from '../base/luda.coffee'
import camelCase from '../base/camel-case.coffee'
import dashCase from '../base/dash-case.coffee'
import guid from '../base/guid.coffee'
import Type from '../base/type.coffee'
import '../event/ready.coffee'
import {autoCreateAndDestroy, autoable} from './helpers/auto.coffee'
import Base from './helpers/base.coffee'
import createProxy from './helpers/proxy.coffee'
luda.extend 'component', factory = (name, root) ->
class Component extends Base
: camelCase "Component#{if name then '-' + name else '_' + guid()}"
: if root then root else if name then ".#{dashCase name}" else document
: {}
: {}
: ['toString']
: ['toString']
: false
: false
: false
: null
occupied = name and name of luda
luda.extend name, createProxy Component if name
not occupied and luda.ready ->
Component.create Component.root if Type.isDocument Component.root
return unless Type.isString Component.root
Component.create autoable(Component.root)
autoCreateAndDestroy Component
Component.autoEnabled = true
Component
export default factory