ende 0.4.25 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -2
  3. data/component.json +0 -1
  4. data/lib/assets/javascripts/aura/extensions/domain.js.coffee +55 -0
  5. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +13 -4
  6. data/lib/assets/javascripts/aura/extensions/platform.js.coffee +8 -2
  7. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +10 -21
  8. data/lib/assets/javascripts/aura/extensions/stamps/stampit.js +242 -568
  9. data/lib/assets/javascripts/aura/extensions/widget/composable.js.coffee +18 -35
  10. data/lib/assets/javascripts/config/load_components.js.coffee +7 -5
  11. data/lib/assets/javascripts/widgets/attachable/main.js.coffee +77 -0
  12. data/lib/assets/javascripts/widgets/list/presenter.js.coffee +4 -5
  13. data/lib/assets/javascripts/widgets/support/adapters/olark.js +1 -1
  14. data/lib/assets/javascripts/widgets/tray/main.js.coffee +22 -16
  15. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +4 -8
  16. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +1 -7
  17. data/lib/ende/version.rb +1 -1
  18. data/vendor/assets/components/ende_build.js +463 -5150
  19. data/vendor/components/indefinido-indemma/build/development.js +2 -2
  20. data/vendor/components/indefinido-indemma/build/release.js +4 -5
  21. data/vendor/components/indefinido-indemma/build/test.js +2 -2
  22. data/vendor/components/indefinido-indemma/component.json +1 -0
  23. data/vendor/components/indefinido-indemma/lib/record/restfulable.js +2 -3
  24. data/vendor/components/indefinido-indemma/lib/record/validatable.js +2 -2
  25. data/vendor/components/indefinido-indemma/src/lib/record/restfulable.coffee +3 -9
  26. data/vendor/components/indefinido-indemma/src/lib/record/validatable.coffee +3 -3
  27. data/vendor/components/indefinido-observable/component.json +3 -7
  28. data/vendor/components/indefinido-observable/lib/observable.js +19 -9
  29. metadata +4 -60
  30. data/build/build.css +0 -111
  31. data/vendor/assets/javascripts/stampit/stampit.js +0 -392
  32. data/vendor/components/indefinido-observable/.gitignore +0 -15
  33. data/vendor/components/indefinido-observable/.ruby-gemset +0 -1
  34. data/vendor/components/indefinido-observable/.ruby-version +0 -1
  35. data/vendor/components/indefinido-observable/Gemfile +0 -13
  36. data/vendor/components/indefinido-observable/Guardfile +0 -39
  37. data/vendor/components/indefinido-observable/History.md +0 -0
  38. data/vendor/components/indefinido-observable/Readme.md +0 -116
  39. data/vendor/components/indefinido-observable/build/build.js +0 -14798
  40. data/vendor/components/indefinido-observable/build/development.js +0 -339
  41. data/vendor/components/indefinido-observable/build/release.js +0 -14937
  42. data/vendor/components/indefinido-observable/build/test.js +0 -339
  43. data/vendor/components/indefinido-observable/components/chaijs-chai/component.json +0 -46
  44. data/vendor/components/indefinido-observable/components/chaijs-chai/index.js +0 -1
  45. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/assertion.js +0 -132
  46. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
  47. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/error.js +0 -60
  48. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/assert.js +0 -1060
  49. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
  50. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/should.js +0 -76
  51. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
  52. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
  53. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
  54. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/eql.js +0 -124
  55. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
  56. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
  57. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
  58. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
  59. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
  60. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
  61. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
  62. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/index.js +0 -108
  63. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/inspect.js +0 -316
  64. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
  65. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
  66. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
  67. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/test.js +0 -26
  68. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
  69. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/type.js +0 -45
  70. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai.js +0 -79
  71. data/vendor/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
  72. data/vendor/components/indefinido-observable/components/component-jquery/component.json +0 -14
  73. data/vendor/components/indefinido-observable/components/component-jquery/index.js +0 -9601
  74. data/vendor/components/indefinido-observable/components/kapit-observe-shim/component.json +0 -11
  75. data/vendor/components/indefinido-observable/components/kapit-observe-utils/component.json +0 -13
  76. data/vendor/components/indefinido-observable/karma.conf.js +0 -92
  77. data/vendor/components/indefinido-observable/spec/legacy/observable_spec.js +0 -126
  78. data/vendor/components/indefinido-observable/spec/observable_spec.js +0 -92
  79. data/vendor/components/indefinido-observable/spec/spec_helper.js +0 -8
  80. data/vendor/components/indefinido-observable/spec/vendor/accessors_spec.js +0 -63
  81. data/vendor/components/indefinido-observable/src/lib/adapters/rivets.js.coffee +0 -15
  82. data/vendor/components/indefinido-observable/src/spec/legacy/observable_spec.coffee +0 -132
  83. data/vendor/components/indefinido-observable/src/spec/observable_spec.coffee +0 -85
  84. data/vendor/components/indefinido-observable/src/spec/spec_helper.coffee +0 -5
  85. data/vendor/components/indefinido-observable/src/spec/vendor/accessors_spec.coffee +0 -59
  86. data/vendor/components/indefinido-observable/vendor/spec/boot.js +0 -104
  87. data/vendor/components/indefinido-observable/vendor/spec/jasmine.js +0 -2054
@@ -32,7 +32,6 @@ define 'aura/extensions/widget/composable', ->
32
32
  for advice in advices
33
33
 
34
34
  # in order to preserve declaration order, we must reverse the callbacks order
35
- # TODO rename advice.name to advice.type
36
35
  advice.callbacks.reverse() if advice.name == 'before'
37
36
 
38
37
  # Advice with all callbacks
@@ -43,44 +42,28 @@ define 'aura/extensions/widget/composable', ->
43
42
  advisor.advisable = (factory) ->
44
43
  original = factory.compose
45
44
 
46
- compose_advices = (advices, composed_advices = {}) ->
47
- for advice in advices
48
- composed_advices[advice.key] ||= []
49
- composed_advices[advice.key] = composed_advices[advice.key].concat advice.callbacks
50
-
51
- composed_advices
52
-
53
- composable_advices = (stamps...) ->
54
- advices = []
55
- for stamped in stamps
56
- {fixed: {methods: stamp_methods}} = stamped
57
- advices = advices.concat extract_advices stamp_methods
45
+ stamp.mixIn factory,
46
+ compose: (stamps...) ->
47
+ {fixed: {methods: composition_methods}} = @composition
48
+ advices = extract_advices composition_methods
58
49
 
59
- # Create a ultimate stamp with all advices arrays or functions
60
- # merged, that will ultimatly override the prototype chain
61
- # definitions
62
- #
63
- # TODO do not store advices definitions in the prototype chain
64
- stamps.push stamp compose_advices advices
50
+ for stamped in stamps
51
+ {fixed: {methods: stamp_methods}} = stamped
52
+ advices = advices.concat extract_advices stamp_methods
65
53
 
66
- stamps
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
67
58
 
68
- # Move current factory composition advices to a composable form
69
- # {fixed: {methods: composition_methods}} = factory.composition
70
- # compose_advices extract_advices(composition_methods), composition_methods
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
71
62
 
72
- stamp.mixIn factory,
73
- compose: (stamps...) ->
74
- stamps.unshift factory.composition
75
- original.apply factory, composable_advices stamps...
63
+ original.apply factory, stamps
76
64
 
77
65
  advice: advisor.advice
78
66
 
79
-
80
- composable = advisor.composable
81
- advisor.composable = ->
82
- advisor.advisable composable.apply advisor, arguments
83
-
84
67
  advisor
85
68
 
86
69
  composerable = (compositor) ->
@@ -120,8 +103,8 @@ define 'aura/extensions/widget/composable', ->
120
103
  methods = extend methods, fixed.methods, definition_methods or definition
121
104
  state = extend state , fixed.state , definition_state
122
105
 
123
- initializers = initializers.concat fixed.enclose if fixed.enclose
124
- initializers = initializers.concat definition.enclose if definition.enclose
106
+ initializers.push fixed.enclose if fixed.enclose
107
+ initializers.push definition.enclose if definition.enclose
125
108
 
126
109
  enclosed = (properties) ->
127
110
  initializers.forEach (initializer) => initializer.call @, properties
@@ -138,7 +121,7 @@ define 'aura/extensions/widget/composable', ->
138
121
 
139
122
  {core: {Widgets, util: {extend}, stamp}} = application
140
123
 
141
- Widgets = advisorable composerable Widgets
124
+ Widgets = composerable advisorable Widgets
142
125
 
143
126
  # THINK how to at the same time respect aura ways of instantiating
144
127
  # widgets and preserve widget logic composability
@@ -26,6 +26,8 @@ define 'modernizr' , ['config/load_components'], ->
26
26
  require 'modernizr'
27
27
  window.Modernizr
28
28
 
29
+ define 'rivets', ['config/load_components'], -> require 'rivets'
30
+
29
31
  # TODO define 'underscore', ['config/load_components'], -> require 'lodash'
30
32
 
31
33
  # TODO figure out how to use rjs optmizer to include component builds
@@ -121,8 +123,8 @@ define 'config/load_components', ['application_components'], ->
121
123
  using = loader.discover params...
122
124
 
123
125
  try
124
-
125
- module = loader.loaders.discovered.apply @, params
126
+ # TODO rename mod to module
127
+ mod = loader.loaders.discovered.apply @, params
126
128
 
127
129
  catch e
128
130
  if e.require
@@ -132,15 +134,15 @@ define 'config/load_components', ['application_components'], ->
132
134
 
133
135
  # Since it failed to load with component, try to load with requirejs
134
136
  loader.activate 'requirejs'
135
- unless module
136
- module = loader.loaders.discovered.apply @, params
137
+ unless mod
138
+ mod = loader.loaders.discovered.apply @, params
137
139
  else
138
140
  throw e
139
141
 
140
142
  # Always let requirejs active by default
141
143
  loader.activate 'requirejs'
142
144
 
143
- module
145
+ mod
144
146
 
145
147
  loader.shim()
146
148
  loader.initialize()
@@ -0,0 +1,77 @@
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
@@ -1,13 +1,13 @@
1
1
  'use strict'
2
- observable = require('indefinido-observable').mixin
3
2
 
4
- define (model) ->
3
+ define ->
5
4
 
6
5
  (items, luna) ->
7
6
 
8
7
  resource = items[0].resource
9
8
 
10
- searcher: observable
9
+ # TODO create view_model
10
+ searcher:
11
11
  query: ''
12
12
  search: (event, models) ->
13
13
 
@@ -22,8 +22,7 @@ define (model) ->
22
22
 
23
23
  false
24
24
 
25
- # TODO create view_model
26
- list: observable Object.create null,
25
+ list: Object.create null,
27
26
  resource:
28
27
  set: (resource) -> null
29
28
  get: -> resource
@@ -114,7 +114,7 @@ define(function () {
114
114
  update_user: function (user) {
115
115
  user.email && olark('api.visitor.updateEmailAddress', {emailAddress: user.email});
116
116
  user.name && olark('api.visitor.updateFullName' , {fullName: user.name});
117
- user.phone && olark('api.visitor.updatePhoneNumber' , {phoneNumber: user.phone});
117
+ user.phone.toString() && olark('api.visitor.updatePhoneNumber' , {phoneNumber: user.phone.toString()});
118
118
  // TODO rename user._id to user.id
119
119
  user._id && olark('api.visitor.updateCustomFields', {id: user._id});
120
120
  }
@@ -1,24 +1,22 @@
1
- define ->
1
+ 'use strict'
2
2
 
3
- 'use strict'
3
+ define
4
4
 
5
5
  type: 'Base'
6
6
 
7
7
  version: '0.1.2'
8
8
 
9
9
  initialize: (options) ->
10
- names = []
11
10
  {identifier} = options
11
+ @names = []
12
12
 
13
- # TODO access omit method throuhgh underscore
13
+ # TODO access omit method throuhgh sandbox
14
14
  widget_options = _.omit options, 'el', 'ref', '_ref', 'name', 'require', 'baseUrl', 'resource'
15
15
 
16
16
  # TODO remove jquery dependency
17
- for name, suboptions of widget_options when $.type(suboptions) is "object"
18
- names.push suboptions.name || name
19
- @add suboptions.name || name, suboptions
17
+ injections = @prepare_injections widget_options
20
18
 
21
- @$el.addClass ['tray', 'widget'].concat(names).join(' ')
19
+ @$el.addClass ['tray', 'widget'].concat(@names).join(' ')
22
20
 
23
21
  @identifier ||= identifier
24
22
 
@@ -27,13 +25,21 @@ define ->
27
25
  @identifier = identifier
28
26
  @$el.attr 'id', identifier
29
27
 
30
- @sandbox.start()
28
+ # TODO get defer through sandbox
29
+ _.defer =>
30
+ @sandbox.start injections
31
+
32
+ prepare_injections: (widget_options) ->
33
+ # TODO remove jquery dependency, and use type detection through sandbox
34
+ for name, suboptions of widget_options when $.type(suboptions) is "object"
35
+ @names.push suboptions.name || name
36
+
37
+ # TODO do not allow elements outside of the tray
38
+ # TODO remove jquery dependency, and use documentFragment to build widgets
39
+ # TODO allow widgets without elements
40
+ @$el.append suboptions.el = jQuery '<div class="widget"></div>'
31
41
 
32
- add: (name, options) ->
42
+ @injection
43
+ name: suboptions.name || name
44
+ options: suboptions
33
45
 
34
- # TODO add widgets as childrens of the tray widget sandbox
35
- # TODO remove jquery dependency, and use documentFragment to build widgets
36
- element = jQuery '<div class="widget"></div>'
37
- options.el = element
38
- @$el.append element
39
- @inject name, options
@@ -256,6 +256,9 @@ define [
256
256
  # use it here instead of overriding all records
257
257
  viewer.items = records
258
258
 
259
+ # Start widgets created by bindings
260
+ @syncronize_children()
261
+
259
262
  @fetching.done (records) =>
260
263
  if viewer.items.length
261
264
  # boo.initialize @$el.find '.results .items'
@@ -322,14 +325,7 @@ define [
322
325
 
323
326
  # TODO move binders to application
324
327
  @inherit_parent_presentation()
325
- # TODO on bind execute presentation_options method and extend and inherit from presenter what needed
326
- @bind @presentation, @sandbox.util.extend(true, @presenter.presentation, @options.presentation)
327
-
328
- @presentation.viewer.subscribe 'items', =>
329
- # Start possible widgets created by items with widget
330
- # instantiation markup
331
- @syncronize_children()
332
-
328
+ @bind @presentation, @presenter.presentation
333
329
 
334
330
  # Start widgets that may have been created by bindings
335
331
  @sandbox.emit 'aura.sandbox.start', @sandbox
@@ -1,11 +1,6 @@
1
1
  'use strict';
2
2
 
3
- window.domo = []
4
-
5
- # TODO define componentjs required packages, as requirejs packages
6
- observable = require('indefinido-observable').mixin
7
-
8
- define ['stampit/stampit'], (stampit) ->
3
+ define ['stampit/stampit', 'observable'], (stampit, observable) ->
9
4
 
10
5
  scopingable = stampit
11
6
  start: ->
@@ -42,7 +37,6 @@ define ['stampit/stampit'], (stampit) ->
42
37
  @
43
38
 
44
39
 
45
-
46
40
  scopable = stampit
47
41
  forward_scope_data: (scope_name, data) ->
48
42
  switch @scope['$' + scope_name].constructor
data/lib/ende/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Ende
2
- VERSION = "0.4.25"
2
+ VERSION = "0.5.0"
3
3
  end