emerson 0.0.5 → 0.0.6
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.
data/lib/emerson/version.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
}
|
22
22
|
|
23
23
|
// Current version of the library. Keep in sync with `package.json`.
|
24
|
-
Emerson.VERSION = '0.0.
|
24
|
+
Emerson.VERSION = '0.0.6';
|
25
25
|
|
26
26
|
// Reference the base lib (one of jQuery, Zepto or Ender) as $.
|
27
27
|
var $ = Emerson.base = (root.jQuery || root.Zepto || root.ender);
|
@@ -34,19 +34,44 @@
|
|
34
34
|
// 1. fire "sink:before" with the sink as the target.
|
35
35
|
// 2. replace the sink with a "prepared" replacement.
|
36
36
|
// 3. fire "sink:after" with the replacement as the target.
|
37
|
-
|
37
|
+
//
|
38
|
+
// Note that, while this method will handle multiple sinks, it does so by
|
39
|
+
// cloning the source, thereby breaking the chain. It's probably a good idea
|
40
|
+
// to have one-to-one matches, but the multiple match option could be good
|
41
|
+
// for doing something along the lines of updating an avatar that is rendered
|
42
|
+
// many times on the page. The `sink:after` event may be used to manipulate
|
43
|
+
// the resultant nodes.
|
44
|
+
//
|
45
|
+
// Pass an `override` argument to target a specific sink, say:
|
46
|
+
//
|
47
|
+
// data-sink="modal"
|
48
|
+
$.fn.sink = function(override) {
|
38
49
|
_.each(this, function(e) {
|
39
50
|
var elem = $(e);
|
40
|
-
var key = elem.data('sink');
|
51
|
+
var key = override || elem.data('sink');
|
52
|
+
var selector, matches;
|
41
53
|
|
42
54
|
if(key) {
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
55
|
+
selector = '[data-sink="' + key + '"]';
|
56
|
+
matches = $(selector);
|
57
|
+
|
58
|
+
if(matches.length > 1) {
|
59
|
+
matches.each(function() {
|
60
|
+
var replacement = prepare(elem.clone(true));
|
61
|
+
|
62
|
+
$(this)
|
63
|
+
.trigger('sink:before')
|
64
|
+
.replaceWith(replacement);
|
65
|
+
|
66
|
+
replacement.trigger('sink:after');
|
67
|
+
});
|
68
|
+
}
|
69
|
+
else {
|
70
|
+
matches.trigger('sink:before');
|
71
|
+
prepare(elem)
|
72
|
+
.replaceAll(matches)
|
73
|
+
.trigger('sink:after');
|
74
|
+
}
|
50
75
|
}
|
51
76
|
});
|
52
77
|
|
@@ -60,7 +85,7 @@
|
|
60
85
|
// ### prepare
|
61
86
|
// Clone the replacement source and, if Emerson.view is defined, apply that.
|
62
87
|
function prepare(source) {
|
63
|
-
var result = source
|
88
|
+
var result = source;
|
64
89
|
|
65
90
|
if(Emerson.view) {
|
66
91
|
result.view();
|