neft
Version:
Universal Platform
81 lines (59 loc) • 2.08 kB
text/coffeescript
# Extension
'use strict'
utils = require 'src/utils'
signal = require 'src/signal'
module.exports = (Renderer, Impl, itemUtils) -> class Extension extends itemUtils.Object
= 'Extension'
constructor: ->
super()
= null
= false
= false
= null
signalListener = ->
unless
= true
.emit false
unless
return
## *Boolean* Extension::when
## *Signal* Extension::onWhenChange(*Boolean* oldValue)
itemUtils.defineProperty
constructor: @
name: 'when'
defaultValue: false
setter: (_super) -> (val) ->
if
.disconnect signalListener, @
= null
if typeof val is 'function' and val.connect?
val.connect signalListener, @
= val
else
_super.call @, !!val
if val and not
else if not val and
return
## *Item* Extension::target
## *Signal* Extension::onTargetChange(*Item* oldValue)
itemUtils.defineProperty
constructor: @
name: 'target'
defaultValue: null
## ReadOnly *Boolean* Extension::running
## *Signal* Extension::onRunningChange(*Boolean* oldValue)
utils.defineProperty @::, 'running', utils.CONFIGURABLE, ->
, null
signal.Emitter.createSignal @, 'onRunningChange'
## Extension::enable()
enable: ->
= true
.emit false
## Extension::disable()
disable: ->
= false
.emit true