owlcarousel2 2.2.0.pre.4.pre.g22132e0
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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.gitmodules +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +53 -0
- data/Rakefile +13 -0
- data/lib/owlcarousel2.rb +9 -0
- data/lib/owlcarousel2/engine.rb +5 -0
- data/lib/owlcarousel2/version.rb +3 -0
- data/owlcarousel2.gemspec +25 -0
- data/vendor/assets/images/owlcarousel2/ajax-loader.gif +0 -0
- data/vendor/assets/images/owlcarousel2/owl.video.play.png +0 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.animate.js +121 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.autoheight.js +97 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.autoplay.js +199 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.autorefresh.js +111 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.carousel.js +1692 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.hash.js +122 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.lazyload.js +135 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.navigation.js +382 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.support.js +83 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.support.modernizr.js +66 -0
- data/vendor/assets/javascripts/owlcarousel2/owl.video.js +319 -0
- data/vendor/assets/stylesheets/owlcarousel2/_animate.scss +28 -0
- data/vendor/assets/stylesheets/owlcarousel2/_autoheight.scss +7 -0
- data/vendor/assets/stylesheets/owlcarousel2/_core.scss +114 -0
- data/vendor/assets/stylesheets/owlcarousel2/_lazyload.scss +17 -0
- data/vendor/assets/stylesheets/owlcarousel2/_theme.default.scss +30 -0
- data/vendor/assets/stylesheets/owlcarousel2/_theme.green.scss +30 -0
- data/vendor/assets/stylesheets/owlcarousel2/_theme.scss +64 -0
- data/vendor/assets/stylesheets/owlcarousel2/_video.scss +51 -0
- data/vendor/assets/stylesheets/owlcarousel2/owl.carousel.scss +5 -0
- data/vendor/assets/stylesheets/owlcarousel2/owl.theme.default.scss +1 -0
- data/vendor/assets/stylesheets/owlcarousel2/owl.theme.green.scss +1 -0
- metadata +93 -0
@@ -0,0 +1,83 @@
|
|
1
|
+
/**
|
2
|
+
* Support Plugin
|
3
|
+
*
|
4
|
+
* @version 2.1.0
|
5
|
+
* @author Vivid Planet Software GmbH
|
6
|
+
* @author Artus Kolanowski
|
7
|
+
* @author David Deutsch
|
8
|
+
* @license The MIT License (MIT)
|
9
|
+
*/
|
10
|
+
;(function($, window, document, undefined) {
|
11
|
+
|
12
|
+
var style = $('<support>').get(0).style,
|
13
|
+
prefixes = 'Webkit Moz O ms'.split(' '),
|
14
|
+
events = {
|
15
|
+
transition: {
|
16
|
+
end: {
|
17
|
+
WebkitTransition: 'webkitTransitionEnd',
|
18
|
+
MozTransition: 'transitionend',
|
19
|
+
OTransition: 'oTransitionEnd',
|
20
|
+
transition: 'transitionend'
|
21
|
+
}
|
22
|
+
},
|
23
|
+
animation: {
|
24
|
+
end: {
|
25
|
+
WebkitAnimation: 'webkitAnimationEnd',
|
26
|
+
MozAnimation: 'animationend',
|
27
|
+
OAnimation: 'oAnimationEnd',
|
28
|
+
animation: 'animationend'
|
29
|
+
}
|
30
|
+
}
|
31
|
+
},
|
32
|
+
tests = {
|
33
|
+
csstransforms: function() {
|
34
|
+
return !!test('transform');
|
35
|
+
},
|
36
|
+
csstransforms3d: function() {
|
37
|
+
return !!test('perspective');
|
38
|
+
},
|
39
|
+
csstransitions: function() {
|
40
|
+
return !!test('transition');
|
41
|
+
},
|
42
|
+
cssanimations: function() {
|
43
|
+
return !!test('animation');
|
44
|
+
}
|
45
|
+
};
|
46
|
+
|
47
|
+
function test(property, prefixed) {
|
48
|
+
var result = false,
|
49
|
+
upper = property.charAt(0).toUpperCase() + property.slice(1);
|
50
|
+
|
51
|
+
$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {
|
52
|
+
if (style[property] !== undefined) {
|
53
|
+
result = prefixed ? property : true;
|
54
|
+
return false;
|
55
|
+
}
|
56
|
+
});
|
57
|
+
|
58
|
+
return result;
|
59
|
+
}
|
60
|
+
|
61
|
+
function prefixed(property) {
|
62
|
+
return test(property, true);
|
63
|
+
}
|
64
|
+
|
65
|
+
if (tests.csstransitions()) {
|
66
|
+
/* jshint -W053 */
|
67
|
+
$.support.transition = new String(prefixed('transition'))
|
68
|
+
$.support.transition.end = events.transition.end[ $.support.transition ];
|
69
|
+
}
|
70
|
+
|
71
|
+
if (tests.cssanimations()) {
|
72
|
+
/* jshint -W053 */
|
73
|
+
$.support.animation = new String(prefixed('animation'))
|
74
|
+
$.support.animation.end = events.animation.end[ $.support.animation ];
|
75
|
+
}
|
76
|
+
|
77
|
+
if (tests.csstransforms()) {
|
78
|
+
/* jshint -W053 */
|
79
|
+
$.support.transform = new String(prefixed('transform'));
|
80
|
+
$.support.transform3d = tests.csstransforms3d();
|
81
|
+
}
|
82
|
+
|
83
|
+
})(window.Zepto || window.jQuery, window, document);
|
@@ -0,0 +1,66 @@
|
|
1
|
+
/**
|
2
|
+
* Modernizr Support Plugin
|
3
|
+
*
|
4
|
+
* @version 2.1.0
|
5
|
+
* @author Vivid Planet Software GmbH
|
6
|
+
* @author Artus Kolanowski
|
7
|
+
* @author David Deutsch
|
8
|
+
* @license The MIT License (MIT)
|
9
|
+
*/
|
10
|
+
;(function($, Modernizr, window, document, undefined) {
|
11
|
+
|
12
|
+
var events = {
|
13
|
+
transition: {
|
14
|
+
end: {
|
15
|
+
WebkitTransition: 'webkitTransitionEnd',
|
16
|
+
MozTransition: 'transitionend',
|
17
|
+
OTransition: 'oTransitionEnd',
|
18
|
+
transition: 'transitionend'
|
19
|
+
}
|
20
|
+
},
|
21
|
+
animation: {
|
22
|
+
end: {
|
23
|
+
WebkitAnimation: 'webkitAnimationEnd',
|
24
|
+
MozAnimation: 'animationend',
|
25
|
+
OAnimation: 'oAnimationEnd',
|
26
|
+
animation: 'animationend'
|
27
|
+
}
|
28
|
+
}
|
29
|
+
};
|
30
|
+
|
31
|
+
if (!Modernizr) {
|
32
|
+
throw new Error('Modernizr is not loaded.');
|
33
|
+
}
|
34
|
+
|
35
|
+
$.each([ 'cssanimations', 'csstransitions', 'csstransforms', 'csstransforms3d', 'prefixed' ], function(i, property) {
|
36
|
+
if (typeof Modernizr[property] == 'undefined') {
|
37
|
+
throw new Error([ 'Modernizr "', property, '" is not loaded.' ].join(''));
|
38
|
+
}
|
39
|
+
});
|
40
|
+
|
41
|
+
if (Modernizr.csstransitions) {
|
42
|
+
/* jshint -W053 */
|
43
|
+
$.support.transition = new String(Modernizr.prefixed('transition'))
|
44
|
+
$.support.transition.end = events.transition.end[ $.support.transition ];
|
45
|
+
// fix transitionend support detection, which does not work properly for older Android versions,
|
46
|
+
// as it does not give the prefixed event name. here we use Modernizr to ensure the correct event.
|
47
|
+
// see:
|
48
|
+
// https://github.com/Modernizr/Modernizr/issues/897
|
49
|
+
// https://github.com/niksy/modernizr-detects/commit/05d148fc4f3813b1412c836325a9ca78c7a63f4d
|
50
|
+
if (/Android 4\.[123]/.test(navigator.userAgent)) {
|
51
|
+
$.support.transition.end = 'webkitTransitionEnd';
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
if (Modernizr.cssanimations) {
|
56
|
+
/* jshint -W053 */
|
57
|
+
$.support.animation = new String(Modernizr.prefixed('animation'))
|
58
|
+
$.support.animation.end = events.animation.end[ $.support.animation ];
|
59
|
+
}
|
60
|
+
|
61
|
+
if (Modernizr.csstransforms) {
|
62
|
+
/* jshint -W053 */
|
63
|
+
$.support.transform = new String(Modernizr.prefixed('transform'));
|
64
|
+
$.support.transform3d = Modernizr.csstransforms3d;
|
65
|
+
}
|
66
|
+
})(window.Zepto || window.jQuery, window.Modernizr, window, document);
|
@@ -0,0 +1,319 @@
|
|
1
|
+
/**
|
2
|
+
* Video Plugin
|
3
|
+
* @version 2.1.0
|
4
|
+
* @author Bartosz Wojciechowski
|
5
|
+
* @author David Deutsch
|
6
|
+
* @license The MIT License (MIT)
|
7
|
+
*/
|
8
|
+
;(function($, window, document, undefined) {
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Creates the video plugin.
|
12
|
+
* @class The Video Plugin
|
13
|
+
* @param {Owl} carousel - The Owl Carousel
|
14
|
+
*/
|
15
|
+
var Video = function(carousel) {
|
16
|
+
/**
|
17
|
+
* Reference to the core.
|
18
|
+
* @protected
|
19
|
+
* @type {Owl}
|
20
|
+
*/
|
21
|
+
this._core = carousel;
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Cache all video URLs.
|
25
|
+
* @protected
|
26
|
+
* @type {Object}
|
27
|
+
*/
|
28
|
+
this._videos = {};
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Current playing item.
|
32
|
+
* @protected
|
33
|
+
* @type {jQuery}
|
34
|
+
*/
|
35
|
+
this._playing = null;
|
36
|
+
|
37
|
+
/**
|
38
|
+
* All event handlers.
|
39
|
+
* @todo The cloned content removale is too late
|
40
|
+
* @protected
|
41
|
+
* @type {Object}
|
42
|
+
*/
|
43
|
+
this._handlers = {
|
44
|
+
'initialized.owl.carousel': $.proxy(function(e) {
|
45
|
+
if (e.namespace) {
|
46
|
+
this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });
|
47
|
+
}
|
48
|
+
}, this),
|
49
|
+
'resize.owl.carousel': $.proxy(function(e) {
|
50
|
+
if (e.namespace && this._core.settings.video && this.isInFullScreen()) {
|
51
|
+
e.preventDefault();
|
52
|
+
}
|
53
|
+
}, this),
|
54
|
+
'refreshed.owl.carousel': $.proxy(function(e) {
|
55
|
+
if (e.namespace && this._core.is('resizing')) {
|
56
|
+
this._core.$stage.find('.cloned .owl-video-frame').remove();
|
57
|
+
}
|
58
|
+
}, this),
|
59
|
+
'changed.owl.carousel': $.proxy(function(e) {
|
60
|
+
if (e.namespace && e.property.name === 'position' && this._playing) {
|
61
|
+
this.stop();
|
62
|
+
}
|
63
|
+
}, this),
|
64
|
+
'prepared.owl.carousel': $.proxy(function(e) {
|
65
|
+
if (!e.namespace) {
|
66
|
+
return;
|
67
|
+
}
|
68
|
+
|
69
|
+
var $element = $(e.content).find('.owl-video');
|
70
|
+
|
71
|
+
if ($element.length) {
|
72
|
+
$element.css('display', 'none');
|
73
|
+
this.fetch($element, $(e.content));
|
74
|
+
}
|
75
|
+
}, this)
|
76
|
+
};
|
77
|
+
|
78
|
+
// set default options
|
79
|
+
this._core.options = $.extend({}, Video.Defaults, this._core.options);
|
80
|
+
|
81
|
+
// register event handlers
|
82
|
+
this._core.$element.on(this._handlers);
|
83
|
+
|
84
|
+
this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {
|
85
|
+
this.play(e);
|
86
|
+
}, this));
|
87
|
+
};
|
88
|
+
|
89
|
+
/**
|
90
|
+
* Default options.
|
91
|
+
* @public
|
92
|
+
*/
|
93
|
+
Video.Defaults = {
|
94
|
+
video: false,
|
95
|
+
videoHeight: false,
|
96
|
+
videoWidth: false
|
97
|
+
};
|
98
|
+
|
99
|
+
/**
|
100
|
+
* Gets the video ID and the type (YouTube/Vimeo/vzaar only).
|
101
|
+
* @protected
|
102
|
+
* @param {jQuery} target - The target containing the video data.
|
103
|
+
* @param {jQuery} item - The item containing the video.
|
104
|
+
*/
|
105
|
+
Video.prototype.fetch = function(target, item) {
|
106
|
+
var type = (function() {
|
107
|
+
if (target.attr('data-vimeo-id')) {
|
108
|
+
return 'vimeo';
|
109
|
+
} else if (target.attr('data-vzaar-id')) {
|
110
|
+
return 'vzaar'
|
111
|
+
} else {
|
112
|
+
return 'youtube';
|
113
|
+
}
|
114
|
+
})(),
|
115
|
+
id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),
|
116
|
+
width = target.attr('data-width') || this._core.settings.videoWidth,
|
117
|
+
height = target.attr('data-height') || this._core.settings.videoHeight,
|
118
|
+
url = target.attr('href');
|
119
|
+
|
120
|
+
if (url) {
|
121
|
+
|
122
|
+
/*
|
123
|
+
Parses the id's out of the following urls (and probably more):
|
124
|
+
https://www.youtube.com/watch?v=:id
|
125
|
+
https://youtu.be/:id
|
126
|
+
https://vimeo.com/:id
|
127
|
+
https://vimeo.com/channels/:channel/:id
|
128
|
+
https://vimeo.com/groups/:group/videos/:id
|
129
|
+
https://app.vzaar.com/videos/:id
|
130
|
+
|
131
|
+
Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F
|
132
|
+
*/
|
133
|
+
|
134
|
+
id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);
|
135
|
+
|
136
|
+
if (id[3].indexOf('youtu') > -1) {
|
137
|
+
type = 'youtube';
|
138
|
+
} else if (id[3].indexOf('vimeo') > -1) {
|
139
|
+
type = 'vimeo';
|
140
|
+
} else if (id[3].indexOf('vzaar') > -1) {
|
141
|
+
type = 'vzaar';
|
142
|
+
} else {
|
143
|
+
throw new Error('Video URL not supported.');
|
144
|
+
}
|
145
|
+
id = id[6];
|
146
|
+
} else {
|
147
|
+
throw new Error('Missing video URL.');
|
148
|
+
}
|
149
|
+
|
150
|
+
this._videos[url] = {
|
151
|
+
type: type,
|
152
|
+
id: id,
|
153
|
+
width: width,
|
154
|
+
height: height
|
155
|
+
};
|
156
|
+
|
157
|
+
item.attr('data-video', url);
|
158
|
+
|
159
|
+
this.thumbnail(target, this._videos[url]);
|
160
|
+
};
|
161
|
+
|
162
|
+
/**
|
163
|
+
* Creates video thumbnail.
|
164
|
+
* @protected
|
165
|
+
* @param {jQuery} target - The target containing the video data.
|
166
|
+
* @param {Object} info - The video info object.
|
167
|
+
* @see `fetch`
|
168
|
+
*/
|
169
|
+
Video.prototype.thumbnail = function(target, video) {
|
170
|
+
var tnLink,
|
171
|
+
icon,
|
172
|
+
path,
|
173
|
+
dimensions = video.width && video.height ? 'style="width:' + video.width + 'px;height:' + video.height + 'px;"' : '',
|
174
|
+
customTn = target.find('img'),
|
175
|
+
srcType = 'src',
|
176
|
+
lazyClass = '',
|
177
|
+
settings = this._core.settings,
|
178
|
+
create = function(path) {
|
179
|
+
icon = '<div class="owl-video-play-icon"></div>';
|
180
|
+
|
181
|
+
if (settings.lazyLoad) {
|
182
|
+
tnLink = '<div class="owl-video-tn ' + lazyClass + '" ' + srcType + '="' + path + '"></div>';
|
183
|
+
} else {
|
184
|
+
tnLink = '<div class="owl-video-tn" style="opacity:1;background-image:url(' + path + ')"></div>';
|
185
|
+
}
|
186
|
+
target.after(tnLink);
|
187
|
+
target.after(icon);
|
188
|
+
};
|
189
|
+
|
190
|
+
// wrap video content into owl-video-wrapper div
|
191
|
+
target.wrap('<div class="owl-video-wrapper"' + dimensions + '></div>');
|
192
|
+
|
193
|
+
if (this._core.settings.lazyLoad) {
|
194
|
+
srcType = 'data-src';
|
195
|
+
lazyClass = 'owl-lazy';
|
196
|
+
}
|
197
|
+
|
198
|
+
// custom thumbnail
|
199
|
+
if (customTn.length) {
|
200
|
+
create(customTn.attr(srcType));
|
201
|
+
customTn.remove();
|
202
|
+
return false;
|
203
|
+
}
|
204
|
+
|
205
|
+
if (video.type === 'youtube') {
|
206
|
+
path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg";
|
207
|
+
create(path);
|
208
|
+
} else if (video.type === 'vimeo') {
|
209
|
+
$.ajax({
|
210
|
+
type: 'GET',
|
211
|
+
url: '//vimeo.com/api/v2/video/' + video.id + '.json',
|
212
|
+
jsonp: 'callback',
|
213
|
+
dataType: 'jsonp',
|
214
|
+
success: function(data) {
|
215
|
+
path = data[0].thumbnail_large;
|
216
|
+
create(path);
|
217
|
+
}
|
218
|
+
});
|
219
|
+
} else if (video.type === 'vzaar') {
|
220
|
+
$.ajax({
|
221
|
+
type: 'GET',
|
222
|
+
url: '//vzaar.com/api/videos/' + video.id + '.json',
|
223
|
+
jsonp: 'callback',
|
224
|
+
dataType: 'jsonp',
|
225
|
+
success: function(data) {
|
226
|
+
path = data.framegrab_url;
|
227
|
+
create(path);
|
228
|
+
}
|
229
|
+
});
|
230
|
+
}
|
231
|
+
};
|
232
|
+
|
233
|
+
/**
|
234
|
+
* Stops the current video.
|
235
|
+
* @public
|
236
|
+
*/
|
237
|
+
Video.prototype.stop = function() {
|
238
|
+
this._core.trigger('stop', null, 'video');
|
239
|
+
this._playing.find('.owl-video-frame').remove();
|
240
|
+
this._playing.removeClass('owl-video-playing');
|
241
|
+
this._playing = null;
|
242
|
+
this._core.leave('playing');
|
243
|
+
this._core.trigger('stopped', null, 'video');
|
244
|
+
};
|
245
|
+
|
246
|
+
/**
|
247
|
+
* Starts the current video.
|
248
|
+
* @public
|
249
|
+
* @param {Event} event - The event arguments.
|
250
|
+
*/
|
251
|
+
Video.prototype.play = function(event) {
|
252
|
+
var target = $(event.target),
|
253
|
+
item = target.closest('.' + this._core.settings.itemClass),
|
254
|
+
video = this._videos[item.attr('data-video')],
|
255
|
+
width = video.width || '100%',
|
256
|
+
height = video.height || this._core.$stage.height(),
|
257
|
+
html;
|
258
|
+
|
259
|
+
if (this._playing) {
|
260
|
+
return;
|
261
|
+
}
|
262
|
+
|
263
|
+
this._core.enter('playing');
|
264
|
+
this._core.trigger('play', null, 'video');
|
265
|
+
|
266
|
+
item = this._core.items(this._core.relative(item.index()));
|
267
|
+
|
268
|
+
this._core.reset(item.index());
|
269
|
+
|
270
|
+
if (video.type === 'youtube') {
|
271
|
+
html = '<iframe width="' + width + '" height="' + height + '" src="//www.youtube.com/embed/' +
|
272
|
+
video.id + '?autoplay=1&v=' + video.id + '" frameborder="0" allowfullscreen></iframe>';
|
273
|
+
} else if (video.type === 'vimeo') {
|
274
|
+
html = '<iframe src="//player.vimeo.com/video/' + video.id +
|
275
|
+
'?autoplay=1" width="' + width + '" height="' + height +
|
276
|
+
'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>';
|
277
|
+
} else if (video.type === 'vzaar') {
|
278
|
+
html = '<iframe frameborder="0"' + 'height="' + height + '"' + 'width="' + width +
|
279
|
+
'" allowfullscreen mozallowfullscreen webkitAllowFullScreen ' +
|
280
|
+
'src="//view.vzaar.com/' + video.id + '/player?autoplay=true"></iframe>';
|
281
|
+
}
|
282
|
+
|
283
|
+
$('<div class="owl-video-frame">' + html + '</div>').insertAfter(item.find('.owl-video'));
|
284
|
+
|
285
|
+
this._playing = item.addClass('owl-video-playing');
|
286
|
+
};
|
287
|
+
|
288
|
+
/**
|
289
|
+
* Checks whether an video is currently in full screen mode or not.
|
290
|
+
* @todo Bad style because looks like a readonly method but changes members.
|
291
|
+
* @protected
|
292
|
+
* @returns {Boolean}
|
293
|
+
*/
|
294
|
+
Video.prototype.isInFullScreen = function() {
|
295
|
+
var element = document.fullscreenElement || document.mozFullScreenElement ||
|
296
|
+
document.webkitFullscreenElement;
|
297
|
+
|
298
|
+
return element && $(element).parent().hasClass('owl-video-frame');
|
299
|
+
};
|
300
|
+
|
301
|
+
/**
|
302
|
+
* Destroys the plugin.
|
303
|
+
*/
|
304
|
+
Video.prototype.destroy = function() {
|
305
|
+
var handler, property;
|
306
|
+
|
307
|
+
this._core.$element.off('click.owl.video');
|
308
|
+
|
309
|
+
for (handler in this._handlers) {
|
310
|
+
this._core.$element.off(handler, this._handlers[handler]);
|
311
|
+
}
|
312
|
+
for (property in Object.getOwnPropertyNames(this)) {
|
313
|
+
typeof this[property] != 'function' && (this[property] = null);
|
314
|
+
}
|
315
|
+
};
|
316
|
+
|
317
|
+
$.fn.owlCarousel.Constructor.Plugins.Video = Video;
|
318
|
+
|
319
|
+
})(window.Zepto || window.jQuery, window, document);
|