blueimp-gallery 2.11.0.0 → 2.11.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 108096f2fa0a84c05e3aed5ffb6443783698de31
4
- data.tar.gz: 50e68b212131571919aaa185d129627aa8979a30
3
+ metadata.gz: 10dc91eb860532983fb100083a720de840e45389
4
+ data.tar.gz: 8608b73ef2004ccb28171769e14616e891526469
5
5
  SHA512:
6
- metadata.gz: 5e465a5f66e0db645ede88b5ac92a4a7abdad303ab7ddaaf422cfc51f84a7775c23e58068da1e55828578b7d534c821806b5045ccad89b41e59dbefb8dfe2c4d
7
- data.tar.gz: 12a0d568227fb11fdf9bd579c7160508ca87161fb8d78fdb1fcd86a76228248418449beddcff0f273041c82603b84fa66b6d9991dd4b3463fdce2ef7ee97957a
6
+ metadata.gz: e24e3c0cfedfaf373e79a4e6765601e339cd85d1b428da8a24ae19447fc81c51cea85113d017144740ae38b55b6f5f5ae93f75f60dc34680f5758f5e869ec97e
7
+ data.tar.gz: eefa9cf934a6194bfbb21dfd8d8a6b3d460529109a6a261bea96b07913a1291a8f12183e29658b65048a910cb78124a56b0ac13e81da605ba3d5d9a61ec990e8
@@ -1,3 +1,7 @@
1
+ ## v2.11.0.1
2
+
3
+ * Fix: Added missing javascript files
4
+
1
5
  ## v2.11.0.0
2
6
 
3
7
  * Update to Blueimp Gallery 2.11.0.
@@ -1,5 +1,5 @@
1
1
  module Blueimp
2
2
  module Gallery
3
- VERSION = "2.11.0.0"
3
+ VERSION = "2.11.0.1"
4
4
  end
5
5
  end
@@ -0,0 +1,212 @@
1
+ /*
2
+ * blueimp Gallery Vimeo Video Factory JS 1.1.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
+ /*jslint regexp: true */
13
+ /*global define, window, document, location, $f */
14
+
15
+ (function (factory) {
16
+ 'use strict';
17
+ if (typeof define === 'function' && define.amd) {
18
+ // Register as an anonymous AMD module:
19
+ define([
20
+ './blueimp-helper',
21
+ './blueimp-gallery-video'
22
+ ], factory);
23
+ } else {
24
+ // Browser globals:
25
+ factory(
26
+ window.blueimp.helper || window.jQuery,
27
+ window.blueimp.Gallery
28
+ );
29
+ }
30
+ }(function ($, Gallery) {
31
+ 'use strict';
32
+
33
+ if (!window.postMessage) {
34
+ return Gallery;
35
+ }
36
+
37
+ $.extend(Gallery.prototype.options, {
38
+ // The list object property (or data attribute) with the Vimeo video id:
39
+ vimeoVideoIdProperty: 'vimeo',
40
+ // The URL for the Vimeo video player, can be extended with custom parameters:
41
+ // https://developer.vimeo.com/player/embedding
42
+ vimeoPlayerUrl: '//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID',
43
+ // The prefix for the Vimeo video player ID:
44
+ vimeoPlayerIdPrefix: 'vimeo-player-',
45
+ // Require a click on the native Vimeo player for the initial playback:
46
+ vimeoClickToPlay: true
47
+ });
48
+
49
+ var textFactory = Gallery.prototype.textFactory || Gallery.prototype.imageFactory,
50
+ VimeoPlayer = function (url, videoId, playerId, clickToPlay) {
51
+ this.url = url;
52
+ this.videoId = videoId;
53
+ this.playerId = playerId;
54
+ this.clickToPlay = clickToPlay;
55
+ this.element = document.createElement('div');
56
+ this.listeners = {};
57
+ },
58
+ counter = 0;
59
+
60
+ $.extend(VimeoPlayer.prototype, {
61
+
62
+ canPlayType: function () {
63
+ return true;
64
+ },
65
+
66
+ on: function (type, func) {
67
+ this.listeners[type] = func;
68
+ return this;
69
+ },
70
+
71
+ loadAPI: function () {
72
+ var that = this,
73
+ apiUrl = '//' + (location.protocol === 'https' ? 'secure-' : '') +
74
+ 'a.vimeocdn.com/js/froogaloop2.min.js',
75
+ scriptTags = document.getElementsByTagName('script'),
76
+ i = scriptTags.length,
77
+ scriptTag,
78
+ called,
79
+ callback = function () {
80
+ if (!called && that.playOnReady) {
81
+ that.play();
82
+ }
83
+ called = true;
84
+ };
85
+ while (i) {
86
+ i -= 1;
87
+ if (scriptTags[i].src === apiUrl) {
88
+ scriptTag = scriptTags[i];
89
+ break;
90
+ }
91
+ }
92
+ if (!scriptTag) {
93
+ scriptTag = document.createElement('script');
94
+ scriptTag.src = apiUrl;
95
+ }
96
+ $(scriptTag).on('load', callback);
97
+ scriptTags[0].parentNode.insertBefore(scriptTag, scriptTags[0]);
98
+ // Fix for cached scripts on IE 8:
99
+ if (/loaded|complete/.test(scriptTag.readyState)) {
100
+ callback();
101
+ }
102
+ },
103
+
104
+ onReady: function () {
105
+ var that = this;
106
+ this.ready = true;
107
+ this.player.addEvent('play', function () {
108
+ that.hasPlayed = true;
109
+ that.onPlaying();
110
+ });
111
+ this.player.addEvent('pause', function () {
112
+ that.onPause();
113
+ });
114
+ this.player.addEvent('finish', function () {
115
+ that.onPause();
116
+ });
117
+ if (this.playOnReady) {
118
+ this.play();
119
+ }
120
+ },
121
+
122
+ onPlaying: function () {
123
+ if (this.playStatus < 2) {
124
+ this.listeners.playing();
125
+ this.playStatus = 2;
126
+ }
127
+ },
128
+
129
+ onPause: function () {
130
+ this.listeners.pause();
131
+ delete this.playStatus;
132
+ },
133
+
134
+ insertIframe: function () {
135
+ var iframe = document.createElement('iframe');
136
+ iframe.src = this.url
137
+ .replace('VIDEO_ID', this.videoId)
138
+ .replace('PLAYER_ID', this.playerId);
139
+ iframe.id = this.playerId;
140
+ this.element.parentNode.replaceChild(iframe, this.element);
141
+ this.element = iframe;
142
+ },
143
+
144
+ play: function () {
145
+ var that = this;
146
+ if (!this.playStatus) {
147
+ this.listeners.play();
148
+ this.playStatus = 1;
149
+ }
150
+ if (this.ready) {
151
+ if (!this.hasPlayed && (this.clickToPlay || (window.navigator &&
152
+ /iP(hone|od|ad)/.test(window.navigator.platform)))) {
153
+ // Manually trigger the playing callback if clickToPlay
154
+ // is enabled and to workaround a limitation in iOS,
155
+ // which requires synchronous user interaction to start
156
+ // the video playback:
157
+ this.onPlaying();
158
+ } else {
159
+ this.player.api('play');
160
+ }
161
+ } else {
162
+ this.playOnReady = true;
163
+ if (!window.$f) {
164
+ this.loadAPI();
165
+ } else if (!this.player) {
166
+ this.insertIframe();
167
+ this.player = $f(this.element);
168
+ this.player.addEvent('ready', function () {
169
+ that.onReady();
170
+ });
171
+ }
172
+ }
173
+ },
174
+
175
+ pause: function () {
176
+ if (this.ready) {
177
+ this.player.api('pause');
178
+ } else if (this.playStatus) {
179
+ delete this.playOnReady;
180
+ this.listeners.pause();
181
+ delete this.playStatus;
182
+ }
183
+ }
184
+
185
+ });
186
+
187
+ $.extend(Gallery.prototype, {
188
+
189
+ VimeoPlayer: VimeoPlayer,
190
+
191
+ textFactory: function (obj, callback) {
192
+ var videoId = this.getItemProperty(obj, this.options.vimeoVideoIdProperty);
193
+ if (videoId) {
194
+ counter += 1;
195
+ return this.videoFactory(
196
+ obj,
197
+ callback,
198
+ new VimeoPlayer(
199
+ this.options.vimeoPlayerUrl,
200
+ videoId,
201
+ this.options.vimeoPlayerIdPrefix + counter,
202
+ this.options.vimeoClickToPlay
203
+ )
204
+ );
205
+ }
206
+ return textFactory.call(this, obj, callback);
207
+ }
208
+
209
+ });
210
+
211
+ return Gallery;
212
+ }));
@@ -0,0 +1,205 @@
1
+ /*
2
+ * blueimp Gallery YouTube Video Factory JS 1.1.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
+ /*jslint regexp: true */
13
+ /*global define, window, document, YT */
14
+
15
+ (function (factory) {
16
+ 'use strict';
17
+ if (typeof define === 'function' && define.amd) {
18
+ // Register as an anonymous AMD module:
19
+ define([
20
+ './blueimp-helper',
21
+ './blueimp-gallery-video'
22
+ ], factory);
23
+ } else {
24
+ // Browser globals:
25
+ factory(
26
+ window.blueimp.helper || window.jQuery,
27
+ window.blueimp.Gallery
28
+ );
29
+ }
30
+ }(function ($, Gallery) {
31
+ 'use strict';
32
+
33
+ if (!window.postMessage) {
34
+ return Gallery;
35
+ }
36
+
37
+ $.extend(Gallery.prototype.options, {
38
+ // The list object property (or data attribute) with the YouTube video id:
39
+ youTubeVideoIdProperty: 'youtube',
40
+ // Optional object with parameters passed to the YouTube video player:
41
+ // https://developers.google.com/youtube/player_parameters
42
+ youTubePlayerVars: undefined,
43
+ // Require a click on the native YouTube player for the initial playback:
44
+ youTubeClickToPlay: true
45
+ });
46
+
47
+ var textFactory = Gallery.prototype.textFactory || Gallery.prototype.imageFactory,
48
+ YouTubePlayer = function (videoId, playerVars, clickToPlay) {
49
+ this.videoId = videoId;
50
+ this.playerVars = playerVars;
51
+ this.clickToPlay = clickToPlay;
52
+ this.element = document.createElement('div');
53
+ this.listeners = {};
54
+ };
55
+
56
+ $.extend(YouTubePlayer.prototype, {
57
+
58
+ canPlayType: function () {
59
+ return true;
60
+ },
61
+
62
+ on: function (type, func) {
63
+ this.listeners[type] = func;
64
+ return this;
65
+ },
66
+
67
+ loadAPI: function () {
68
+ var that = this,
69
+ onYouTubeIframeAPIReady = window.onYouTubeIframeAPIReady,
70
+ apiUrl = '//www.youtube.com/iframe_api',
71
+ scriptTags = document.getElementsByTagName('script'),
72
+ i = scriptTags.length,
73
+ scriptTag;
74
+ window.onYouTubeIframeAPIReady = function () {
75
+ if (onYouTubeIframeAPIReady) {
76
+ onYouTubeIframeAPIReady.apply(this);
77
+ }
78
+ if (that.playOnReady) {
79
+ that.play();
80
+ }
81
+ };
82
+ while (i) {
83
+ i -= 1;
84
+ if (scriptTags[i].src === apiUrl) {
85
+ return;
86
+ }
87
+ }
88
+ scriptTag = document.createElement('script');
89
+ scriptTag.src = apiUrl;
90
+ scriptTags[0].parentNode.insertBefore(scriptTag, scriptTags[0]);
91
+ },
92
+
93
+ onReady: function () {
94
+ this.ready = true;
95
+ if (this.playOnReady) {
96
+ this.play();
97
+ }
98
+ },
99
+
100
+ onPlaying: function () {
101
+ if (this.playStatus < 2) {
102
+ this.listeners.playing();
103
+ this.playStatus = 2;
104
+ }
105
+ },
106
+
107
+ onPause: function () {
108
+ this.listeners.pause();
109
+ delete this.playStatus;
110
+ },
111
+
112
+ onStateChange: function (event) {
113
+ switch (event.data) {
114
+ case YT.PlayerState.PLAYING:
115
+ this.hasPlayed = true;
116
+ this.onPlaying();
117
+ break;
118
+ case YT.PlayerState.PAUSED:
119
+ case YT.PlayerState.ENDED:
120
+ this.onPause();
121
+ break;
122
+ }
123
+ },
124
+
125
+ onError: function (event) {
126
+ this.listeners.error(event);
127
+ },
128
+
129
+ play: function () {
130
+ var that = this;
131
+ if (!this.playStatus) {
132
+ this.listeners.play();
133
+ this.playStatus = 1;
134
+ }
135
+ if (this.ready) {
136
+ if (!this.hasPlayed && (this.clickToPlay || (window.navigator &&
137
+ /iP(hone|od|ad)/.test(window.navigator.platform)))) {
138
+ // Manually trigger the playing callback if clickToPlay
139
+ // is enabled and to workaround a limitation in iOS,
140
+ // which requires synchronous user interaction to start
141
+ // the video playback:
142
+ this.onPlaying();
143
+ } else {
144
+ this.player.playVideo();
145
+ }
146
+ } else {
147
+ this.playOnReady = true;
148
+ if (!(window.YT && YT.Player)) {
149
+ this.loadAPI();
150
+ } else if (!this.player) {
151
+ this.player = new YT.Player(this.element, {
152
+ videoId: this.videoId,
153
+ playerVars: this.playerVars,
154
+ events: {
155
+ onReady: function () {
156
+ that.onReady();
157
+ },
158
+ onStateChange: function (event) {
159
+ that.onStateChange(event);
160
+ },
161
+ onError: function (event) {
162
+ that.onError(event);
163
+ }
164
+ }
165
+ });
166
+ }
167
+ }
168
+ },
169
+
170
+ pause: function () {
171
+ if (this.ready) {
172
+ this.player.pauseVideo();
173
+ } else if (this.playStatus) {
174
+ delete this.playOnReady;
175
+ this.listeners.pause();
176
+ delete this.playStatus;
177
+ }
178
+ }
179
+
180
+ });
181
+
182
+ $.extend(Gallery.prototype, {
183
+
184
+ YouTubePlayer: YouTubePlayer,
185
+
186
+ textFactory: function (obj, callback) {
187
+ var videoId = this.getItemProperty(obj, this.options.youTubeVideoIdProperty);
188
+ if (videoId) {
189
+ return this.videoFactory(
190
+ obj,
191
+ callback,
192
+ new YouTubePlayer(
193
+ videoId,
194
+ this.options.youTubePlayerVars,
195
+ this.options.youTubeClickToPlay
196
+ )
197
+ );
198
+ }
199
+ return textFactory.call(this, obj, callback);
200
+ }
201
+
202
+ });
203
+
204
+ return Gallery;
205
+ }));
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blueimp-gallery
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.11.0.0
4
+ version: 2.11.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Fernández
@@ -82,6 +82,8 @@ files:
82
82
  - vendor/assets/javascripts/blueimp-gallery-fullscreen.js
83
83
  - vendor/assets/javascripts/blueimp-gallery-indicator.js
84
84
  - vendor/assets/javascripts/blueimp-gallery-video.js
85
+ - vendor/assets/javascripts/blueimp-gallery-vimeo.js
86
+ - vendor/assets/javascripts/blueimp-gallery-youtube.js
85
87
  - vendor/assets/javascripts/blueimp-gallery.js
86
88
  - vendor/assets/javascripts/blueimp-helper.js
87
89
  - vendor/assets/javascripts/jquery.blueimp-gallery.js