j1-template 2023.10.1 → 2023.10.2

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
  SHA256:
3
- metadata.gz: 9f4c6b0b1f71e1171fd54f2d60998942d3768b6afe0f4998618f427b4f2c774e
4
- data.tar.gz: 84e84714ead2288e3ba920da95f7b2d1e410af2e661655040bb422e2121c6541
3
+ metadata.gz: 5e2e3a1f57f7350be094b38562a4929160b671bce020f20d0614e2df8d13e6f8
4
+ data.tar.gz: 7530223f266fcf8e670dd2f943ee4f0fea6b8de7c1c5930a179a9c222b6d9715
5
5
  SHA512:
6
- metadata.gz: 1ad4c8eeedf0bef706c1a994b9a81246b231bbd5b86f970d6e7e9b398514c8bcff387e4783b440c9a4d3821bd911664539de09a65c0945d5e019e001330cdae3
7
- data.tar.gz: 288eea85cb06b65682b4ef33e3002ecc82a5a24b807589d3302f121f18c9d50de419cd12972d0ff492e49e749723a5aba1f88b16550f279a44a03982f9c02019
6
+ metadata.gz: d3d37529cbb204e1da5a3e25db2efa6777550713955cfc2f6830c546fb6c16a38a9f22644280e61bd81e4d776e79f61d1f09e97e775f8c9e05c4d770d54e1d8f
7
+ data.tar.gz: f64552caa5148edfc516f3d4e9e21ac8d56c6b44e9910ff7c612059124b15bf878bb49dc6ad38e963153dbca36d65ec6a6cad5f6b4191db317471047cceb72d8
@@ -89,6 +89,8 @@ j1.adapter.gallery = (function (j1, window) {
89
89
  var environment = '{{environment}}';
90
90
  var state = 'not_started';
91
91
  var play_button = '/assets/themes/j1/modules/lightGallery/css/themes/uno/icons/play-button.png';
92
+ var url;
93
+ var origin;
92
94
  var galleryDefaults;
93
95
  var gallerySettings;
94
96
  var galleryOptions;
@@ -111,6 +113,9 @@ j1.adapter.gallery = (function (j1, window) {
111
113
  // -------------------------------------------------------------------------
112
114
  init: function (options) {
113
115
 
116
+ url = new URL(window.location.href);
117
+ origin = url.origin;
118
+
114
119
  // -----------------------------------------------------------------------
115
120
  // Default module settings
116
121
  // -----------------------------------------------------------------------
@@ -218,11 +223,62 @@ j1.adapter.gallery = (function (j1, window) {
218
223
  {% endfor %}
219
224
  "galleryId": "{{gallery_id}}",
220
225
  "selector": ".lg-item",
226
+ {% if gallery.video == 'html5' and gallery.lightGallery.videojsOptions.enabled %}
221
227
  "videojsOptions": {
222
228
  {% for option in gallery.lightGallery.videojsOptions %}
229
+ {% if option[0] contains "enabled" %}
230
+ {% continue %}
231
+ {% endif %}
232
+ {{option[0] | json}}: {{option[1] | json}},
233
+ {% endfor %}
234
+ }
235
+ {% endif %}
236
+
237
+ {% if gallery.video == 'youtube' and gallery.lightGallery.playerParams.enabled %}
238
+ "youTubePlayerParams": {
239
+ {% for option in gallery.lightGallery.playerParams %}
240
+ {% if option[0] contains "enabled" %}
241
+ {% continue %}
242
+ {% endif %}
243
+ {{option[0] | json}}: {{option[1] | json}},
244
+ {% endfor %}
245
+ "origin": "origin"
246
+ }
247
+ {% endif %}
248
+
249
+ {% if gallery.video == 'vimeo' and gallery.lightGallery.playerParams.enabled %}
250
+ "vimeoPlayerParams": {
251
+ {% for option in gallery.lightGallery.playerParams %}
252
+ {% if option[0] contains "enabled" %}
253
+ {% continue %}
254
+ {% endif %}
223
255
  {{option[0] | json}}: {{option[1] | json}},
224
256
  {% endfor %}
225
257
  }
258
+ {% endif %}
259
+
260
+ {% if gallery.video == 'dailymotion' and gallery.lightGallery.playerParams.enabled %}
261
+ "dailymotionPlayerParams": {
262
+ {% for option in gallery.lightGallery.playerParams %}
263
+ {% if option[0] contains "enabled" %}
264
+ {% continue %}
265
+ {% endif %}
266
+ {{option[0] | json}}: {{option[1] | json}},
267
+ {% endfor %}
268
+ }
269
+ {% endif %}
270
+
271
+ {% if gallery.video == 'wistia' and gallery.lightGallery.playerParams.enabled %}
272
+ "wistiaPlayerParams": {
273
+ {% for option in gallery.lightGallery.playerParams %}
274
+ {% if option[0] contains "enabled" %}
275
+ {% continue %}
276
+ {% endif %}
277
+ {{option[0] | json}}: {{option[1] | json}},
278
+ {% endfor %}
279
+ }
280
+ {% endif %}
281
+
226
282
  }); // END lightGallery
227
283
 
228
284
  }); // END justifiedGallery on('jg.complete)
@@ -0,0 +1,585 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/themes/j1/modules/lightGallery/js/plugins/lg-video.js
4
+ # Provides lightGallery JS code for the plugin lgVideo
5
+ #
6
+ # Product/Info:
7
+ # https://jekyll.one
8
+ #
9
+ # Copyright (C) 2023 Sachin Neravath
10
+ # Copyright (C) 2023 Juergen Adams
11
+ #
12
+ # J1 Template is licensed under the MIT License.
13
+ # See: https://github.com/jekyll-one-org/j1-template/blob/main/LICENSE.md
14
+ # lightGallery is licensed under the GPLv3 license
15
+ # See: https://github.com/sachinchoolur/lightGallery/blob/master/LICENSE
16
+ # -----------------------------------------------------------------------------
17
+ */
18
+
19
+ /*!
20
+ * lightgallery | 2.7.2 | September 20th 2023
21
+ * http://www.lightgalleryjs.com/
22
+ * Copyright (c) 2020 Sachin Neravath;
23
+ * @license GPLv3
24
+ */
25
+
26
+ (function (global, factory) {
27
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
28
+ typeof define === 'function' && define.amd ? define(factory) :
29
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgVideo = factory());
30
+ }(this, (function () { 'use strict';
31
+
32
+ /*! *****************************************************************************
33
+ Copyright (c) Microsoft Corporation.
34
+
35
+ Permission to use, copy, modify, and/or distribute this software for any
36
+ purpose with or without fee is hereby granted.
37
+
38
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
39
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
40
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
41
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
42
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
43
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
44
+ PERFORMANCE OF THIS SOFTWARE.
45
+ ***************************************************************************** */
46
+
47
+ var __assign = function() {
48
+ __assign = Object.assign || function __assign(t) {
49
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
50
+ s = arguments[i];
51
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
52
+ }
53
+ return t;
54
+ };
55
+ return __assign.apply(this, arguments);
56
+ };
57
+
58
+ var videoSettings = {
59
+ autoplayFirstVideo: true,
60
+ youTubePlayerParams: false,
61
+ vimeoPlayerParams: false,
62
+ wistiaPlayerParams: false,
63
+ dailymotionPlayerParams: false,
64
+ vkPlayerParams: false,
65
+ gotoNextSlideOnVideoEnd: true,
66
+ autoplayVideoOnSlide: false,
67
+ videojs: false,
68
+ videojsTheme: '',
69
+ videojsOptions: {},
70
+ };
71
+
72
+ /**
73
+ * List of lightGallery events
74
+ * All events should be documented here
75
+ * Below interfaces are used to build the website documentations
76
+ * */
77
+ var lGEvents = {
78
+ afterAppendSlide: 'lgAfterAppendSlide',
79
+ init: 'lgInit',
80
+ hasVideo: 'lgHasVideo',
81
+ containerResize: 'lgContainerResize',
82
+ updateSlides: 'lgUpdateSlides',
83
+ afterAppendSubHtml: 'lgAfterAppendSubHtml',
84
+ beforeOpen: 'lgBeforeOpen',
85
+ afterOpen: 'lgAfterOpen',
86
+ slideItemLoad: 'lgSlideItemLoad',
87
+ beforeSlide: 'lgBeforeSlide',
88
+ afterSlide: 'lgAfterSlide',
89
+ posterClick: 'lgPosterClick',
90
+ dragStart: 'lgDragStart',
91
+ dragMove: 'lgDragMove',
92
+ dragEnd: 'lgDragEnd',
93
+ beforeNextSlide: 'lgBeforeNextSlide',
94
+ beforePrevSlide: 'lgBeforePrevSlide',
95
+ beforeClose: 'lgBeforeClose',
96
+ afterClose: 'lgAfterClose',
97
+ rotateLeft: 'lgRotateLeft',
98
+ rotateRight: 'lgRotateRight',
99
+ flipHorizontal: 'lgFlipHorizontal',
100
+ flipVertical: 'lgFlipVertical',
101
+ autoplay: 'lgAutoplay',
102
+ autoplayStart: 'lgAutoplayStart',
103
+ autoplayStop: 'lgAutoplayStop',
104
+ };
105
+
106
+ var param = function (obj) {
107
+ return Object.keys(obj)
108
+ .map(function (k) {
109
+ return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);
110
+ })
111
+ .join('&');
112
+ };
113
+ var paramsToObject = function (url) {
114
+ var paramas = url
115
+ .slice(1)
116
+ .split('&')
117
+ .map(function (p) { return p.split('='); })
118
+ .reduce(function (obj, pair) {
119
+ var _a = pair.map(decodeURIComponent), key = _a[0], value = _a[1];
120
+ obj[key] = value;
121
+ return obj;
122
+ }, {});
123
+ return paramas;
124
+ };
125
+ var getYouTubeParams = function (videoInfo, youTubePlayerParamsSettings) {
126
+ if (!videoInfo.youtube)
127
+ return '';
128
+ var slideUrlParams = videoInfo.youtube[2]
129
+ ? paramsToObject(videoInfo.youtube[2])
130
+ : '';
131
+ // For youtube first params gets priority if duplicates found
132
+ var defaultYouTubePlayerParams = {
133
+ wmode: 'opaque',
134
+ autoplay: 1,
135
+ mute: 0,
136
+ enablejsapi: 1,
137
+ };
138
+ var playerParamsSettings = youTubePlayerParamsSettings || {};
139
+ var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);
140
+ var youTubeParams = "?" + param(youTubePlayerParams);
141
+ return youTubeParams;
142
+ };
143
+ var isYouTubeNoCookie = function (url) {
144
+ return url.includes('youtube-nocookie.com');
145
+ };
146
+ var getVimeoURLParams = function (defaultParams, videoInfo) {
147
+ if (!videoInfo || !videoInfo.vimeo)
148
+ return '';
149
+ var urlParams = videoInfo.vimeo[2] || '';
150
+ var defaultPlayerParams = defaultParams && Object.keys(defaultParams).length !== 0
151
+ ? '&' + param(defaultParams)
152
+ : '';
153
+ // Support private video
154
+ var urlWithHash = videoInfo.vimeo[0].split('/').pop() || '';
155
+ var urlWithHashWithParams = urlWithHash.split('?')[0] || '';
156
+ var hash = urlWithHashWithParams.split('#')[0];
157
+ var isPrivate = videoInfo.vimeo[1] !== hash;
158
+ if (isPrivate) {
159
+ urlParams = urlParams.replace("/" + hash, '');
160
+ }
161
+ urlParams =
162
+ urlParams[0] == '?' ? '&' + urlParams.slice(1) : urlParams || '';
163
+ // For vimeo last params gets priority if duplicates found
164
+ var vimeoPlayerParams = "?autoplay=0&muted=0" + (isPrivate ? "&h=" + hash : '') + defaultPlayerParams + urlParams;
165
+ return vimeoPlayerParams;
166
+ };
167
+
168
+ /**
169
+ * Video module for lightGallery
170
+ * Supports HTML5, YouTube, Vimeo, wistia videos
171
+ *
172
+ *
173
+ * @ref Wistia
174
+ * https://wistia.com/support/integrations/wordpress(How to get url)
175
+ * https://wistia.com/support/developers/embed-options#using-embed-options
176
+ * https://wistia.com/support/developers/player-api
177
+ * https://wistia.com/support/developers/construct-an-embed-code
178
+ * http://jsfiddle.net/xvnm7xLm/
179
+ * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
180
+ * https://wistia.com/support/embed-and-share/sharing-videos
181
+ * https://private-sharing.wistia.com/medias/mwhrulrucj
182
+ *
183
+ * @ref Youtube
184
+ * https://developers.google.com/youtube/player_parameters#enablejsapi
185
+ * https://developers.google.com/youtube/iframe_api_reference
186
+ * https://developer.chrome.com/blog/autoplay/#iframe-delegation
187
+ *
188
+ * @ref Vimeo
189
+ * https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url
190
+ * https://vimeo.zendesk.com/hc/en-us/articles/360000121668-Starting-playback-at-a-specific-timecode
191
+ * https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters
192
+ */
193
+ var Video = /** @class */ (function () {
194
+ function Video(instance) {
195
+ // get lightGallery core plugin instance
196
+ this.core = instance;
197
+ this.settings = __assign(__assign({}, videoSettings), this.core.settings);
198
+ return this;
199
+ }
200
+
201
+ Video.prototype.init = function () {
202
+ var _this = this;
203
+ /**
204
+ * Event triggered when video url found without poster
205
+ * Append video HTML
206
+ * Play if autoplayFirstVideo is true
207
+ */
208
+ this.core.LGel.on(lGEvents.hasVideo + ".video", this.onHasVideo.bind(this));
209
+ this.core.LGel.on(lGEvents.posterClick + ".video", function () {
210
+ var $el = _this.core.getSlideItem(_this.core.index);
211
+ _this.loadVideoOnPosterClick($el);
212
+ });
213
+ this.core.LGel.on(lGEvents.slideItemLoad + ".video", this.onSlideItemLoad.bind(this));
214
+ // @desc fired immediately before each slide transition.
215
+ this.core.LGel.on(lGEvents.beforeSlide + ".video", this.onBeforeSlide.bind(this));
216
+ // @desc fired immediately after each slide transition.
217
+ this.core.LGel.on(lGEvents.afterSlide + ".video", this.onAfterSlide.bind(this));
218
+ };
219
+
220
+ /**
221
+ * @desc Event triggered when a slide is completely loaded
222
+ *
223
+ * @param {Event} event - lightGalley custom event
224
+ */
225
+ Video.prototype.onSlideItemLoad = function (event) {
226
+ var _this = this;
227
+ var _a = event.detail, isFirstSlide = _a.isFirstSlide, index = _a.index;
228
+ // Should check the active slide as well as user may have moved to different slide before the first slide is loaded
229
+ if (this.settings.autoplayFirstVideo &&
230
+ isFirstSlide &&
231
+ index === this.core.index) {
232
+ // Delay is just for the transition effect on video load
233
+ setTimeout(function () {
234
+ _this.loadAndPlayVideo(index);
235
+ }, 200);
236
+ }
237
+ // Should not call on first slide. should check only if the slide is active
238
+ if (!isFirstSlide &&
239
+ this.settings.autoplayVideoOnSlide &&
240
+ index === this.core.index) {
241
+ this.loadAndPlayVideo(index);
242
+ }
243
+ };
244
+
245
+ /**
246
+ * @desc Event triggered when video url or poster found
247
+ * Append video HTML is poster is not given
248
+ * Play if autoplayFirstVideo is true
249
+ *
250
+ * @param {Event} event - Javascript Event object.
251
+ */
252
+ Video.prototype.onHasVideo = function (event) {
253
+ var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;
254
+ if (!hasPoster) {
255
+ // All functions are called separately if poster exist in loadVideoOnPosterClick function
256
+ this.appendVideos(this.core.getSlideItem(index), {
257
+ src: src,
258
+ addClass: 'lg-object',
259
+ index: index,
260
+ html5Video: html5Video,
261
+ });
262
+ // Automatically navigate to next slide once video reaches the end.
263
+ this.gotoNextSlideOnVideoEnd(src, index);
264
+ }
265
+ };
266
+
267
+ /**
268
+ * @desc fired immediately before each slide transition.
269
+ * Pause the previous video
270
+ * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.
271
+ *
272
+ * @param {Event} event - Javascript Event object.
273
+ * @param {number} prevIndex - Previous index of the slide.
274
+ * @param {number} index - Current index of the slide
275
+ */
276
+ Video.prototype.onBeforeSlide = function (event) {
277
+ if (this.core.lGalleryOn) {
278
+ var prevIndex = event.detail.prevIndex;
279
+ this.pauseVideo(prevIndex);
280
+ }
281
+ };
282
+
283
+ /**
284
+ * @desc fired immediately after each slide transition.
285
+ * Play video if autoplayVideoOnSlide option is enabled.
286
+ *
287
+ * @param {Event} event - Javascript Event object.
288
+ * @param {number} prevIndex - Previous index of the slide.
289
+ * @param {number} index - Current index of the slide
290
+ * @todo should check on onSlideLoad as well if video is not loaded on after slide
291
+ */
292
+ Video.prototype.onAfterSlide = function (event) {
293
+ var _this = this;
294
+ var _a = event.detail, index = _a.index, prevIndex = _a.prevIndex;
295
+ // Do not call on first slide
296
+ var $slide = this.core.getSlideItem(index);
297
+ if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {
298
+ if ($slide.hasClass('lg-complete')) {
299
+ setTimeout(function () {
300
+ _this.loadAndPlayVideo(index);
301
+ }, 100);
302
+ }
303
+ }
304
+ };
305
+
306
+ Video.prototype.loadAndPlayVideo = function (index) {
307
+ var $slide = this.core.getSlideItem(index);
308
+ var currentGalleryItem = this.core.galleryItems[index];
309
+ if (currentGalleryItem.poster) {
310
+ this.loadVideoOnPosterClick($slide, true);
311
+ }
312
+ else {
313
+ this.playVideo(index);
314
+ }
315
+ };
316
+ /**
317
+ * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
318
+ * @param {number} index - Index of the slide
319
+ */
320
+ Video.prototype.playVideo = function (index) {
321
+ this.controlVideo(index, 'play');
322
+ };
323
+
324
+ /**
325
+ * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
326
+ * @param {number} index - Index of the slide
327
+ */
328
+ Video.prototype.pauseVideo = function (index) {
329
+ this.controlVideo(index, 'pause');
330
+ };
331
+
332
+ Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {
333
+ var video = '';
334
+ var videoInfo = this.core.galleryItems[index]
335
+ .__slideVideoInfo || {};
336
+ var currentGalleryItem = this.core.galleryItems[index];
337
+ var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
338
+ videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
339
+ var commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen";
340
+ if (videoInfo.youtube) {
341
+ var videoId = 'lg-youtube' + index;
342
+ var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
343
+ var isYouTubeNoCookieURL = isYouTubeNoCookie(src);
344
+ var youtubeURL = isYouTubeNoCookieURL
345
+ ? '//www.youtube-nocookie.com/'
346
+ : '//www.youtube.com/';
347
+ video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-youtube " + addClass + "\" " + videoTitle + " src=\"" + youtubeURL + "embed/" + (videoInfo.youtube[1] + youTubeParams) + "\" " + commonIframeProps + "></iframe>";
348
+ }
349
+ else if (videoInfo.vimeo) {
350
+ var videoId = 'lg-vimeo' + index;
351
+ var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);
352
+ video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-vimeo " + addClass + "\" " + videoTitle + " src=\"//player.vimeo.com/video/" + (videoInfo.vimeo[1] + playerParams) + "\" " + commonIframeProps + "></iframe>";
353
+ }
354
+ else if (videoInfo.wistia) {
355
+ var wistiaId = 'lg-wistia' + index;
356
+ var playerParams = param(this.settings.wistiaPlayerParams);
357
+ playerParams = playerParams ? '?' + playerParams : '';
358
+ video = "<iframe allow=\"autoplay\" id=\"" + wistiaId + "\" src=\"//fast.wistia.net/embed/iframe/" + (videoInfo.wistia[4] + playerParams) + "\" " + videoTitle + " class=\"wistia_embed lg-video-object lg-wistia " + addClass + "\" name=\"wistia_embed\" " + commonIframeProps + "></iframe>";
359
+ }
360
+ // jadams: added Dailymotion Player
361
+ else if (videoInfo.dailymotion) {
362
+ var dailymotionId = 'lg-dailymotion' + index;
363
+ var playerParams = param(this.settings.dailymotionPlayerParams);
364
+ playerParams = playerParams ? '?' + playerParams : '';
365
+ video = "<iframe allow=\"autoplay\" id=\"" + dailymotionId + "\" src=\"//www.dailymotion.com/embed/video/" + (videoInfo.dailymotion[1] + playerParams) + "\" " + videoTitle + " class=\"dailymotion_embed lg-video-object lg-dailymotion " + addClass + "\" name=\"dailymotion_embed\" " + commonIframeProps + "></iframe>"
366
+ }
367
+ else if (videoInfo.html5) {
368
+ var html5VideoMarkup = '';
369
+ for (var i = 0; i < html5Video.source.length; i++) {
370
+ html5VideoMarkup += "<source src=\"" + html5Video.source[i].src + "\" type=\"" + html5Video.source[i].type + "\">";
371
+ }
372
+ if (html5Video.tracks) {
373
+ var _loop_1 = function (i) {
374
+ var trackAttributes = '';
375
+ var track = html5Video.tracks[i];
376
+ Object.keys(track || {}).forEach(function (key) {
377
+ trackAttributes += key + "=\"" + track[key] + "\" ";
378
+ });
379
+ html5VideoMarkup += "<track " + trackAttributes + ">";
380
+ };
381
+ for (var i = 0; i < html5Video.tracks.length; i++) {
382
+ _loop_1(i);
383
+ }
384
+ }
385
+ var html5VideoAttrs_1 = '';
386
+ var videoAttributes_1 = html5Video.attributes || {};
387
+ Object.keys(videoAttributes_1 || {}).forEach(function (key) {
388
+ html5VideoAttrs_1 += key + "=\"" + videoAttributes_1[key] + "\" ";
389
+ });
390
+ video = "<video class=\"lg-video-object lg-html5 " + (this.settings.videojs && this.settings.videojsTheme
391
+ ? this.settings.videojsTheme + ' '
392
+ : '') + " " + (this.settings.videojs ? ' video-js' : '') + "\" " + html5VideoAttrs_1 + ">\n " + html5VideoMarkup + "\n Your browser does not support HTML5 video.\n </video>";
393
+ }
394
+ return video;
395
+ };
396
+
397
+ /**
398
+ * @desc - Append videos to the slide
399
+ *
400
+ * @param {HTMLElement} el - slide element
401
+ * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo
402
+ */
403
+ Video.prototype.appendVideos = function (el, videoParams) {
404
+ var _a;
405
+ var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
406
+ el.find('.lg-video-cont').append(videoHtml);
407
+ var $videoElement = el.find('.lg-video-object').first();
408
+ if (videoParams.html5Video) {
409
+ $videoElement.on('mousedown.lg.video', function (e) {
410
+ e.stopPropagation();
411
+ });
412
+ }
413
+ if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {
414
+ try {
415
+ return videojs($videoElement.get(), this.settings.videojsOptions);
416
+ }
417
+ catch (e) {
418
+ console.warn('lightGallery: Make sure you have included videojs');
419
+ }
420
+ }
421
+ };
422
+
423
+ Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {
424
+ var _this = this;
425
+ var $videoElement = this.core
426
+ .getSlideItem(index)
427
+ .find('.lg-video-object')
428
+ .first();
429
+ var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
430
+ if (this.settings.gotoNextSlideOnVideoEnd) {
431
+ if (videoInfo.html5) {
432
+ $videoElement.on('ended', function () {
433
+ _this.core.goToNextSlide();
434
+ });
435
+ }
436
+ else if (videoInfo.vimeo) {
437
+ try {
438
+ // https://github.com/vimeo/player.js/#ended
439
+ new Vimeo.Player($videoElement.get()).on('ended', function () {
440
+ _this.core.goToNextSlide();
441
+ });
442
+ }
443
+ catch (e) {
444
+ // jadams:
445
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
446
+ }
447
+ }
448
+ else if (videoInfo.wistia) {
449
+ try {
450
+ window._wq = window._wq || [];
451
+ // @todo Event is gettign triggered multiple times
452
+ window._wq.push({
453
+ id: $videoElement.attr('id'),
454
+ onReady: function (video) {
455
+ video.bind('end', function () {
456
+ _this.core.goToNextSlide();
457
+ });
458
+ },
459
+ });
460
+ }
461
+ catch (e) {
462
+ // jadams:
463
+ console.warn('lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
464
+ }
465
+ }
466
+ }
467
+ };
468
+
469
+ Video.prototype.controlVideo = function (index, action) {
470
+ var $videoElement = this.core
471
+ .getSlideItem(index)
472
+ .find('.lg-video-object')
473
+ .first();
474
+ var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
475
+ if (!$videoElement.get())
476
+ return;
477
+ if (videoInfo.youtube) {
478
+ try {
479
+ $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
480
+ }
481
+ catch (e) {
482
+ console.error("lightGallery:- " + e);
483
+ }
484
+ }
485
+ else if (videoInfo.vimeo) {
486
+ try {
487
+ new Vimeo.Player($videoElement.get())[action]();
488
+ }
489
+ catch (e) {
490
+ console.warn('lightGallery: Make sure you have included //github.com/vimeo/player.js');
491
+ }
492
+ }
493
+ else if (videoInfo.html5) {
494
+ if (this.settings.videojs) {
495
+ try {
496
+ videojs($videoElement.get())[action]();
497
+ }
498
+ catch (e) {
499
+ console.warn('lightGallery: Make sure you have included videojs');
500
+ }
501
+ }
502
+ else {
503
+ $videoElement.get()[action]();
504
+ }
505
+ }
506
+ else if (videoInfo.wistia) {
507
+ try {
508
+ window._wq = window._wq || [];
509
+ // @todo Find a way to destroy wistia player instance
510
+ window._wq.push({
511
+ id: $videoElement.attr('id'),
512
+ onReady: function (video) {
513
+ video[action]();
514
+ },
515
+ });
516
+ }
517
+ catch (e) {
518
+ console.warn('lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
519
+ }
520
+ }
521
+ };
522
+
523
+ Video.prototype.loadVideoOnPosterClick = function ($el, forcePlay) {
524
+ var _this = this;
525
+ // check slide has poster
526
+ if (!$el.hasClass('lg-video-loaded')) {
527
+ // check already video element present
528
+ if (!$el.hasClass('lg-has-video')) {
529
+ $el.addClass('lg-has-video');
530
+ var _html = void 0;
531
+ var _src = this.core.galleryItems[this.core.index].src;
532
+ var video = this.core.galleryItems[this.core.index].video;
533
+ if (video) {
534
+ _html =
535
+ typeof video === 'string' ? JSON.parse(video) : video;
536
+ }
537
+ var videoJsPlayer_1 = this.appendVideos($el, {
538
+ src: _src,
539
+ addClass: '',
540
+ index: this.core.index,
541
+ html5Video: _html,
542
+ });
543
+ this.gotoNextSlideOnVideoEnd(_src, this.core.index);
544
+ var $tempImg = $el.find('.lg-object').first().get();
545
+ // @todo make sure it is working
546
+ $el.find('.lg-video-cont').first().append($tempImg);
547
+ $el.addClass('lg-video-loading');
548
+ videoJsPlayer_1 &&
549
+ videoJsPlayer_1.ready(function () {
550
+ videoJsPlayer_1.on('loadedmetadata', function () {
551
+ _this.onVideoLoadAfterPosterClick($el, _this.core.index);
552
+ });
553
+ });
554
+ $el.find('.lg-video-object')
555
+ .first()
556
+ .on('load.lg error.lg loadedmetadata.lg', function () {
557
+ setTimeout(function () {
558
+ _this.onVideoLoadAfterPosterClick($el, _this.core.index);
559
+ }, 50);
560
+ });
561
+ }
562
+ else {
563
+ this.playVideo(this.core.index);
564
+ }
565
+ }
566
+ else if (forcePlay) {
567
+ this.playVideo(this.core.index);
568
+ }
569
+ };
570
+
571
+ Video.prototype.onVideoLoadAfterPosterClick = function ($el, index) {
572
+ $el.addClass('lg-video-loaded');
573
+ this.playVideo(index);
574
+ };
575
+
576
+ Video.prototype.destroy = function () {
577
+ this.core.LGel.off('.lg.video');
578
+ this.core.LGel.off('.video');
579
+ };
580
+ return Video;
581
+ }());
582
+
583
+ return Video;
584
+
585
+ })));
@@ -44,6 +44,9 @@
44
44
  PERFORMANCE OF THIS SOFTWARE.
45
45
  ***************************************************************************** */
46
46
 
47
+ var url = new URL(window.location.href);
48
+ var origin = url.origin;
49
+
47
50
  var __assign = function() {
48
51
  __assign = Object.assign || function __assign(t) {
49
52
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -61,7 +64,6 @@
61
64
  vimeoPlayerParams: false,
62
65
  wistiaPlayerParams: false,
63
66
  dailymotionPlayerParams: false,
64
- vkPlayerParams: false,
65
67
  gotoNextSlideOnVideoEnd: true,
66
68
  autoplayVideoOnSlide: false,
67
69
  videojs: false,
@@ -128,13 +130,20 @@
128
130
  var slideUrlParams = videoInfo.youtube[2]
129
131
  ? paramsToObject(videoInfo.youtube[2])
130
132
  : '';
131
- // For youtube first params gets priority if duplicates found
133
+
134
+ // For YouTube first params gets priority if duplicates found
135
+ // See: https://stackoverflow.com/questions/40685142/youtube-autoplay-does-not-work-with-iframe
132
136
  var defaultYouTubePlayerParams = {
133
- wmode: 'opaque',
134
137
  autoplay: 0,
135
- mute: 1,
138
+ controls: 1,
136
139
  enablejsapi: 1,
140
+ hl: 'en',
141
+ loop: 0,
142
+ mute: 1,
143
+ wmode: 'opaque',
144
+ origin: origin,
137
145
  };
146
+
138
147
  var playerParamsSettings = youTubePlayerParamsSettings || {};
139
148
  var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);
140
149
  var youTubeParams = "?" + param(youTubePlayerParams);
@@ -336,7 +345,7 @@
336
345
  var currentGalleryItem = this.core.galleryItems[index];
337
346
  var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
338
347
  videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
339
- var commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen";
348
+ var commonIframeProps = "allowtransparency=\"true\"\n frameborder=\"0\"\n scrolling=\"no\"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n msallowfullscreen";
340
349
  if (videoInfo.youtube) {
341
350
  var videoId = 'lg-youtube' + index;
342
351
  var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
@@ -23,5 +23,4 @@
23
23
  * @license GPLv3
24
24
  */
25
25
 
26
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).lgVideo=o()}(this,function(){"use strict";
27
- var e=function(){return(e=Object.assign||function(e){for(var o,i=1,t=arguments.length;i<t;i++)for(var s in o=arguments[i])Object.prototype.hasOwnProperty.call(o,s)&&(e[s]=o[s]);return e}).apply(this,arguments)},o={autoplayFirstVideo:!0,youTubePlayerParams:!1,vimeoPlayerParams:!1,wistiaPlayerParams:!1,gotoNextSlideOnVideoEnd:!0,autoplayVideoOnSlide:!1,videojs:!1,videojsTheme:"",videojsOptions:{}},i="lgHasVideo",t="lgSlideItemLoad",s="lgBeforeSlide",n="lgAfterSlide",l="lgPosterClick",d=function(e){return Object.keys(e).map(function(o){return encodeURIComponent(o)+"="+encodeURIComponent(e[o])}).join("&")},r=function(o,i){if(!o.youtube)return"";var t=o.youtube[2]?o.youtube[2].slice(1).split("&").map(function(e){return e.split("=")}).reduce(function(e,o){var i=o.map(decodeURIComponent),t=i[0],s=i[1];return e[t]=s,e},{}):"",s=i||{},n=e(e(e({},{wmode:"opaque",autoplay:0,mute:1,enablejsapi:1}),s),t);return"?"+d(n)};return function(){function a(i){return this.core=i,this.settings=e(e({},o),this.core.settings),this}return a.prototype.init=function(){var e=this;this.core.LGel.on(i+".video",this.onHasVideo.bind(this)),this.core.LGel.on(l+".video",function(){var o=e.core.getSlideItem(e.core.index);e.loadVideoOnPosterClick(o)}),this.core.LGel.on(t+".video",this.onSlideItemLoad.bind(this)),this.core.LGel.on(s+".video",this.onBeforeSlide.bind(this)),this.core.LGel.on(n+".video",this.onAfterSlide.bind(this))},a.prototype.onSlideItemLoad=function(e){var o=this,i=e.detail,t=i.isFirstSlide,s=i.index;this.settings.autoplayFirstVideo&&t&&s===this.core.index&&setTimeout(function(){o.loadAndPlayVideo(s)},200),!t&&this.settings.autoplayVideoOnSlide&&s===this.core.index&&this.loadAndPlayVideo(s)},a.prototype.onHasVideo=function(e){var o=e.detail,i=o.index,t=o.src,s=o.html5Video;o.hasPoster||(this.appendVideos(this.core.getSlideItem(i),{src:t,addClass:"lg-object",index:i,html5Video:s}),this.gotoNextSlideOnVideoEnd(t,i))},a.prototype.onBeforeSlide=function(e){if(this.core.lGalleryOn){var o=e.detail.prevIndex;this.pauseVideo(o)}},a.prototype.onAfterSlide=function(e){var o=this,i=e.detail,t=i.index,s=i.prevIndex,n=this.core.getSlideItem(t);this.settings.autoplayVideoOnSlide&&t!==s&&n.hasClass("lg-complete")&&setTimeout(function(){o.loadAndPlayVideo(t)},100)},a.prototype.loadAndPlayVideo=function(e){var o=this.core.getSlideItem(e);this.core.galleryItems[e].poster?this.loadVideoOnPosterClick(o,!0):this.playVideo(e)},a.prototype.playVideo=function(e){this.controlVideo(e,"play")},a.prototype.pauseVideo=function(e){this.controlVideo(e,"pause")},a.prototype.getVideoHtml=function(e,o,i,t){var s="",n=this.core.galleryItems[i].__slideVideoInfo||{},l=this.core.galleryItems[i],a=l.title||l.alt;a=a?'title="'+a+'"':"";var c='allowtransparency="true"\n frameborder="0"\n scrolling="no"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n oallowfullscreen\n msallowfullscreen';if(n.youtube){var u="lg-youtube"+i,f=r(n,this.settings.youTubePlayerParams);s='<iframe allow="autoplay" id='+u+' class="lg-video-object lg-youtube '+o+'" '+a+' src="'+(e.includes("youtube-nocookie.com")?"//www.youtube-nocookie.com/":"//www.youtube.com/")+"embed/"+(n.youtube[1]+f)+'" '+c+"></iframe>"}else if(n.vimeo){u="lg-vimeo"+i;var h=function(e,o){if(!o||!o.vimeo)return"";var i=o.vimeo[2]||"",t=e&&0!==Object.keys(e).length?"&"+d(e):"",s=((o.vimeo[0].split("/").pop()||"").split("?")[0]||"").split("#")[0],n=o.vimeo[1]!==s;return n&&(i=i.replace("/"+s,"")),"?autoplay=0&muted=1"+(n?"&h="+s:"")+t+(i="?"==i[0]?"&"+i.slice(1):i||"")}(this.settings.vimeoPlayerParams,n);s='<iframe allow="autoplay" id='+u+' class="lg-video-object lg-vimeo '+o+'" '+a+' src="//player.vimeo.com/video/'+(n.vimeo[1]+h)+'" '+c+"></iframe>"}else if(n.wistia){var p="lg-wistia"+i;h=(h=d(this.settings.wistiaPlayerParams))?"?"+h:"",s='<iframe allow="autoplay" id="'+p+'" src="//fast.wistia.net/embed/iframe/'+(n.wistia[4]+h)+'" '+a+' class="wistia_embed lg-video-object lg-wistia '+o+'" name="wistia_embed" '+c+"></iframe>"}else if(n.html5){for(var y="",g=0;g<t.source.length;g++)y+='<source src="'+t.source[g].src+'" type="'+t.source[g].type+'">';if(t.tracks){var v=function(e){var o="",i=t.tracks[e];Object.keys(i||{}).forEach(function(e){o+=e+'="'+i[e]+'" '}),y+="<track "+o+">"};for(g=0;g<t.tracks.length;g++)v(g)}var m="",w=t.attributes||{};Object.keys(w||{}).forEach(function(e){m+=e+'="'+w[e]+'" '}),s='<video class="lg-video-object lg-html5 '+(this.settings.videojs&&this.settings.videojsTheme?this.settings.videojsTheme+" ":"")+" "+(this.settings.videojs?" video-js":"")+'" '+m+">\n "+y+"\n Your browser does not support HTML5 video.\n </video>"}return s},a.prototype.appendVideos=function(e,o){var i,t=this.getVideoHtml(o.src,o.addClass,o.index,o.html5Video);e.find(".lg-video-cont").append(t);var s=e.find(".lg-video-object").first();if(o.html5Video&&s.on("mousedown.lg.video",function(e){e.stopPropagation()}),this.settings.videojs&&(null===(i=this.core.galleryItems[o.index].__slideVideoInfo)||void 0===i?void 0:i.html5))try{return videojs(s.get(),this.settings.videojsOptions)}catch(e){console.warn("lightGallery: Make sure you have included videojs")}},a.prototype.gotoNextSlideOnVideoEnd=function(e,o){var i=this,t=this.core.getSlideItem(o).find(".lg-video-object").first(),s=this.core.galleryItems[o].__slideVideoInfo||{};if(this.settings.gotoNextSlideOnVideoEnd)if(s.html5)t.on("ended",function(){i.core.goToNextSlide()});else if(s.vimeo)try{new Vimeo.Player(t.get()).on("ended",function(){i.core.goToNextSlide()})}catch(e){console.warn("lightGallery: Make sure you have included //github.com/vimeo/player.js")}else if(s.wistia)try{window._wq=window._wq||[],window._wq.push({id:t.attr("id"),onReady:function(e){e.bind("end",function(){i.core.goToNextSlide()})}})}catch(e){console.warn("lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js")}},a.prototype.controlVideo=function(e,o){var i=this.core.getSlideItem(e).find(".lg-video-object").first(),t=this.core.galleryItems[e].__slideVideoInfo||{};if(i.get())if(t.youtube)try{i.get().contentWindow.postMessage('{"event":"command","func":"'+o+'Video","args":""}',"*")}catch(e){console.error("lightGallery:- "+e)}else if(t.vimeo)try{new Vimeo.Player(i.get())[o]()}catch(e){console.warn("lightGallery: Make sure you have included //github.com/vimeo/player.js")}else if(t.html5)if(this.settings.videojs)try{videojs(i.get())[o]()}catch(e){console.warn("lightGallery: Make sure you have included videojs")}else i.get()[o]();else if(t.wistia)try{window._wq=window._wq||[],window._wq.push({id:i.attr("id"),onReady:function(e){e[o]()}})}catch(e){console.warn("lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js")}},a.prototype.loadVideoOnPosterClick=function(e,o){var i=this;if(e.hasClass("lg-video-loaded"))o&&this.playVideo(this.core.index);else if(e.hasClass("lg-has-video"))this.playVideo(this.core.index);else{e.addClass("lg-has-video");var t=void 0,s=this.core.galleryItems[this.core.index].src,n=this.core.galleryItems[this.core.index].video;n&&(t="string"==typeof n?JSON.parse(n):n);var l=this.appendVideos(e,{src:s,addClass:"",index:this.core.index,html5Video:t});this.gotoNextSlideOnVideoEnd(s,this.core.index);var d=e.find(".lg-object").first().get();e.find(".lg-video-cont").first().append(d),e.addClass("lg-video-loading"),l&&l.ready(function(){l.on("loadedmetadata",function(){i.onVideoLoadAfterPosterClick(e,i.core.index)})}),e.find(".lg-video-object").first().on("load.lg error.lg loadedmetadata.lg",function(){setTimeout(function(){i.onVideoLoadAfterPosterClick(e,i.core.index)},50)})}},a.prototype.onVideoLoadAfterPosterClick=function(e,o){e.addClass("lg-video-loaded"),this.playVideo(o)},a.prototype.destroy=function(){this.core.LGel.off(".lg.video"),this.core.LGel.off(".video")},a}()});
26
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).lgVideo=o()}(this,function(){"use strict";var e=new URL(window.location.href).origin,o=function(){return(o=Object.assign||function(e){for(var o,i=1,t=arguments.length;i<t;i++)for(var s in o=arguments[i])Object.prototype.hasOwnProperty.call(o,s)&&(e[s]=o[s]);return e}).apply(this,arguments)},i={autoplayFirstVideo:!0,youTubePlayerParams:!1,vimeoPlayerParams:!1,wistiaPlayerParams:!1,dailymotionPlayerParams:!1,gotoNextSlideOnVideoEnd:!0,autoplayVideoOnSlide:!1,videojs:!1,videojsTheme:"",videojsOptions:{}},t="lgHasVideo",s="lgSlideItemLoad",n="lgBeforeSlide",l="lgAfterSlide",d="lgPosterClick",a=function(e){return Object.keys(e).map(function(o){return encodeURIComponent(o)+"="+encodeURIComponent(e[o])}).join("&")},r=function(i,t){if(!i.youtube)return"";var s=i.youtube[2]?i.youtube[2].slice(1).split("&").map(function(e){return e.split("=")}).reduce(function(e,o){var i=o.map(decodeURIComponent),t=i[0],s=i[1];return e[t]=s,e},{}):"",n=t||{},l=o(o(o({},{autoplay:0,controls:1,enablejsapi:1,hl:"en",loop:0,mute:1,wmode:"opaque",origin:e}),n),s);return"?"+a(l)};return function(){function e(e){return this.core=e,this.settings=o(o({},i),this.core.settings),this}return e.prototype.init=function(){var e=this;this.core.LGel.on(t+".video",this.onHasVideo.bind(this)),this.core.LGel.on(d+".video",function(){var o=e.core.getSlideItem(e.core.index);e.loadVideoOnPosterClick(o)}),this.core.LGel.on(s+".video",this.onSlideItemLoad.bind(this)),this.core.LGel.on(n+".video",this.onBeforeSlide.bind(this)),this.core.LGel.on(l+".video",this.onAfterSlide.bind(this))},e.prototype.onSlideItemLoad=function(e){var o=this,i=e.detail,t=i.isFirstSlide,s=i.index;this.settings.autoplayFirstVideo&&t&&s===this.core.index&&setTimeout(function(){o.loadAndPlayVideo(s)},200),!t&&this.settings.autoplayVideoOnSlide&&s===this.core.index&&this.loadAndPlayVideo(s)},e.prototype.onHasVideo=function(e){var o=e.detail,i=o.index,t=o.src,s=o.html5Video;o.hasPoster||(this.appendVideos(this.core.getSlideItem(i),{src:t,addClass:"lg-object",index:i,html5Video:s}),this.gotoNextSlideOnVideoEnd(t,i))},e.prototype.onBeforeSlide=function(e){if(this.core.lGalleryOn){var o=e.detail.prevIndex;this.pauseVideo(o)}},e.prototype.onAfterSlide=function(e){var o=this,i=e.detail,t=i.index,s=i.prevIndex,n=this.core.getSlideItem(t);this.settings.autoplayVideoOnSlide&&t!==s&&n.hasClass("lg-complete")&&setTimeout(function(){o.loadAndPlayVideo(t)},100)},e.prototype.loadAndPlayVideo=function(e){var o=this.core.getSlideItem(e);this.core.galleryItems[e].poster?this.loadVideoOnPosterClick(o,!0):this.playVideo(e)},e.prototype.playVideo=function(e){this.controlVideo(e,"play")},e.prototype.pauseVideo=function(e){this.controlVideo(e,"pause")},e.prototype.getVideoHtml=function(e,o,i,t){var s="",n=this.core.galleryItems[i].__slideVideoInfo||{},l=this.core.galleryItems[i],d=l.title||l.alt;d=d?'title="'+d+'"':"";var c='allowtransparency="true"\n frameborder="0"\n scrolling="no"\n allowfullscreen\n mozallowfullscreen\n webkitallowfullscreen\n msallowfullscreen';if(n.youtube){var u="lg-youtube"+i,f=r(n,this.settings.youTubePlayerParams);s='<iframe allow="autoplay" id='+u+' class="lg-video-object lg-youtube '+o+'" '+d+' src="'+(e.includes("youtube-nocookie.com")?"//www.youtube-nocookie.com/":"//www.youtube.com/")+"embed/"+(n.youtube[1]+f)+'" '+c+"></iframe>"}else if(n.vimeo){u="lg-vimeo"+i;var h=function(e,o){if(!o||!o.vimeo)return"";var i=o.vimeo[2]||"",t=e&&0!==Object.keys(e).length?"&"+a(e):"",s=((o.vimeo[0].split("/").pop()||"").split("?")[0]||"").split("#")[0],n=o.vimeo[1]!==s;return n&&(i=i.replace("/"+s,"")),"?autoplay=0&muted=1"+(n?"&h="+s:"")+t+(i="?"==i[0]?"&"+i.slice(1):i||"")}(this.settings.vimeoPlayerParams,n);s='<iframe allow="autoplay" id='+u+' class="lg-video-object lg-vimeo '+o+'" '+d+' src="//player.vimeo.com/video/'+(n.vimeo[1]+h)+'" '+c+"></iframe>"}else if(n.wistia){var y="lg-wistia"+i;h=(h=a(this.settings.wistiaPlayerParams))?"?"+h:"",s='<iframe allow="autoplay" id="'+y+'" src="//fast.wistia.net/embed/iframe/'+(n.wistia[4]+h)+'" '+d+' class="wistia_embed lg-video-object lg-wistia '+o+'" name="wistia_embed" '+c+"></iframe>"}else if(n.dailymotion){var m="lg-dailymotion"+i;h=(h=a(this.settings.dailymotionPlayerParams))?"?"+h:"",s='<iframe allow="autoplay" id="'+m+'" src="//www.dailymotion.com/embed/video/'+(n.dailymotion[1]+h)+'" '+d+' class="dailymotion_embed lg-video-object lg-dailymotion '+o+'" name="dailymotion_embed" '+c+"></iframe>"}else if(n.html5){for(var g="",p=0;p<t.source.length;p++)g+='<source src="'+t.source[p].src+'" type="'+t.source[p].type+'">';if(t.tracks){var v=function(e){var o="",i=t.tracks[e];Object.keys(i||{}).forEach(function(e){o+=e+'="'+i[e]+'" '}),g+="<track "+o+">"};for(p=0;p<t.tracks.length;p++)v(p)}var w="",b=t.attributes||{};Object.keys(b||{}).forEach(function(e){w+=e+'="'+b[e]+'" '}),s='<video class="lg-video-object lg-html5 '+(this.settings.videojs&&this.settings.videojsTheme?this.settings.videojsTheme+" ":"")+" "+(this.settings.videojs?" video-js":"")+'" '+w+">\n "+g+"\n Your browser does not support HTML5 video.\n </video>"}return s},e.prototype.appendVideos=function(e,o){var i,t=this.getVideoHtml(o.src,o.addClass,o.index,o.html5Video);e.find(".lg-video-cont").append(t);var s=e.find(".lg-video-object").first();if(o.html5Video&&s.on("mousedown.lg.video",function(e){e.stopPropagation()}),this.settings.videojs&&(null===(i=this.core.galleryItems[o.index].__slideVideoInfo)||void 0===i?void 0:i.html5))try{return videojs(s.get(),this.settings.videojsOptions)}catch(e){console.warn("lightGallery: Make sure you have included videojs")}},e.prototype.gotoNextSlideOnVideoEnd=function(e,o){var i=this,t=this.core.getSlideItem(o).find(".lg-video-object").first(),s=this.core.galleryItems[o].__slideVideoInfo||{};if(this.settings.gotoNextSlideOnVideoEnd)if(s.html5)t.on("ended",function(){i.core.goToNextSlide()});else if(s.vimeo)try{new Vimeo.Player(t.get()).on("ended",function(){i.core.goToNextSlide()})}catch(e){console.warn("lightGallery: Make sure you have included //github.com/vimeo/player.js")}else if(s.wistia)try{window._wq=window._wq||[],window._wq.push({id:t.attr("id"),onReady:function(e){e.bind("end",function(){i.core.goToNextSlide()})}})}catch(e){console.warn("lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js")}},e.prototype.controlVideo=function(e,o){var i=this.core.getSlideItem(e).find(".lg-video-object").first(),t=this.core.galleryItems[e].__slideVideoInfo||{};if(i.get())if(t.youtube)try{i.get().contentWindow.postMessage('{"event":"command","func":"'+o+'Video","args":""}',"*")}catch(e){console.error("lightGallery:- "+e)}else if(t.vimeo)try{new Vimeo.Player(i.get())[o]()}catch(e){console.warn("lightGallery: Make sure you have included //github.com/vimeo/player.js")}else if(t.html5)if(this.settings.videojs)try{videojs(i.get())[o]()}catch(e){console.warn("lightGallery: Make sure you have included videojs")}else i.get()[o]();else if(t.wistia)try{window._wq=window._wq||[],window._wq.push({id:i.attr("id"),onReady:function(e){e[o]()}})}catch(e){console.warn("lightGallery: Make sure you have included //fast.wistia.com/assets/external/E-v1.js")}},e.prototype.loadVideoOnPosterClick=function(e,o){var i=this;if(e.hasClass("lg-video-loaded"))o&&this.playVideo(this.core.index);else if(e.hasClass("lg-has-video"))this.playVideo(this.core.index);else{e.addClass("lg-has-video");var t=void 0,s=this.core.galleryItems[this.core.index].src,n=this.core.galleryItems[this.core.index].video;n&&(t="string"==typeof n?JSON.parse(n):n);var l=this.appendVideos(e,{src:s,addClass:"",index:this.core.index,html5Video:t});this.gotoNextSlideOnVideoEnd(s,this.core.index);var d=e.find(".lg-object").first().get();e.find(".lg-video-cont").first().append(d),e.addClass("lg-video-loading"),l&&l.ready(function(){l.on("loadedmetadata",function(){i.onVideoLoadAfterPosterClick(e,i.core.index)})}),e.find(".lg-video-object").first().on("load.lg error.lg loadedmetadata.lg",function(){setTimeout(function(){i.onVideoLoadAfterPosterClick(e,i.core.index)},50)})}},e.prototype.onVideoLoadAfterPosterClick=function(e,o){e.addClass("lg-video-loaded"),this.playVideo(o)},e.prototype.destroy=function(){this.core.LGel.off(".lg.video"),this.core.LGel.off(".video")},e}()});
data/lib/j1/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module J1
2
- VERSION = '2023.10.1'
2
+ VERSION = '2023.10.2'
3
3
  end
@@ -379,7 +379,7 @@ This command creates a **initial** project in folder **my-starter**.
379
379
  2023-02-28 18:12:12 - GENERATE: Resolving dependencies...
380
380
  2023-02-28 18:12:12 - GENERATE: Using bundler 2.3.7
381
381
  ...
382
- 2023-02-28 18:12:12 - GENERATE: Using j1-template 2023.10.1
382
+ 2023-02-28 18:12:12 - GENERATE: Using j1-template 2023.10.2
383
383
  2023-02-28 18:12:12 - GENERATE: Bundle complete! 31 Gemfile dependencies, 78 gems now installed.
384
384
  2023-02-28 18:12:12 - GENERATE: Bundled gems are installed into `../../.gem`
385
385
  2023-02-28 18:12:12 - GENERATE: C:/Users/xxx/.gem/ruby/3.1.0;C:/DevTools/Ruby31-x64/lib/ruby/gems/3.1.0;
@@ -415,7 +415,7 @@ commands are available as well.
415
415
  2023-02-28 18:17:48 - SETUP: Initialize the project ...
416
416
  2023-02-28 18:17:48 - SETUP: Be patient, this will take a while ...
417
417
  2023-02-28 18:17:49 - SETUP:
418
- 2023-02-28 18:17:49 - SETUP: > j1@2023.10.1 setup C:\Users\xxx\j1-projects\my-starter
418
+ 2023-02-28 18:17:49 - SETUP: > j1@2023.10.2 setup C:\Users\xxx\j1-projects\my-starter
419
419
  2023-02-28 18:17:49 - SETUP: > npm --silent run setup-start && npm --silent run setup-base && run-s -s setup:*
420
420
  2023-02-28 18:17:49 - SETUP:
421
421
  2023-02-28 18:17:50 - SETUP: Setup project for first use ..
@@ -460,7 +460,7 @@ browser. Let's start the journey ...
460
460
  Check setup state of the J1 project ...
461
461
  2023-02-28 18:26:18 - SITE: Starting up your site ...
462
462
  2023-02-28 18:26:18 - SITE:
463
- 2023-02-28 18:26:18 - SITE: > j1@2023.10.1 j1-site C:\Users\jadams\j1-projects\my-starter
463
+ 2023-02-28 18:26:18 - SITE: > j1@2023.10.2 j1-site C:\Users\jadams\j1-projects\my-starter
464
464
  2023-02-28 18:26:18 - SITE: > run-p -s j1-site:*
465
465
  2023-02-28 18:26:18 - SITE:
466
466
  2023-02-28 18:26:20 - SITE: Startup UTILSRV ..
@@ -499,7 +499,7 @@ Check setup state of the J1 project ...
499
499
  REBUILD: Rebuild the projects website ...
500
500
  REBUILD: Be patient, this will take a while ...
501
501
  2023-02-28 18:45:09 - REBUILD:
502
- 2023-02-28 18:45:09 - REBUILD: > j1@2023.10.1 rebuild C:\Users\xxx\j1-projects\my-starter
502
+ 2023-02-28 18:45:09 - REBUILD: > j1@2023.10.2 rebuild C:\Users\xxx\j1-projects\my-starter
503
503
  2023-02-28 18:45:09 - REBUILD: > run-s -s rebuild:* && run-s -s post-rebuild:*
504
504
  2023-02-28 18:45:09 - REBUILD:
505
505
  2023-02-28 18:45:10 - REBUILD: Rebuild site incremental ..
@@ -547,7 +547,7 @@ using Lerna for all packages:
547
547
  2023-02-28 18:29:07 - RESET: Reset the project to factory state ...
548
548
  2023-02-28 18:29:07 - RESET: Be patient, this will take a while ...
549
549
  2023-02-28 18:29:08 - RESET:
550
- 2023-02-28 18:29:08 - RESET: > j1@2023.10.1 reset C:\Users\xxx\j1-projects\my-starter
550
+ 2023-02-28 18:29:08 - RESET: > j1@2023.10.2 reset C:\Users\xxx\j1-projects\my-starter
551
551
  2023-02-28 18:29:08 - RESET: > run-s -s reset:*
552
552
  2023-02-28 18:29:08 - RESET:
553
553
  2023-02-28 18:29:08 - RESET: Reset project to factory state ..
@@ -53,7 +53,7 @@ environment: development
53
53
  # ------------------------------------------------------------------------------
54
54
  # Sets the build version of the site
55
55
  #
56
- version: 2023.10.1
56
+ version: 2023.10.2
57
57
 
58
58
  # copyright
59
59
  # ------------------------------------------------------------------------------
@@ -203,6 +203,7 @@ settings:
203
203
  file: oskars-sylwan_b.jpg
204
204
  caption: New York City, United States
205
205
 
206
+
206
207
  # ==========================================================================
207
208
  # Video Galleries
208
209
  # ==========================================================================
@@ -215,6 +216,7 @@ settings:
215
216
 
216
217
  id: jg_video_html5
217
218
  type: video
219
+ video: html5
218
220
  video_base_path: /assets/videos/gallery/html5
219
221
  image_base_path: /assets/videos/gallery
220
222
  thumb_base_path: /assets/videos/gallery
@@ -245,9 +247,10 @@ settings:
245
247
  animateThumb: true
246
248
  autoplayFirstVideo: true
247
249
  videojs: true
248
- videojsTheme: 'vjs-theme-uno'
250
+ videojsTheme: vjs-theme-uno
249
251
 
250
252
  videojsOptions:
253
+ enabled: true
251
254
  controls: true
252
255
  muted: false
253
256
  preload: true
@@ -321,6 +324,7 @@ settings:
321
324
 
322
325
  id: jg_video_online_youtube
323
326
  type: video
327
+ video: youtube
324
328
  image_base_path: /assets/videos/gallery
325
329
  thumb_base_path: /assets/videos/gallery
326
330
 
@@ -351,7 +355,19 @@ settings:
351
355
  autoplayFirstVideo: true
352
356
  videojs: false
353
357
 
354
- videojsOptions: {}
358
+ videojsOptions:
359
+ enabled: false
360
+
361
+ playerParams:
362
+ enabled: true
363
+ autoplay: 0
364
+ controls: 0
365
+ enablejsapi: 1
366
+ hl: en
367
+ loop: 0
368
+ mute: 0
369
+ playsinline: 1
370
+ wmode: opaque
355
371
 
356
372
  # ------------------------------------------------------------------------
357
373
  # CSS filter options
@@ -374,7 +390,7 @@ settings:
374
390
  name: Carpool Karaoke Lady Gaga
375
391
  type: youtube
376
392
  size: "1280-720"
377
- source: "https//youtube.com/watch?v=X5Cfi7U4eL4"
393
+ source: "//youtube.com/watch?v=X5Cfi7U4eL4"
378
394
  pinterest_prefix: Pin video
379
395
  tweet_prefix: Try video
380
396
  description: >
@@ -388,6 +404,9 @@ settings:
388
404
  caption:
389
405
  text: "YouTube &middot; Carpool Karaoke Lady Gaga"
390
406
 
407
+ playerParams:
408
+ enabled: false
409
+
391
410
  - video: # video 2
392
411
  enabled: true
393
412
 
@@ -409,13 +428,16 @@ settings:
409
428
  caption:
410
429
  text: "YouTube &middot; Carpool Karaoke Adele"
411
430
 
431
+ playerParams:
432
+ enabled: false
433
+
412
434
  - video: # video 3
413
435
  enabled: true
414
436
 
415
437
  name: Carpool Karaoke Gwen Stefani
416
438
  type: youtube
417
439
  size: "1280-720"
418
- source: "https//youtube.com/watch?v=F2SXmzk8ve4"
440
+ source: "//youtube.com/watch?v=F2SXmzk8ve4"
419
441
  pinterest_prefix: Pin video
420
442
  tweet_prefix: Try video
421
443
  description: >
@@ -429,6 +451,8 @@ settings:
429
451
  caption:
430
452
  text: "YouTube &middot; Carpool Karaoke Gwen Stefani"
431
453
 
454
+ playerParams: false
455
+
432
456
  - video: # video 4
433
457
  enabled: true
434
458
 
@@ -450,6 +474,8 @@ settings:
450
474
  caption:
451
475
  text: "YouTube &middot; Carpool Karaoke Michelle Obama"
452
476
 
477
+ playerParams:
478
+ enabled: false
453
479
 
454
480
  # --------------------------------------------------------------------------
455
481
  # Online VIDEO (YouTube)
@@ -459,6 +485,7 @@ settings:
459
485
 
460
486
  id: jg_video_online_youtube_james_and_adele
461
487
  type: video
488
+ video: youtube
462
489
  image_base_path: /assets/videos/gallery
463
490
  thumb_base_path: /assets/videos/gallery
464
491
 
@@ -489,7 +516,20 @@ settings:
489
516
  autoplayFirstVideo: true
490
517
  videojs: false
491
518
 
492
- videojsOptions: {}
519
+ videojsOptions:
520
+ enabled: false
521
+
522
+ # See: https://stackoverflow.com/questions/40685142/youtube-autoplay-does-not-work-with-iframe
523
+ playerParams:
524
+ enabled: true
525
+ autoplay: 1 # autoplay = 1 only available for YouTube when muted.
526
+ # controls: 1 # default = 0
527
+ # enablejsapi: 1 # default = 1
528
+ # hl: en # default = en
529
+ # loop: 0 # default = 0
530
+ mute: 0 # default = 1
531
+ # playsinline: 1 # for mobile|iOS only
532
+ # wmode: opaque # default = opaque
493
533
 
494
534
  # ------------------------------------------------------------------------
495
535
  # CSS filter options
@@ -547,8 +587,6 @@ settings:
547
587
  caption:
548
588
  text: "YouTube &middot; Last Carpool Karaoke"
549
589
 
550
-
551
-
552
590
  # --------------------------------------------------------------------------
553
591
  # Online VIDEO 2 (YouTube)
554
592
  #
@@ -557,6 +595,7 @@ settings:
557
595
 
558
596
  id: jg_video_online_youtube_voice_kids
559
597
  type: video
598
+ video: youtube
560
599
  image_base_path: /assets/videos/gallery/voice_kids_de_2021
561
600
  thumb_base_path: /assets/videos/gallery/voice_kids_de_2021
562
601
 
@@ -587,7 +626,20 @@ settings:
587
626
  autoplayFirstVideo: true
588
627
  videojs: false
589
628
 
590
- videojsOptions: {}
629
+ videojsOptions:
630
+ enabled: false
631
+
632
+ # See: https://stackoverflow.com/questions/40685142/youtube-autoplay-does-not-work-with-iframe
633
+ playerParams:
634
+ enabled: true
635
+ autoplay: 1 # autoplay = 1 only available for YouTube when muted.
636
+ # controls: 1 # default = 0
637
+ # enablejsapi: 1 # default = 1
638
+ # hl: en # default = en
639
+ # loop: 0 # default = 0
640
+ mute: 0 # default = 1
641
+ # playsinline: 1 # for mobile|iOS only
642
+ # wmode: opaque # default = opaque
591
643
 
592
644
  # ------------------------------------------------------------------------
593
645
  # CSS filter options
@@ -651,7 +703,7 @@ settings:
651
703
  name: Voice Kids - Ben
652
704
  type: youtube
653
705
  size: "1280-720"
654
- source: "https//youtube.com/watch?v=GuiOYCv9NTI"
706
+ source: "//youtube.com/watch?v=GuiOYCv9NTI"
655
707
  pinterest_prefix: Pin video
656
708
  tweet_prefix: Try video
657
709
  description: >
@@ -671,7 +723,7 @@ settings:
671
723
  name: Voice Kids - The Battle
672
724
  type: youtube
673
725
  size: "1280-720"
674
- source: "https//youtube.com/watch?v=1bvE2mgJ22I"
726
+ source: "//youtube.com/watch?v=1bvE2mgJ22I"
675
727
  pinterest_prefix: Pin video
676
728
  tweet_prefix: Try video
677
729
  description: >
@@ -694,6 +746,7 @@ settings:
694
746
 
695
747
  id: jg_video_online_vimeo
696
748
  type: video
749
+ video: vimeo
697
750
  image_base_path: /assets/videos/gallery
698
751
  thumb_base_path: /assets/videos/gallery
699
752
 
@@ -724,7 +777,16 @@ settings:
724
777
  autoplayFirstVideo: true
725
778
  videojs: false
726
779
 
727
- videojsOptions: {}
780
+ videojsOptions:
781
+ enabled: false
782
+
783
+ playerParams:
784
+ enabled: false
785
+ autoplay: 0
786
+ byline: 0
787
+ portrait: 0
788
+ color: CCCCCC
789
+ muted: 0
728
790
 
729
791
  # ------------------------------------------------------------------------
730
792
  # CSS filter options
@@ -787,6 +849,7 @@ settings:
787
849
 
788
850
  id: jg_video_online_dailymotion
789
851
  type: video
852
+ video: dailymotion
790
853
  image_base_path: /assets/videos/gallery/dailymotion
791
854
  thumb_base_path: /assets/videos/gallery/dailymotion
792
855
 
@@ -817,7 +880,11 @@ settings:
817
880
  autoplayFirstVideo: true
818
881
  videojs: false
819
882
 
820
- videojsOptions: {}
883
+ videojsOptions:
884
+ enabled: false
885
+
886
+ playerParams:
887
+ enabled: false
821
888
 
822
889
  # ------------------------------------------------------------------------
823
890
  # CSS filter options
@@ -840,7 +907,7 @@ settings:
840
907
  name: SELF Channel
841
908
  type: dailymotion
842
909
  size: "1280-720"
843
- source: "https//dai.ly/x887s09"
910
+ source: "//dai.ly/x887s09"
844
911
  pinterest_prefix: Pin video
845
912
  tweet_prefix: Try video
846
913
  description: >
@@ -57,7 +57,7 @@
57
57
  <id>{{ page.url | absolute_url | xml_escape }}</id>
58
58
  <post_limited>{{ limit_posts }}</post_limited>
59
59
  <template_name>J1 Theme</template_name>
60
- <template_version>2023.10.1</template_version>
60
+ <template_version>2023.10.2</template_version>
61
61
 
62
62
  {% assign title = site.title | default: site.name %}
63
63
  {% if page.collection != "posts" %}
@@ -391,6 +391,6 @@ end
391
391
 
392
392
  module Jekyll
393
393
  module J1LunrSearch
394
- VERSION = '2023.10.1'
394
+ VERSION = '2023.10.2'
395
395
  end
396
396
  end
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "j1",
4
- "version": "2023.10.1",
4
+ "version": "2023.10.2",
5
5
  "description": "J1 Theme Starter Web",
6
6
  "homepage": "https://your.site",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "utls",
4
- "version": "2023.10.1",
4
+ "version": "2023.10.2",
5
5
  "description": "J1 Theme Utility Server",
6
6
  "homepage": "https://jekyll.one",
7
7
  "author": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "private": true,
3
3
  "name": "utls",
4
- "version": "2023.10.1",
4
+ "version": "2023.10.2",
5
5
  "description": "J1 Theme Utility Server",
6
6
  "homepage": "https://jekyll.one",
7
7
  "author": {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: j1-template
3
3
  version: !ruby/object:Gem::Version
4
- version: 2023.10.1
4
+ version: 2023.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - juergen_jekyll_one
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-20 00:00:00.000000000 Z
11
+ date: 2023-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -1169,6 +1169,7 @@ files:
1169
1169
  - assets/themes/j1/modules/lightGallery/js/lightgallery.min.js
1170
1170
  - assets/themes/j1/modules/lightGallery/js/plugins/j1/j1-video.js
1171
1171
  - assets/themes/j1/modules/lightGallery/js/plugins/j1/j1-video.min.js
1172
+ - assets/themes/j1/modules/lightGallery/js/plugins/j1/lg-video.1.js
1172
1173
  - assets/themes/j1/modules/lightGallery/js/plugins/lg-autoplay.js
1173
1174
  - assets/themes/j1/modules/lightGallery/js/plugins/lg-autoplay.min.js
1174
1175
  - assets/themes/j1/modules/lightGallery/js/plugins/lg-comment.js