@fancyapps/fancybox
Advanced tools
Comparing version 3.4.1 to 3.4.2
{ | ||
"name": "@fancyapps/fancybox", | ||
"description": "Touch enabled, responsive and fully customizable jQuery lightbox script", | ||
"version": "3.4.1", | ||
"version": "3.4.2", | ||
"homepage": "https://fancyapps.com/fancybox/3/", | ||
@@ -6,0 +6,0 @@ "main": "dist/jquery.fancybox.js", |
@@ -188,3 +188,3 @@ // ========================================================================== | ||
self.canTap = true; | ||
self.canTap = !current.$slide.hasClass("fancybox-animated"); | ||
self.$target = $target; | ||
@@ -249,4 +249,2 @@ self.$content = $content; | ||
self.$content.css("transition-duration", ""); | ||
self.isPanning = true; | ||
@@ -270,4 +268,2 @@ } else { | ||
self.$content.css("transition-duration", ""); | ||
self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft(); | ||
@@ -334,2 +330,3 @@ self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop(); | ||
var self = this, | ||
instance = self.instance, | ||
swiping = self.isSwiping, | ||
@@ -345,5 +342,5 @@ left = self.sliderStartPos.left || 0, | ||
if (self.instance.group.length < 2 && self.opts.vertical) { | ||
if (instance.group.length < 2 && self.opts.vertical) { | ||
self.isSwiping = "y"; | ||
} else if (self.instance.isDragging || self.opts.vertical === false || (self.opts.vertical === "auto" && $(window).width() > 800)) { | ||
} else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === "auto" && $(window).width() > 800)) { | ||
self.isSwiping = "x"; | ||
@@ -356,4 +353,2 @@ } else { | ||
self.canTap = false; | ||
if (self.isSwiping === "y" && $.fancybox.isMobile && self.isScrollable) { | ||
@@ -365,3 +360,3 @@ self.isScrolling = true; | ||
self.instance.isDragging = self.isSwiping; | ||
instance.isDragging = self.isSwiping; | ||
@@ -371,17 +366,30 @@ // Reset points to avoid jumping, because we dropped first swipes to calculate the angle | ||
$.each(self.instance.slides, function(index, slide) { | ||
$.each(instance.slides, function(index, slide) { | ||
var slidePos, stagePos; | ||
$.fancybox.stop(slide.$slide); | ||
slide.$slide.css("transition-duration", ""); | ||
slidePos = $.fancybox.getTranslate(slide.$slide); | ||
stagePos = $.fancybox.getTranslate(instance.$refs.stage); | ||
slide.inTransition = false; | ||
slide.$slide | ||
.removeAttr("style") | ||
.removeClass("fancybox-animated") | ||
.removeClass(function(index, className) { | ||
return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" "); | ||
}); | ||
if (slide.pos === self.instance.current.pos) { | ||
self.sliderStartPos.left = $.fancybox.getTranslate(slide.$slide).left - $.fancybox.getTranslate(self.instance.$refs.stage).left; | ||
if (slide.pos === instance.current.pos) { | ||
self.sliderStartPos.left = slidePos.left - stagePos.left; | ||
} | ||
$.fancybox.setTranslate(slide.$slide, { | ||
top: slidePos.top - stagePos.top, | ||
left: slidePos.left - stagePos.left | ||
}); | ||
}); | ||
// Stop slideshow | ||
if (self.instance.SlideShow && self.instance.SlideShow.isActive) { | ||
self.instance.SlideShow.stop(); | ||
if (instance.SlideShow && instance.SlideShow.isActive) { | ||
instance.SlideShow.stop(); | ||
} | ||
@@ -614,3 +622,2 @@ } | ||
var self = this; | ||
var dMs = Math.max(new Date().getTime() - self.startTime, 1); | ||
@@ -623,2 +630,3 @@ var swiping = self.isSwiping; | ||
self.endPoints = getPointerXY(e); | ||
self.dMs = Math.max(new Date().getTime() - self.startTime, 1); | ||
@@ -648,10 +656,8 @@ self.$container.removeClass("fancybox-is-grabbing"); | ||
self.speed = 366; | ||
self.speed = 100; | ||
// Speed in px/ms | ||
self.velocityX = (self.distanceX / dMs) * 0.5; | ||
self.velocityY = (self.distanceY / dMs) * 0.5; | ||
self.velocityX = (self.distanceX / self.dMs) * 0.5; | ||
self.velocityY = (self.distanceY / self.dMs) * 0.5; | ||
self.speedX = Math.max(self.speed * 0.5, Math.min(self.speed * 1.5, (1 / Math.abs(self.velocityX)) * self.speed)); | ||
if (panning) { | ||
@@ -671,3 +677,7 @@ self.endPanning(); | ||
ret = false, | ||
len = self.instance.group.length; | ||
len = self.instance.group.length, | ||
velocityX = Math.abs(self.velocityX), | ||
distanceX = Math.abs(self.distanceX), | ||
canAdvance = swiping == "x" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50), | ||
speedX = Math.abs((velocityX * self.canvasWidth) / self.canvasWidth) > 0.8 ? 366 : 500; | ||
@@ -689,14 +699,10 @@ self.sliderLastPos = null; | ||
ret = self.instance.close(true, 200); | ||
} else if (swiping == "x" && self.distanceX > 50 && len > 1) { | ||
ret = self.instance.previous(self.speedX); | ||
} else if (swiping == "x" && self.distanceX < -50 && len > 1) { | ||
ret = self.instance.next(self.speedX); | ||
} else if (canAdvance && self.distanceX > 0) { | ||
ret = self.instance.previous(speedX); | ||
} else if (canAdvance && self.distanceX < 0) { | ||
ret = self.instance.next(speedX); | ||
} | ||
if (ret === false && (swiping == "x" || swiping == "y")) { | ||
if (scrolling || len < 2) { | ||
self.instance.centerSlide(self.instance.current, 150); | ||
} else { | ||
self.instance.jumpTo(self.instance.current.index); | ||
} | ||
self.instance.centerSlide(self.instance.current, 150); | ||
} | ||
@@ -710,4 +716,6 @@ | ||
Guestures.prototype.endPanning = function() { | ||
var self = this; | ||
var newOffsetX, newOffsetY, newPos; | ||
var self = this, | ||
newOffsetX, | ||
newOffsetY, | ||
newPos; | ||
@@ -718,3 +726,3 @@ if (!self.contentLastPos) { | ||
if (self.opts.momentum === false) { | ||
if (self.opts.momentum === false || self.dMs > 350) { | ||
newOffsetX = self.contentLastPos.left; | ||
@@ -724,4 +732,4 @@ newOffsetY = self.contentLastPos.top; | ||
// Continue movement | ||
newOffsetX = self.contentLastPos.left + self.velocityX * self.speed; | ||
newOffsetY = self.contentLastPos.top + self.velocityY * self.speed; | ||
newOffsetX = self.contentLastPos.left + self.velocityX * 500; | ||
newOffsetY = self.contentLastPos.top + self.velocityY * 500; | ||
} | ||
@@ -728,0 +736,0 @@ |
@@ -10,28 +10,3 @@ // ========================================================================== | ||
// Formats matching url to final form | ||
var format = function(url, rez, params) { | ||
if (!url) { | ||
return; | ||
} | ||
params = params || ""; | ||
if ($.type(params) === "object") { | ||
params = $.param(params, true); | ||
} | ||
$.each(rez, function(key, value) { | ||
url = url.replace("$" + key, value || ""); | ||
}); | ||
if (params.length) { | ||
url += (url.indexOf("?") > 0 ? "&" : "?") + params; | ||
} | ||
return url; | ||
}; | ||
// Object containing properties for each media type | ||
var defaults = { | ||
@@ -64,4 +39,3 @@ youtube: { | ||
show_portrait: 0, | ||
fullscreen: 1, | ||
api: 1 | ||
fullscreen: 1 | ||
}, | ||
@@ -112,2 +86,25 @@ paramPlace: 3, | ||
// Formats matching url to final form | ||
var format = function(url, rez, params) { | ||
if (!url) { | ||
return; | ||
} | ||
params = params || ""; | ||
if ($.type(params) === "object") { | ||
params = $.param(params, true); | ||
} | ||
$.each(rez, function(key, value) { | ||
url = url.replace("$" + key, value || ""); | ||
}); | ||
if (params.length) { | ||
url += (url.indexOf("?") > 0 ? "&" : "?") + params; | ||
} | ||
return url; | ||
}; | ||
$(document).on("objectNeedsType.fb", function(e, instance, item) { | ||
@@ -204,2 +201,94 @@ var url = item.src || "", | ||
}); | ||
// Load YouTube/Video API on request to detect when video finished playing | ||
var VideoAPILoader = { | ||
youtube: { | ||
src: "https://www.youtube.com/iframe_api", | ||
class: "YT", | ||
loading: false, | ||
loaded: false | ||
}, | ||
vimeo: { | ||
src: "https://player.vimeo.com/api/player.js", | ||
class: "Vimeo", | ||
loading: false, | ||
loaded: false | ||
}, | ||
load: function(vendor) { | ||
var _this = this, | ||
script; | ||
if (this[vendor].loaded) { | ||
setTimeout(function() { | ||
_this.done(vendor); | ||
}); | ||
return; | ||
} | ||
if (this[vendor].loading) { | ||
return; | ||
} | ||
this[vendor].loading = true; | ||
script = document.createElement("script"); | ||
script.type = "text/javascript"; | ||
script.src = this[vendor].src; | ||
if (vendor === "youtube") { | ||
window.onYouTubeIframeAPIReady = function() { | ||
_this[vendor].loaded = true; | ||
_this.done(vendor); | ||
}; | ||
} else { | ||
script.onload = function() { | ||
_this[vendor].loaded = true; | ||
_this.done(vendor); | ||
}; | ||
} | ||
document.body.appendChild(script); | ||
}, | ||
done: function(vendor) { | ||
var instance, $el, player; | ||
if (vendor === "youtube") { | ||
delete window.onYouTubeIframeAPIReady; | ||
} | ||
instance = $.fancybox.getInstance(); | ||
if (instance) { | ||
$el = instance.current.$content.find("iframe"); | ||
if (vendor === "youtube" && YT !== undefined && YT) { | ||
player = new YT.Player($el.attr("id"), { | ||
events: { | ||
onStateChange: function(e) { | ||
if (e.data == 0) { | ||
instance.next(); | ||
} | ||
} | ||
} | ||
}); | ||
} else if (vendor === "vimeo" && Vimeo !== undefined && Vimeo) { | ||
player = new Vimeo.Player($el); | ||
player.on("ended", function() { | ||
instance.next(); | ||
}); | ||
} | ||
} | ||
} | ||
}; | ||
$(document).on({ | ||
"afterShow.fb": function(e, instance, current) { | ||
if (instance.group.length > 1 && (current.contentSource === "youtube" || current.contentSource === "vimeo")) { | ||
VideoAPILoader.load(current.contentSource); | ||
} | ||
} | ||
}); | ||
})(jQuery); |
@@ -23,3 +23,4 @@ // ========================================================================== | ||
autoStart: false, | ||
speed: 3000 | ||
speed: 3000, | ||
progress: true | ||
} | ||
@@ -39,10 +40,14 @@ }); | ||
init: function() { | ||
var self = this; | ||
var self = this, | ||
instance = self.instance, | ||
opts = instance.group[instance.currIndex].opts.slideShow; | ||
self.$button = self.instance.$refs.toolbar.find("[data-fancybox-play]").on("click", function() { | ||
self.$button = instance.$refs.toolbar.find("[data-fancybox-play]").on("click", function() { | ||
self.toggle(); | ||
}); | ||
if (self.instance.group.length < 2 || !self.instance.group[self.instance.currIndex].opts.slideShow) { | ||
if (instance.group.length < 2 || !opts) { | ||
self.$button.hide(); | ||
} else if (opts.progress) { | ||
self.$progress = $('<div class="fancybox-progress"></div>').appendTo(instance.$refs.inner); | ||
} | ||
@@ -54,24 +59,15 @@ }, | ||
instance = self.instance, | ||
current = instance.current, | ||
advance = function() { | ||
if (self.isActive) { | ||
instance.jumpTo((instance.currIndex + 1) % instance.group.length); | ||
} | ||
}; | ||
current = instance.current; | ||
// Check if reached last element | ||
if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) { | ||
self.timer = setTimeout(function() { | ||
var $video; | ||
if (self.isActive && current.contentType !== "video") { | ||
if (self.$progress) { | ||
$.fancybox.animate(self.$progress.show(), {scaleX: 1}, current.opts.slideShow.speed); | ||
} | ||
if (self.isActive) { | ||
$video = current.$slide.find("video,audio").filter(":visible:first"); | ||
if ($video.length) { | ||
$video.one("ended", advance); | ||
} else { | ||
advance(); | ||
} | ||
} | ||
}, current.opts.slideShow.speed); | ||
self.timer = setTimeout(function() { | ||
instance.jumpTo((instance.currIndex + 1) % instance.group.length); | ||
}, current.opts.slideShow.speed); | ||
} | ||
} else { | ||
@@ -90,7 +86,11 @@ self.stop(); | ||
self.timer = null; | ||
if (self.$progress) { | ||
self.$progress.removeAttr("style").hide(); | ||
} | ||
}, | ||
start: function() { | ||
var self = this; | ||
var current = self.instance.current; | ||
var self = this, | ||
current = self.instance.current; | ||
@@ -114,4 +114,4 @@ if (current) { | ||
stop: function() { | ||
var self = this; | ||
var current = self.instance.current; | ||
var self = this, | ||
current = self.instance.current; | ||
@@ -128,2 +128,6 @@ self.clear(); | ||
self.instance.trigger("onSlideShowChange", false); | ||
if (self.$progress) { | ||
self.$progress.removeAttr("style").hide(); | ||
} | ||
}, | ||
@@ -191,4 +195,4 @@ | ||
$(document).on("visibilitychange", function() { | ||
var instance = $.fancybox.getInstance(); | ||
var SlideShow = instance && instance.SlideShow; | ||
var instance = $.fancybox.getInstance(), | ||
SlideShow = instance && instance.SlideShow; | ||
@@ -195,0 +199,0 @@ if (SlideShow && SlideShow.isActive) { |
@@ -114,4 +114,4 @@ // ========================================================================== | ||
i + | ||
'" ' + | ||
(src && src.length ? ' style="background-image:url(' + src + ')" />' : "") + | ||
'"' + | ||
(src && src.length ? ' style="background-image:url(' + src + ')"' : "") + | ||
"></a>" | ||
@@ -118,0 +118,0 @@ ); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
511365
10334