ende 0.4.20 → 0.4.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -3
  3. data/build/build.css +111 -0
  4. data/component.json +1 -0
  5. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +4 -13
  6. data/lib/assets/javascripts/aura/extensions/platform.js.coffee +2 -8
  7. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +21 -10
  8. data/lib/assets/javascripts/aura/extensions/states.js.coffee +25 -27
  9. data/lib/assets/javascripts/aura/extensions/widget/eventable.js.coffee +28 -23
  10. data/lib/assets/javascripts/aura/extensions/widget/lifecycleable.js.coffee +21 -34
  11. data/lib/assets/javascripts/aura/extensions/widget/napable.js.coffee +17 -13
  12. data/lib/assets/javascripts/config/load_components.js.coffee +5 -7
  13. data/lib/assets/javascripts/widgets/dialog/main.js.coffee +1 -2
  14. data/lib/assets/javascripts/widgets/list/presenter.js.coffee +5 -4
  15. data/lib/assets/javascripts/widgets/support/adapters/olark.js +1 -1
  16. data/lib/assets/javascripts/widgets/tray/main.js.coffee +16 -22
  17. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +39 -102
  18. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +7 -1
  19. data/lib/ende/version.rb +1 -1
  20. data/vendor/assets/components/ende_build.js +5732 -1047
  21. data/vendor/components/indefinido-indemma/build/development.js +2 -2
  22. data/vendor/components/indefinido-indemma/build/release.js +9 -4
  23. data/vendor/components/indefinido-indemma/build/test.js +115 -21916
  24. data/vendor/components/indefinido-indemma/component.json +0 -1
  25. data/vendor/components/indefinido-indemma/lib/record/restfulable.js +7 -2
  26. data/vendor/components/indefinido-indemma/lib/record/validatable.js +2 -2
  27. data/vendor/components/indefinido-indemma/src/lib/record/persistable.coffee +2 -0
  28. data/vendor/components/indefinido-indemma/src/lib/record/resource.coffee +3 -2
  29. data/vendor/components/indefinido-indemma/src/lib/record/restfulable.coffee +16 -4
  30. data/vendor/components/indefinido-indemma/src/lib/record/validatable.coffee +3 -3
  31. data/vendor/components/indefinido-observable/.gitignore +15 -0
  32. data/vendor/components/indefinido-observable/.ruby-gemset +1 -0
  33. data/vendor/components/indefinido-observable/.ruby-version +1 -0
  34. data/vendor/components/indefinido-observable/Gemfile +13 -0
  35. data/vendor/components/indefinido-observable/Guardfile +39 -0
  36. data/vendor/components/indefinido-observable/History.md +0 -0
  37. data/vendor/components/indefinido-observable/Readme.md +116 -0
  38. data/vendor/components/indefinido-observable/build/build.js +14798 -0
  39. data/vendor/components/indefinido-observable/build/development.js +339 -0
  40. data/vendor/components/indefinido-observable/build/release.js +14937 -0
  41. data/vendor/components/indefinido-observable/build/test.js +339 -0
  42. data/vendor/components/indefinido-observable/component.json +7 -3
  43. data/vendor/components/indefinido-observable/components/chaijs-chai/component.json +46 -0
  44. data/vendor/components/indefinido-observable/components/chaijs-chai/index.js +1 -0
  45. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/assertion.js +132 -0
  46. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/core/assertions.js +1270 -0
  47. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/error.js +60 -0
  48. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/assert.js +1060 -0
  49. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/expect.js +12 -0
  50. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/should.js +76 -0
  51. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +94 -0
  52. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addMethod.js +37 -0
  53. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addProperty.js +40 -0
  54. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/eql.js +124 -0
  55. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/flag.js +32 -0
  56. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getActual.js +19 -0
  57. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +25 -0
  58. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getMessage.js +49 -0
  59. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getName.js +20 -0
  60. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getPathValue.js +102 -0
  61. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getProperties.js +35 -0
  62. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/index.js +108 -0
  63. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/inspect.js +316 -0
  64. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/objDisplay.js +48 -0
  65. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +51 -0
  66. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +54 -0
  67. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/test.js +26 -0
  68. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/transferFlags.js +44 -0
  69. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/type.js +45 -0
  70. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai.js +79 -0
  71. data/vendor/components/indefinido-observable/components/cjohansen-sinon/sinon.js +4290 -0
  72. data/vendor/components/indefinido-observable/components/component-jquery/component.json +14 -0
  73. data/vendor/components/indefinido-observable/components/component-jquery/index.js +9601 -0
  74. data/vendor/components/indefinido-observable/components/kapit-observe-shim/component.json +11 -0
  75. data/vendor/components/indefinido-observable/components/kapit-observe-utils/component.json +13 -0
  76. data/vendor/components/indefinido-observable/karma.conf.js +92 -0
  77. data/vendor/components/indefinido-observable/lib/observable.js +9 -19
  78. data/vendor/components/indefinido-observable/spec/legacy/observable_spec.js +126 -0
  79. data/vendor/components/indefinido-observable/spec/observable_spec.js +92 -0
  80. data/vendor/components/indefinido-observable/spec/spec_helper.js +8 -0
  81. data/vendor/components/indefinido-observable/spec/vendor/accessors_spec.js +63 -0
  82. data/vendor/components/indefinido-observable/src/lib/adapters/rivets.js.coffee +15 -0
  83. data/vendor/components/indefinido-observable/src/spec/legacy/observable_spec.coffee +132 -0
  84. data/vendor/components/indefinido-observable/src/spec/observable_spec.coffee +85 -0
  85. data/vendor/components/indefinido-observable/src/spec/spec_helper.coffee +5 -0
  86. data/vendor/components/indefinido-observable/src/spec/vendor/accessors_spec.coffee +59 -0
  87. data/vendor/components/indefinido-observable/vendor/spec/boot.js +104 -0
  88. data/vendor/components/indefinido-observable/vendor/spec/jasmine.js +2054 -0
  89. metadata +60 -8
  90. data/lib/assets/javascripts/aura/extensions/domain.js.coffee +0 -55
  91. data/lib/assets/javascripts/aura/extensions/stamps.js.coffee +0 -35
  92. data/lib/assets/javascripts/aura/extensions/widget/composable.js.coffee +0 -135
  93. data/lib/assets/javascripts/aura/extensions/widget/flowable.js.coffee +0 -65
  94. data/lib/assets/javascripts/widgets/attachable/main.js.coffee +0 -77
  95. /data/{lib/assets/javascripts/aura/extensions/stamps → vendor/assets/javascripts/stampit}/stampit.js +0 -0
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ende
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.20
4
+ version: 0.4.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Heitor Salazar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-08 00:00:00.000000000 Z
11
+ date: 2014-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,11 +67,11 @@ files:
67
67
  - README.md
68
68
  - Rakefile
69
69
  - WTFP-LICENSE
70
+ - build/build.css
70
71
  - component.json
71
72
  - ende.gemspec
72
73
  - lib/assets/.gitkeep
73
74
  - lib/assets/javascripts/aura/extensions/devise.js.coffee
74
- - lib/assets/javascripts/aura/extensions/domain.js.coffee
75
75
  - lib/assets/javascripts/aura/extensions/loader.js.coffee
76
76
  - lib/assets/javascripts/aura/extensions/mask.js.coffee
77
77
  - lib/assets/javascripts/aura/extensions/mediator.js
@@ -82,12 +82,8 @@ files:
82
82
  - lib/assets/javascripts/aura/extensions/rivets/formatters.js.coffee
83
83
  - lib/assets/javascripts/aura/extensions/routes.js.coffee
84
84
  - lib/assets/javascripts/aura/extensions/screening.js.coffee
85
- - lib/assets/javascripts/aura/extensions/stamps.js.coffee
86
- - lib/assets/javascripts/aura/extensions/stamps/stampit.js
87
85
  - lib/assets/javascripts/aura/extensions/states.js.coffee
88
- - lib/assets/javascripts/aura/extensions/widget/composable.js.coffee
89
86
  - lib/assets/javascripts/aura/extensions/widget/eventable.js.coffee
90
- - lib/assets/javascripts/aura/extensions/widget/flowable.js.coffee
91
87
  - lib/assets/javascripts/aura/extensions/widget/lifecycleable.js.coffee
92
88
  - lib/assets/javascripts/aura/extensions/widget/napable.js.coffee
93
89
  - lib/assets/javascripts/aura/extensions/widget/presentable.js.coffee
@@ -98,7 +94,6 @@ files:
98
94
  - lib/assets/javascripts/config/load_components.js.coffee
99
95
  - lib/assets/javascripts/ende.js.coffee
100
96
  - lib/assets/javascripts/value_objects/phone.js.coffee
101
- - lib/assets/javascripts/widgets/attachable/main.js.coffee
102
97
  - lib/assets/javascripts/widgets/authenticator/main.js.coffee
103
98
  - lib/assets/javascripts/widgets/authenticator/presenter.js.coffee
104
99
  - lib/assets/javascripts/widgets/authenticator/states/default.html
@@ -160,6 +155,7 @@ files:
160
155
  - vendor/assets/javascripts/polyfills/es5-shim.js
161
156
  - vendor/assets/javascripts/polyfills/es6-map-shim.js
162
157
  - vendor/assets/javascripts/spin/spin.js
158
+ - vendor/assets/javascripts/stampit/stampit.js
163
159
  - vendor/components/KapIT-observe-utils/component.json
164
160
  - vendor/components/KapIT-observe-utils/lib/observe-utils.js
165
161
  - vendor/components/component-bind/component.json
@@ -359,14 +355,70 @@ files:
359
355
  - vendor/components/indefinido-indemma/vendor/owl/pluralize.js
360
356
  - vendor/components/indefinido-indemma/vendor/sinon.js
361
357
  - vendor/components/indefinido-indemma/vendor/stampit.js
358
+ - vendor/components/indefinido-observable/.gitignore
359
+ - vendor/components/indefinido-observable/.ruby-gemset
360
+ - vendor/components/indefinido-observable/.ruby-version
361
+ - vendor/components/indefinido-observable/Gemfile
362
+ - vendor/components/indefinido-observable/Guardfile
363
+ - vendor/components/indefinido-observable/History.md
364
+ - vendor/components/indefinido-observable/Readme.md
365
+ - vendor/components/indefinido-observable/build/build.js
366
+ - vendor/components/indefinido-observable/build/development.js
367
+ - vendor/components/indefinido-observable/build/release.js
368
+ - vendor/components/indefinido-observable/build/test.js
362
369
  - vendor/components/indefinido-observable/component.json
370
+ - vendor/components/indefinido-observable/components/chaijs-chai/component.json
371
+ - vendor/components/indefinido-observable/components/chaijs-chai/index.js
372
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai.js
373
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/assertion.js
374
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/core/assertions.js
375
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/error.js
376
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/assert.js
377
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/expect.js
378
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/should.js
379
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addChainableMethod.js
380
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addMethod.js
381
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addProperty.js
382
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/eql.js
383
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/flag.js
384
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getActual.js
385
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js
386
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getMessage.js
387
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getName.js
388
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getPathValue.js
389
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getProperties.js
390
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/index.js
391
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/inspect.js
392
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/objDisplay.js
393
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteMethod.js
394
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteProperty.js
395
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/test.js
396
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/transferFlags.js
397
+ - vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/type.js
398
+ - vendor/components/indefinido-observable/components/cjohansen-sinon/sinon.js
399
+ - vendor/components/indefinido-observable/components/component-jquery/component.json
400
+ - vendor/components/indefinido-observable/components/component-jquery/index.js
401
+ - vendor/components/indefinido-observable/components/kapit-observe-shim/component.json
402
+ - vendor/components/indefinido-observable/components/kapit-observe-utils/component.json
363
403
  - vendor/components/indefinido-observable/index.js
404
+ - vendor/components/indefinido-observable/karma.conf.js
364
405
  - vendor/components/indefinido-observable/lib/adapters/rivets.js
365
406
  - vendor/components/indefinido-observable/lib/observable.js
407
+ - vendor/components/indefinido-observable/spec/legacy/observable_spec.js
408
+ - vendor/components/indefinido-observable/spec/observable_spec.js
409
+ - vendor/components/indefinido-observable/spec/spec_helper.js
410
+ - vendor/components/indefinido-observable/spec/vendor/accessors_spec.js
411
+ - vendor/components/indefinido-observable/src/lib/adapters/rivets.js.coffee
412
+ - vendor/components/indefinido-observable/src/spec/legacy/observable_spec.coffee
413
+ - vendor/components/indefinido-observable/src/spec/observable_spec.coffee
414
+ - vendor/components/indefinido-observable/src/spec/spec_helper.coffee
415
+ - vendor/components/indefinido-observable/src/spec/vendor/accessors_spec.coffee
366
416
  - vendor/components/indefinido-observable/vendor/shims/accessors-legacy.js
367
417
  - vendor/components/indefinido-observable/vendor/shims/accessors.js
368
418
  - vendor/components/indefinido-observable/vendor/shims/array.indexOf.js
369
419
  - vendor/components/indefinido-observable/vendor/shims/object.create.js
420
+ - vendor/components/indefinido-observable/vendor/spec/boot.js
421
+ - vendor/components/indefinido-observable/vendor/spec/jasmine.js
370
422
  - vendor/components/mikeric-rivets/component.json
371
423
  - vendor/components/mikeric-rivets/dist/rivets.js
372
424
  - vendor/components/paulmillr-es6-shim/component.json
@@ -1,55 +0,0 @@
1
- 'use strict'
2
-
3
- define 'aura/extensions/domain', ->
4
-
5
- # The purpose of this extension is have a business domain practice
6
- # integrated with the core application functionality
7
-
8
- version: '0.1.0'
9
-
10
- initialize: (application) ->
11
- {core: {mediator, stamp}} = application
12
-
13
- eventable = stamp
14
- on : mediator.on
15
- off : mediator.off
16
- once : mediator.once
17
- many : mediator.many
18
- emit : mediator.emit
19
- unlisten: mediator.removeAllListeners
20
-
21
- domainable = stamp()
22
-
23
- # application.use('extensions/models').use 'extensions/widget/flows'
24
- # TODO detect if flows extension and models extension have already been loaded
25
-
26
- # TODO require domain commands
27
- application.domain ||= eventable()
28
-
29
- afterAppStart: (application) ->
30
- {core: {resourceable: {every: resourceables}, Widgets: {Flow}, stamp, stamps}, domain} = application
31
-
32
- # TODO disponibilize the resourceables method through the resources extension
33
- extensions = {}
34
- for resourceable in resourceables
35
- resource = resourceable.resource.toString()
36
-
37
- namespaces = resource.split '/'
38
- method = namespaces.pop() + 'able'
39
-
40
- # Create namespaces
41
- node = extensions
42
- for namespace in namespaces
43
- node[namespace] ||= {}
44
- node = node[namespace]
45
-
46
- node[method] = resourceable
47
-
48
- stamp 'resourceables', extensions
49
-
50
- Flow.compose stamp.compose stamps.resourceables, stamp().enclose -> domain[@name] = @
51
-
52
-
53
-
54
-
55
-
@@ -1,35 +0,0 @@
1
- 'use strict'
2
-
3
- define 'aura/extensions/stamps', ->
4
-
5
-
6
- name: 'stamps'
7
-
8
- version: '0.1.0'
9
-
10
- require:
11
- paths:
12
- stampit: 'aura/extensions/stamps/stampit'
13
-
14
- initialize: (application) ->
15
- {sandbox, core} = application
16
- stampit = require 'stampit'
17
-
18
- core.stamps = {}
19
-
20
- # TODO store stamps on a sandbox basis too
21
- sandbox.stamp = core.stamp = stampit.mixIn (name, params...) ->
22
- unless typeof name == 'string'
23
- params.unshift name
24
- name = null
25
-
26
- stamp = stampit.apply stampit, params
27
-
28
- if name then core.stamps[name] = stamp else stamp
29
-
30
- , stampit
31
-
32
-
33
-
34
-
35
-
@@ -1,135 +0,0 @@
1
- 'use strict';
2
-
3
- define 'aura/extensions/widget/composable', ->
4
- stamp = extend = null
5
-
6
- advisorable = (advisor) ->
7
- # TODO merge advices in the composition chain
8
- advice_names = ['before', 'after', 'around']
9
-
10
- extract_advices = (object) ->
11
- found = []
12
- for key of object when key.indexOf('_') isnt -1
13
- [name, adviced] = key.split '_'
14
-
15
- if advice_names.indexOf(name) != -1
16
- callbacks = if object[key].length then object[key] else [object[key]]
17
-
18
- delete object[key]
19
-
20
- found.push
21
- key: key
22
- name: name
23
- adviced: adviced
24
- callbacks: callbacks
25
-
26
- found
27
-
28
- advisor.advice = (widget) ->
29
-
30
- advices = extract_advices widget
31
-
32
- for advice in advices
33
-
34
- # in order to preserve declaration order, we must reverse the callbacks order
35
- advice.callbacks.reverse() if advice.name == 'before'
36
-
37
- # Advice with all callbacks
38
- widget[advice.name] advice.adviced, callback for callback in advice.callbacks
39
-
40
- widget
41
-
42
- advisor.advisable = (factory) ->
43
- original = factory.compose
44
-
45
- stamp.mixIn factory,
46
- compose: (stamps...) ->
47
- {fixed: {methods: composition_methods}} = @composition
48
- advices = extract_advices composition_methods
49
-
50
- for stamped in stamps
51
- {fixed: {methods: stamp_methods}} = stamped
52
- advices = advices.concat extract_advices stamp_methods
53
-
54
- adviced_stamp = {}
55
- for advice in advices
56
- adviced_stamp[advice.key] ||= []
57
- adviced_stamp[advice.key] = adviced_stamp[advice.key].concat advice.callbacks
58
-
59
- # Create a ultimate stamp with all advices arrays or functions merged
60
- # TODO do not store advices definitions in the prototype chain
61
- stamps.push stamp adviced_stamp
62
-
63
- original.apply factory, stamps
64
-
65
- advice: advisor.advice
66
-
67
- advisor
68
-
69
- composerable = (compositor) ->
70
- compositor.composable = (methods, state, enclose) ->
71
- factory = (options) ->
72
-
73
- # Inherit defaults from widget
74
- options = _.defaults options, factory.composition.fixed.methods.options
75
-
76
- # Composition only will compose methods and state!
77
- instance = factory.composition options: options
78
- enclose.call instance, options
79
-
80
- # TODO check if it is needed to inherit compositions
81
- # if methods.composition
82
- # composition = methods.composition
83
- # delete methods.composition
84
- # composition = stamp.compose composition, stamp methods, state
85
- # else
86
- # composition = stamp methods, state
87
-
88
- stamp.mixIn factory,
89
- composition: stamp methods, state
90
- # Suport an extension with multiple compositions
91
- compose: -> @composition = stamp.compose @composition, arguments...
92
-
93
- extend: ->
94
- `var methods, state`
95
- {fixed} = @composition
96
- initializers = [enclose]
97
- methods = {}
98
- state = {}
99
-
100
- for definition in arguments
101
- {methods: definition_methods, state: definition_state} = definition
102
-
103
- methods = extend methods, fixed.methods, definition_methods or definition
104
- state = extend state , fixed.state , definition_state
105
-
106
- initializers.push fixed.enclose if fixed.enclose
107
- initializers.push definition.enclose if definition.enclose
108
-
109
- enclosed = (properties) ->
110
- initializers.forEach (initializer) => initializer.call @, properties
111
- @
112
-
113
- compositor.composable methods, state, enclosed or enclose
114
-
115
- compositor
116
-
117
- version: '0.1.2'
118
-
119
- initialize: (application) ->
120
- advisable = require 'advisable'
121
-
122
- {core: {Widgets, util: {extend}, stamp}} = application
123
-
124
- Widgets = composerable advisorable Widgets
125
-
126
- # THINK how to at the same time respect aura ways of instantiating
127
- # widgets and preserve widget logic composability
128
- Widgets.Default = Widgets.Base
129
- delete Widgets.Default.extend
130
-
131
- Widgets.Base = Widgets.advisable Widgets.composable advisable(Widgets.Default.prototype), null, (options) ->
132
- Object.defineProperty @, 'constructor', value: Widgets.Default, enumerable: false, configurable: false, writable: false
133
- Widgets.Default.call Widgets.advice(@), options
134
-
135
-
@@ -1,65 +0,0 @@
1
- 'use strict'
2
-
3
- define 'aura/extensions/widget/flowable', ->
4
-
5
- # The purpose of this extension is have a formalized widget type to
6
- # put domain comunication logic between other widgets
7
- (application) ->
8
-
9
- instantiation =
10
- composite_with: ->
11
-
12
- stampit = require 'stampit/stampit'
13
-
14
- # TODO Move each composable to its file
15
- eventable = stampit().enclose ->
16
- @on = @sandbox.on
17
- @off = @sandbox.off
18
- @once = @sandbox.once
19
- @many = @sandbox.many
20
- @emit = @sandbox.emit
21
- @unlisten = @sandbox.removeAllListeners
22
-
23
- @
24
-
25
- filterable = stampit()
26
-
27
- routeable = stampit()
28
-
29
- stateable = stampit(transit: (state) -> application.state = state).enclose ->
30
- Object.defineProperty @, 'state',
31
- set: @transit
32
- get: -> application.state
33
- configurable: false
34
-
35
- @stateless()
36
-
37
- elementless = stampit ->
38
- marker = " #{@name}.#{@identifier} flow "
39
- node = document.createComment marker
40
- @$el.replaceWith node
41
- @$el = $ node
42
-
43
- stampit.compose filterable, routeable, eventable, stateable, elementless
44
-
45
- create_widget_type: (flowable, application) ->
46
- {core: {Widgets}} = application
47
-
48
- Widgets.Flow = Widgets.composable Widgets.Default.prototype, null, (options) -> Widgets.Default.call @, options
49
- Widgets.Flow.compose flowable
50
-
51
- version: '0.1.0'
52
-
53
- initialize: (application) ->
54
- flowable = instantiation.composite_with application
55
- instantiation.create_widget_type flowable, application
56
-
57
- afterAppStart: (application) ->
58
- application.components.addSource 'flow', 'flows'
59
-
60
-
61
-
62
-
63
-
64
-
65
-
@@ -1,77 +0,0 @@
1
- define ->
2
-
3
- # TODO create diferent type for non-ui composable widgets
4
- # TODO think about how to make this widget dependent on eventable extension
5
- # TODO move this widtet to an extension when element is stored in the sandbox
6
- type: 'Base'
7
-
8
- version: '0.1.0'
9
-
10
- # TODO options: {state: 'reset' # Will preserve initial widget state }
11
-
12
- initialize: (options) ->
13
-
14
- @sandbox._attachments = []
15
-
16
- @$el.addClass "widget #{@name} composing"
17
-
18
- # TODO think how to extend widgets as a way of knowing all children have started
19
- @compose_when_parent()
20
-
21
- # TODO think how to extend widgets as a way of knowing all children have started
22
- compose_when_parent: ->
23
- @interval = setInterval =>
24
- if @sandbox._parent?
25
- @compose @sandbox._parent._widget
26
- clearInterval @interval
27
- , 800
28
-
29
- # Create a widget type to replace @$el for a html comment
30
- compose: (parent) ->
31
- @parent = parent
32
- parent_namespace = parent.name + '.' + parent.identifier
33
-
34
- # TODO move to elementless widgets
35
- @transform_into_elementless()
36
-
37
- @sandbox.on "#{parent_namespace}.reattach", @reattach, @
38
- @sandbox.on "#{parent_namespace}.detach" , @detach , @
39
- @sandbox.on "#{parent_namespace}.attach" , @attach , @
40
-
41
- transform_into_elementless: ->
42
- serializable_options = _.omit @options, '$el', 'el', 'ref', '_ref', 'require', 'baseUrl'
43
-
44
- marker = " #{@name}.#{@identifier} for #{@parent.name}.#{parent.identifier}"
45
- marker += " with #{JSON.stringify serializable_options} "
46
- node = document.createComment marker
47
- @$el.replaceWith node
48
-
49
- @$el = $ node
50
-
51
- reattach: (selector) ->
52
- @detach()
53
- @attach selector
54
-
55
- detach: ->
56
- @sandbox.stopListening()
57
- # TODO Support multiple deatachments events storage
58
- current_events = @sandbox._events
59
- @sandbox._events = @sandbox._attachments.shift() || []
60
- @sandbox._attachments.push current_events
61
-
62
- # TODO unbind and store jquery handlers
63
- # TODO store element position in the attachment
64
- @parent.$el.detach()
65
-
66
- attach: (selector) ->
67
- element = @sandbox.dom.find selector
68
- @sandbox.logger.error "attach: No element found for #{selector} for attachment" unless element.length
69
-
70
- # TODO Support multiple deatachments events storage
71
- @sandbox._attachments.push @sandbox._events
72
- @sandbox._events = @sandbox._attachments.shift() || []
73
- @sandbox.startListening()
74
-
75
- # TODO rebind jquery handlers
76
- # TODO restore element position of the attachment
77
- element.append @parent.$el