esphinx-rails 1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/Rakefile +21 -0
- data/config/environments/production.rb +1 -0
- data/config/environments/staging.rb +1 -0
- data/config/initializers/assets.rb +7 -0
- data/esphinx.gemspec +19 -0
- data/lib/assets/javascripts/esphinx/element.js +256 -0
- data/lib/assets/javascripts/esphinx/event.js +227 -0
- data/lib/assets/javascripts/esphinx/index.js +3 -0
- data/lib/assets/javascripts/esphinx/lib/collection.js +51 -0
- data/lib/assets/javascripts/esphinx/lib/comparable.js +54 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/array.js +541 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/function.js +46 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/index.js +1 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/location.js +111 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/map.js +29 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/number.js +42 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/object.js +502 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/string.js +130 -0
- data/lib/assets/javascripts/esphinx/lib/extensions/x_path_result.js +31 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/flyweight/factory.js +115 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/flyweight/flyweight.js +12 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/iterator.js +332 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/context.js +42 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/graphs/bfs/element.js +78 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/graphs/bfs/object.js +83 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/graphs/bfs.js +19 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/search.js +24 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/gof/strategies/search/search_proxy.js +52 -0
- data/lib/assets/javascripts/esphinx/lib/patterns/index.js +1 -0
- data/lib/assets/javascripts/esphinx/main.js +361 -0
- data/lib/assets/javascripts/esphinx/node.js +276 -0
- data/lib/assets/javascripts/esphinx/properties/forms.js +161 -0
- data/lib/assets/javascripts/esphinx/properties/inputs/text.js +29 -0
- data/lib/assets/javascripts/esphinx/property.js +308 -0
- data/lib/assets/javascripts/esphinx/query.js +347 -0
- data/lib/assets/javascripts/esphinx/samples/sort.js +30 -0
- data/lib/assets/javascripts/esphinx/style.js +342 -0
- data/lib/assets/javascripts/esphinx/util/ajax.js +152 -0
- data/lib/assets/javascripts/esphinx/util/autocomplete.js +356 -0
- data/lib/assets/javascripts/esphinx/util/browser.js +66 -0
- data/lib/assets/javascripts/esphinx/util/cookie.js +167 -0
- data/lib/assets/javascripts/esphinx/util/keyboard.js +110 -0
- data/lib/assets/javascripts/esphinx/util/loader.js +84 -0
- data/lib/assets/javascripts/esphinx/util/observer.js +58 -0
- data/lib/assets/javascripts/esphinx/util/promise.js +127 -0
- data/lib/assets/javascripts/esphinx/util/protector.js +142 -0
- data/lib/assets/javascripts/esphinx/util/range.js +6 -0
- data/lib/assets/javascripts/esphinx/util/scrollbar.js +22 -0
- data/lib/esphinx/rails/engine.rb +7 -0
- data/lib/esphinx/rails/version.rb +5 -0
- data/lib/esphinx-rails.rb +1 -0
- data/vendor/assets/javascripts/jquery-2.2.2.min.js +1 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d566d1cefa1a1296f58f60c5b5d7a952f1663e53
|
4
|
+
data.tar.gz: 199f1ca54abde4caf59ce392d24418df7c16d76d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 475e105cfc42966a10f63b1024f75dbb50f5567a9b0423af7f4af10deecfcbe37e749048a1ffe4efee5394d1428b9439a59f2a0900f134b6da7d8aa79a062e1e
|
7
|
+
data.tar.gz: d9e01840069b9c4b94804c4f0eaa69ddf97b3885134ec19f04d0e16be331baf709dca1012138c5d02895e3a46ad4e36322ab14b045bc0f6d5e4ae62efffd8399
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2014 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'esphinx-rails'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Rails.application.config.assets.precompile += %w( esphinx.js )
|
@@ -0,0 +1 @@
|
|
1
|
+
Rails.application.config.assets.precompile += %w( esphinx.js )
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# See what's difference between .application and .application.egine, if there is a effective difference.
|
2
|
+
# Rails.application.engine.config.assets.compile += ...
|
3
|
+
|
4
|
+
# Configs to Production
|
5
|
+
|
6
|
+
# precompilation on deploy. Basicaly, must be precompile the assets that contains "//= require_tree .", that mount all files in one.
|
7
|
+
Rails.application.config.assets.precompile += %w( esphinx.js )
|
data/esphinx.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
require "esphinx/rails/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "esphinx-rails"
|
7
|
+
s.version = ESphinx::Rails::VERSION
|
8
|
+
s.authors = ["rplaurindo"]
|
9
|
+
s.email = ["rafaelplaurindo@gmail.com"]
|
10
|
+
s.homepage = "https://rubygems.org/gems/esphinx-rails"
|
11
|
+
s.summary = %q{Summary of ESphinx}
|
12
|
+
s.description = %q{Abstraction helpers for Javascript.}
|
13
|
+
s.license = "MIT"
|
14
|
+
s.test_files = Dir["test/**/*"]
|
15
|
+
|
16
|
+
s.files = Dir["{config,lib,vendor}/**/*", "MIT-LICENSE", "Rakefile", "README.md", "esphinx.gemspec"]
|
17
|
+
s.require_paths = %w{config lib vendor}
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,256 @@
|
|
1
|
+
var
|
2
|
+
esPhinx;
|
3
|
+
|
4
|
+
|
5
|
+
(function($) {
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
$.prototype.extend({
|
9
|
+
|
10
|
+
// TODO
|
11
|
+
// selectText: function(start = 0, end) {
|
12
|
+
selectText: function(start, end) {
|
13
|
+
if (isNaN(start)) {start = 0;}
|
14
|
+
|
15
|
+
var
|
16
|
+
mainReference = this,
|
17
|
+
node = mainReference.asNode(),
|
18
|
+
aux,
|
19
|
+
text;
|
20
|
+
|
21
|
+
// selectionStart and selectionEnd only exists for input elements
|
22
|
+
if (node instanceof window.HTMLInputElement) {
|
23
|
+
text = $(node).value();
|
24
|
+
|
25
|
+
if (!start || start != "number") {
|
26
|
+
$.reverseEach(text, node.selectionStart,
|
27
|
+
function(c, i) {
|
28
|
+
// debugger
|
29
|
+
if (c == " ") {
|
30
|
+
start = i;
|
31
|
+
this.finalize();
|
32
|
+
}
|
33
|
+
});
|
34
|
+
}
|
35
|
+
|
36
|
+
if (!end || typeof end != "number") {
|
37
|
+
$.reverseEach(text, node.selectionEnd,
|
38
|
+
function(c, i) {
|
39
|
+
if (c == " ") {
|
40
|
+
end = i;
|
41
|
+
this.finalizeOnReverse();
|
42
|
+
}
|
43
|
+
});
|
44
|
+
}
|
45
|
+
|
46
|
+
if (end < start) {
|
47
|
+
aux = start;
|
48
|
+
start = end;
|
49
|
+
end = aux;
|
50
|
+
}
|
51
|
+
|
52
|
+
node.setSelectionRange(start, end);
|
53
|
+
mainReference.focus();
|
54
|
+
|
55
|
+
return mainReference;
|
56
|
+
}
|
57
|
+
|
58
|
+
},
|
59
|
+
|
60
|
+
attribute: function(attrName, value) {
|
61
|
+
var
|
62
|
+
attr,
|
63
|
+
node = this.asNode(),
|
64
|
+
|
65
|
+
block = function(node) {
|
66
|
+
node.setAttribute(attrName, value);
|
67
|
+
};
|
68
|
+
|
69
|
+
if (this.length === 0) {
|
70
|
+
return this;
|
71
|
+
}
|
72
|
+
|
73
|
+
if (typeof value == "boolean" || value || value === "") {
|
74
|
+
this.each(block);
|
75
|
+
|
76
|
+
return this;
|
77
|
+
} else {
|
78
|
+
attr = node.getAttribute(attrName);
|
79
|
+
if (attr) {
|
80
|
+
return attr;
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
return undefined;
|
85
|
+
},
|
86
|
+
|
87
|
+
property: function(propertyName, value) {
|
88
|
+
var
|
89
|
+
node = this.asNode(),
|
90
|
+
|
91
|
+
block = function(node) {
|
92
|
+
node[propertyName] = value;
|
93
|
+
};
|
94
|
+
|
95
|
+
if (this.length === 0) {
|
96
|
+
return this;
|
97
|
+
}
|
98
|
+
|
99
|
+
if (typeof value == "boolean" || value || value === "") {
|
100
|
+
this.each(block);
|
101
|
+
|
102
|
+
return this;
|
103
|
+
} else {
|
104
|
+
if (node[propertyName] ||
|
105
|
+
typeof node[propertyName] == "boolean") {
|
106
|
+
return node[propertyName];
|
107
|
+
}
|
108
|
+
}
|
109
|
+
|
110
|
+
return undefined;
|
111
|
+
},
|
112
|
+
|
113
|
+
tagName: function() {
|
114
|
+
if (this.some() && this.asNode() instanceof window.Element) {
|
115
|
+
return this.property("tagName").toLowerCase();
|
116
|
+
}
|
117
|
+
|
118
|
+
return "";
|
119
|
+
},
|
120
|
+
|
121
|
+
focus: function() {
|
122
|
+
this.asNode().focus();
|
123
|
+
return this;
|
124
|
+
},
|
125
|
+
|
126
|
+
select: function() {
|
127
|
+
return this.property("selected", true);
|
128
|
+
},
|
129
|
+
|
130
|
+
selected: function() {
|
131
|
+
return this.property("selected");
|
132
|
+
},
|
133
|
+
|
134
|
+
unselect: function() {
|
135
|
+
return this.property("selected", false);
|
136
|
+
},
|
137
|
+
|
138
|
+
removeClass: function(classList) {
|
139
|
+
var
|
140
|
+
currentClassList,
|
141
|
+
pattern,
|
142
|
+
removed,
|
143
|
+
|
144
|
+
block = function(node) {
|
145
|
+
currentClassList = $(node).attribute("class");
|
146
|
+
removed = currentClassList.replace(pattern, "");
|
147
|
+
$(node).attribute("class", removed.replace(/( )+/g, " ")
|
148
|
+
.trim());
|
149
|
+
};
|
150
|
+
|
151
|
+
if (arguments.length > 1) {
|
152
|
+
classList = Array.from(arguments);
|
153
|
+
pattern = new RegExp("\\b((" + classList
|
154
|
+
.join(")|(") + "))(?=(\\b| ))", "g");
|
155
|
+
} else {
|
156
|
+
pattern = new RegExp("\\b((" + classList.split(" ")
|
157
|
+
.join(")|(") + "))(?=(\\b| ))", "g");
|
158
|
+
}
|
159
|
+
|
160
|
+
this.each(block);
|
161
|
+
|
162
|
+
return this;
|
163
|
+
},
|
164
|
+
|
165
|
+
addClass: function(classList) {
|
166
|
+
var
|
167
|
+
currentClassList,
|
168
|
+
asString,
|
169
|
+
|
170
|
+
block = function(node) {
|
171
|
+
currentClassList = $(node).attribute("class") || "";
|
172
|
+
$(node).attribute("class", (currentClassList + " " +
|
173
|
+
asString).trim());
|
174
|
+
};
|
175
|
+
|
176
|
+
if (arguments.length > 1) {
|
177
|
+
classList = Array.from(arguments);
|
178
|
+
asString = classList.join(" ");
|
179
|
+
} else if (typeof classList == "string") {
|
180
|
+
asString = classList;
|
181
|
+
}
|
182
|
+
|
183
|
+
this.each(block);
|
184
|
+
|
185
|
+
return this;
|
186
|
+
},
|
187
|
+
|
188
|
+
check: function() {
|
189
|
+
return this.property("checked", true);
|
190
|
+
},
|
191
|
+
|
192
|
+
checked: function() {
|
193
|
+
return this.property("checked");
|
194
|
+
},
|
195
|
+
|
196
|
+
uncheck: function() {
|
197
|
+
return this.property("checked", false);
|
198
|
+
},
|
199
|
+
|
200
|
+
visible: function() {
|
201
|
+
var
|
202
|
+
asIterable,
|
203
|
+
iterator,
|
204
|
+
visible = true,
|
205
|
+
|
206
|
+
callback = function(element) {
|
207
|
+
element = $(element);
|
208
|
+
if (element.css("display") == "none" ||
|
209
|
+
element.css("visibility") == "hidden" ||
|
210
|
+
element.css("opacity") === 0) {
|
211
|
+
visible = false;
|
212
|
+
} else {
|
213
|
+
visible = true;
|
214
|
+
iterator.finalize();
|
215
|
+
}
|
216
|
+
};
|
217
|
+
|
218
|
+
if (this.some()) {
|
219
|
+
asIterable = this.asArray();
|
220
|
+
iterator = Iterable.Proxy.new(asIterable);
|
221
|
+
iterator.each(callback);
|
222
|
+
}
|
223
|
+
|
224
|
+
return visible;
|
225
|
+
},
|
226
|
+
|
227
|
+
removeAttr: function(attrName) {
|
228
|
+
var
|
229
|
+
block = function(node) {
|
230
|
+
node.removeAttribute(attrName);
|
231
|
+
};
|
232
|
+
|
233
|
+
this.each(block);
|
234
|
+
|
235
|
+
return this;
|
236
|
+
},
|
237
|
+
|
238
|
+
html: function(content) {
|
239
|
+
var
|
240
|
+
callback = function(element) {
|
241
|
+
element.innerHTML = content;
|
242
|
+
};
|
243
|
+
|
244
|
+
if (typeof content == "string") {
|
245
|
+
this.elements().selectEach(callback);
|
246
|
+
} else {
|
247
|
+
this.clean();
|
248
|
+
this.append(content);
|
249
|
+
}
|
250
|
+
|
251
|
+
return this;
|
252
|
+
}
|
253
|
+
|
254
|
+
});
|
255
|
+
|
256
|
+
}(esPhinx));
|
@@ -0,0 +1,227 @@
|
|
1
|
+
var
|
2
|
+
esPhinx;
|
3
|
+
|
4
|
+
|
5
|
+
(function($) {
|
6
|
+
"use strict";
|
7
|
+
|
8
|
+
var
|
9
|
+
nodes = [],
|
10
|
+
mappedListeners = {},
|
11
|
+
|
12
|
+
mapped = function(node) {
|
13
|
+
var
|
14
|
+
index = nodes.indexOfEquivalence(node);
|
15
|
+
|
16
|
+
return mappedListeners[index];
|
17
|
+
},
|
18
|
+
|
19
|
+
mapEventListener = function(node, eventName, runOnListener) {
|
20
|
+
var
|
21
|
+
index,
|
22
|
+
mappedNode = mapped(node),
|
23
|
+
map = {};
|
24
|
+
|
25
|
+
if (runOnListener) {
|
26
|
+
map[eventName] = [runOnListener];
|
27
|
+
if (mappedNode) {
|
28
|
+
if (mappedNode[eventName]) {
|
29
|
+
mappedNode[eventName].push(runOnListener);
|
30
|
+
} else {
|
31
|
+
mappedNode[eventName] = map[eventName];
|
32
|
+
}
|
33
|
+
return mappedNode[eventName];
|
34
|
+
} else {
|
35
|
+
nodes.push(node);
|
36
|
+
index = nodes.length - 1;
|
37
|
+
mappedListeners[index] = map;
|
38
|
+
return mappedListeners[index][eventName];
|
39
|
+
}
|
40
|
+
} else {
|
41
|
+
if (mappedNode) {
|
42
|
+
return mappedNode[eventName];
|
43
|
+
} else {
|
44
|
+
return [];
|
45
|
+
}
|
46
|
+
}
|
47
|
+
},
|
48
|
+
|
49
|
+
removeListener = function(node, eventName, runOnListener) {
|
50
|
+
var
|
51
|
+
mappedNode = mapped(node),
|
52
|
+
callbacks = mappedNode[eventName];
|
53
|
+
|
54
|
+
callbacks.delete(runOnListener);
|
55
|
+
},
|
56
|
+
|
57
|
+
removeListeners = function(node, eventName) {
|
58
|
+
var
|
59
|
+
mappedNode = mapped(node);
|
60
|
+
|
61
|
+
delete mappedNode[eventName];
|
62
|
+
},
|
63
|
+
|
64
|
+
mapEach = function(eventName, runOnListener, callback) {
|
65
|
+
var
|
66
|
+
iteratorBlock = function(node) {
|
67
|
+
if (node instanceof window.Node || node == window) {
|
68
|
+
mapEventListener(node, eventName, runOnListener);
|
69
|
+
callback.call(node);
|
70
|
+
}
|
71
|
+
};
|
72
|
+
|
73
|
+
this.each(iteratorBlock);
|
74
|
+
},
|
75
|
+
|
76
|
+
// qual seria o evento neste caso, para, por exemplo, usar o stopPropagation?
|
77
|
+
onChangeNode = function(runOnListener) {
|
78
|
+
var
|
79
|
+
added,
|
80
|
+
self = this,
|
81
|
+
|
82
|
+
callback = function(mutation) {
|
83
|
+
added = $(mutation.addedNodes).elements();
|
84
|
+
if (added.some()) {
|
85
|
+
runOnListener.call(self, added.asArray());
|
86
|
+
}
|
87
|
+
},
|
88
|
+
|
89
|
+
observeCallback = function(mutations) {
|
90
|
+
mutations.forEach(callback);
|
91
|
+
|
92
|
+
};
|
93
|
+
|
94
|
+
|
95
|
+
mapEach.call(self, "changeNode", runOnListener,
|
96
|
+
function() {
|
97
|
+
$(this).observe(observeCallback);
|
98
|
+
}
|
99
|
+
);
|
100
|
+
|
101
|
+
},
|
102
|
+
|
103
|
+
// will see how to unbind the node event
|
104
|
+
// offChangeNode = function(runOnListener) {
|
105
|
+
// // disconnect
|
106
|
+
// },
|
107
|
+
|
108
|
+
on = function(eventName, capture, runOnListener) {
|
109
|
+
var
|
110
|
+
cloned,
|
111
|
+
runOnLoad,
|
112
|
+
imgs,
|
113
|
+
self = this,
|
114
|
+
html = $("html"),
|
115
|
+
clone = self.clone(true),
|
116
|
+
|
117
|
+
callback = function(node) {
|
118
|
+
cloned = $(node);
|
119
|
+
cloned.hide();
|
120
|
+
html.prepend(node);
|
121
|
+
|
122
|
+
node.addEventListener(eventName, runOnLoad, capture);
|
123
|
+
},
|
124
|
+
|
125
|
+
iteratorBlock = function(node) {
|
126
|
+
node.removeEventListener(eventName, runOnLoad, capture);
|
127
|
+
};
|
128
|
+
|
129
|
+
if (typeof capture == "function") {
|
130
|
+
runOnListener = capture;
|
131
|
+
capture = false;
|
132
|
+
} else if (typeof capture != "boolean") {
|
133
|
+
capture = false;
|
134
|
+
}
|
135
|
+
|
136
|
+
switch (eventName) {
|
137
|
+
case "changeNode":
|
138
|
+
return onChangeNode.call(self, runOnListener);
|
139
|
+
case "load":
|
140
|
+
imgs = clone.find("img");
|
141
|
+
if (imgs.some()) {
|
142
|
+
clone = imgs;
|
143
|
+
}
|
144
|
+
|
145
|
+
runOnLoad = function(e) {
|
146
|
+
runOnListener.call(this, e);
|
147
|
+
html.remove(clone);
|
148
|
+
|
149
|
+
clone.each(iteratorBlock);
|
150
|
+
};
|
151
|
+
|
152
|
+
clone.each(callback);
|
153
|
+
break;
|
154
|
+
|
155
|
+
default:
|
156
|
+
mapEach.call(self, eventName, runOnListener,
|
157
|
+
function() {
|
158
|
+
this.addEventListener(eventName, runOnListener,
|
159
|
+
capture);
|
160
|
+
});
|
161
|
+
}
|
162
|
+
};
|
163
|
+
|
164
|
+
|
165
|
+
$.prototype.extend(true, {
|
166
|
+
|
167
|
+
on: function(eventName, capture, runOnListener) {
|
168
|
+
on.call(this, eventName, capture, runOnListener);
|
169
|
+
|
170
|
+
return this;
|
171
|
+
},
|
172
|
+
|
173
|
+
off: function(eventName, capture, runOnListener) {
|
174
|
+
var
|
175
|
+
callback,
|
176
|
+
node,
|
177
|
+
|
178
|
+
iteratorBlock = function(runOnListener) {
|
179
|
+
var
|
180
|
+
booleanIteratorBlock = function(capture) {
|
181
|
+
node.removeEventListener(eventName, runOnListener,
|
182
|
+
capture);
|
183
|
+
};
|
184
|
+
|
185
|
+
[true, false].forEach(booleanIteratorBlock);
|
186
|
+
removeListeners(node, eventName);
|
187
|
+
};
|
188
|
+
|
189
|
+
if (typeof capture == "function") {
|
190
|
+
runOnListener = capture;
|
191
|
+
capture = false;
|
192
|
+
} else if (typeof capture != "boolean") {
|
193
|
+
capture = false;
|
194
|
+
}
|
195
|
+
|
196
|
+
if (runOnListener) {
|
197
|
+
callback = function(n) {
|
198
|
+
node = n;
|
199
|
+
node.removeEventListener(eventName, runOnListener, capture);
|
200
|
+
removeListener(node, eventName, runOnListener);
|
201
|
+
};
|
202
|
+
} else {
|
203
|
+
callback = function(n) {
|
204
|
+
node = n;
|
205
|
+
if (mapped(node)) {
|
206
|
+
mapEventListener(node, eventName)
|
207
|
+
.forEach(iteratorBlock);
|
208
|
+
}
|
209
|
+
};
|
210
|
+
}
|
211
|
+
|
212
|
+
this.each(callback);
|
213
|
+
|
214
|
+
return this;
|
215
|
+
},
|
216
|
+
|
217
|
+
attachedEvent: function(eventName) {
|
218
|
+
if (mapped(this.asNode())[eventName]) {
|
219
|
+
return true;
|
220
|
+
}
|
221
|
+
|
222
|
+
return false;
|
223
|
+
}
|
224
|
+
|
225
|
+
});
|
226
|
+
|
227
|
+
})(esPhinx);
|