blueimp-gallery 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e5a0d430a28bef2ceb7b9240a24437aa1cbcbc3d
4
+ data.tar.gz: 1f53e45fb498800372c531450f126ae09b34a5b9
5
+ SHA512:
6
+ metadata.gz: 0a2d5280fcd938595ae29f0b107aaa3ef3ab2715ec8836caffc111f96463dc48492fe44f5d57d198246690753a7a6d196d1b9545f00bbb25d97346ec25f01e7a
7
+ data.tar.gz: 7a10b4dfd24dcfab97bdcf5fb5538f1e5e633b46fe07b84409db447241e952bb8397b1451cec679a365efe5f3af86f973dfe07dcaf64f69b28d6ca02b3e324c8
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## v0.0.1
2
+
3
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in blueimp-gallery.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Christopher Fernández
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,137 @@
1
+ # blueimp Gallery for Rails
2
+
3
+ blueimp Gallery is an image and video gallery featuring carousel and lightbox gallery with mouse and keyboard navigation, transition effects and more. This amazing plugin was created by [Sebastian Tschan](https://github.com/blueimp).
4
+
5
+ * blueimp Gallery version 2.7.3
6
+ * Official Website: http://blueimp.github.io/Gallery/
7
+
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ gem 'blueimp-gallery'
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install blueimp-gallery
22
+
23
+ Add this line to your `app/assets/javascripts/application.js`
24
+
25
+ //= require blueimp-gallery-all
26
+
27
+ Add this line to your `app/assets/stylesheets/application.css`
28
+
29
+ *= require blueimp-gallery-all
30
+
31
+ ## Usage
32
+
33
+ ### Lightbox
34
+
35
+ This is a basic example how create a lightbox.
36
+
37
+ Add the following HTML snippet to your view:
38
+
39
+ ```html
40
+ <div id="blueimp-gallery" class="blueimp-gallery">
41
+ <div class="slides"></div>
42
+ <h3 class="title"></h3>
43
+ <a class="prev">‹</a>
44
+ <a class="next">›</a>
45
+ <a class="close">×</a>
46
+ <a class="play-pause"></a>
47
+ <ol class="indicator"></ol>
48
+ </div>
49
+ ```
50
+
51
+ Add a list of image links you want to show into your gallery:
52
+
53
+
54
+ ```html
55
+ <div id="links">
56
+ <a href="images/photo1.jpg" title="Photo 1">
57
+ <img src="images/thumb_photo1.jpg" alt="Photo 1">
58
+ </a>
59
+ <a href="images/photo2.jpg" title="Photo 2">
60
+ <img src="images/thumb_photo2.jpg" alt="Photo 2">
61
+ </a>
62
+ <a href="images/photo3.jpg" title="Photo 3">
63
+ <img src="images/thumb_photo3.jpg" alt="Photo 3">
64
+ </a>
65
+ </div>
66
+ ```
67
+
68
+ Finally add this JavaScript to display the images in your beautiful gallery:
69
+
70
+ ```html
71
+ <script>
72
+ document.getElementById('links').onclick = function (event) {
73
+ event = event || window.event;
74
+ var target = event.target || event.srcElement,
75
+ link = target.src ? target.parentNode : target,
76
+ options = {index: link, event: event},
77
+ links = this.getElementsByTagName('a');
78
+ blueimp.Gallery(links, options);
79
+ };
80
+ </script>
81
+ ```
82
+
83
+ or CoffeeScript if you want to add the script as an asset:
84
+
85
+ ```coffeescript
86
+ document.getElementById("links").onclick = (event) ->
87
+ event = event or window.event
88
+ target = event.target or event.srcElement
89
+ link = (if target.src then target.parentNode else target)
90
+ options =
91
+ index: link
92
+ event: event
93
+
94
+ links = @getElementsByTagName("a")
95
+ blueimp.Gallery links, options
96
+ ```
97
+
98
+ ### Carousel
99
+
100
+ If you want a Carousel gallery, replace the html snippet with:
101
+
102
+ ```html
103
+ <div id="blueimp-gallery-carousel" class="blueimp-gallery blueimp-gallery-carousel">
104
+ <div class="slides"></div>
105
+ <h3 class="title"></h3>
106
+ <a class="prev">‹</a>
107
+ <a class="next">›</a>
108
+ <a class="play-pause"></a>
109
+ <ol class="indicator"></ol>
110
+ </div>
111
+ ```
112
+
113
+ And add this JavaScript:
114
+
115
+ ```html
116
+ <script>
117
+ blueimp.Gallery(
118
+ document.getElementById('links').getElementsByTagName('a'),
119
+ {
120
+ container: '#blueimp-gallery-carousel',
121
+ carousel: true
122
+ }
123
+ );
124
+ </script>
125
+ ```
126
+
127
+ ## More Features
128
+
129
+ blueimp Gallery has a lot more features and options as adding control keys, fullscreen, slide interval, etc. The complete documentation is on the [blueimp Gallery site](https://github.com/blueimp/Gallery).
130
+
131
+ ## Contributing
132
+
133
+ 1. Fork it
134
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
135
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
136
+ 4. Push to the branch (`git push origin my-new-feature`)
137
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'blueimp/gallery/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "blueimp-gallery"
8
+ spec.version = Blueimp::Gallery::VERSION
9
+ spec.authors = ["Christopher Fernández"]
10
+ spec.email = ["fernandez.chl@gmail.com"]
11
+ spec.description = %q{blueimp Gallery for Rails}
12
+ spec.summary = %q{blueimp Gallery for Rails}
13
+ spec.homepage = "https://github.com/Phifo/blueimp-gallery"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ end
@@ -0,0 +1,7 @@
1
+ module StaticAssets
2
+ class Engine < ::Rails::Engine
3
+ initializer 'blueimp-gallery.load_static_assets' do |app|
4
+ app.middleware.use ::ActionDispatch::Static, "#{root}/vendor"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ module Blueimp
2
+ module Gallery
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ require "blueimp/gallery/version"
2
+ require "blueimp/gallery/engine"
3
+
4
+ module Blueimp
5
+ module Gallery
6
+
7
+ end
8
+ end
Binary file
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64">
3
+ <circle cx="32" cy="32" r="25" stroke="red" stroke-width="7" fill="black" fill-opacity="0.2"/>
4
+ <rect x="28" y="7" width="8" height="50" fill="red" transform="rotate(45, 32, 32)"/>
5
+ </svg>
Binary file
Binary file
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="30" height="15">
3
+ <polygon points="2,1 2,14 13,7" stroke="black" stroke-width="1" fill="white"/>
4
+ <rect x="17" y="2" width="4" height="11" stroke="black" stroke-width="1" fill="white"/>
5
+ <rect x="24" y="2" width="4" height="11" stroke="black" stroke-width="1" fill="white"/>
6
+ </svg>
Binary file
@@ -0,0 +1,5 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64">
3
+ <circle cx="32" cy="32" r="25" stroke="white" stroke-width="7" fill="black" fill-opacity="0.2"/>
4
+ <polygon points="26,22 26,42 43,32" fill="white"/>
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ //= require blueimp-gallery
2
+ //= require blueimp-gallery-fullscreen
3
+ //= require blueimp-gallery-indicator
4
+ //= require blueimp-gallery-video
5
+ //= require jquery.blueimp-gallery
@@ -0,0 +1,85 @@
1
+ /*
2
+ * blueimp Gallery Fullscreen JS 1.0.0
3
+ * https://github.com/blueimp/Gallery
4
+ *
5
+ * Copyright 2013, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * Licensed under the MIT license:
9
+ * http://www.opensource.org/licenses/MIT
10
+ */
11
+
12
+ /*global define, window, document */
13
+
14
+ (function (factory) {
15
+ 'use strict';
16
+ if (typeof define === 'function' && define.amd) {
17
+ // Register as an anonymous AMD module:
18
+ define([
19
+ './blueimp-helper',
20
+ './blueimp-gallery'
21
+ ], factory);
22
+ } else {
23
+ // Browser globals:
24
+ factory(
25
+ window.blueimp.helper || window.jQuery,
26
+ window.blueimp.Gallery
27
+ );
28
+ }
29
+ }(function ($, Gallery) {
30
+ 'use strict';
31
+
32
+ $.extend(Gallery.prototype.options, {
33
+ // Defines if the gallery should open in fullscreen mode:
34
+ fullScreen: false
35
+ });
36
+
37
+ var initialize = Gallery.prototype.initialize,
38
+ close = Gallery.prototype.close;
39
+
40
+ $.extend(Gallery.prototype, {
41
+
42
+ getFullScreenElement: function () {
43
+ return document.fullscreenElement ||
44
+ document.webkitFullscreenElement ||
45
+ document.mozFullScreenElement;
46
+ },
47
+
48
+ requestFullScreen: function (element) {
49
+ if (element.requestFullscreen) {
50
+ element.requestFullscreen();
51
+ } else if (element.webkitRequestFullscreen) {
52
+ element.webkitRequestFullscreen();
53
+ } else if (element.mozRequestFullScreen) {
54
+ element.mozRequestFullScreen();
55
+ }
56
+ },
57
+
58
+ exitFullScreen: function () {
59
+ if (document.exitFullscreen) {
60
+ document.exitFullscreen();
61
+ } else if (document.webkitCancelFullScreen) {
62
+ document.webkitCancelFullScreen();
63
+ } else if (document.mozCancelFullScreen) {
64
+ document.mozCancelFullScreen();
65
+ }
66
+ },
67
+
68
+ initialize: function () {
69
+ initialize.call(this);
70
+ if (this.options.fullScreen && !this.getFullScreenElement()) {
71
+ this.requestFullScreen(this.container[0]);
72
+ }
73
+ },
74
+
75
+ close: function () {
76
+ if (this.getFullScreenElement() === this.container[0]) {
77
+ this.exitFullScreen();
78
+ }
79
+ close.call(this);
80
+ }
81
+
82
+ });
83
+
84
+ return Gallery;
85
+ }));
@@ -0,0 +1,153 @@
1
+ /*
2
+ * blueimp Gallery Indicator JS 1.0.0
3
+ * https://github.com/blueimp/Gallery
4
+ *
5
+ * Copyright 2013, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * Licensed under the MIT license:
9
+ * http://www.opensource.org/licenses/MIT
10
+ */
11
+
12
+ /*global define, window, document */
13
+
14
+ (function (factory) {
15
+ 'use strict';
16
+ if (typeof define === 'function' && define.amd) {
17
+ // Register as an anonymous AMD module:
18
+ define([
19
+ './blueimp-helper',
20
+ './blueimp-gallery'
21
+ ], factory);
22
+ } else {
23
+ // Browser globals:
24
+ factory(
25
+ window.blueimp.helper || window.jQuery,
26
+ window.blueimp.Gallery
27
+ );
28
+ }
29
+ }(function ($, Gallery) {
30
+ 'use strict';
31
+
32
+ $.extend(Gallery.prototype.options, {
33
+ // The tag name, Id, element or querySelector of the indicator container:
34
+ indicatorContainer: 'ol',
35
+ // The class for the active indicator:
36
+ activeIndicatorClass: 'active',
37
+ // The list object property (or data attribute) with the thumbnail URL,
38
+ // used as alternative to a thumbnail child element:
39
+ thumbnailProperty: 'thumbnail',
40
+ // Defines if the gallery indicators should display a thumbnail:
41
+ thumbnailIndicators: true
42
+ });
43
+
44
+ var initSlides = Gallery.prototype.initSlides,
45
+ addSlide = Gallery.prototype.addSlide,
46
+ resetSlides = Gallery.prototype.resetSlides,
47
+ handleClick = Gallery.prototype.handleClick,
48
+ handleSlide = Gallery.prototype.handleSlide,
49
+ close = Gallery.prototype.close;
50
+
51
+ $.extend(Gallery.prototype, {
52
+
53
+ createIndicator: function (obj) {
54
+ var indicator = this.indicatorPrototype.cloneNode(false),
55
+ title = this.getItemProperty(obj, this.options.titleProperty),
56
+ thumbnailProperty = this.options.thumbnailProperty,
57
+ thumbnailUrl,
58
+ thumbnail;
59
+ if (this.options.thumbnailIndicators) {
60
+ thumbnail = obj.getElementsByTagName && $(obj).find('img')[0];
61
+ if (thumbnail) {
62
+ thumbnailUrl = thumbnail.src;
63
+ } else if (thumbnailProperty) {
64
+ thumbnailUrl = this.getItemProperty(obj, thumbnailProperty);
65
+ }
66
+ if (thumbnailUrl) {
67
+ indicator.style.backgroundImage = 'url("' + thumbnailUrl + '")';
68
+ }
69
+ }
70
+ if (title) {
71
+ indicator.title = title;
72
+ }
73
+ return indicator;
74
+ },
75
+
76
+ addIndicator: function (index) {
77
+ if (this.indicatorContainer.length) {
78
+ var indicator = this.createIndicator(this.list[index]);
79
+ indicator.setAttribute('data-index', index);
80
+ this.indicatorContainer[0].appendChild(indicator);
81
+ this.indicators.push(indicator);
82
+ }
83
+ },
84
+
85
+ setActiveIndicator: function (index) {
86
+ if (this.indicators) {
87
+ if (this.activeIndicator) {
88
+ this.activeIndicator
89
+ .removeClass(this.options.activeIndicatorClass);
90
+ }
91
+ this.activeIndicator = $(this.indicators[index]);
92
+ this.activeIndicator
93
+ .addClass(this.options.activeIndicatorClass);
94
+ }
95
+ },
96
+
97
+ initSlides: function (reload) {
98
+ if (!reload) {
99
+ this.indicatorContainer = this.container.find(
100
+ this.options.indicatorContainer
101
+ );
102
+ if (this.indicatorContainer.length) {
103
+ this.indicatorPrototype = document.createElement('li');
104
+ this.indicators = this.indicatorContainer[0].children;
105
+ }
106
+ }
107
+ initSlides.call(this, reload);
108
+ },
109
+
110
+ addSlide: function (index) {
111
+ addSlide.call(this, index);
112
+ this.addIndicator(index);
113
+ },
114
+
115
+ resetSlides: function () {
116
+ resetSlides.call(this);
117
+ this.indicatorContainer.empty();
118
+ this.indicators = [];
119
+ },
120
+
121
+ handleClick: function (event) {
122
+ var target = event.target || event.srcElement,
123
+ parent = target.parentNode;
124
+ if (parent === this.indicatorContainer[0]) {
125
+ // Click on indicator element
126
+ this.preventDefault(event);
127
+ this.slide(this.getNodeIndex(target));
128
+ } else if (parent.parentNode === this.indicatorContainer[0]) {
129
+ // Click on indicator child element
130
+ this.preventDefault(event);
131
+ this.slide(this.getNodeIndex(parent));
132
+ } else {
133
+ return handleClick.call(this, event);
134
+ }
135
+ },
136
+
137
+ handleSlide: function (index) {
138
+ handleSlide.call(this, index);
139
+ this.setActiveIndicator(index);
140
+ },
141
+
142
+ close: function () {
143
+ if (this.activeIndicator) {
144
+ this.activeIndicator
145
+ .removeClass(this.options.activeIndicatorClass);
146
+ }
147
+ close.call(this);
148
+ }
149
+
150
+ });
151
+
152
+ return Gallery;
153
+ }));
@@ -0,0 +1,156 @@
1
+ /*
2
+ * blueimp Gallery Video Factory JS 1.0.0
3
+ * https://github.com/blueimp/Gallery
4
+ *
5
+ * Copyright 2013, Sebastian Tschan
6
+ * https://blueimp.net
7
+ *
8
+ * Licensed under the MIT license:
9
+ * http://www.opensource.org/licenses/MIT
10
+ */
11
+
12
+ /*global define, window, document */
13
+
14
+ (function (factory) {
15
+ 'use strict';
16
+ if (typeof define === 'function' && define.amd) {
17
+ // Register as an anonymous AMD module:
18
+ define([
19
+ './blueimp-helper',
20
+ './blueimp-gallery'
21
+ ], factory);
22
+ } else {
23
+ // Browser globals:
24
+ factory(
25
+ window.blueimp.helper || window.jQuery,
26
+ window.blueimp.Gallery
27
+ );
28
+ }
29
+ }(function ($, Gallery) {
30
+ 'use strict';
31
+
32
+ $.extend(Gallery.prototype.options, {
33
+ // The class for video content elements:
34
+ videoContentClass: 'video-content',
35
+ // The class for video when it is loading:
36
+ videoLoadingClass: 'video-loading',
37
+ // The class for video when it is playing:
38
+ videoPlayingClass: 'video-playing',
39
+ // The list object property (or data attribute) for the video poster URL:
40
+ videoPosterProperty: 'poster',
41
+ // The list object property (or data attribute) for the video sources array:
42
+ videoSourcesProperty: 'sources'
43
+ });
44
+
45
+ Gallery.prototype.videoFactory = function (obj, callback) {
46
+ var that = this,
47
+ options = this.options,
48
+ videoContainerNode = this.elementPrototype.cloneNode(false),
49
+ videoContainer = $(videoContainerNode),
50
+ errorArgs = [{
51
+ type: 'error',
52
+ target: videoContainerNode
53
+ }],
54
+ video = document.createElement('video'),
55
+ url = this.getItemProperty(obj, options.urlProperty),
56
+ type = this.getItemProperty(obj, options.typeProperty),
57
+ title = this.getItemProperty(obj, options.titleProperty),
58
+ posterUrl = this.getItemProperty(obj, options.videoPosterProperty),
59
+ posterImage,
60
+ sources = this.getItemProperty(
61
+ obj,
62
+ options.videoSourcesProperty
63
+ ),
64
+ source,
65
+ playMediaControl,
66
+ isLoading,
67
+ hasControls;
68
+ videoContainer.addClass(options.videoContentClass);
69
+ if (title) {
70
+ videoContainerNode.title = title;
71
+ }
72
+ if (video.canPlayType) {
73
+ if (url && type && video.canPlayType(type)) {
74
+ video.src = url;
75
+ } else if (sources) {
76
+ if (typeof sources === 'string') {
77
+ sources = $.parseJSON(sources);
78
+ }
79
+ while (sources && sources.length) {
80
+ source = sources.shift();
81
+ url = this.getItemProperty(source, options.urlProperty);
82
+ type = this.getItemProperty(source, options.typeProperty);
83
+ if (url && type && video.canPlayType(type)) {
84
+ video.src = url;
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ }
90
+ if (posterUrl) {
91
+ video.setAttribute('poster', posterUrl);
92
+ posterImage = this.imagePrototype.cloneNode(false);
93
+ $(posterImage).addClass(options.toggleClass);
94
+ posterImage.src = posterUrl;
95
+ posterImage.draggable = false;
96
+ videoContainerNode.appendChild(posterImage);
97
+ }
98
+ playMediaControl = document.createElement('a');
99
+ playMediaControl.setAttribute('target', '_blank');
100
+ playMediaControl.setAttribute('download', title);
101
+ playMediaControl.href = url;
102
+ if (video.src) {
103
+ video.controls = true;
104
+ $(video)
105
+ .on('error', function () {
106
+ that.setTimeout(callback, errorArgs);
107
+ })
108
+ .on('pause', function () {
109
+ isLoading = false;
110
+ videoContainer
111
+ .removeClass(that.options.videoLoadingClass)
112
+ .removeClass(that.options.videoPlayingClass);
113
+ if (hasControls) {
114
+ that.container.addClass(that.options.controlsClass);
115
+ }
116
+ if (that.interval) {
117
+ that.play();
118
+ }
119
+ })
120
+ .on('playing', function () {
121
+ isLoading = false;
122
+ videoContainer
123
+ .removeClass(that.options.videoLoadingClass)
124
+ .addClass(that.options.videoPlayingClass);
125
+ if (that.container.hasClass(that.options.controlsClass)) {
126
+ hasControls = true;
127
+ that.container.removeClass(that.options.controlsClass);
128
+ } else {
129
+ hasControls = false;
130
+ }
131
+ })
132
+ .on('play', function () {
133
+ window.clearTimeout(that.timeout);
134
+ isLoading = true;
135
+ videoContainer.addClass(that.options.videoLoadingClass);
136
+ });
137
+ $(playMediaControl).on('click', function (event) {
138
+ event.preventDefault();
139
+ if (isLoading) {
140
+ video.pause();
141
+ } else {
142
+ video.play();
143
+ }
144
+ });
145
+ videoContainerNode.appendChild(video);
146
+ }
147
+ videoContainerNode.appendChild(playMediaControl);
148
+ this.setTimeout(callback, [{
149
+ type: 'load',
150
+ target: videoContainerNode
151
+ }]);
152
+ return videoContainerNode;
153
+ };
154
+
155
+ return Gallery;
156
+ }));