ende 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/component.json +4 -5
- data/lib/assets/javascripts/aura/extensions/loader.js.coffee +15 -11
- data/lib/assets/javascripts/aura/extensions/mask.js.coffee +13 -77
- data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +1 -1
- data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +1 -0
- data/lib/assets/javascripts/aura/extensions/routes.js.coffee +14 -9
- data/lib/assets/javascripts/aura/extensions/states.js.coffee +27 -22
- data/lib/assets/javascripts/config/initializers/jquery.js.coffee +7 -7
- data/lib/assets/javascripts/config/initializers/requirejs.js.coffee +1 -0
- data/lib/assets/javascripts/config/{initializers/load_components.js.coffee → load_components.js.coffee} +7 -4
- data/lib/assets/javascripts/ende.js.coffee +1 -0
- data/lib/assets/javascripts/widgets/viewer/main.js.coffee +80 -23
- data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +87 -15
- data/lib/ende/version.rb +1 -1
- data/vendor/assets/components/build.css +111 -0
- data/vendor/assets/components/build.js +28280 -0
- data/vendor/assets/components/ende_build.js +4955 -6751
- data/vendor/components/indefinido-observable/component.json +1 -2
- data/vendor/components/indefinido-observable/lib/observable.js +28 -6
- data/vendor/components/mikeric-rivets/component.json +2 -2
- data/vendor/components/mikeric-rivets/dist/rivets.js +632 -873
- metadata +5 -3
@@ -1,39 +1,111 @@
|
|
1
1
|
'use strict';
|
2
2
|
|
3
|
+
window.domo = []
|
4
|
+
|
3
5
|
# TODO define componentjs required packages, as requirejs packages
|
4
6
|
observable = require('indefinido-observable').mixin
|
5
7
|
|
6
|
-
define ->
|
7
|
-
(widget) ->
|
8
|
+
define ['stampit/stampit'], (stampit) ->
|
8
9
|
|
9
|
-
|
10
|
+
scopingable = stampit
|
11
|
+
start: ->
|
12
|
+
deferred = @widget.sandbox.data.deferred()
|
10
13
|
|
11
|
-
|
12
|
-
|
14
|
+
# Update the scope after resolution
|
15
|
+
deferred.done ->
|
16
|
+
for scope_name, data of @widget.scopings
|
17
|
+
@widget.forward_scope_data scope_name, data
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
# TODO think of a better method name than repopulate
|
20
|
+
@widget.repopulate()
|
21
|
+
|
22
|
+
@deferred = deferred
|
23
|
+
|
24
|
+
reset: ->
|
25
|
+
@start()
|
26
|
+
|
27
|
+
# TODO move bindings logic to here
|
28
|
+
enqueue: (scope_name, value) ->
|
29
|
+
@widget.scopings[scope_name] = value
|
30
|
+
,
|
31
|
+
deferred: null
|
32
|
+
scopings: null
|
33
|
+
, ->
|
34
|
+
|
35
|
+
@widget.scopings ||= {}
|
18
36
|
|
19
|
-
|
37
|
+
# Resolve scopings after scoping has ended
|
38
|
+
@resolve = _.debounce =>
|
39
|
+
@deferred.resolveWith @, [@scopings]
|
40
|
+
@reset()
|
20
41
|
|
42
|
+
@
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
scopable = stampit
|
47
|
+
forward_scope_data: (scope_name, data) ->
|
48
|
+
switch @scope['$' + scope_name].constructor
|
49
|
+
when Array
|
50
|
+
data = [data] unless $.type(data) == 'array'
|
51
|
+
@scope[scope_name] data...
|
52
|
+
else
|
53
|
+
@scope[scope_name] data
|
54
|
+
|
55
|
+
enhancable_presenter: (presenter) ->
|
56
|
+
widget = @
|
57
|
+
scoping = scopingable widget: @
|
58
|
+
scoping.start()
|
59
|
+
|
60
|
+
# Update presenter interface to support binders customization
|
61
|
+
presenter.presentation ||= {binders: {}}
|
62
|
+
presenter.presentation.binders ||= {}
|
63
|
+
{presentation: {binders}} = presenter
|
21
64
|
|
65
|
+
# Create custom bindings for this scope, for storing scope
|
66
|
+
# changes per widget instance
|
22
67
|
binders['scope-*'] =
|
23
68
|
bind: ->
|
24
69
|
@scope_name = @args[0].replace /-/g, '_'
|
70
|
+
@widget = widget
|
25
71
|
routine: (element, value) ->
|
26
|
-
|
72
|
+
scoping.enqueue @scope_name, value
|
73
|
+
scoping.resolve()
|
27
74
|
|
28
75
|
binders.scope =
|
29
|
-
|
76
|
+
bind: ->
|
77
|
+
@widget = widget
|
30
78
|
routine: (element, value) ->
|
31
79
|
keypath = @keypath.substring 1 if @keypath[0] == '_'
|
32
80
|
name = "by_#{@key}_#{keypath || @keypath}"
|
33
|
-
widget.scope_to widget.scope[name] value
|
34
81
|
|
35
|
-
|
36
|
-
|
82
|
+
scoping.enqueue name, value
|
83
|
+
scoping.resolve()
|
84
|
+
|
85
|
+
|
86
|
+
,
|
87
|
+
scopings: null
|
88
|
+
, ->
|
89
|
+
|
90
|
+
observable @widget
|
91
|
+
|
92
|
+
# TODO compose this factory with the widget factory instead of
|
93
|
+
# creating a new instance and merging methods
|
94
|
+
stampit.mixIn @widget, scopable.fixed.methods
|
95
|
+
|
96
|
+
# TODO transfer data from old scope to new one
|
97
|
+
# widget.subscribe 'scope', ->
|
98
|
+
|
99
|
+
# TODO @widget.scopings = scopings = []
|
100
|
+
@widget.scopings = []
|
101
|
+
@enhancable_presenter.call @widget, @widget.presenter
|
102
|
+
@widget.subscribe 'presenter', @widget.enhancable_presenter
|
103
|
+
|
104
|
+
@widget
|
105
|
+
|
106
|
+
|
107
|
+
(widget) -> scopable widget: widget
|
108
|
+
|
37
109
|
|
38
110
|
|
39
111
|
|
data/lib/ende/version.rb
CHANGED
@@ -0,0 +1,111 @@
|
|
1
|
+
.overlay {
|
2
|
+
position: absolute;
|
3
|
+
top: 0;
|
4
|
+
left: 0;
|
5
|
+
opacity: 1;
|
6
|
+
width: 100%;
|
7
|
+
height: 100%;
|
8
|
+
background: rgba(0,0,0,.75);
|
9
|
+
-webkit-transition: opacity 300ms;
|
10
|
+
-moz-transition: opacity 300ms;
|
11
|
+
transition: opacity 300ms;
|
12
|
+
z-index: 500;
|
13
|
+
}
|
14
|
+
|
15
|
+
.overlay.hide {
|
16
|
+
pointer-events: none;
|
17
|
+
opacity: 0;
|
18
|
+
}
|
19
|
+
|
20
|
+
#dialog {
|
21
|
+
position: fixed;
|
22
|
+
left: 50%;
|
23
|
+
top: 150px;
|
24
|
+
max-width: 600px;
|
25
|
+
min-width: 250px;
|
26
|
+
border: 1px solid #eee;
|
27
|
+
background: white;
|
28
|
+
z-index: 1000;
|
29
|
+
}
|
30
|
+
|
31
|
+
#dialog .content {
|
32
|
+
padding: 15px 20px;
|
33
|
+
}
|
34
|
+
|
35
|
+
#dialog h1 {
|
36
|
+
margin: 0 0 5px 0;
|
37
|
+
font-size: 16px;
|
38
|
+
font-weight: normal;
|
39
|
+
}
|
40
|
+
|
41
|
+
#dialog p {
|
42
|
+
margin: 0;
|
43
|
+
padding: 0;
|
44
|
+
font-size: .9em;
|
45
|
+
}
|
46
|
+
|
47
|
+
/* close */
|
48
|
+
|
49
|
+
#dialog .close {
|
50
|
+
position: absolute;
|
51
|
+
top: 3px;
|
52
|
+
right: 10px;
|
53
|
+
text-decoration: none;
|
54
|
+
color: #888;
|
55
|
+
font-size: 16px;
|
56
|
+
font-weight: bold;
|
57
|
+
display: none;
|
58
|
+
}
|
59
|
+
|
60
|
+
#dialog .close em {
|
61
|
+
display: none;
|
62
|
+
}
|
63
|
+
|
64
|
+
#dialog.closable .close {
|
65
|
+
display: block;
|
66
|
+
}
|
67
|
+
|
68
|
+
#dialog .close:hover {
|
69
|
+
color: black;
|
70
|
+
}
|
71
|
+
|
72
|
+
#dialog .close:active {
|
73
|
+
margin-top: 1px;
|
74
|
+
}
|
75
|
+
|
76
|
+
/* slide */
|
77
|
+
|
78
|
+
#dialog.slide {
|
79
|
+
-webkit-transition: opacity 300ms, top 300ms;
|
80
|
+
-moz-transition: opacity 300ms, top 300ms;
|
81
|
+
}
|
82
|
+
|
83
|
+
#dialog.slide.hide {
|
84
|
+
opacity: 0;
|
85
|
+
top: -500px;
|
86
|
+
}
|
87
|
+
|
88
|
+
/* fade */
|
89
|
+
|
90
|
+
#dialog.fade {
|
91
|
+
-webkit-transition: opacity 300ms;
|
92
|
+
-moz-transition: opacity 300ms;
|
93
|
+
}
|
94
|
+
|
95
|
+
#dialog.fade.hide {
|
96
|
+
opacity: 0;
|
97
|
+
}
|
98
|
+
|
99
|
+
/* scale */
|
100
|
+
|
101
|
+
#dialog.scale {
|
102
|
+
-webkit-transition: -webkit-transform 300ms;
|
103
|
+
-moz-transition: -moz-transform 300ms;
|
104
|
+
-webkit-transform: scale(1);
|
105
|
+
-moz-transform: scale(1);
|
106
|
+
}
|
107
|
+
|
108
|
+
#dialog.scale.hide {
|
109
|
+
-webkit-transform: scale(0);
|
110
|
+
-moz-transform: scale(0);
|
111
|
+
}
|