webdriverinstaller/js/jquery.mixitup.min.js

493 lines
19 KiB
JavaScript
Raw Normal View History

2019-08-31 00:14:28 +00:00
/*
* MIXITUP - A CSS3 & JQuery Filter and Sort Plugin
* Version: 1.4.0
* Author: Patrick Kunka
* Copyright 2012-2013 Patrick Kunka, All Rights Reserved
* FREE FOR NON-COMMERCIAL USE
* http://www.mixitup.io
*/
(function(e) {
function m(d, b, h, c, a) {
function j() {
k.unbind();
b && v(b, h, c, a);
a.startOrder = [];
a.newOrder = [];
a.origSort = [];
a.checkSort = [];
u.removeStyle(a.prefix + "filter, filter, " + a.prefix + "transform, transform, opacity, display").css(a.clean).removeAttr("data-checksum");
window.atob || u.css({
display: "none",
opacity: "0"
});
k.removeStyle(a.prefix + "transition, transition, " + a.prefix + "perspective, perspective, " + a.prefix + "perspective-origin, perspective-origin, " + (a.resizeContainer ? "height" : ""));
"list" == a.layoutMode ?
(q.css({
display: a.targetDisplayList,
opacity: "1"
}), a.origDisplay = a.targetDisplayList) : (q.css({
display: a.targetDisplayGrid,
opacity: "1"
}), a.origDisplay = a.targetDisplayGrid);
a.origLayout = a.layoutMode;
setTimeout(function() {
u.removeStyle(a.prefix + "transition, transition");
a.mixing = !1;
if ("function" == typeof a.onMixEnd) {
var b = a.onMixEnd.call(this, a);
a = b ? b : a
}
})
}
clearInterval(a.failsafe);
a.mixing = !0;
if ("function" == typeof a.onMixStart) {
var f = a.onMixStart.call(this, a);
a = f ? f : a
}
for (var g = a.transitionSpeed, f = 0; 2 >
f; f++) {
var n = 0 == f ? n = a.prefix : "";
a.transition[n + "transition"] = "all " + g + "ms linear";
a.transition[n + "transform"] = n + "translate3d(0,0,0)";
a.perspective[n + "perspective"] = a.perspectiveDistance + "px";
a.perspective[n + "perspective-origin"] = a.perspectiveOrigin
}
var r = a.targetSelector,
u = c.find(r);
u.each(function() {
this.data = {}
});
var k = u.parent();
k.css(a.perspective);
a.easingFallback = "ease-in-out";
"smooth" == a.easing && (a.easing = "cubic-bezier(0.25, 0.46, 0.45, 0.94)");
"snap" == a.easing && (a.easing = "cubic-bezier(0.77, 0, 0.175, 1)");
"windback" == a.easing && (a.easing = "cubic-bezier(0.175, 0.885, 0.320, 1.275)", a.easingFallback = "cubic-bezier(0.175, 0.885, 0.320, 1)");
"windup" == a.easing && (a.easing = "cubic-bezier(0.6, -0.28, 0.735, 0.045)", a.easingFallback = "cubic-bezier(0.6, 0.28, 0.735, 0.045)");
f = "list" == a.layoutMode && null != a.listEffects ? a.listEffects : a.effects;
Array.prototype.indexOf && (a.fade = -1 < f.indexOf("fade") ? "0" : "", a.scale = -1 < f.indexOf("scale") ? "scale(.01)" : "", a.rotateZ = -1 < f.indexOf("rotateZ") ? "rotate(180deg)" : "", a.rotateY = -1 <
f.indexOf("rotateY") ? "rotateY(90deg)" : "", a.rotateX = -1 < f.indexOf("rotateX") ? "rotateX(90deg)" : "", a.blur = -1 < f.indexOf("blur") ? "blur(8px)" : "", a.grayscale = -1 < f.indexOf("grayscale") ? "grayscale(100%)" : "");
d = d.replace(/\s|\//g, ".");
var q = e(),
s = e();
if ("or" == a.filterLogic) {
var m = d.split(".");
!0 == a.multiFilter && "" == m[0] && m.shift();
1 > m.length ? s = s.add(c.find(r + ":visible")) : u.each(function() {
for (var a = 0, b = e(this), c = 0; c < m.length; c++) b.hasClass(m[c]) && (q = q.add(b), a++);
0 == a && (s = s.add(b))
})
} else q = q.add(k.find(r + "." +
d)), s = s.add(k.find(r + ":not(." + d + "):visible"));
d = q.length;
var t = e(),
p = e(),
l = e();
s.each(function() {
var a = e(this);
"none" != a.css("display") && (t = t.add(a), l = l.add(a))
});
if (q.filter(":visible").length == d && !t.length && !b) {
if (a.origLayout == a.layoutMode) return j(), !1;
if (1 == q.length) return "list" == a.layoutMode ? (c.addClass(a.listClass), c.removeClass(a.gridClass), l.css("display", a.targetDisplayList)) : (c.addClass(a.gridClass), c.removeClass(a.listClass), l.css("display", a.targetDisplayGrid)), j(), !1
}
a.origHeight = k.height();
if (q.length) {
c.removeClass(a.failClass);
q.each(function() {
var a = e(this);
"none" == a.css("display") ? p = p.add(a) : l = l.add(a)
});
if (a.origLayout != a.layoutMode && !1 == a.animateGridList) return "list" == a.layoutMode ? (c.addClass(a.listClass), c.removeClass(a.gridClass), l.css("display", a.targetDisplayList)) : (c.addClass(a.gridClass), c.removeClass(a.listClass), l.css("display", a.targetDisplayGrid)), j(), !1;
if (!window.atob) return j(), !1;
u.css(a.clean);
l.each(function() {
this.data.origPos = e(this).offset()
});
"list" == a.layoutMode ?
(c.addClass(a.listClass), c.removeClass(a.gridClass), p.css("display", a.targetDisplayList)) : (c.addClass(a.gridClass), c.removeClass(a.listClass), p.css("display", a.targetDisplayGrid));
p.each(function() {
this.data.showInterPos = e(this).offset()
});
t.each(function() {
this.data.hideInterPos = e(this).offset()
});
l.each(function() {
this.data.preInterPos = e(this).offset()
});
"list" == a.layoutMode ? l.css("display", a.targetDisplayList) : l.css("display", a.targetDisplayGrid);
b && v(b, h, c, a);
if (b && a.origSort.compare(a.checkSort)) return j(),
!1;
t.hide();
p.each(function() {
this.data.finalPos = e(this).offset()
});
l.each(function() {
this.data.finalPrePos = e(this).offset()
});
a.newHeight = k.height();
b && v("reset", null, c, a);
p.hide();
l.css("display", a.origDisplay);
"block" == a.origDisplay ? (c.addClass(a.listClass), p.css("display", a.targetDisplayList)) : (c.removeClass(a.listClass), p.css("display", a.targetDisplayGrid));
a.resizeContainer && k.css("height", a.origHeight + "px");
d = {};
for (f = 0; 2 > f; f++) n = 0 == f ? n = a.prefix : "", d[n + "transform"] = a.scale + " " + a.rotateX + " " +
a.rotateY + " " + a.rotateZ, d[n + "filter"] = a.blur + " " + a.grayscale;
p.css(d);
l.each(function() {
var b = this.data,
c = e(this);
c.hasClass("mix_tohide") ? (b.preTX = b.origPos.left - b.hideInterPos.left, b.preTY = b.origPos.top - b.hideInterPos.top) : (b.preTX = b.origPos.left - b.preInterPos.left, b.preTY = b.origPos.top - b.preInterPos.top);
for (var d = {}, g = 0; 2 > g; g++) {
var f = 0 == g ? f = a.prefix : "";
d[f + "transform"] = "translate(" + b.preTX + "px," + b.preTY + "px)"
}
c.css(d)
});
"list" == a.layoutMode ? (c.addClass(a.listClass), c.removeClass(a.gridClass)) :
(c.addClass(a.gridClass), c.removeClass(a.listClass));
setTimeout(function() {
if (a.resizeContainer) {
for (var b = {}, c = 0; 2 > c; c++) {
var d = 0 == c ? d = a.prefix : "";
b[d + "transition"] = "all " + g + "ms ease-in-out";
b.height = a.newHeight + "px"
}
k.css(b)
}
t.css("opacity", a.fade);
p.css("opacity", 1);
p.each(function() {
var b = this.data;
b.tX = b.finalPos.left - b.showInterPos.left;
b.tY = b.finalPos.top - b.showInterPos.top;
for (var c = {}, d = 0; 2 > d; d++) {
var f = 0 == d ? f = a.prefix : "";
c[f + "transition-property"] = f + "transform, " + f + "filter, opacity";
c[f +
"transition-timing-function"] = a.easing + ", linear, linear";
c[f + "transition-duration"] = g + "ms";
c[f + "transition-delay"] = "0";
c[f + "transform"] = "translate(" + b.tX + "px," + b.tY + "px)";
c[f + "filter"] = "none"
}
e(this).css("-webkit-transition", "all " + g + "ms " + a.easingFallback).css(c)
});
l.each(function() {
var b = this.data;
b.tX = 0 != b.finalPrePos.left ? b.finalPrePos.left - b.preInterPos.left : 0;
b.tY = 0 != b.finalPrePos.left ? b.finalPrePos.top - b.preInterPos.top : 0;
for (var c = {}, d = 0; 2 > d; d++) {
var f = 0 == d ? f = a.prefix : "";
c[f + "transition"] =
"all " + g + "ms " + a.easing;
c[f + "transform"] = "translate(" + b.tX + "px," + b.tY + "px)"
}
e(this).css("-webkit-transition", "all " + g + "ms " + a.easingFallback).css(c)
});
b = {};
for (c = 0; 2 > c; c++) d = 0 == c ? d = a.prefix : "", b[d + "transition"] = "all " + g + "ms " + a.easing + ", " + d + "filter " + g + "ms linear, opacity " + g + "ms linear", b[d + "transform"] = a.scale + " " + a.rotateX + " " + a.rotateY + " " + a.rotateZ, b[d + "filter"] = a.blur + " " + a.grayscale, b.opacity = a.fade;
t.css(b);
k.bind("webkitTransitionEnd transitionend otransitionend oTransitionEnd", function(a) {
if (-1 <
a.originalEvent.propertyName.indexOf("transform") || -1 < a.originalEvent.propertyName.indexOf("opacity")) - 1 < r.indexOf(".") ? e(a.target).hasClass(r.replace(".", "")) && j() : e(a.target).is(r) && j()
})
}, 10);
a.failsafe = setTimeout(function() {
a.mixing && j()
}, g + 400)
} else {
a.resizeContainer && k.css("height", a.origHeight + "px");
if (!window.atob) return j(), !1;
t = s;
setTimeout(function() {
k.css(a.perspective);
if (a.resizeContainer) {
for (var b = {}, d = 0; 2 > d; d++) {
var e = 0 == d ? e = a.prefix : "";
b[e + "transition"] = "height " + g + "ms ease-in-out";
b.height = a.minHeight + "px"
}
k.css(b)
}
u.css(a.transition);
if (s.length) {
b = {};
for (d = 0; 2 > d; d++) e = 0 == d ? e = a.prefix : "", b[e + "transform"] = a.scale + " " + a.rotateX + " " + a.rotateY + " " + a.rotateZ, b[e + "filter"] = a.blur + " " + a.grayscale, b.opacity = a.fade;
t.css(b);
k.bind("webkitTransitionEnd transitionend otransitionend oTransitionEnd", function(b) {
if (-1 < b.originalEvent.propertyName.indexOf("transform") || -1 < b.originalEvent.propertyName.indexOf("opacity")) c.addClass(a.failClass), j()
})
} else a.mixing = !1
}, 10)
}
}
function v(d, b,
h, c) {
function a(a, b) {
return 1 * a.attr(d).toLowerCase() < 1 * b.attr(d).toLowerCase() ? -1 : 1 * a.attr(d).toLowerCase() > 1 * b.attr(d).toLowerCase() ? 1 : 0
}
function j(a) {
"asc" == b ? f.prepend(a).prepend(" \
") : f.append(a).append(" \
")
}
h.find(c.targetSelector).wrapAll('<div class="mix_sorter"/>');
var f = h.find(".mix_sorter");
c.origSort.length || f.find(c.targetSelector + ":visible").each(function() {
e(this).wrap("<s/>");
c.origSort.push(e(this).parent().html().replace(/\s+/g, ""));
e(this).unwrap()
});
f.empty();
if ("reset" == d) e.each(c.startOrder,
function() {
f.append(this).append(" \
")
});
else if ("default" == d) e.each(c.origOrder, function() {
j(this)
});
else if ("random" == d) {
if (!c.newOrder.length) {
for (var g = c.startOrder.slice(), n = g.length, r = n; r--;) {
var m = parseInt(Math.random() * n),
k = g[r];
g[r] = g[m];
g[m] = k
}
c.newOrder = g
}
e.each(c.newOrder, function() {
f.append(this).append(" \
")
})
} else "custom" == d ? e.each(b, function() {
j(this)
}) : ("undefined" === typeof c.origOrder[0].attr(d) && console.log("No such attribute found. Terminating"), c.newOrder.length || (e.each(c.origOrder,
function() {
c.newOrder.push(e(this))
}), c.newOrder.sort(a)), e.each(c.newOrder, function() {
j(this)
}));
c.checkSort = [];
f.find(c.targetSelector + ":visible").each(function(a) {
var b = e(this);
0 == a && b.attr("data-checksum", "1");
b.wrap("<s/>");
c.checkSort.push(b.parent().html().replace(/\s+/g, ""));
b.unwrap()
});
h.find(c.targetSelector).unwrap()
}
var w = {
init: function(d) {
return this.each(function() {
var b = {
targetSelector: ".mix",
filterSelector: ".filter",
sortSelector: ".sort",
buttonEvent: "click",
effects: ["fade", "scale"],
listEffects: null,
easing: "smooth",
layoutMode: "grid",
targetDisplayGrid: "inline-block",
targetDisplayList: "block",
listClass: "",
gridClass: "",
transitionSpeed: 600,
showOnLoad: "all",
multiFilter: !1,
filterLogic: "or",
resizeContainer: !0,
minHeight: 0,
failClass: "fail",
perspectiveDistance: "3000",
perspectiveOrigin: "50% 50%",
animateGridList: !0,
onMixLoad: null,
onMixStart: null,
onMixEnd: null,
container: null,
origOrder: [],
startOrder: [],
newOrder: [],
origSort: [],
checkSort: [],
filter: "",
mixing: !1,
origDisplay: "",
origLayout: "",
origHeight: 0,
newHeight: 0,
isTouch: !1,
resetDelay: 0,
failsafe: null,
prefix: "",
easingFallback: "ease-in-out",
transition: {},
perspective: {},
clean: {},
fade: "1",
scale: "",
rotateX: "",
rotateY: "",
rotateZ: "",
blur: "",
grayscale: ""
};
d && e.extend(b, d);
this.config = b;
e.support.touch = "ontouchend" in document;
e.support.touch && (b.isTouch = !0, b.resetDelay = 350);
b.container = e(this);
var h = b.container,
c;
a: {
c = h[0];
for (var a = ["Webkit", "Moz", "O", "ms"], j = 0; j < a.length; j++)
if (a[j] + "Transition" in c.style) {
c = a[j];
break a
} c = "transition" in c.style ? "" : !1
}
b.prefix =
c;
b.prefix = b.prefix ? "-" + b.prefix.toLowerCase() + "-" : "";
h.find(b.targetSelector).each(function() {
b.origOrder.push(e(this))
});
for (c = 0; 2 > c; c++) a = 0 == c ? a = b.prefix : "", b.transition[a + "transition"] = "all " + b.transitionSpeed + "ms ease-in-out", b.perspective[a + "perspective"] = b.perspectiveDistance + "px", b.perspective[a + "perspective-origin"] = b.perspectiveOrigin;
for (c = 0; 2 > c; c++) a = 0 == c ? a = b.prefix : "", b.clean[a + "transition"] = "none";
"list" == b.layoutMode ? (h.addClass(b.listClass), b.origDisplay = b.targetDisplayList) : (h.addClass(b.gridClass),
b.origDisplay = b.targetDisplayGrid);
b.origLayout = b.layoutMode;
c = b.showOnLoad.split(" ");
e.each(c, function() {
e(b.filterSelector + '[data-filter="' + this + '"]').addClass("active")
});
h.find(b.targetSelector).addClass("mix_all");
"all" == c[0] && (c[0] = "mix_all", b.showOnLoad = "mix_all");
var f = e();
e.each(c, function() {
f = f.add(e("." + this))
});
f.each(function() {
var a = e(this);
"list" == b.layoutMode ? a.css("display", b.targetDisplayList) : a.css("display", b.targetDisplayGrid);
a.css(b.transition)
});
setTimeout(function() {
b.mixing = !0;
f.css("opacity", "1");
setTimeout(function() {
"list" == b.layoutMode ? f.removeStyle(b.prefix + "transition, transition").css({
display: b.targetDisplayList,
opacity: 1
}) : f.removeStyle(b.prefix + "transition, transition").css({
display: b.targetDisplayGrid,
opacity: 1
});
b.mixing = !1;
if ("function" == typeof b.onMixLoad) {
var a = b.onMixLoad.call(this, b);
b = a ? a : b
}
}, b.transitionSpeed)
}, 10);
b.filter = b.showOnLoad;
e(b.sortSelector).bind(b.buttonEvent, function() {
if (!b.mixing) {
var a = e(this),
c = a.attr("data-sort"),
d = a.attr("data-order");
if (a.hasClass("active")) {
if ("random" != c) return !1
} else e(b.sortSelector).removeClass("active"), a.addClass("active");
h.find(b.targetSelector).each(function() {
b.startOrder.push(e(this))
});
m(b.filter, c, d, h, b)
}
});
e(b.filterSelector).bind(b.buttonEvent, function() {
if (!b.mixing) {
var a = e(this);
if (!1 == b.multiFilter) e(b.filterSelector).removeClass("active"), a.addClass("active"), b.filter = a.attr("data-filter"), e(b.filterSelector + '[data-filter="' + b.filter + '"]').addClass("active"), "all" == b.filter && (b.filter = "mix_all");
else {
var c = a.attr("data-filter");
"all" == c && (c = "mix_all");
a.hasClass("active") ? (a.removeClass("active"), b.filter = b.filter.replace(RegExp("(\\s|^)" + c), "")) : (a.addClass("active"), b.filter = b.filter + " " + c)
}
m(b.filter, null, null, h, b)
}
})
})
},
toGrid: function() {
return this.each(function() {
var d = this.config;
"grid" != d.layoutMode && (d.layoutMode = "grid", m(d.filter, null, null, e(this), d))
})
},
toList: function() {
return this.each(function() {
var d = this.config;
"list" != d.layoutMode && (d.layoutMode = "list", m(d.filter, null, null,
e(this), d))
})
},
filter: function(d) {
return this.each(function() {
var b = this.config;
e(b.filterSelector).removeClass("active");
e(b.filterSelector + '[data-filter="' + d + '"]').addClass("active");
"all" == d && (d = "mix_all");
b.mixing || (b.filter = d, m(d, null, null, e(this), b))
})
},
sort: function(d) {
return this.each(function() {
var b = this.config;
if (e.isArray(d)) var h = d[0],
c = d[1];
else h = d, c = "desc";
b.mixing || (e(this).find(b.targetSelector).each(function() {
b.startOrder.push(e(this))
}), m(b.filter, h, c, e(this), b))
})
}
};
e.fn.mixitup =
function(d, b) {
if (w[d]) return w[d].apply(this, Array.prototype.slice.call(arguments, 1));
if ("object" === typeof d || !d) return w.init.apply(this, arguments)
};
e.fn.removeStyle = function(d) {
return this.each(function() {
var b = e(this);
d = d.replace(/\s+/g, "");
var h = d.split(",");
e.each(h, function() {
var c = RegExp(this.toString() + "[^;]+;?", "g");
b.attr("style", function(a, b) {
if (b) return b.replace(c, "")
})
})
})
};
Array.prototype.compare = function(d) {
if (this.length != d.length) return !1;
for (var b = 0; b < d.length; b++)
if (this[b].compare &&
!this[b].compare(d[b]) || this[b] !== d[b]) return !1;
return !0
}
})(jQuery);