neft
Version:
Universal Platform
95 lines (69 loc) • 2.58 kB
text/coffeescript
# Flow
```javascript
Flow {
width: 90
spacing.column: 15
spacing.row: 5
Rectangle { color: 'blue'; width: 60; height: 50; }
Rectangle { color: 'green'; width: 20; height: 70; }
Rectangle { color: 'red'; width: 50; height: 30; }
Rectangle { color: 'yellow'; width: 20; height: 20; }
}
```
'use strict'
assert = require 'src/assert'
utils = require 'src/utils'
module.exports = (Renderer, Impl, itemUtils) -> class Flow extends Renderer.Item
= 'Flow'
= 'Renderer.Flow'
## *Flow* Flow.New([*Component* component, *Object* options])
= (component, opts) ->
item = new Flow
itemUtils.Object.initialize item, component, opts
item.effectItem = item
item
## *Flow* Flow::constructor() : *Item*
constructor: ->
super()
= null
= null
= null
= false
= false
= null
utils.defineProperty @::, 'effectItem', null, ->
, (val) ->
if val?
assert.instanceOf val, Renderer.Item
oldVal =
= val
Impl.setFlowEffectItem.call @, val, oldVal
## *Item.Margin* Flow::padding
## *Signal* Flow::onPaddingChange(*Item.Margin* padding)
Renderer.Item.createMargin @,
propertyName: 'padding'
## *Item.Spacing* Flow::spacing
## *Signal* Flow::onSpacingChange(*Item.Spacing* oldValue)
Renderer.Item.createSpacing @
## *Item.Alignment* Flow::alignment
## *Signal* Flow::onAlignmentChange(*Item.Alignment* oldValue)
Renderer.Item.createAlignment @
## *Boolean* Flow::includeBorderMargins = `false`
## *Signal* Flow::onIncludeBorderMarginsChange(*Boolean* oldValue)
itemUtils.defineProperty
constructor: @
name: 'includeBorderMargins'
defaultValue: false
implementation: Impl.setFlowIncludeBorderMargins
developmentSetter: (val) ->
assert.isBoolean val
## *Boolean* Flow::collapseMargins = `false`
## *Signal* Flow::onCollapseMarginsChange(*Boolean* oldValue)
itemUtils.defineProperty
constructor: @
name: 'collapseMargins'
defaultValue: false
implementation: Impl.setFlowCollapseMargins
developmentSetter: (val) ->
assert.isBoolean val