You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

760 lines
27 KiB

/*!
* justifiedGallery - v3.7.0
* http://miromannino.github.io/Justified-Gallery/
* Copyright (c) 2018 Miro Mannino
* Licensed under the MIT license.
*/
!(function (e) {
"function" == typeof define && define.amd
? define(["jquery"], e)
: "object" == typeof module && module.exports
? (module.exports = function (t, i) {
return (
void 0 === i &&
(i =
"undefined" != typeof window
? require("jquery")
: require("jquery")(t)),
e(i),
i
);
})
: e(jQuery);
})(function (g) {
var r = function (t, i) {
(this.settings = i),
this.checkSettings(),
(this.imgAnalyzerTimeout = null),
(this.entries = null),
(this.buildingRow = {
entriesBuff: [],
width: 0,
height: 0,
aspectRatio: 0,
}),
(this.lastFetchedEntry = null),
(this.lastAnalyzedIndex = -1),
(this.yield = { every: 2, flushed: 0 }),
(this.border = 0 <= i.border ? i.border : i.margins),
(this.maxRowHeight = this.retrieveMaxRowHeight()),
(this.suffixRanges = this.retrieveSuffixRanges()),
(this.offY = this.border),
(this.rows = 0),
(this.spinner = {
phase: 0,
timeSlot: 150,
$el: g(
'<div class="spinner"><span></span><span></span><span></span></div>'
),
intervalId: null,
}),
(this.scrollBarOn = !1),
(this.checkWidthIntervalId = null),
(this.galleryWidth = t.width()),
(this.$gallery = t);
};
(r.prototype.getSuffix = function (t, i) {
var e, s;
for (e = i < t ? t : i, s = 0; s < this.suffixRanges.length; s++)
if (e <= this.suffixRanges[s])
return this.settings.sizeRangeSuffixes[this.suffixRanges[s]];
return this.settings.sizeRangeSuffixes[this.suffixRanges[s - 1]];
}),
(r.prototype.removeSuffix = function (t, i) {
return t.substring(0, t.length - i.length);
}),
(r.prototype.endsWith = function (t, i) {
return -1 !== t.indexOf(i, t.length - i.length);
}),
(r.prototype.getUsedSuffix = function (t) {
for (var i in this.settings.sizeRangeSuffixes)
if (this.settings.sizeRangeSuffixes.hasOwnProperty(i)) {
if (0 === this.settings.sizeRangeSuffixes[i].length) continue;
if (this.endsWith(t, this.settings.sizeRangeSuffixes[i]))
return this.settings.sizeRangeSuffixes[i];
}
return "";
}),
(r.prototype.newSrc = function (t, i, e, s) {
var n;
if (this.settings.thumbnailPath)
n = this.settings.thumbnailPath(t, i, e, s);
else {
var r = t.match(this.settings.extension),
o = null !== r ? r[0] : "";
(n = t.replace(this.settings.extension, "")),
(n = this.removeSuffix(n, this.getUsedSuffix(n))),
(n += this.getSuffix(i, e) + o);
}
return n;
}),
(r.prototype.showImg = function (t, i) {
this.settings.cssAnimation
? (t.addClass("entry-visible"), i && i())
: (t.stop().fadeTo(this.settings.imagesAnimationDuration, 1, i),
t
.find(this.settings.imgSelector)
.stop()
.fadeTo(this.settings.imagesAnimationDuration, 1, i));
}),
(r.prototype.extractImgSrcFromImage = function (t) {
var i =
void 0 !== t.data("safe-src") ? t.data("safe-src") : t.attr("src");
return t.data("jg.originalSrc", i), i;
}),
(r.prototype.imgFromEntry = function (t) {
var i = t.find(this.settings.imgSelector);
return 0 === i.length ? null : i;
}),
(r.prototype.captionFromEntry = function (t) {
var i = t.find("> .caption");
return 0 === i.length ? null : i;
}),
(r.prototype.displayEntry = function (t, i, e, s, n, r) {
t.width(s), t.height(r), t.css("top", e), t.css("left", i);
var o = this.imgFromEntry(t);
if (null !== o) {
o.css("width", s),
o.css("height", n),
o.css("margin-left", -s / 2),
o.css("margin-top", -n / 2);
var a = o.attr("src"),
h = this.newSrc(a, s, n, o[0]);
o.one("error", function () {
o.attr("src", o.data("jg.originalSrc"));
});
var l = function () {
a !== h && o.attr("src", h);
};
"skipped" === t.data("jg.loaded")
? this.onImageEvent(
a,
g.proxy(function () {
this.showImg(t, l), t.data("jg.loaded", !0);
}, this)
)
: this.showImg(t, l);
} else this.showImg(t);
this.displayEntryCaption(t);
}),
(r.prototype.displayEntryCaption = function (t) {
var i = this.imgFromEntry(t);
if (null !== i && this.settings.captions) {
var e = this.captionFromEntry(t);
if (null === e) {
var s = i.attr("alt");
this.isValidCaption(s) || (s = t.attr("title")),
this.isValidCaption(s) &&
((e = g('<div class="caption">' + s + "</div>")),
t.append(e),
t.data("jg.createdCaption", !0));
}
null !== e &&
(this.settings.cssAnimation ||
e.stop().fadeTo(0, this.settings.captionSettings.nonVisibleOpacity),
this.addCaptionEventsHandlers(t));
} else this.removeCaptionEventsHandlers(t);
}),
(r.prototype.isValidCaption = function (t) {
return void 0 !== t && 0 < t.length;
}),
(r.prototype.onEntryMouseEnterForCaption = function (t) {
var i = this.captionFromEntry(g(t.currentTarget));
this.settings.cssAnimation
? i.addClass("caption-visible").removeClass("caption-hidden")
: i
.stop()
.fadeTo(
this.settings.captionSettings.animationDuration,
this.settings.captionSettings.visibleOpacity
);
}),
(r.prototype.onEntryMouseLeaveForCaption = function (t) {
var i = this.captionFromEntry(g(t.currentTarget));
this.settings.cssAnimation
? i.removeClass("caption-visible").removeClass("caption-hidden")
: i
.stop()
.fadeTo(
this.settings.captionSettings.animationDuration,
this.settings.captionSettings.nonVisibleOpacity
);
}),
(r.prototype.addCaptionEventsHandlers = function (t) {
var i = t.data("jg.captionMouseEvents");
void 0 === i &&
((i = {
mouseenter: g.proxy(this.onEntryMouseEnterForCaption, this),
mouseleave: g.proxy(this.onEntryMouseLeaveForCaption, this),
}),
t.on("mouseenter", void 0, void 0, i.mouseenter),
t.on("mouseleave", void 0, void 0, i.mouseleave),
t.data("jg.captionMouseEvents", i));
}),
(r.prototype.removeCaptionEventsHandlers = function (t) {
var i = t.data("jg.captionMouseEvents");
void 0 !== i &&
(t.off("mouseenter", void 0, i.mouseenter),
t.off("mouseleave", void 0, i.mouseleave),
t.removeData("jg.captionMouseEvents"));
}),
(r.prototype.clearBuildingRow = function () {
(this.buildingRow.entriesBuff = []),
(this.buildingRow.aspectRatio = 0),
(this.buildingRow.width = 0);
}),
(r.prototype.prepareBuildingRow = function (t) {
var i,
e,
s,
n,
r,
o = !0,
a = 0,
h =
this.galleryWidth -
2 * this.border -
(this.buildingRow.entriesBuff.length - 1) * this.settings.margins,
l = h / this.buildingRow.aspectRatio,
g = this.settings.rowHeight,
u = this.buildingRow.width / h > this.settings.justifyThreshold;
if (t && "hide" === this.settings.lastRow && !u) {
for (i = 0; i < this.buildingRow.entriesBuff.length; i++)
(e = this.buildingRow.entriesBuff[i]),
this.settings.cssAnimation
? e.removeClass("entry-visible")
: (e.stop().fadeTo(0, 0.1),
e.find("> img, > a > img").fadeTo(0, 0));
return -1;
}
for (
t &&
!u &&
"justify" !== this.settings.lastRow &&
"hide" !== this.settings.lastRow &&
((o = !1),
0 < this.rows &&
(o =
((g =
(this.offY - this.border - this.settings.margins * this.rows) /
this.rows) *
this.buildingRow.aspectRatio) /
h >
this.settings.justifyThreshold)),
i = 0;
i < this.buildingRow.entriesBuff.length;
i++
)
(s =
(e = this.buildingRow.entriesBuff[i]).data("jg.width") /
e.data("jg.height")),
o
? ((n = i === this.buildingRow.entriesBuff.length - 1 ? h : l * s),
(r = l))
: ((n = g * s), (r = g)),
(h -= Math.round(n)),
e.data("jg.jwidth", Math.round(n)),
e.data("jg.jheight", Math.ceil(r)),
(0 === i || r < a) && (a = r);
return (this.buildingRow.height = a), o;
}),
(r.prototype.flushRow = function (t) {
var i,
e,
s,
n = this.settings,
r = this.border;
if (
((e = this.prepareBuildingRow(t)),
t && "hide" === n.lastRow && -1 === e)
)
this.clearBuildingRow();
else {
if (
(this.maxRowHeight &&
this.maxRowHeight < this.buildingRow.height &&
(this.buildingRow.height = this.maxRowHeight),
t && ("center" === n.lastRow || "right" === n.lastRow))
) {
var o =
this.galleryWidth -
2 * this.border -
(this.buildingRow.entriesBuff.length - 1) * n.margins;
for (s = 0; s < this.buildingRow.entriesBuff.length; s++)
o -= (i = this.buildingRow.entriesBuff[s]).data("jg.jwidth");
"center" === n.lastRow
? (r += o / 2)
: "right" === n.lastRow && (r += o);
}
var a = this.buildingRow.entriesBuff.length - 1;
for (s = 0; s <= a; s++)
(i = this.buildingRow.entriesBuff[this.settings.rtl ? a - s : s]),
this.displayEntry(
i,
r,
this.offY,
i.data("jg.jwidth"),
i.data("jg.jheight"),
this.buildingRow.height
),
(r += i.data("jg.jwidth") + n.margins);
(this.galleryHeightToSet =
this.offY + this.buildingRow.height + this.border),
this.setGalleryTempHeight(
this.galleryHeightToSet + this.getSpinnerHeight()
),
(!t || (this.buildingRow.height <= n.rowHeight && e)) &&
((this.offY += this.buildingRow.height + n.margins),
(this.rows += 1),
this.clearBuildingRow(),
this.settings.triggerEvent.call(this, "jg.rowflush"));
}
});
var i = 0;
function e() {
return g("body").height() > g(window).height();
}
(r.prototype.rememberGalleryHeight = function () {
(i = this.$gallery.height()), this.$gallery.height(i);
}),
(r.prototype.setGalleryTempHeight = function (t) {
(i = Math.max(t, i)), this.$gallery.height(i);
}),
(r.prototype.setGalleryFinalHeight = function (t) {
(i = t), this.$gallery.height(t);
}),
(r.prototype.checkWidth = function () {
this.checkWidthIntervalId = setInterval(
g.proxy(function () {
if (this.$gallery.is(":visible")) {
var t = parseFloat(this.$gallery.width());
e() === this.scrollBarOn
? Math.abs(t - this.galleryWidth) >
this.settings.refreshSensitivity &&
((this.galleryWidth = t),
this.rewind(),
this.rememberGalleryHeight(),
this.startImgAnalyzer(!0))
: ((this.scrollBarOn = e()), (this.galleryWidth = t));
}
}, this),
this.settings.refreshTime
);
}),
(r.prototype.isSpinnerActive = function () {
return null !== this.spinner.intervalId;
}),
(r.prototype.getSpinnerHeight = function () {
return this.spinner.$el.innerHeight();
}),
(r.prototype.stopLoadingSpinnerAnimation = function () {
clearInterval(this.spinner.intervalId),
(this.spinner.intervalId = null),
this.setGalleryTempHeight(
this.$gallery.height() - this.getSpinnerHeight()
),
this.spinner.$el.detach();
}),
(r.prototype.startLoadingSpinnerAnimation = function () {
var t = this.spinner,
i = t.$el.find("span");
clearInterval(t.intervalId),
this.$gallery.append(t.$el),
this.setGalleryTempHeight(
this.offY + this.buildingRow.height + this.getSpinnerHeight()
),
(t.intervalId = setInterval(function () {
t.phase < i.length
? i.eq(t.phase).fadeTo(t.timeSlot, 1)
: i.eq(t.phase - i.length).fadeTo(t.timeSlot, 0),
(t.phase = (t.phase + 1) % (2 * i.length));
}, t.timeSlot));
}),
(r.prototype.rewind = function () {
(this.lastFetchedEntry = null),
(this.lastAnalyzedIndex = -1),
(this.offY = this.border),
(this.rows = 0),
this.clearBuildingRow();
}),
(r.prototype.updateEntries = function (t) {
var i;
return (
t && null != this.lastFetchedEntry
? (i = g(this.lastFetchedEntry)
.nextAll(this.settings.selector)
.toArray())
: ((this.entries = []),
(i = this.$gallery.children(this.settings.selector).toArray())),
0 < i.length &&
(g.isFunction(this.settings.sort)
? (i = this.sortArray(i))
: this.settings.randomize && (i = this.shuffleArray(i)),
(this.lastFetchedEntry = i[i.length - 1]),
this.settings.filter
? (i = this.filterArray(i))
: this.resetFilters(i)),
(this.entries = this.entries.concat(i)),
!0
);
}),
(r.prototype.insertToGallery = function (t) {
var i = this;
g.each(t, function () {
g(this).appendTo(i.$gallery);
});
}),
(r.prototype.shuffleArray = function (t) {
var i, e, s;
for (i = t.length - 1; 0 < i; i--)
(e = Math.floor(Math.random() * (i + 1))),
(s = t[i]),
(t[i] = t[e]),
(t[e] = s);
return this.insertToGallery(t), t;
}),
(r.prototype.sortArray = function (t) {
return t.sort(this.settings.sort), this.insertToGallery(t), t;
}),
(r.prototype.resetFilters = function (t) {
for (var i = 0; i < t.length; i++) g(t[i]).removeClass("jg-filtered");
}),
(r.prototype.filterArray = function (t) {
var e = this.settings;
if ("string" === g.type(e.filter))
return t.filter(function (t) {
var i = g(t);
return i.is(e.filter)
? (i.removeClass("jg-filtered"), !0)
: (i.addClass("jg-filtered").removeClass("jg-visible"), !1);
});
if (g.isFunction(e.filter)) {
for (var i = t.filter(e.filter), s = 0; s < t.length; s++)
-1 === i.indexOf(t[s])
? g(t[s]).addClass("jg-filtered").removeClass("jg-visible")
: g(t[s]).removeClass("jg-filtered");
return i;
}
}),
(r.prototype.destroy = function () {
clearInterval(this.checkWidthIntervalId),
g.each(
this.entries,
g.proxy(function (t, i) {
var e = g(i);
e.css("width", ""),
e.css("height", ""),
e.css("top", ""),
e.css("left", ""),
e.data("jg.loaded", void 0),
e.removeClass("jg-entry");
var s = this.imgFromEntry(e);
s.css("width", ""),
s.css("height", ""),
s.css("margin-left", ""),
s.css("margin-top", ""),
s.attr("src", s.data("jg.originalSrc")),
s.data("jg.originalSrc", void 0),
this.removeCaptionEventsHandlers(e);
var n = this.captionFromEntry(e);
e.data("jg.createdCaption")
? (e.data("jg.createdCaption", void 0), null !== n && n.remove())
: null !== n && n.fadeTo(0, 1);
}, this)
),
this.$gallery.css("height", ""),
this.$gallery.removeClass("justified-gallery"),
this.$gallery.data("jg.controller", void 0);
}),
(r.prototype.analyzeImages = function (t) {
for (var i = this.lastAnalyzedIndex + 1; i < this.entries.length; i++) {
var e = g(this.entries[i]);
if (!0 === e.data("jg.loaded") || "skipped" === e.data("jg.loaded")) {
var s =
this.galleryWidth -
2 * this.border -
(this.buildingRow.entriesBuff.length - 1) * this.settings.margins,
n = e.data("jg.width") / e.data("jg.height");
if (
s / (this.buildingRow.aspectRatio + n) < this.settings.rowHeight &&
(this.flushRow(!1), ++this.yield.flushed >= this.yield.every)
)
return void this.startImgAnalyzer(t);
this.buildingRow.entriesBuff.push(e),
(this.buildingRow.aspectRatio += n),
(this.buildingRow.width += n * this.settings.rowHeight),
(this.lastAnalyzedIndex = i);
} else if ("error" !== e.data("jg.loaded")) return;
}
0 < this.buildingRow.entriesBuff.length && this.flushRow(!0),
this.isSpinnerActive() && this.stopLoadingSpinnerAnimation(),
this.stopImgAnalyzerStarter(),
this.settings.triggerEvent.call(this, t ? "jg.resize" : "jg.complete"),
this.setGalleryFinalHeight(this.galleryHeightToSet);
}),
(r.prototype.stopImgAnalyzerStarter = function () {
(this.yield.flushed = 0),
null !== this.imgAnalyzerTimeout &&
(clearTimeout(this.imgAnalyzerTimeout),
(this.imgAnalyzerTimeout = null));
}),
(r.prototype.startImgAnalyzer = function (t) {
var i = this;
this.stopImgAnalyzerStarter(),
(this.imgAnalyzerTimeout = setTimeout(function () {
i.analyzeImages(t);
}, 0.001));
}),
(r.prototype.onImageEvent = function (t, i, e) {
if (i || e) {
var s = new Image(),
n = g(s);
i &&
n.one("load", function () {
n.off("load error"), i(s);
}),
e &&
n.one("error", function () {
n.off("load error"), e(s);
}),
(s.src = t);
}
}),
(r.prototype.init = function () {
var a = !1,
h = !1,
l = this;
g.each(this.entries, function (t, i) {
var e = g(i),
s = l.imgFromEntry(e);
if (
(e.addClass("jg-entry"),
!0 !== e.data("jg.loaded") && "skipped" !== e.data("jg.loaded"))
)
if (
(null !== l.settings.rel && e.attr("rel", l.settings.rel),
null !== l.settings.target && e.attr("target", l.settings.target),
null !== s)
) {
var n = l.extractImgSrcFromImage(s);
if ((s.attr("src", n), !1 === l.settings.waitThumbnailsLoad)) {
var r = parseFloat(s.prop("width")),
o = parseFloat(s.prop("height"));
if (!isNaN(r) && !isNaN(o))
return (
e.data("jg.width", r),
e.data("jg.height", o),
e.data("jg.loaded", "skipped"),
(h = !0),
l.startImgAnalyzer(!1),
!0
);
}
e.data("jg.loaded", !1),
(a = !0),
l.isSpinnerActive() || l.startLoadingSpinnerAnimation(),
l.onImageEvent(
n,
function (t) {
e.data("jg.width", t.width),
e.data("jg.height", t.height),
e.data("jg.loaded", !0),
l.startImgAnalyzer(!1);
},
function () {
e.data("jg.loaded", "error"), l.startImgAnalyzer(!1);
}
);
} else
e.data("jg.loaded", !0),
e.data("jg.width", e.width() | parseFloat(e.css("width")) | 1),
e.data("jg.height", e.height() | parseFloat(e.css("height")) | 1);
}),
a || h || this.startImgAnalyzer(!1),
this.checkWidth();
}),
(r.prototype.checkOrConvertNumber = function (t, i) {
if (
("string" === g.type(t[i]) && (t[i] = parseFloat(t[i])),
"number" !== g.type(t[i]))
)
throw i + " must be a number";
if (isNaN(t[i])) throw "invalid number for " + i;
}),
(r.prototype.checkSizeRangesSuffixes = function () {
if ("object" !== g.type(this.settings.sizeRangeSuffixes))
throw "sizeRangeSuffixes must be defined and must be an object";
var t = [];
for (var i in this.settings.sizeRangeSuffixes)
this.settings.sizeRangeSuffixes.hasOwnProperty(i) && t.push(i);
for (var e = { 0: "" }, s = 0; s < t.length; s++)
if ("string" === g.type(t[s]))
try {
e[parseInt(t[s].replace(/^[a-z]+/, ""), 10)] =
this.settings.sizeRangeSuffixes[t[s]];
} catch (t) {
throw (
"sizeRangeSuffixes keys must contains correct numbers (" + t + ")"
);
}
else e[t[s]] = this.settings.sizeRangeSuffixes[t[s]];
this.settings.sizeRangeSuffixes = e;
}),
(r.prototype.retrieveMaxRowHeight = function () {
var t = null,
i = this.settings.rowHeight;
if ("string" === g.type(this.settings.maxRowHeight))
t = this.settings.maxRowHeight.match(/^[0-9]+%$/)
? (i *
parseFloat(this.settings.maxRowHeight.match(/^([0-9]+)%$/)[1])) /
100
: parseFloat(this.settings.maxRowHeight);
else {
if ("number" !== g.type(this.settings.maxRowHeight)) {
if (
!1 === this.settings.maxRowHeight ||
null == this.settings.maxRowHeight
)
return null;
throw "maxRowHeight must be a number or a percentage";
}
t = this.settings.maxRowHeight;
}
if (isNaN(t)) throw "invalid number for maxRowHeight";
return t < i && (t = i), t;
}),
(r.prototype.checkSettings = function () {
this.checkSizeRangesSuffixes(),
this.checkOrConvertNumber(this.settings, "rowHeight"),
this.checkOrConvertNumber(this.settings, "margins"),
this.checkOrConvertNumber(this.settings, "border");
var t = ["justify", "nojustify", "left", "center", "right", "hide"];
if (-1 === t.indexOf(this.settings.lastRow))
throw "lastRow must be one of: " + t.join(", ");
if (
(this.checkOrConvertNumber(this.settings, "justifyThreshold"),
this.settings.justifyThreshold < 0 ||
1 < this.settings.justifyThreshold)
)
throw "justifyThreshold must be in the interval [0,1]";
if ("boolean" !== g.type(this.settings.cssAnimation))
throw "cssAnimation must be a boolean";
if ("boolean" !== g.type(this.settings.captions))
throw "captions must be a boolean";
if (
(this.checkOrConvertNumber(
this.settings.captionSettings,
"animationDuration"
),
this.checkOrConvertNumber(
this.settings.captionSettings,
"visibleOpacity"
),
this.settings.captionSettings.visibleOpacity < 0 ||
1 < this.settings.captionSettings.visibleOpacity)
)
throw "captionSettings.visibleOpacity must be in the interval [0, 1]";
if (
(this.checkOrConvertNumber(
this.settings.captionSettings,
"nonVisibleOpacity"
),
this.settings.captionSettings.nonVisibleOpacity < 0 ||
1 < this.settings.captionSettings.nonVisibleOpacity)
)
throw "captionSettings.nonVisibleOpacity must be in the interval [0, 1]";
if (
(this.checkOrConvertNumber(this.settings, "imagesAnimationDuration"),
this.checkOrConvertNumber(this.settings, "refreshTime"),
this.checkOrConvertNumber(this.settings, "refreshSensitivity"),
"boolean" !== g.type(this.settings.randomize))
)
throw "randomize must be a boolean";
if ("string" !== g.type(this.settings.selector))
throw "selector must be a string";
if (!1 !== this.settings.sort && !g.isFunction(this.settings.sort))
throw "sort must be false or a comparison function";
if (
!1 !== this.settings.filter &&
!g.isFunction(this.settings.filter) &&
"string" !== g.type(this.settings.filter)
)
throw "filter must be false, a string or a filter function";
}),
(r.prototype.retrieveSuffixRanges = function () {
var t = [];
for (var i in this.settings.sizeRangeSuffixes)
this.settings.sizeRangeSuffixes.hasOwnProperty(i) &&
t.push(parseInt(i, 10));
return (
t.sort(function (t, i) {
return i < t ? 1 : t < i ? -1 : 0;
}),
t
);
}),
(r.prototype.updateSettings = function (t) {
(this.settings = g.extend({}, this.settings, t)),
this.checkSettings(),
(this.border =
0 <= this.settings.border
? this.settings.border
: this.settings.margins),
(this.maxRowHeight = this.retrieveMaxRowHeight()),
(this.suffixRanges = this.retrieveSuffixRanges());
}),
(r.prototype.defaults = {
sizeRangeSuffixes: {},
thumbnailPath: void 0,
rowHeight: 120,
maxRowHeight: !1,
margins: 1,
border: -1,
lastRow: "nojustify",
justifyThreshold: 0.9,
waitThumbnailsLoad: !0,
captions: !0,
cssAnimation: !0,
imagesAnimationDuration: 500,
captionSettings: {
animationDuration: 500,
visibleOpacity: 0.7,
nonVisibleOpacity: 0,
},
rel: null,
target: null,
extension: /\.[^.\\/]+$/,
refreshTime: 200,
refreshSensitivity: 0,
randomize: !1,
rtl: !1,
sort: !1,
filter: !1,
selector: "a, div:not(.spinner)",
imgSelector: "> img, > a > img",
triggerEvent: function (t) {
this.$gallery.trigger(t);
},
}),
(g.fn.justifiedGallery = function (n) {
return this.each(function (t, i) {
var e = g(i);
e.addClass("justified-gallery");
var s = e.data("jg.controller");
if (void 0 === s) {
if (null != n && "object" !== g.type(n)) {
if ("destroy" === n) return;
throw "The argument must be an object";
}
(s = new r(e, g.extend({}, r.prototype.defaults, n))),
e.data("jg.controller", s);
} else if ("norewind" === n);
else {
if ("destroy" === n) return void s.destroy();
s.updateSettings(n), s.rewind();
}
s.updateEntries("norewind" === n) && s.init();
});
});
});