shiori/view/js/salvattore.min.js
2018-02-11 21:00:56 +07:00

257 lines
No EOL
12 KiB
JavaScript

! function (e, t) {
"function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? module.exports = t() : e.salvattore = t()
}(this, function () {
window.matchMedia || (window.matchMedia = function () {
"use strict";
var e = window.styleMedia || window.media;
if (!e) {
var t = document.createElement("style"),
n = document.getElementsByTagName("script")[0],
r = null;
t.type = "text/css", t.id = "matchmediajs-test", n.parentNode.insertBefore(t, n), r = "getComputedStyle" in window && window.getComputedStyle(t, null) || t.currentStyle, e = {
matchMedium: function (e) {
var n = "@media " + e + "{ #matchmediajs-test { width: 1px; } }";
return t.styleSheet ? t.styleSheet.cssText = n : t.textContent = n, "1px" === r.width
}
}
}
return function (t) {
return {
matches: e.matchMedium(t || "all"),
media: t || "all"
}
}
}()),
function () {
"use strict";
if (window.matchMedia && window.matchMedia("all").addListener) return !1;
var e = window.matchMedia,
t = e("only all").matches,
n = !1,
r = 0,
a = [],
i = function (t) {
clearTimeout(r), r = setTimeout(function () {
for (var t = 0, n = a.length; n > t; t++) {
var r = a[t].mql,
i = a[t].listeners || [],
o = e(r.media).matches;
if (o !== r.matches) {
r.matches = o;
for (var c = 0, l = i.length; l > c; c++) i[c].call(window, r)
}
}
}, 30)
};
window.matchMedia = function (r) {
var o = e(r),
c = [],
l = 0;
return o.addListener = function (e) {
t && (n || (n = !0, window.addEventListener("resize", i, !0)), 0 === l && (l = a.push({
mql: o,
listeners: c
})), c.push(e))
}, o.removeListener = function (e) {
for (var t = 0, n = c.length; n > t; t++) c[t] === e && c.splice(t, 1)
}, o
}
}(),
function () {
"use strict";
for (var e = 0, t = ["ms", "moz", "webkit", "o"], n = 0; n < t.length && !window.requestAnimationFrame; ++n) window.requestAnimationFrame = window[t[n] + "RequestAnimationFrame"], window.cancelAnimationFrame = window[t[n] + "CancelAnimationFrame"] || window[t[n] + "CancelRequestAnimationFrame"];
window.requestAnimationFrame || (window.requestAnimationFrame = function (t, n) {
var r = (new Date).getTime(),
a = Math.max(0, 16 - (r - e)),
i = window.setTimeout(function () {
t(r + a)
}, a);
return e = r + a, i
}), window.cancelAnimationFrame || (window.cancelAnimationFrame = function (e) {
clearTimeout(e)
})
}(), "function" != typeof window.CustomEvent && ! function () {
"use strict";
function e(e, t) {
t = t || {
bubbles: !1,
cancelable: !1,
detail: void 0
};
var n = document.createEvent("CustomEvent");
return n.initCustomEvent(e, t.bubbles, t.cancelable, t.detail), n
}
e.prototype = window.Event.prototype, window.CustomEvent = e
}();
var e = function (e, t, n) {
"use strict";
var r = {},
a = [],
i = [],
o = [],
c = function (e, t, n) {
e.dataset ? e.dataset[t] = n : e.setAttribute("data-" + t, n)
};
return r.obtainGridSettings = function (t) {
var n = e.getComputedStyle(t, ":before"),
r = n.getPropertyValue("content").slice(1, -1),
a = r.match(/^\s*(\d+)(?:\s?\.(.+))?\s*$/),
i = 1,
o = [];
return a ? (i = a[1], o = a[2], o = o ? o.split(".") : ["column"]) : (a = r.match(/^\s*\.(.+)\s+(\d+)\s*$/), a && (o = a[1], i = a[2], i && (i = i.split(".")))), {
numberOfColumns: i,
columnClasses: o
}
}, r.addColumns = function (e, n) {
for (var a, i = r.obtainGridSettings(e), o = i.numberOfColumns, l = i.columnClasses, s = new Array(+o), u = t.createDocumentFragment(), d = o; 0 !== d--;) a = "[data-columns] > *:nth-child(" + o + "n-" + d + ")", s.push(n.querySelectorAll(a));
s.forEach(function (e) {
var n = t.createElement("div"),
r = t.createDocumentFragment();
n.className = l.join(" "), Array.prototype.forEach.call(e, function (e) {
r.appendChild(e)
}), n.appendChild(r), u.appendChild(n)
}), e.appendChild(u), c(e, "columns", o)
}, r.removeColumns = function (n) {
var r = t.createRange();
r.selectNodeContents(n);
var a = Array.prototype.filter.call(r.extractContents().childNodes, function (t) {
return t instanceof e.HTMLElement
}),
i = a.length,
o = a[0].childNodes.length,
l = new Array(o * i);
Array.prototype.forEach.call(a, function (e, t) {
Array.prototype.forEach.call(e.children, function (e, n) {
l[n * i + t] = e
})
});
var s = t.createElement("div");
return c(s, "columns", 0), l.filter(function (e) {
return !!e
}).forEach(function (e) {
s.appendChild(e)
}), s
}, r.recreateColumns = function (t) {
e.requestAnimationFrame(function () {
r.addColumns(t, r.removeColumns(t));
var e = new CustomEvent("columnsChange");
t.dispatchEvent(e)
})
}, r.mediaQueryChange = function (e) {
e.matches && Array.prototype.forEach.call(a, r.recreateColumns)
}, r.getCSSRules = function (e) {
var t;
try {
t = e.sheet.cssRules || e.sheet.rules
} catch (e) {
return []
}
return t || []
}, r.getStylesheets = function () {
var e = Array.prototype.slice.call(t.querySelectorAll("style"));
return e.forEach(function (t, n) {
"text/css" !== t.type && "" !== t.type && e.splice(n, 1)
}), Array.prototype.concat.call(e, Array.prototype.slice.call(t.querySelectorAll("link[rel='stylesheet']")))
}, r.mediaRuleHasColumnsSelector = function (e) {
var t, n;
try {
t = e.length
} catch (e) {
t = 0
}
for (; t--;)
if (n = e[t], n.selectorText && n.selectorText.match(/\[data-columns\](.*)::?before$/)) return !0;
return !1
}, r.scanMediaQueries = function () {
var t = [];
if (e.matchMedia) {
r.getStylesheets().forEach(function (e) {
Array.prototype.forEach.call(r.getCSSRules(e), function (e) {
try {
e.media && e.cssRules && r.mediaRuleHasColumnsSelector(e.cssRules) && t.push(e)
} catch (e) {}
})
});
var n = i.filter(function (e) {
return -1 === t.indexOf(e)
});
o.filter(function (e) {
return -1 !== n.indexOf(e.rule)
}).forEach(function (e) {
e.mql.removeListener(r.mediaQueryChange)
}), o = o.filter(function (e) {
return -1 === n.indexOf(e.rule)
}), t.filter(function (e) {
return -1 == i.indexOf(e)
}).forEach(function (t) {
var n = e.matchMedia(t.media.mediaText);
n.addListener(r.mediaQueryChange), o.push({
rule: t,
mql: n
})
}), i.length = 0, i = t
}
}, r.rescanMediaQueries = function () {
r.scanMediaQueries(), Array.prototype.forEach.call(a, r.recreateColumns)
}, r.nextElementColumnIndex = function (e, t) {
var n, r, a, i = e.children,
o = i.length,
c = 0,
l = 0;
for (a = 0; o > a; a++) n = i[a], r = n.children.length + (t[a].children || t[a].childNodes).length, 0 === c && (c = r), c > r && (l = a, c = r);
return l
}, r.createFragmentsList = function (e) {
for (var n = new Array(e), r = 0; r !== e;) n[r] = t.createDocumentFragment(), r++;
return n
}, r.appendElements = function (e, t) {
var n = e.children,
a = n.length,
i = r.createFragmentsList(a);
Array.prototype.forEach.call(t, function (t) {
var n = r.nextElementColumnIndex(e, i);
i[n].appendChild(t)
}), Array.prototype.forEach.call(n, function (e, t) {
e.appendChild(i[t])
})
}, r.prependElements = function (e, n) {
var a = e.children,
i = a.length,
o = r.createFragmentsList(i),
c = i - 1;
n.forEach(function (e) {
var t = o[c];
t.insertBefore(e, t.firstChild), 0 === c ? c = i - 1 : c--
}), Array.prototype.forEach.call(a, function (e, t) {
e.insertBefore(o[t], e.firstChild)
});
for (var l = t.createDocumentFragment(), s = n.length % i; 0 !== s--;) l.appendChild(e.lastChild);
e.insertBefore(l, e.firstChild)
}, r.registerGrid = function (n) {
if ("none" !== e.getComputedStyle(n).display) {
var i = t.createRange();
i.selectNodeContents(n);
var o = t.createElement("div");
o.appendChild(i.extractContents()), c(o, "columns", 0), r.addColumns(n, o), a.push(n)
}
}, r.init = function () {
var e = t.createElement("style");
e.innerHTML = "[data-columns]::before{display:block;visibility:hidden;position:absolute;font-size:1px;}", t.head.appendChild(e);
var n = t.querySelectorAll("[data-columns]");
Array.prototype.forEach.call(n, r.registerGrid), r.scanMediaQueries()
}, r.init(), {
appendElements: r.appendElements,
prependElements: r.prependElements,
registerGrid: r.registerGrid,
recreateColumns: r.recreateColumns,
rescanMediaQueries: r.rescanMediaQueries,
init: r.init,
append_elements: r.appendElements,
prepend_elements: r.prependElements,
register_grid: r.registerGrid,
recreate_columns: r.recreateColumns,
rescan_media_queries: r.rescanMediaQueries
}
}(window, window.document);
return e
});