|
44 | 44 | };
|
45 | 45 |
|
46 | 46 | /**
|
47 |
| - * GLightbox v1.0.5 |
| 47 | + * GLightbox v1.0.6 |
48 | 48 | * Awesome pure javascript lightbox
|
49 | 49 | * made by mcstudios.com.mx
|
50 | 50 | */
|
|
286 | 286 |
|
287 | 287 | var thisArg = arguments[2];
|
288 | 288 |
|
289 |
| - var tstst = onElement; |
290 | 289 | var element = onElement || [];
|
291 | 290 | if (utils.isString(element)) {
|
292 | 291 | element = document.querySelectorAll(element);
|
|
484 | 483 | */
|
485 | 484 | var getSlideData = function getSlideData() {
|
486 | 485 | var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
487 |
| - |
488 |
| - if (element === null) return false; |
489 |
| - |
490 |
| - var url = ''; |
491 |
| - var config = element.getAttribute('data-glightbox'); |
492 |
| - var type = element.nodeName.toLowerCase(); |
493 |
| - if (type === 'a') url = element.href; |
494 |
| - if (type === 'img') url = element.src; |
| 486 | + var settings = arguments[1]; |
495 | 487 |
|
496 | 488 | var data = {
|
497 |
| - href: url, |
| 489 | + href: '', |
498 | 490 | title: '',
|
499 | 491 | description: '',
|
500 | 492 | descPosition: 'bottom',
|
501 | 493 | effect: '',
|
502 | 494 | node: element
|
503 | 495 | };
|
504 | 496 |
|
| 497 | + if (utils.isObject(element) && !utils.isNode(element)) { |
| 498 | + return extend(data, element); |
| 499 | + } |
| 500 | + |
| 501 | + var url = ''; |
| 502 | + var config = element.getAttribute('data-glightbox'); |
| 503 | + var type = element.nodeName.toLowerCase(); |
| 504 | + if (type === 'a') url = element.href; |
| 505 | + if (type === 'img') url = element.src; |
| 506 | + |
| 507 | + data.href = url; |
505 | 508 | var sourceType = getSourceType(url);
|
506 | 509 | data = extend(data, sourceType);
|
507 | 510 |
|
|
539 | 542 | if (nodeDesc) {
|
540 | 543 | data.description = nodeDesc.innerHTML;
|
541 | 544 | }
|
| 545 | + |
| 546 | + data.sourcetype = data.hasOwnProperty('type') ? data.type : data.sourcetype; |
| 547 | + data.type = data.sourcetype; |
| 548 | + |
| 549 | + var defaultWith = data.sourcetype == 'video' ? settings.videosWidth : settings.width; |
| 550 | + var defaultHeight = data.sourcetype == 'video' ? settings.videosHeight : settings.height; |
| 551 | + |
| 552 | + data.width = utils.has(data, 'width') ? data.width : defaultWith; |
| 553 | + data.height = utils.has(data, 'height') ? data.height : defaultHeight; |
| 554 | + |
542 | 555 | return data;
|
543 | 556 | };
|
544 | 557 |
|
|
565 | 578 | this.settings.beforeSlideLoad(slide, data);
|
566 | 579 | }
|
567 | 580 |
|
568 |
| - var type = data.sourcetype; |
| 581 | + var type = data.type; |
569 | 582 | var position = data.descPosition;
|
570 | 583 | var slideMedia = slide.querySelector('.gslide-media');
|
571 | 584 | var slideTitle = slide.querySelector('.gslide-title');
|
572 | 585 | var slideText = slide.querySelector('.gslide-desc');
|
573 | 586 | var slideDesc = slide.querySelector('.gslide-description');
|
574 | 587 | var finalCallback = callback;
|
575 | 588 |
|
576 |
| - if (callback && utils.isFunction(this.settings.afterSlideLoad)) { |
| 589 | + if (utils.isFunction(this.settings.afterSlideLoad)) { |
577 | 590 | finalCallback = function finalCallback() {
|
578 |
| - callback(); |
| 591 | + if (utils.isFunction(callback)) { |
| 592 | + callback(); |
| 593 | + } |
579 | 594 | _this.settings.afterSlideLoad(slide, data);
|
580 | 595 | };
|
581 | 596 | }
|
|
614 | 629 | }
|
615 | 630 |
|
616 | 631 | if (type === 'external') {
|
617 |
| - var iframe = createIframe(data.href, this.settings.width, this.settings.height, finalCallback); |
| 632 | + var iframe = createIframe(data.href, data.width, data.height, finalCallback); |
618 | 633 | slideMedia.appendChild(iframe);
|
619 | 634 | return;
|
620 | 635 | }
|
|
652 | 667 | var source = data.source;
|
653 | 668 | var video_id = 'gvideo' + data.index;
|
654 | 669 | var slideMedia = slide.querySelector('.gslide-media');
|
| 670 | + |
655 | 671 | var url = data.href;
|
656 | 672 | var protocol = location.protocol.replace(':', '');
|
657 | 673 |
|
|
664 | 680 | var vimeo_id = /vimeo.*\/(\d+)/i.exec(url);
|
665 | 681 | var params = parseUrlParams(this.settings.vimeo.params);
|
666 | 682 | var video_url = protocol + '://player.vimeo.com/video/' + vimeo_id[1] + '?' + params;
|
667 |
| - var iframe = createIframe(video_url, this.settings.videosWidth, this.settings.videosHeight, callback); |
| 683 | + var iframe = createIframe(video_url, data.width, data.height, callback); |
668 | 684 | iframe.id = video_id;
|
669 | 685 | iframe.className = 'vimeo-video gvideo';
|
670 | 686 |
|
|
687 | 703 | var yparams = parseUrlParams(youtube_params);
|
688 | 704 | var youtube_id = getYoutubeID(url);
|
689 | 705 | var _video_url = protocol + '://www.youtube.com/embed/' + youtube_id + '?' + yparams;
|
690 |
| - var _iframe = createIframe(_video_url, this.settings.videosWidth, this.settings.videosHeight, callback); |
| 706 | + var _iframe = createIframe(_video_url, data.width, data.height, callback); |
691 | 707 | _iframe.id = video_id;
|
692 | 708 | _iframe.className = 'youtube-video gvideo';
|
693 | 709 |
|
|
708 | 724 |
|
709 | 725 | if (source == 'local') {
|
710 | 726 | var _html = '<video id="' + video_id + '" ';
|
711 |
| - _html += 'style="background:#000; width: ' + this.settings.width + 'px; height: ' + this.settings.height + 'px;" '; |
| 727 | + _html += 'style="background:#000; width: ' + data.width + 'px; height: ' + data.height + 'px;" '; |
712 | 728 | _html += 'preload="metadata" ';
|
713 | 729 | _html += 'x-webkit-airplay="allow" ';
|
714 | 730 | _html += 'webkit-playsinline="" ';
|
|
908 | 924 | var div = document.getElementById(data.inlined.replace('#', ''));
|
909 | 925 | if (div) {
|
910 | 926 | var cloned = div.cloneNode(true);
|
911 |
| - cloned.style.height = this.settings.height + 'px'; |
912 |
| - cloned.style.maxWidth = this.settings.width + 'px'; |
| 927 | + cloned.style.height = data.height + 'px'; |
| 928 | + cloned.style.maxWidth = data.width + 'px'; |
913 | 929 | addClass(cloned, 'ginlined-content');
|
914 | 930 | slideMedia.appendChild(cloned);
|
915 | 931 |
|
|
1048 | 1064 | activeSlideMedia = activeSlide.querySelector('.gslide-media');
|
1049 | 1065 | activeSlideDesc = activeSlide.querySelector('.gslide-description');
|
1050 | 1066 |
|
1051 |
| - /*if (e.targetTouches[0].target.className.indexOf('gslide-video') !== -1) { |
1052 |
| - playVideo(e.targetTouches[0]) |
1053 |
| - }*/ |
1054 |
| - |
1055 | 1067 | index = _this4.index;
|
1056 | 1068 | endCoords = e.targetTouches[0];
|
1057 | 1069 | startCoords.pageX = e.targetTouches[0].pageX;
|
|
1061 | 1073 | }
|
1062 | 1074 | });
|
1063 | 1075 |
|
1064 |
| - /*function playVideo(e) { |
1065 |
| - addClass(e.target, 'playing') |
1066 |
| - let element = e.target |
1067 |
| - let iframe = element.querySelector('.gvideo') |
1068 |
| - var e = document.createEvent('TouchEvent'); |
1069 |
| - e.initEvent('touchstart', true, true); |
1070 |
| - iframe.dispatchEvent(e); |
1071 |
| - }*/ |
1072 |
| - |
1073 | 1076 | this.events['gestureStart'] = addEvent('gesturestart', {
|
1074 | 1077 | onElement: body,
|
1075 | 1078 | withCallback: function withCallback(e, target) {
|
|
1340 | 1343 | }, {
|
1341 | 1344 | key: 'open',
|
1342 | 1345 | value: function open() {
|
1343 |
| - var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; |
| 1346 | + var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; |
1344 | 1347 |
|
1345 | 1348 | this.elements = this.getElements(element);
|
1346 | 1349 | if (this.elements.length == 0) return false;
|
|
1422 | 1425 | } else {
|
1423 | 1426 | // If not loaded add the slide content
|
1424 | 1427 | show(this.loader);
|
1425 |
| - var slide_data = getSlideData(this.elements[index]); |
| 1428 | + var slide_data = getSlideData(this.elements[index], this.settings); |
1426 | 1429 | slide_data.index = index;
|
1427 | 1430 | setSlideContent.apply(this, [slide, slide_data, function () {
|
1428 | 1431 | hide(_this6.loader);
|
|
1460 | 1463 | return false;
|
1461 | 1464 | }
|
1462 | 1465 |
|
1463 |
| - var slide_data = getSlideData(this.elements[index]); |
| 1466 | + var slide_data = getSlideData(this.elements[index], this.settings); |
1464 | 1467 | slide_data.index = index;
|
1465 | 1468 | var type = slide_data.sourcetype;
|
1466 | 1469 | if (type == 'video' || type == 'external') {
|
|
1657 | 1660 | return false;
|
1658 | 1661 | }
|
1659 | 1662 | }
|
| 1663 | + }, { |
| 1664 | + key: 'setElements', |
| 1665 | + value: function setElements(elements) { |
| 1666 | + this.settings.elements = elements; |
| 1667 | + } |
1660 | 1668 | }, {
|
1661 | 1669 | key: 'getElements',
|
1662 | 1670 | value: function getElements() {
|
|
0 commit comments