1
1
/*!
2
2
* @license MIT
3
- * Copyright (c) 2017 Bernhard Grünewaldt
3
+ * Copyright (c) 2017 - 2018 Bernhard Grünewaldt
4
4
* https://github.com/codeclou/bilderrahmen
5
5
*/
6
6
class Bilderrahmen {
@@ -118,35 +118,74 @@ class Bilderrahmen {
118
118
// PREVIOUS BUTTON
119
119
wrapper . appendChild ( self . _renderNextOrPreviousButton ( galleryId , ( indexInt - 1 ) , 'left' ) ) ;
120
120
121
+ const currentImageOrVideo = self . _getImage ( galleryId , index ) ;
121
122
// IMAGE
122
- const image = document . createElement ( 'div' ) ;
123
- image . setAttribute ( 'class' , 'bilderrahmen--image' ) ;
124
- wrapper . appendChild ( image ) ;
125
- const imageInner = document . createElement ( 'div' ) ;
126
- imageInner . setAttribute ( 'class' , 'bilderrahmen--image-inner' ) ;
127
- image . appendChild ( imageInner ) ;
128
- const imageInnerWrap = document . createElement ( 'div' ) ;
129
- imageInnerWrap . setAttribute ( 'class' , 'bilderrahmen--image-inner-wrap' ) ;
130
- imageInner . appendChild ( imageInnerWrap ) ;
131
- const img = document . createElement ( 'img' ) ;
132
- img . onload = function ( ) {
133
- image . setAttribute ( 'class' , 'bilderrahmen--image bilderrahmen--image-loaded' ) ;
134
- } ;
135
- img . setAttribute ( 'src' , self . _getImage ( galleryId , index ) . src ) ;
136
- img . setAttribute ( 'class' , 'bilderrahmen--image-img' ) ;
137
- img . setAttribute ( 'id' , self . _generateId ( galleryId , index ) ) ;
138
- imageInnerWrap . appendChild ( img ) ;
123
+ if ( currentImageOrVideo . isVideo === false ) {
124
+ const image = document . createElement ( 'div' ) ;
125
+ image . setAttribute ( 'class' , 'bilderrahmen--image' ) ;
126
+ wrapper . appendChild ( image ) ;
127
+ const imageInner = document . createElement ( 'div' ) ;
128
+ imageInner . setAttribute ( 'class' , 'bilderrahmen--image-inner' ) ;
129
+ image . appendChild ( imageInner ) ;
130
+ const imageInnerWrap = document . createElement ( 'div' ) ;
131
+ imageInnerWrap . setAttribute ( 'class' , 'bilderrahmen--image-inner-wrap' ) ;
132
+ imageInner . appendChild ( imageInnerWrap ) ;
133
+ const img = document . createElement ( 'img' ) ;
134
+ img . onload = function ( ) {
135
+ image . setAttribute ( 'class' , 'bilderrahmen--image bilderrahmen--image-loaded' ) ;
136
+ } ;
137
+ img . setAttribute ( 'src' , self . _getImage ( galleryId , index ) . src ) ;
138
+ img . setAttribute ( 'class' , 'bilderrahmen--image-img' ) ;
139
+ img . setAttribute ( 'id' , self . _generateId ( galleryId , index ) ) ;
140
+ imageInnerWrap . appendChild ( img ) ;
141
+ //
142
+ // CLOSE ON OUTSIDE CLICK
143
+ //
144
+ if ( self . store . closeOnOutsideClick === true ) {
145
+ imageInnerWrap . onclick = ( ) => self . closeIfOpen ( ) ;
146
+ img . addEventListener ( 'click' , function ( e ) {
147
+ e . stopPropagation ( ) ;
148
+ } ) ;
149
+ }
150
+ }
139
151
140
- //
141
- // CLOSE ON OUTSIDE CLICK
142
- //
143
- if ( self . store . closeOnOutsideClick === true ) {
144
- imageInnerWrap . onclick = ( ) => self . closeIfOpen ( ) ;
145
- img . addEventListener ( 'click' , function ( e ) {
146
- e . stopPropagation ( ) ;
147
- } ) ;
152
+ // VIDEO
153
+ if ( currentImageOrVideo . isVideo === true ) {
154
+ const image = document . createElement ( 'div' ) ;
155
+ image . setAttribute ( 'class' , 'bilderrahmen--image' ) ;
156
+ wrapper . appendChild ( image ) ;
157
+ const imageInner = document . createElement ( 'div' ) ;
158
+ imageInner . setAttribute ( 'class' , 'bilderrahmen--image-inner' ) ;
159
+ image . appendChild ( imageInner ) ;
160
+ const imageInnerWrap = document . createElement ( 'div' ) ;
161
+ imageInnerWrap . setAttribute ( 'class' , 'bilderrahmen--image-inner-wrap' ) ;
162
+ imageInner . appendChild ( imageInnerWrap ) ;
163
+ const video = document . createElement ( 'video' ) ;
164
+ video . onload = function ( ) {
165
+ image . setAttribute ( 'class' , 'bilderrahmen--image bilderrahmen--image-loaded' ) ;
166
+ } ;
167
+ video . setAttribute ( 'poster' , currentImageOrVideo . poster ) ;
168
+ video . setAttribute ( 'autoplay' , '' ) ;
169
+ video . setAttribute ( 'controls' , '' ) ;
170
+ const source = document . createElement ( 'source' ) ;
171
+ source . setAttribute ( 'src' , currentImageOrVideo . src ) ;
172
+ source . setAttribute ( 'type' , 'video/mp4' ) ;
173
+ video . appendChild ( source ) ;
174
+ video . setAttribute ( 'class' , 'bilderrahmen--image-img' ) ;
175
+ video . setAttribute ( 'id' , self . _generateId ( galleryId , index ) ) ;
176
+ imageInnerWrap . appendChild ( video ) ;
177
+ //
178
+ // CLOSE ON OUTSIDE CLICK
179
+ //
180
+ if ( self . store . closeOnOutsideClick === true ) {
181
+ imageInnerWrap . onclick = ( ) => self . closeIfOpen ( ) ;
182
+ video . addEventListener ( 'click' , function ( e ) {
183
+ e . stopPropagation ( ) ;
184
+ } ) ;
185
+ }
148
186
}
149
187
188
+
150
189
// NEXT BUTTON
151
190
wrapper . appendChild ( self . _renderNextOrPreviousButton ( galleryId , ( indexInt + 1 ) , 'right' ) ) ;
152
191
@@ -163,7 +202,15 @@ class Bilderrahmen {
163
202
const nextIndex = self . _getGallery ( galleryId ) . length ;
164
203
const nextImage = self . _getImage ( galleryId , nextIndex ) ;
165
204
nextImage . title = lightboxElement . getAttribute ( 'data-bilderrahmen-title' ) ;
166
- nextImage . src = lightboxElement . parentNode . getAttribute ( 'href' ) ;
205
+ if ( lightboxElement . getAttribute ( 'data-bilderrahmen-video' ) ) {
206
+ nextImage . src = lightboxElement . getAttribute ( 'data-bilderrahmen-video' ) ;
207
+ nextImage . poster = lightboxElement . getAttribute ( 'src' ) ;
208
+ nextImage . isVideo = true ;
209
+ } else {
210
+ nextImage . src = lightboxElement . parentNode . getAttribute ( 'href' ) ;
211
+ nextImage . poster = null ;
212
+ nextImage . isVideo = false ;
213
+ }
167
214
168
215
//
169
216
// THUMBNAIL CLICK OPENS LIGHTBOX
@@ -202,4 +249,4 @@ class Bilderrahmen {
202
249
} ;
203
250
} ;
204
251
205
- export default Bilderrahmen ;
252
+ export default Bilderrahmen ;
0 commit comments