blueimp-gallery 2.9.0.0 → 2.11.0.0

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: 0c0f2d3a96cd4e89bf3dc0c07fff124920a5c2fb
4
- data.tar.gz: 9e5b449ae6e2afa6b43ee434c47b4218b36548fa
3
+ metadata.gz: 108096f2fa0a84c05e3aed5ffb6443783698de31
4
+ data.tar.gz: 50e68b212131571919aaa185d129627aa8979a30
5
5
  SHA512:
6
- metadata.gz: ab9c8954b0d0e7a8c1f5ea2d44952c21d8729cbfb798fa3de175338da3832206f7a94fe1bb45e5a5128a29f280ca7697b605533bca333e08791340453b563d34
7
- data.tar.gz: 61076c99936568278d2827d69d3e5a55cb32c31e219b85a8898c824d13df169e8a6e963a9a1e0312f21a766cdc055f1c862c94b9652e0aaa712d202300738a9f
6
+ metadata.gz: 5e465a5f66e0db645ede88b5ac92a4a7abdad303ab7ddaaf422cfc51f84a7775c23e58068da1e55828578b7d534c821806b5045ccad89b41e59dbefb8dfe2c4d
7
+ data.tar.gz: 12a0d568227fb11fdf9bd579c7160508ca87161fb8d78fdb1fcd86a76228248418449beddcff0f273041c82603b84fa66b6d9991dd4b3463fdce2ef7ee97957a
@@ -1,3 +1,8 @@
1
+ ## v2.11.0.0
2
+
3
+ * Update to Blueimp Gallery 2.11.0.
4
+ * Added new tests for youtube and vimeo javascripts.
5
+
1
6
  ## v2.9.0.0
2
7
 
3
8
  * Change the versioning scheme.
data/README.md CHANGED
@@ -5,7 +5,6 @@ blueimp Gallery is an image and video gallery featuring carousel and lightbox ga
5
5
  [![Gem Version](https://badge.fury.io/rb/blueimp-gallery.png)](http://badge.fury.io/rb/blueimp-gallery)
6
6
  [![Build Status](https://travis-ci.org/Phifo/blueimp-gallery.png?branch=master)](https://travis-ci.org/Phifo/blueimp-gallery)
7
7
 
8
- * blueimp Gallery version 2.7.3
9
8
  * Official Website: http://blueimp.github.io/Gallery/
10
9
 
11
10
 
@@ -151,7 +150,7 @@ blueimp.Gallery document.getElementById("links").getElementsByTagName("a"),
151
150
 
152
151
  ## More Features
153
152
 
154
- 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).
153
+ blueimp Gallery has a lot more features and options as adding control keys, fullscreen, slide interval, video support (youtube and vimeo) etc. The complete documentation is on the [blueimp Gallery site](https://github.com/blueimp/Gallery).
155
154
 
156
155
  ## Contributing
157
156
 
@@ -1,5 +1,5 @@
1
1
  module Blueimp
2
2
  module Gallery
3
- VERSION = "2.9.0.0"
3
+ VERSION = "2.11.0.0"
4
4
  end
5
5
  end
@@ -20,6 +20,10 @@ class AssetsTest < ActionDispatch::IntegrationTest
20
20
  assert_response :success
21
21
  get 'assets/jquery.blueimp-gallery.js'
22
22
  assert_response :success
23
+ get 'assets/blueimp-gallery-youtube.js'
24
+ assert_response :success
25
+ get 'assets/blueimp-gallery-vimeo.js'
26
+ assert_response :success
23
27
  end
24
28
 
25
29
  test 'has stylesheets assets' do
@@ -2,4 +2,6 @@
2
2
  //= require blueimp-gallery-fullscreen
3
3
  //= require blueimp-gallery-indicator
4
4
  //= require blueimp-gallery-video
5
+ //= require blueimp-gallery-youtube
6
+ //= require blueimp-gallery-vimeo
5
7
  //= require jquery.blueimp-gallery
@@ -1,5 +1,5 @@
1
1
  /*
2
- * blueimp Gallery Video Factory JS 1.0.0
2
+ * blueimp Gallery Video Factory JS 1.1.0
3
3
  * https://github.com/blueimp/Gallery
4
4
  *
5
5
  * Copyright 2013, Sebastian Tschan
@@ -42,7 +42,7 @@
42
42
  videoSourcesProperty: 'sources'
43
43
  });
44
44
 
45
- Gallery.prototype.videoFactory = function (obj, callback) {
45
+ Gallery.prototype.videoFactory = function (obj, callback, videoInterface) {
46
46
  var that = this,
47
47
  options = this.options,
48
48
  videoContainerNode = this.elementPrototype.cloneNode(false),
@@ -51,7 +51,7 @@
51
51
  type: 'error',
52
52
  target: videoContainerNode
53
53
  }],
54
- video = document.createElement('video'),
54
+ video = videoInterface || document.createElement('video'),
55
55
  url = this.getItemProperty(obj, options.urlProperty),
56
56
  type = this.getItemProperty(obj, options.typeProperty),
57
57
  title = this.getItemProperty(obj, options.titleProperty),
@@ -72,10 +72,7 @@
72
72
  if (video.canPlayType) {
73
73
  if (url && type && video.canPlayType(type)) {
74
74
  video.src = url;
75
- } else if (sources) {
76
- if (typeof sources === 'string') {
77
- sources = $.parseJSON(sources);
78
- }
75
+ } else {
79
76
  while (sources && sources.length) {
80
77
  source = sources.shift();
81
78
  url = this.getItemProperty(source, options.urlProperty);
@@ -88,7 +85,7 @@
88
85
  }
89
86
  }
90
87
  if (posterUrl) {
91
- video.setAttribute('poster', posterUrl);
88
+ video.poster = posterUrl;
92
89
  posterImage = this.imagePrototype.cloneNode(false);
93
90
  $(posterImage).addClass(options.toggleClass);
94
91
  posterImage.src = posterUrl;
@@ -97,11 +94,13 @@
97
94
  }
98
95
  playMediaControl = document.createElement('a');
99
96
  playMediaControl.setAttribute('target', '_blank');
100
- playMediaControl.setAttribute('download', title);
97
+ if (!videoInterface) {
98
+ playMediaControl.setAttribute('download', title);
99
+ }
101
100
  playMediaControl.href = url;
102
101
  if (video.src) {
103
102
  video.controls = true;
104
- $(video)
103
+ (videoInterface || $(video))
105
104
  .on('error', function () {
106
105
  that.setTimeout(callback, errorArgs);
107
106
  })
@@ -135,14 +134,16 @@
135
134
  videoContainer.addClass(that.options.videoLoadingClass);
136
135
  });
137
136
  $(playMediaControl).on('click', function (event) {
138
- event.preventDefault();
137
+ that.preventDefault(event);
139
138
  if (isLoading) {
140
139
  video.pause();
141
140
  } else {
142
141
  video.play();
143
142
  }
144
143
  });
145
- videoContainerNode.appendChild(video);
144
+ videoContainerNode.appendChild(
145
+ (videoInterface && videoInterface.element) || video
146
+ );
146
147
  }
147
148
  videoContainerNode.appendChild(playMediaControl);
148
149
  this.setTimeout(callback, [{
@@ -1,5 +1,5 @@
1
1
  /*
2
- * blueimp Gallery JS 2.9.0
2
+ * blueimp Gallery JS 2.11.0
3
3
  * https://github.com/blueimp/Gallery
4
4
  *
5
5
  * Copyright 2013, Sebastian Tschan
@@ -99,7 +99,9 @@
99
99
  clearSlides: true,
100
100
  // Defines if images should be stretched to fill the available space,
101
101
  // while maintaining their aspect ratio (will only be enabled for browsers
102
- // supporting background-size="contain", which excludes IE < 9):
102
+ // supporting background-size="contain", which excludes IE < 9).
103
+ // Set to "cover", to make images cover all available space (requires
104
+ // support for background-size="cover", which excludes IE < 9):
103
105
  stretchImages: false,
104
106
  // Toggle the controls on pressing the Return key:
105
107
  toggleControlsOnReturn: true,
@@ -228,11 +230,15 @@
228
230
  }
229
231
  }
230
232
  if (element.style.backgroundSize !== undefined) {
233
+ support.backgroundSize = {};
231
234
  element.style.backgroundSize = 'contain';
232
- support.backgroundSize = {
233
- contain: window.getComputedStyle(element)
234
- .getPropertyValue('background-size') === 'contain'
235
- };
235
+ support.backgroundSize.contain = window
236
+ .getComputedStyle(element)
237
+ .getPropertyValue('background-size') === 'contain';
238
+ element.style.backgroundSize = 'cover';
239
+ support.backgroundSize.cover = window
240
+ .getComputedStyle(element)
241
+ .getPropertyValue('background-size') === 'cover';
236
242
  }
237
243
  document.body.removeChild(element);
238
244
  };
@@ -509,11 +515,12 @@
509
515
  },
510
516
 
511
517
  onmousedown: function (event) {
512
- // Trigger on clicks of the left mouse button only:
513
- if (event.which && event.which === 1) {
518
+ // Trigger on clicks of the left mouse button only
519
+ // and exclude video elements:
520
+ if (event.which && event.which === 1 &&
521
+ event.target.nodeName !== 'VIDEO') {
514
522
  // Preventing the default mousedown action is required
515
523
  // to make touch emulation work with Firefox:
516
- event.preventDefault();
517
524
  (event.originalEvent || event).touches = [{
518
525
  pageX: event.pageX,
519
526
  pageY: event.pageY
@@ -889,9 +896,7 @@
889
896
  var that = this,
890
897
  img = this.imagePrototype.cloneNode(false),
891
898
  url = obj,
892
- contain = this.options.stretchImages &&
893
- this.support.backgroundSize &&
894
- this.support.backgroundSize.contain,
899
+ backgroundSize = this.options.stretchImages,
895
900
  called,
896
901
  element,
897
902
  callbackWrapper = function (event) {
@@ -908,11 +913,11 @@
908
913
  }
909
914
  called = true;
910
915
  $(img).off('load error', callbackWrapper);
911
- if (contain) {
916
+ if (backgroundSize) {
912
917
  if (event.type === 'load') {
913
918
  element.style.background = 'url("' + url +
914
919
  '") center no-repeat';
915
- element.style.backgroundSize = 'contain';
920
+ element.style.backgroundSize = backgroundSize;
916
921
  }
917
922
  }
918
923
  callback(event);
@@ -923,7 +928,12 @@
923
928
  url = this.getItemProperty(obj, this.options.urlProperty);
924
929
  title = this.getItemProperty(obj, this.options.titleProperty);
925
930
  }
926
- if (contain) {
931
+ if (backgroundSize === true) {
932
+ backgroundSize = 'contain';
933
+ }
934
+ backgroundSize = this.support.backgroundSize &&
935
+ this.support.backgroundSize[backgroundSize] && backgroundSize;
936
+ if (backgroundSize) {
927
937
  element = this.elementPrototype.cloneNode(false);
928
938
  } else {
929
939
  element = img;
@@ -1096,10 +1106,31 @@
1096
1106
  return obj;
1097
1107
  },
1098
1108
 
1109
+ getDataProperty: function (obj, property) {
1110
+ if (obj.getAttribute) {
1111
+ var prop = obj.getAttribute('data-' +
1112
+ property.replace(/([A-Z])/g, '-$1').toLowerCase());
1113
+ if (typeof prop === 'string') {
1114
+ if (/^(true|false|null|-?\d+(\.\d+)?|\{[\s\S]*\}|\[[\s\S]*\])$/
1115
+ .test(prop)) {
1116
+ try {
1117
+ return $.parseJSON(prop);
1118
+ } catch (ignore) {}
1119
+ }
1120
+ return prop;
1121
+ }
1122
+ }
1123
+ },
1124
+
1099
1125
  getItemProperty: function (obj, property) {
1100
- return obj[property] || (obj.getAttribute &&
1101
- obj.getAttribute('data-' + property)) ||
1102
- this.getNestedProperty(obj, property);
1126
+ var prop = obj[property];
1127
+ if (prop === undefined) {
1128
+ prop = this.getDataProperty(obj, property);
1129
+ if (prop === undefined) {
1130
+ prop = this.getNestedProperty(obj, property);
1131
+ }
1132
+ }
1133
+ return prop;
1103
1134
  },
1104
1135
 
1105
1136
  initStartIndex: function () {
@@ -1195,13 +1226,13 @@
1195
1226
  }
1196
1227
  this.slidesContainer = this.container.find(
1197
1228
  this.options.slidesContainer
1198
- );
1229
+ ).first();
1199
1230
  if (!this.slidesContainer.length) {
1200
1231
  return false;
1201
1232
  }
1202
1233
  this.titleElement = this.container.find(
1203
1234
  this.options.titleElement
1204
- );
1235
+ ).first();
1205
1236
  if (this.num === 1) {
1206
1237
  this.container.addClass(this.options.singleClass);
1207
1238
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * blueimp helper JS 1.1.0
2
+ * blueimp helper JS 1.2.0
3
3
  * https://github.com/blueimp/Gallery
4
4
  *
5
5
  * Copyright 2013, Sebastian Tschan
@@ -172,6 +172,10 @@
172
172
  }
173
173
  }
174
174
  return this;
175
+ },
176
+
177
+ first: function () {
178
+ return new Helper(this[0]);
175
179
  }
176
180
 
177
181
  });
@@ -1,6 +1,6 @@
1
1
  @charset 'UTF-8';
2
2
  /*
3
- * blueimp Gallery Video Factory CSS 1.0.0
3
+ * blueimp Gallery Video Factory CSS 1.1.1
4
4
  * https://github.com/blueimp/Gallery
5
5
  *
6
6
  * Copyright 2013, Sebastian Tschan
@@ -17,15 +17,25 @@
17
17
  right: 0;
18
18
  bottom: 0;
19
19
  left: 0;
20
- /* Prevent artifacts in Mozilla Firefox: */
21
- -moz-backface-visibility: hidden;
22
- }
23
- .blueimp-gallery > .slides > .slide > .video-content > video,
24
- .blueimp-gallery > .slides > .slide > .video-content > img {
25
20
  margin: auto;
21
+ width: auto;
22
+ height: auto;
26
23
  max-width: 100%;
27
24
  max-height: 100%;
28
25
  opacity: 1;
26
+ /* Prevent artifacts in Mozilla Firefox: */
27
+ -moz-backface-visibility: hidden;
28
+ }
29
+ .blueimp-gallery > .slides > .slide > .video-content > iframe {
30
+ width: 100%;
31
+ height: 100%;
32
+ border: none;
33
+ position: absolute;
34
+ top: 100%;
35
+ left: 0;
36
+ }
37
+ .blueimp-gallery > .slides > .slide > .video-playing > iframe {
38
+ top: 0;
29
39
  }
30
40
  .blueimp-gallery > .slides > .slide > .video-content > a {
31
41
  position: absolute;
@@ -55,7 +65,7 @@
55
65
  }
56
66
 
57
67
  /* Replace PNGs with SVGs for capable browsers (excluding IE<9) */
58
- body:last-child .blueimp-gallery > .slides > .slide > .video-content > a {
68
+ body:last-child .blueimp-gallery > .slides > .slide > .video-content:not(.video-loading) > a {
59
69
  background-image: url("video-play.svg");
60
70
  }
61
71
 
@@ -1,6 +1,6 @@
1
1
  @charset 'UTF-8';
2
2
  /*
3
- * blueimp Gallery CSS 2.9.0
3
+ * blueimp Gallery CSS 2.10.0
4
4
  * https://github.com/blueimp/Gallery
5
5
  *
6
6
  * Copyright 2013, Sebastian Tschan
@@ -22,6 +22,8 @@
22
22
  }
23
23
  .blueimp-gallery > .slides > .slide > .slide-content {
24
24
  margin: auto;
25
+ width: auto;
26
+ height: auto;
25
27
  max-width: 100%;
26
28
  max-height: 100%;
27
29
  opacity: 1;
@@ -40,9 +42,9 @@
40
42
  .blueimp-gallery-carousel {
41
43
  position: relative;
42
44
  z-index: auto;
43
- height: 432px;
44
- max-width: 768px;
45
45
  margin: 1em auto;
46
+ /* Set the carousel width/height ratio to 16/9: */
47
+ padding-bottom: 56.25%;
46
48
  box-shadow: 0 0 10px #000;
47
49
  }
48
50
  .blueimp-gallery-display {
@@ -54,6 +56,9 @@
54
56
  height: 100%;
55
57
  overflow: hidden;
56
58
  }
59
+ .blueimp-gallery-carousel > .slides {
60
+ position: absolute;
61
+ }
57
62
  .blueimp-gallery > .slides > .slide {
58
63
  position: relative;
59
64
  float: left;
@@ -201,13 +206,6 @@ body:last-child .blueimp-gallery-playing > .play-pause {
201
206
  background-position: -20px 0;
202
207
  }
203
208
 
204
- @media (max-width: 767px) {
205
- .blueimp-gallery-carousel {
206
- height: 270px;
207
- max-width: 480px;
208
- }
209
- }
210
-
211
209
  /* IE7 fixes */
212
210
  *+html .blueimp-gallery > .slides > .slide {
213
211
  min-height: 300px;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blueimp-gallery
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.0.0
4
+ version: 2.11.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Fernández
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-25 00:00:00.000000000 Z
11
+ date: 2013-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties