| Index: tools/perf/page_sets/key_silk_cases/masonry.html
|
| diff --git a/tools/perf/page_sets/key_silk_cases/masonry.html b/tools/perf/page_sets/key_silk_cases/masonry.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ac9fa2ada677356a7ad0e174bb19d8bac43fffc5
|
| --- /dev/null
|
| +++ b/tools/perf/page_sets/key_silk_cases/masonry.html
|
| @@ -0,0 +1,1136 @@
|
| +<style>
|
| +body {
|
| + display: none;
|
| + margin: 0;
|
| +}
|
| +.item {
|
| + max-width: 200px;
|
| + border: 2px solid red;
|
| + margin: 1px;
|
| +}
|
| +</style>
|
| +<div id=container>
|
| +<div class=item>Lorem ipsum dolor sit amet, consectetur adipiscing elit, seddo eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim adminim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip exea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatevelit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecatcupidatat non proident, sunt in culpa qui officia deserunt mollit anim id estlaborum.</div>
|
| +</div>
|
| +<script>
|
| +/*!
|
| + * Masonry PACKAGED v3.2.2
|
| + * Cascading grid layout library
|
| + * http://masonry.desandro.com
|
| + * MIT License
|
| + * by David DeSandro
|
| + */
|
| +! function(a) {
|
| + function b() {}
|
| +
|
| + function c(a) {
|
| + function c(b) {
|
| + b.prototype.option || (b.prototype.option = function(b) {
|
| + a.isPlainObject(b) && (this.options = a.extend(!0, this.options,
|
| + b))
|
| + })
|
| + }
|
| +
|
| + function e(b, c) {
|
| + a.fn[b] = function(e) {
|
| + if ("string" == typeof e) {
|
| + for (var g = d.call(arguments, 1), h = 0, i = this.length; i
|
| + > h; h++) {
|
| + var j = this[h],
|
| + k = a.data(j, b);
|
| + if (k)
|
| + if (a.isFunction(k[e]) && "_" !== e.charAt(0)) {
|
| + var l = k[e].apply(k, g);
|
| + if (void 0 !== l) return l
|
| + } else f("no such method '" + e + "' for " + b +
|
| + " instance");
|
| + else f("cannot call methods on " + b +
|
| + " prior to initialization; attempted to call '" +
|
| + e + "'")
|
| + }
|
| + return this
|
| + }
|
| + return this.each(function() {
|
| + var d = a.data(this, b);
|
| + d ? (d.option(e), d._init()) : (d = new c(this, e),
|
| + a.data(this, b, d))
|
| + })
|
| + }
|
| + }
|
| + if (a) {
|
| + var f = "undefined" == typeof console ? b : function(a) {
|
| + console.error(a)
|
| + };
|
| + return a.bridget = function(a, b) {
|
| + c(b), e(a, b)
|
| + }, a.bridget
|
| + }
|
| + }
|
| + var d = Array.prototype.slice;
|
| + "function" == typeof define && define.amd ?
|
| + define("jquery-bridget/jquery.bridget", ["jquery"], c) : c("object" ==
|
| + typeof exports ? require("jquery") : a.jQuery)
|
| +}(window),
|
| +function(a) {
|
| + function b(b) {
|
| + var c = a.event;
|
| + return c.target = c.target || c.srcElement || b, c
|
| + }
|
| + var c = document.documentElement,
|
| + d = function() {};
|
| + c.addEventListener ? d = function(a, b, c) {
|
| + a.addEventListener(b, c, !1)
|
| + } : c.attachEvent && (d = function(a, c, d) {
|
| + a[c + d] = d.handleEvent ? function() {
|
| + var c = b(a);
|
| + d.handleEvent.call(d, c)
|
| + } : function() {
|
| + var c = b(a);
|
| + d.call(a, c)
|
| + }, a.attachEvent("on" + c, a[c + d])
|
| + });
|
| + var e = function() {};
|
| + c.removeEventListener ? e = function(a, b, c) {
|
| + a.removeEventListener(b, c, !1)
|
| + } : c.detachEvent && (e = function(a, b, c) {
|
| + a.detachEvent("on" + b, a[b + c]);
|
| + try {
|
| + delete a[b + c]
|
| + } catch (d) {
|
| + a[b + c] = void 0
|
| + }
|
| + });
|
| + var f = {
|
| + bind: d,
|
| + unbind: e
|
| + };
|
| + "function" == typeof define && define.amd ? define("eventie/eventie", f) :
|
| + "object" == typeof exports ? module.exports = f : a.eventie = f
|
| +}(this),
|
| +function(a) {
|
| + function b(a) {
|
| + "function" == typeof a && (b.isReady ? a() : g.push(a))
|
| + }
|
| +
|
| + function c(a) {
|
| + var c = "readystatechange" === a.type && "complete" !== f.readyState;
|
| + b.isReady || c || d()
|
| + }
|
| +
|
| + function d() {
|
| + b.isReady = !0;
|
| + for (var a = 0, c = g.length; c > a; a++) {
|
| + var d = g[a];
|
| + d()
|
| + }
|
| + }
|
| +
|
| + function e(e) {
|
| + return "complete" === f.readyState ? d() : (e.bind(f,
|
| + "DOMContentLoaded", c), e.bind(f, "readystatechange", c),
|
| + e.bind(a, "load", c)), b
|
| + }
|
| + var f = a.document,
|
| + g = [];
|
| + b.isReady = !1, "function" == typeof define && define.amd ?
|
| + define("doc-ready/doc-ready", ["eventie/eventie"], e) : "object" == typeof
|
| + exports ? module.exports = e(require("eventie")) : a.docReady =
|
| + e(a.eventie)
|
| +}(window),
|
| +function() {
|
| + function a() {}
|
| +
|
| + function b(a, b) {
|
| + for (var c = a.length; c--;)
|
| + if (a[c].listener === b) return c;
|
| + return -1
|
| + }
|
| +
|
| + function c(a) {
|
| + return function() {
|
| + return this[a].apply(this, arguments)
|
| + }
|
| + }
|
| + var d = a.prototype,
|
| + e = this,
|
| + f = e.EventEmitter;
|
| + d.getListeners = function(a) {
|
| + var b, c, d = this._getEvents();
|
| + if (a instanceof RegExp) {
|
| + b = {};
|
| + for (c in d) d.hasOwnProperty(c) && a.test(c) && (b[c] = d[c])
|
| + } else b = d[a] || (d[a] = []);
|
| + return b
|
| + }, d.flattenListeners = function(a) {
|
| + var b, c = [];
|
| + for (b = 0; b < a.length; b += 1) c.push(a[b].listener);
|
| + return c
|
| + }, d.getListenersAsObject = function(a) {
|
| + var b, c = this.getListeners(a);
|
| + return c instanceof Array && (b = {}, b[a] = c), b || c
|
| + }, d.addListener = function(a, c) {
|
| + var d, e = this.getListenersAsObject(a),
|
| + f = "object" == typeof c;
|
| + for (d in e) e.hasOwnProperty(d) && -1 === b(e[d], c) && e[d].push(f ? c
|
| + : {
|
| + listener: c,
|
| + once: !1
|
| + });
|
| + return this
|
| + }, d.on = c("addListener"), d.addOnceListener = function(a, b) {
|
| + return this.addListener(a, {
|
| + listener: b,
|
| + once: !0
|
| + })
|
| + }, d.once = c("addOnceListener"), d.defineEvent = function(a) {
|
| + return this.getListeners(a), this
|
| + }, d.defineEvents = function(a) {
|
| + for (var b = 0; b < a.length; b += 1) this.defineEvent(a[b]);
|
| + return this
|
| + }, d.removeListener = function(a, c) {
|
| + var d, e, f = this.getListenersAsObject(a);
|
| + for (e in f) f.hasOwnProperty(e) && (d = b(f[e], c), -1 !== d &&
|
| + f[e].splice(d, 1));
|
| + return this
|
| + }, d.off = c("removeListener"), d.addListeners = function(a, b) {
|
| + return this.manipulateListeners(!1, a, b)
|
| + }, d.removeListeners = function(a, b) {
|
| + return this.manipulateListeners(!0, a, b)
|
| + }, d.manipulateListeners = function(a, b, c) {
|
| + var d, e, f = a ? this.removeListener : this.addListener,
|
| + g = a ? this.removeListeners : this.addListeners;
|
| + if ("object" != typeof b || b instanceof RegExp)
|
| + for (d = c.length; d--;) f.call(this, b, c[d]);
|
| + else
|
| + for (d in b) b.hasOwnProperty(d) && (e = b[d]) && ("function" ==
|
| + typeof e ? f.call(this, d, e) : g.call(this, d, e));
|
| + return this
|
| + }, d.removeEvent = function(a) {
|
| + var b, c = typeof a,
|
| + d = this._getEvents();
|
| + if ("string" === c) delete d[a];
|
| + else if (a instanceof RegExp)
|
| + for (b in d) d.hasOwnProperty(b) && a.test(b) && delete d[b];
|
| + else delete this._events;
|
| + return this
|
| + }, d.removeAllListeners = c("removeEvent"), d.emitEvent = function(a, b) {
|
| + var c, d, e, f, g = this.getListenersAsObject(a);
|
| + for (e in g)
|
| + if (g.hasOwnProperty(e))
|
| + for (d = g[e].length; d--;) c = g[e][d], c.once === !0 &&
|
| + this.removeListener(a, c.listener), f = c.listener.apply(this,
|
| + b || []), f === this._getOnceReturnValue() &&
|
| + this.removeListener(a, c.listener);
|
| + return this
|
| + }, d.trigger = c("emitEvent"), d.emit = function(a) {
|
| + var b = Array.prototype.slice.call(arguments, 1);
|
| + return this.emitEvent(a, b)
|
| + }, d.setOnceReturnValue = function(a) {
|
| + return this._onceReturnValue = a, this
|
| + }, d._getOnceReturnValue = function() {
|
| + return this.hasOwnProperty("_onceReturnValue") ? this._onceReturnValue :
|
| + !0
|
| + }, d._getEvents = function() {
|
| + return this._events || (this._events = {})
|
| + }, a.noConflict = function() {
|
| + return e.EventEmitter = f, a
|
| + }, "function" == typeof define && define.amd ?
|
| + define("eventEmitter/EventEmitter", [], function() {
|
| + return a
|
| + }) : "object" == typeof module && module.exports ? module.exports = a :
|
| + e.EventEmitter = a
|
| +}.call(this),
|
| + function(a) {
|
| + function b(a) {
|
| + if (a) {
|
| + if ("string" == typeof d[a]) return a;
|
| + a = a.charAt(0).toUpperCase() + a.slice(1);
|
| + for (var b, e = 0, f = c.length; f > e; e++)
|
| + if (b = c[e] + a, "string" == typeof d[b]) return b
|
| + }
|
| + }
|
| + var c = "Webkit Moz ms Ms O".split(" "),
|
| + d = document.documentElement.style;
|
| + "function" == typeof define && define.amd ?
|
| + define("get-style-property/get-style-property", [], function() {
|
| + return b
|
| + }) : "object" == typeof exports ? module.exports = b :
|
| + a.getStyleProperty = b
|
| + }(window),
|
| + function(a) {
|
| + function b(a) {
|
| + var b = parseFloat(a),
|
| + c = -1 === a.indexOf("%") && !isNaN(b);
|
| + return c && b
|
| + }
|
| +
|
| + function c() {}
|
| +
|
| + function d() {
|
| + for (var a = {
|
| + width: 0,
|
| + height: 0,
|
| + innerWidth: 0,
|
| + innerHeight: 0,
|
| + outerWidth: 0,
|
| + outerHeight: 0
|
| + }, b = 0, c = g.length; c > b; b++) {
|
| + var d = g[b];
|
| + a[d] = 0
|
| + }
|
| + return a
|
| + }
|
| +
|
| + function e(c) {
|
| + function e() {
|
| + if (!m) {
|
| + m = !0;
|
| + var d = a.getComputedStyle;
|
| + if (j = function() {
|
| + var a = d ? function(a) {
|
| + return d(a, null)
|
| + } : function(a) {
|
| + return a.currentStyle
|
| + };
|
| + return function(b) {
|
| + var c = a(b);
|
| + return c || f("Style returned " + c), c
|
| + }
|
| + }(), k = c("boxSizing")) {
|
| + var e = document.createElement("div");
|
| + e.style.width = "200px",
|
| + e.style.padding = "1px 2px 3px 4px",
|
| + e.style.borderStyle = "solid",
|
| + e.style.borderWidth = "1px 2px 3px 4px", e.style[k] =
|
| + "border-box";
|
| + var g = document.body || document.documentElement;
|
| + g.appendChild(e);
|
| + var h = j(e);
|
| + l = 200 === b(h.width), g.removeChild(e)
|
| + }
|
| + }
|
| + }
|
| +
|
| + function h(a) {
|
| + if (e(), "string" == typeof a && (a =
|
| + document.querySelector(a)), a && "object" == typeof a &&
|
| + a.nodeType) {
|
| + var c = j(a);
|
| + if ("none" === c.display) return d();
|
| + var f = {};
|
| + f.width = a.offsetWidth, f.height = a.offsetHeight;
|
| + for (var h = f.isBorderBox = !(!k || !c[k] || "border-box"
|
| + !== c[k]), m = 0, n = g.length; n > m; m++) {
|
| + var o = g[m],
|
| + p = c[o];
|
| + p = i(a, p);
|
| + var q = parseFloat(p);
|
| + f[o] = isNaN(q) ? 0 : q
|
| + }
|
| + var r = f.paddingLeft + f.paddingRight,
|
| + s = f.paddingTop + f.paddingBottom,
|
| + t = f.marginLeft + f.marginRight,
|
| + u = f.marginTop + f.marginBottom,
|
| + v = f.borderLeftWidth + f.borderRightWidth,
|
| + w = f.borderTopWidth + f.borderBottomWidth,
|
| + x = h && l,
|
| + y = b(c.width);
|
| + y !== !1 && (f.width = y + (x ? 0 : r + v));
|
| + var z = b(c.height);
|
| + return z !== !1 && (f.height = z + (x ? 0 : s + w)),
|
| + f.innerWidth = f.width - (r + v), f.innerHeight = f.height -
|
| + (s + w), f.outerWidth = f.width + t, f.outerHeight =
|
| + f.height + u, f
|
| + }
|
| + }
|
| +
|
| + function i(b, c) {
|
| + if (a.getComputedStyle || -1 === c.indexOf("%")) return c;
|
| + var d = b.style,
|
| + e = d.left,
|
| + f = b.runtimeStyle,
|
| + g = f && f.left;
|
| + return g && (f.left = b.currentStyle.left), d.left = c, c =
|
| + d.pixelLeft, d.left = e, g && (f.left = g), c
|
| + }
|
| + var j, k, l, m = !1;
|
| + return h
|
| + }
|
| + var f = "undefined" == typeof console ? c : function(a) {
|
| + console.error(a)
|
| + },
|
| + g = ["paddingLeft", "paddingRight", "paddingTop", "paddingBottom",
|
| + "marginLeft", "marginRight", "marginTop", "marginBottom",
|
| + "borderLeftWidth", "borderRightWidth", "borderTopWidth",
|
| + "borderBottomWidth"];
|
| + "function" == typeof define && define.amd ? define("get-size/get-size",
|
| + ["get-style-property/get-style-property"], e) : "object" == typeof
|
| + exports ? module.exports = e(require("desandro-get-style-property")) :
|
| + a.getSize = e(a.getStyleProperty)
|
| + }(window),
|
| + function(a) {
|
| + function b(a, b) {
|
| + return a[g](b)
|
| + }
|
| +
|
| + function c(a) {
|
| + if (!a.parentNode) {
|
| + var b = document.createDocumentFragment();
|
| + b.appendChild(a)
|
| + }
|
| + }
|
| +
|
| + function d(a, b) {
|
| + c(a);
|
| + for (var d = a.parentNode.querySelectorAll(b), e = 0, f = d.length;
|
| + f > e; e++)
|
| + if (d[e] === a) return !0;
|
| + return !1
|
| + }
|
| +
|
| + function e(a, d) {
|
| + return c(a), b(a, d)
|
| + }
|
| + var f, g = function() {
|
| + if (a.matchesSelector) return "matchesSelector";
|
| + for (var b = ["webkit", "moz", "ms", "o"], c = 0, d = b.length; d >
|
| + c; c++) {
|
| + var e = b[c],
|
| + f = e + "MatchesSelector";
|
| + if (a[f]) return f
|
| + }
|
| + }();
|
| + if (g) {
|
| + var h = document.createElement("div"),
|
| + i = b(h, "div");
|
| + f = i ? b : e
|
| + } else f = d;
|
| + "function" == typeof define && define.amd ?
|
| + define("matches-selector/matches-selector", [], function() {
|
| + return f
|
| + }) : "object" == typeof exports ? module.exports = f :
|
| + window.matchesSelector = f
|
| + }(Element.prototype),
|
| + function(a) {
|
| + function b(a, b) {
|
| + for (var c in b) a[c] = b[c];
|
| + return a
|
| + }
|
| +
|
| + function c(a) {
|
| + for (var b in a) return !1;
|
| + return b = null, !0
|
| + }
|
| +
|
| + function d(a) {
|
| + return a.replace(/([A-Z])/g, function(a) {
|
| + return "-" + a.toLowerCase()
|
| + })
|
| + }
|
| +
|
| + function e(a, e, f) {
|
| + function h(a, b) {
|
| + a && (this.element = a, this.layout = b, this.position = {
|
| + x: 0,
|
| + y: 0
|
| + }, this._create())
|
| + }
|
| + var i = f("transition"),
|
| + j = f("transform"),
|
| + k = i && j,
|
| + l = !!f("perspective"),
|
| + m = {
|
| + WebkitTransition: "webkitTransitionEnd",
|
| + MozTransition: "transitionend",
|
| + OTransition: "otransitionend",
|
| + transition: "transitionend"
|
| + }[i],
|
| + n = ["transform", "transition", "transitionDuration",
|
| + "transitionProperty"],
|
| + o = function() {
|
| + for (var a = {}, b = 0, c = n.length; c > b; b++) {
|
| + var d = n[b],
|
| + e = f(d);
|
| + e && e !== d && (a[d] = e)
|
| + }
|
| + return a
|
| + }();
|
| + b(h.prototype, a.prototype), h.prototype._create = function() {
|
| + this._transn = {
|
| + ingProperties: {},
|
| + clean: {},
|
| + onEnd: {}
|
| + }, this.css({
|
| + position: "absolute"
|
| + })
|
| + }, h.prototype.handleEvent = function(a) {
|
| + var b = "on" + a.type;
|
| + this[b] && this[b](a)
|
| + }, h.prototype.getSize = function() {
|
| + this.size = e(this.element)
|
| + }, h.prototype.css = function(a) {
|
| + var b = this.element.style;
|
| + for (var c in a) {
|
| + var d = o[c] || c;
|
| + b[d] = a[c]
|
| + }
|
| + }, h.prototype.getPosition = function() {
|
| + var a = g(this.element),
|
| + b = this.layout.options,
|
| + c = b.isOriginLeft,
|
| + d = b.isOriginTop,
|
| + e = parseInt(a[c ? "left" : "right"], 10),
|
| + f = parseInt(a[d ? "top" : "bottom"], 10);
|
| + e = isNaN(e) ? 0 : e, f = isNaN(f) ? 0 : f;
|
| + var h = this.layout.size;
|
| + e -= c ? h.paddingLeft : h.paddingRight, f -= d ? h.paddingTop :
|
| + h.paddingBottom, this.position.x = e, this.position.y = f
|
| + }, h.prototype.layoutPosition = function() {
|
| + var a = this.layout.size,
|
| + b = this.layout.options,
|
| + c = {};
|
| + b.isOriginLeft ? (c.left = this.position.x + a.paddingLeft +
|
| + "px", c.right = "") : (c.right = this.position.x +
|
| + a.paddingRight + "px", c.left = ""), b.isOriginTop ?
|
| + (c.top = this.position.y + a.paddingTop + "px", c.bottom =
|
| + "") : (c.bottom = this.position.y + a.paddingBottom + "px",
|
| + c.top = ""), this.css(c), this.emitEvent("layout",
|
| + [this])
|
| + };
|
| + var p = l ? function(a, b) {
|
| + return "translate3d(" + a + "px, " + b + "px, 0)"
|
| + } : function(a, b) {
|
| + return "translate(" + a + "px, " + b + "px)"
|
| + };
|
| + h.prototype._transitionTo = function(a, b) {
|
| + this.getPosition();
|
| + var c = this.position.x,
|
| + d = this.position.y,
|
| + e = parseInt(a, 10),
|
| + f = parseInt(b, 10),
|
| + g = e === this.position.x && f === this.position.y;
|
| + if (this.setPosition(a, b), g && !this.isTransitioning) return
|
| + void this.layoutPosition();
|
| + var h = a - c,
|
| + i = b - d,
|
| + j = {},
|
| + k = this.layout.options;
|
| + h = k.isOriginLeft ? h : -h, i = k.isOriginTop ? i : -i,
|
| + j.transform = p(h, i), this.transition({
|
| + to: j,
|
| + onTransitionEnd: {
|
| + transform: this.layoutPosition
|
| + },
|
| + isCleaning: !0
|
| + })
|
| + }, h.prototype.goTo = function(a, b) {
|
| + this.setPosition(a, b), this.layoutPosition()
|
| + }, h.prototype.moveTo = k ? h.prototype._transitionTo :
|
| + h.prototype.goTo, h.prototype.setPosition = function(a, b) {
|
| + this.position.x = parseInt(a, 10), this.position.y = parseInt(b,
|
| + 10)
|
| + }, h.prototype._nonTransition = function(a) {
|
| + this.css(a.to), a.isCleaning && this._removeStyles(a.to);
|
| + for (var b in a.onTransitionEnd) a.onTransitionEnd[b].call(this)
|
| + }, h.prototype._transition = function(a) {
|
| + if (!parseFloat(this.layout.options.transitionDuration)) return
|
| + void this._nonTransition(a);
|
| + var b = this._transn;
|
| + for (var c in a.onTransitionEnd) b.onEnd[c] =
|
| + a.onTransitionEnd[c];
|
| + for (c in a.to) b.ingProperties[c] = !0, a.isCleaning &&
|
| + (b.clean[c] = !0);
|
| + if (a.from) {
|
| + this.css(a.from);
|
| + var d = this.element.offsetHeight;
|
| + d = null
|
| + }
|
| + this.enableTransition(a.to), this.css(a.to),
|
| + this.isTransitioning = !0
|
| + };
|
| + var q = j && d(j) + ",opacity";
|
| + h.prototype.enableTransition = function() {
|
| + this.isTransitioning || (this.css({
|
| + transitionProperty: q,
|
| + transitionDuration: this.layout.options.transitionDuration
|
| + }), this.element.addEventListener(m, this, !1))
|
| + }, h.prototype.transition = h.prototype[i ? "_transition" :
|
| + "_nonTransition"], h.prototype.onwebkitTransitionEnd = function(a) {
|
| + this.ontransitionend(a)
|
| + }, h.prototype.onotransitionend = function(a) {
|
| + this.ontransitionend(a)
|
| + };
|
| + var r = {
|
| + "-webkit-transform": "transform",
|
| + "-moz-transform": "transform",
|
| + "-o-transform": "transform"
|
| + };
|
| + h.prototype.ontransitionend = function(a) {
|
| + if (a.target === this.element) {
|
| + var b = this._transn,
|
| + d = r[a.propertyName] || a.propertyName;
|
| + if (delete b.ingProperties[d], c(b.ingProperties) &&
|
| + this.disableTransition(), d in b.clean &&
|
| + (this.element.style[a.propertyName] = "", delete
|
| + b.clean[d]), d in b.onEnd) {
|
| + var e = b.onEnd[d];
|
| + e.call(this), delete b.onEnd[d]
|
| + }
|
| + this.emitEvent("transitionEnd", [this])
|
| + }
|
| + }, h.prototype.disableTransition = function() {
|
| + this.removeTransitionStyles(),
|
| + this.element.removeEventListener(m, this, !1),
|
| + this.isTransitioning = !1
|
| + }, h.prototype._removeStyles = function(a) {
|
| + var b = {};
|
| + for (var c in a) b[c] = "";
|
| + this.css(b)
|
| + };
|
| + var s = {
|
| + transitionProperty: "",
|
| + transitionDuration: ""
|
| + };
|
| + return h.prototype.removeTransitionStyles = function() {
|
| + this.css(s)
|
| + }, h.prototype.removeElem = function() {
|
| + this.element.parentNode.removeChild(this.element),
|
| + this.emitEvent("remove", [this])
|
| + }, h.prototype.remove = function() {
|
| + if (!i || !parseFloat(this.layout.options.transitionDuration))
|
| + return void this.removeElem();
|
| + var a = this;
|
| + this.on("transitionEnd", function() {
|
| + return a.removeElem(), !0
|
| + }), this.hide()
|
| + }, h.prototype.reveal = function() {
|
| + delete this.isHidden, this.css({
|
| + display: ""
|
| + });
|
| + var a = this.layout.options;
|
| + this.transition({
|
| + from: a.hiddenStyle,
|
| + to: a.visibleStyle,
|
| + isCleaning: !0
|
| + })
|
| + }, h.prototype.hide = function() {
|
| + this.isHidden = !0, this.css({
|
| + display: ""
|
| + });
|
| + var a = this.layout.options;
|
| + this.transition({
|
| + from: a.visibleStyle,
|
| + to: a.hiddenStyle,
|
| + isCleaning: !0,
|
| + onTransitionEnd: {
|
| + opacity: function() {
|
| + this.isHidden && this.css({
|
| + display: "none"
|
| + })
|
| + }
|
| + }
|
| + })
|
| + }, h.prototype.destroy = function() {
|
| + this.css({
|
| + position: "",
|
| + left: "",
|
| + right: "",
|
| + top: "",
|
| + bottom: "",
|
| + transition: "",
|
| + transform: ""
|
| + })
|
| + }, h
|
| + }
|
| + var f = a.getComputedStyle,
|
| + g = f ? function(a) {
|
| + return f(a, null)
|
| + } : function(a) {
|
| + return a.currentStyle
|
| + };
|
| + "function" == typeof define && define.amd ? define("outlayer/item",
|
| + ["eventEmitter/EventEmitter", "get-size/get-size",
|
| + "get-style-property/get-style-property"], e) : "object" == typeof
|
| + exports ? module.exports = e(require("wolfy87-eventemitter"),
|
| + require("get-size"), require("desandro-get-style-property")) :
|
| + (a.Outlayer = {}, a.Outlayer.Item = e(a.EventEmitter, a.getSize,
|
| + a.getStyleProperty))
|
| + }(window),
|
| + function(a) {
|
| + function b(a, b) {
|
| + for (var c in b) a[c] = b[c];
|
| + return a
|
| + }
|
| +
|
| + function c(a) {
|
| + return "[object Array]" === l.call(a)
|
| + }
|
| +
|
| + function d(a) {
|
| + var b = [];
|
| + if (c(a)) b = a;
|
| + else if (a && "number" == typeof a.length)
|
| + for (var d = 0, e = a.length; e > d; d++) b.push(a[d]);
|
| + else b.push(a);
|
| + return b
|
| + }
|
| +
|
| + function e(a, b) {
|
| + var c = n(b, a); - 1 !== c && b.splice(c, 1)
|
| + }
|
| +
|
| + function f(a) {
|
| + return a.replace(/(.)([A-Z])/g, function(a, b, c) {
|
| + return b + "-" + c
|
| + }).toLowerCase()
|
| + }
|
| +
|
| + function g(c, g, l, n, o, p) {
|
| + function q(a, c) {
|
| + if ("string" == typeof a && (a = h.querySelector(a)), !a ||
|
| + !m(a)) return void(i && i.error("Bad " +
|
| + this.constructor.namespace + " element: " + a));
|
| + this.element = a, this.options = b({},
|
| + this.constructor.defaults), this.option(c);
|
| + var d = ++r;
|
| + this.element.outlayerGUID = d, s[d] = this, this._create(),
|
| + this.options.isInitLayout && this.layout()
|
| + }
|
| + var r = 0,
|
| + s = {};
|
| + return q.namespace = "outlayer", q.Item = p, q.defaults = {
|
| + containerStyle: {
|
| + position: "relative"
|
| + },
|
| + isInitLayout: !0,
|
| + isOriginLeft: !0,
|
| + isOriginTop: !0,
|
| + isResizeBound: !0,
|
| + isResizingContainer: !0,
|
| + transitionDuration: "0.4s",
|
| + hiddenStyle: {
|
| + opacity: 0,
|
| + transform: "scale(0.001)"
|
| + },
|
| + visibleStyle: {
|
| + opacity: 1,
|
| + transform: "scale(1)"
|
| + }
|
| + }, b(q.prototype, l.prototype), q.prototype.option = function(a) {
|
| + b(this.options, a)
|
| + }, q.prototype._create = function() {
|
| + this.reloadItems(), this.stamps = [],
|
| + this.stamp(this.options.stamp), b(this.element.style,
|
| + this.options.containerStyle), this.options.isResizeBound &&
|
| + this.bindResize()
|
| + }, q.prototype.reloadItems = function() {
|
| + this.items = this._itemize(this.element.children)
|
| + }, q.prototype._itemize = function(a) {
|
| + for (var b = this._filterFindItemElements(a), c =
|
| + this.constructor.Item, d = [], e = 0, f = b.length; f > e;
|
| + e++) {
|
| + var g = b[e],
|
| + h = new c(g, this);
|
| + d.push(h)
|
| + }
|
| + return d
|
| + }, q.prototype._filterFindItemElements = function(a) {
|
| + a = d(a);
|
| + for (var b = this.options.itemSelector, c = [], e = 0, f =
|
| + a.length; f > e; e++) {
|
| + var g = a[e];
|
| + if (m(g))
|
| + if (b) {
|
| + o(g, b) && c.push(g);
|
| + for (var h = g.querySelectorAll(b), i = 0, j =
|
| + h.length; j > i; i++) c.push(h[i])
|
| + } else c.push(g)
|
| + }
|
| + return c
|
| + }, q.prototype.getItemElements = function() {
|
| + for (var a = [], b = 0, c = this.items.length; c > b; b++)
|
| + a.push(this.items[b].element);
|
| + return a
|
| + }, q.prototype.layout = function() {
|
| + this._resetLayout(), this._manageStamps();
|
| + var a = void 0 !== this.options.isLayoutInstant ?
|
| + this.options.isLayoutInstant : !this._isLayoutInited;
|
| + this.layoutItems(this.items, a), this._isLayoutInited = !0
|
| + }, q.prototype._init = q.prototype.layout, q.prototype._resetLayout
|
| + = function() {
|
| + this.getSize()
|
| + }, q.prototype.getSize = function() {
|
| + this.size = n(this.element)
|
| + }, q.prototype._getMeasurement = function(a, b) {
|
| + var c, d = this.options[a];
|
| + d ? ("string" == typeof d ? c = this.element.querySelector(d) :
|
| + m(d) && (c = d), this[a] = c ? n(c)[b] : d) : this[a] = 0
|
| + }, q.prototype.layoutItems = function(a, b) {
|
| + a = this._getItemsForLayout(a), this._layoutItems(a, b),
|
| + this._postLayout()
|
| + }, q.prototype._getItemsForLayout = function(a) {
|
| + for (var b = [], c = 0, d = a.length; d > c; c++) {
|
| + var e = a[c];
|
| + e.isIgnored || b.push(e)
|
| + }
|
| + return b
|
| + }, q.prototype._layoutItems = function(a, b) {
|
| + function c() {
|
| + d.emitEvent("layoutComplete", [d, a])
|
| + }
|
| + var d = this;
|
| + if (!a || !a.length) return void c();
|
| + this._itemsOn(a, "layout", c);
|
| + for (var e = [], f = 0, g = a.length; g > f; f++) {
|
| + var h = a[f],
|
| + i = this._getItemLayoutPosition(h);
|
| + i.item = h, i.isInstant = b || h.isLayoutInstant, e.push(i)
|
| + }
|
| + this._processLayoutQueue(e)
|
| + }, q.prototype._getItemLayoutPosition = function() {
|
| + return {
|
| + x: 0,
|
| + y: 0
|
| + }
|
| + }, q.prototype._processLayoutQueue = function(a) {
|
| + for (var b = 0, c = a.length; c > b; b++) {
|
| + var d = a[b];
|
| + this._positionItem(d.item, d.x, d.y, d.isInstant)
|
| + }
|
| + }, q.prototype._positionItem = function(a, b, c, d) {
|
| + d ? a.goTo(b, c) : a.moveTo(b, c)
|
| + }, q.prototype._postLayout = function() {
|
| + this.resizeContainer()
|
| + }, q.prototype.resizeContainer = function() {
|
| + if (this.options.isResizingContainer) {
|
| + var a = this._getContainerSize();
|
| + a && (this._setContainerMeasure(a.width, !0),
|
| + this._setContainerMeasure(a.height, !1))
|
| + }
|
| + }, q.prototype._getContainerSize = k,
|
| + q.prototype._setContainerMeasure = function(a, b) {
|
| + if (void 0 !== a) {
|
| + var c = this.size;
|
| + c.isBorderBox && (a += b ? c.paddingLeft + c.paddingRight +
|
| + c.borderLeftWidth + c.borderRightWidth : c.paddingBottom
|
| + + c.paddingTop + c.borderTopWidth +
|
| + c.borderBottomWidth), a = Math.max(a, 0),
|
| + this.element.style[b ? "width" : "height"] = a + "px"
|
| + }
|
| + }, q.prototype._itemsOn = function(a, b, c) {
|
| + function d() {
|
| + return e++, e === f && c.call(g), !0
|
| + }
|
| + for (var e = 0, f = a.length, g = this, h = 0, i = a.length; i >
|
| + h; h++) {
|
| + var j = a[h];
|
| + j.on(b, d)
|
| + }
|
| + }, q.prototype.ignore = function(a) {
|
| + var b = this.getItem(a);
|
| + b && (b.isIgnored = !0)
|
| + }, q.prototype.unignore = function(a) {
|
| + var b = this.getItem(a);
|
| + b && delete b.isIgnored
|
| + }, q.prototype.stamp = function(a) {
|
| + if (a = this._find(a)) {
|
| + this.stamps = this.stamps.concat(a);
|
| + for (var b = 0, c = a.length; c > b; b++) {
|
| + var d = a[b];
|
| + this.ignore(d)
|
| + }
|
| + }
|
| + }, q.prototype.unstamp = function(a) {
|
| + if (a = this._find(a))
|
| + for (var b = 0, c = a.length; c > b; b++) {
|
| + var d = a[b];
|
| + e(d, this.stamps), this.unignore(d)
|
| + }
|
| + }, q.prototype._find = function(a) {
|
| + return a ? ("string" == typeof a && (a =
|
| + this.element.querySelectorAll(a)), a = d(a)) : void 0
|
| + }, q.prototype._manageStamps = function() {
|
| + if (this.stamps && this.stamps.length) {
|
| + this._getBoundingRect();
|
| + for (var a = 0, b = this.stamps.length; b > a; a++) {
|
| + var c = this.stamps[a];
|
| + this._manageStamp(c)
|
| + }
|
| + }
|
| + }, q.prototype._getBoundingRect = function() {
|
| + var a = this.element.getBoundingClientRect(),
|
| + b = this.size;
|
| + this._boundingRect = {
|
| + left: a.left + b.paddingLeft + b.borderLeftWidth,
|
| + top: a.top + b.paddingTop + b.borderTopWidth,
|
| + right: a.right - (b.paddingRight + b.borderRightWidth),
|
| + bottom: a.bottom - (b.paddingBottom + b.borderBottomWidth)
|
| + }
|
| + }, q.prototype._manageStamp = k, q.prototype._getElementOffset =
|
| + function(a) {
|
| + var b = a.getBoundingClientRect(),
|
| + c = this._boundingRect,
|
| + d = n(a),
|
| + e = {
|
| + left: b.left - c.left - d.marginLeft,
|
| + top: b.top - c.top - d.marginTop,
|
| + right: c.right - b.right - d.marginRight,
|
| + bottom: c.bottom - b.bottom - d.marginBottom
|
| + };
|
| + return e
|
| + }, q.prototype.handleEvent = function(a) {
|
| + var b = "on" + a.type;
|
| + this[b] && this[b](a)
|
| + }, q.prototype.bindResize = function() {
|
| + this.isResizeBound || (c.bind(a, "resize", this),
|
| + this.isResizeBound = !0)
|
| + }, q.prototype.unbindResize = function() {
|
| + this.isResizeBound && c.unbind(a, "resize", this),
|
| + this.isResizeBound = !1
|
| + }, q.prototype.onresize = function() {
|
| + function a() {
|
| + b.resize(), delete b.resizeTimeout
|
| + }
|
| + this.resizeTimeout && clearTimeout(this.resizeTimeout);
|
| + var b = this;
|
| + this.resizeTimeout = setTimeout(a, 100)
|
| + }, q.prototype.resize = function() {
|
| + this.isResizeBound && this.needsResizeLayout() && this.layout()
|
| + }, q.prototype.needsResizeLayout = function() {
|
| + var a = n(this.element),
|
| + b = this.size && a;
|
| + return b && a.innerWidth !== this.size.innerWidth
|
| + }, q.prototype.addItems = function(a) {
|
| + var b = this._itemize(a);
|
| + return b.length && (this.items = this.items.concat(b)), b
|
| + }, q.prototype.appended = function(a) {
|
| + var b = this.addItems(a);
|
| + b.length && (this.layoutItems(b, !0), this.reveal(b))
|
| + }, q.prototype.prepended = function(a) {
|
| + var b = this._itemize(a);
|
| + if (b.length) {
|
| + var c = this.items.slice(0);
|
| + this.items = b.concat(c), this._resetLayout(),
|
| + this._manageStamps(), this.layoutItems(b, !0),
|
| + this.reveal(b), this.layoutItems(c)
|
| + }
|
| + }, q.prototype.reveal = function(a) {
|
| + var b = a && a.length;
|
| + if (b)
|
| + for (var c = 0; b > c; c++) {
|
| + var d = a[c];
|
| + d.reveal()
|
| + }
|
| + }, q.prototype.hide = function(a) {
|
| + var b = a && a.length;
|
| + if (b)
|
| + for (var c = 0; b > c; c++) {
|
| + var d = a[c];
|
| + d.hide()
|
| + }
|
| + }, q.prototype.getItem = function(a) {
|
| + for (var b = 0, c = this.items.length; c > b; b++) {
|
| + var d = this.items[b];
|
| + if (d.element === a) return d
|
| + }
|
| + }, q.prototype.getItems = function(a) {
|
| + if (a && a.length) {
|
| + for (var b = [], c = 0, d = a.length; d > c; c++) {
|
| + var e = a[c],
|
| + f = this.getItem(e);
|
| + f && b.push(f)
|
| + }
|
| + return b
|
| + }
|
| + }, q.prototype.remove = function(a) {
|
| + a = d(a);
|
| + var b = this.getItems(a);
|
| + if (b && b.length) {
|
| + this._itemsOn(b, "remove", function() {
|
| + this.emitEvent("removeComplete", [this, b])
|
| + });
|
| + for (var c = 0, f = b.length; f > c; c++) {
|
| + var g = b[c];
|
| + g.remove(), e(g, this.items)
|
| + }
|
| + }
|
| + }, q.prototype.destroy = function() {
|
| + var a = this.element.style;
|
| + a.height = "", a.position = "", a.width = "";
|
| + for (var b = 0, c = this.items.length; c > b; b++) {
|
| + var d = this.items[b];
|
| + d.destroy()
|
| + }
|
| + this.unbindResize();
|
| + var e = this.element.outlayerGUID;
|
| + delete s[e], delete this.element.outlayerGUID, j &&
|
| + j.removeData(this.element, this.constructor.namespace)
|
| + }, q.data = function(a) {
|
| + var b = a && a.outlayerGUID;
|
| + return b && s[b]
|
| + }, q.create = function(a, c) {
|
| + function d() {
|
| + q.apply(this, arguments)
|
| + }
|
| + return Object.create ? d.prototype = Object.create(q.prototype)
|
| + : b(d.prototype, q.prototype), d.prototype.constructor = d,
|
| + d.defaults = b({}, q.defaults), b(d.defaults, c),
|
| + d.prototype.settings = {}, d.namespace = a, d.data = q.data,
|
| + d.Item = function() {
|
| + p.apply(this, arguments)
|
| + }, d.Item.prototype = new p, g(function() {
|
| + for (var b = f(a), c = h.querySelectorAll(".js-" + b), e =
|
| + "data-" + b + "-options", g = 0, k = c.length; k > g;
|
| + g++) {
|
| + var l, m = c[g],
|
| + n = m.getAttribute(e);
|
| + try {
|
| + l = n && JSON.parse(n)
|
| + } catch (o) {
|
| + i && i.error("Error parsing " + e + " on " +
|
| + m.nodeName.toLowerCase() + (m.id ? "#" + m.id :
|
| + "") + ": " + o);
|
| + continue
|
| + }
|
| + var p = new d(m, l);
|
| + j && j.data(m, a, p)
|
| + }
|
| + }), j && j.bridget && j.bridget(a, d), d
|
| + }, q.Item = p, q
|
| + }
|
| + var h = a.document,
|
| + i = a.console,
|
| + j = a.jQuery,
|
| + k = function() {},
|
| + l = Object.prototype.toString,
|
| + m = "function" == typeof HTMLElement || "object" == typeof
|
| + HTMLElement ? function(a) {
|
| + return a instanceof HTMLElement
|
| + } : function(a) {
|
| + return a && "object" == typeof a && 1 === a.nodeType && "string"
|
| + == typeof a.nodeName
|
| + },
|
| + n = Array.prototype.indexOf ? function(a, b) {
|
| + return a.indexOf(b)
|
| + } : function(a, b) {
|
| + for (var c = 0, d = a.length; d > c; c++)
|
| + if (a[c] === b) return c;
|
| + return -1
|
| + };
|
| + "function" == typeof define && define.amd ? define("outlayer/outlayer",
|
| + ["eventie/eventie", "doc-ready/doc-ready",
|
| + "eventEmitter/EventEmitter", "get-size/get-size",
|
| + "matches-selector/matches-selector", "./item"], g) : "object" ==
|
| + typeof exports ? module.exports = g(require("eventie"),
|
| + require("doc-ready"), require("wolfy87-eventemitter"),
|
| + require("get-size"), require("desandro-matches-selector"),
|
| + require("./item")) : a.Outlayer = g(a.eventie, a.docReady,
|
| + a.EventEmitter, a.getSize, a.matchesSelector, a.Outlayer.Item)
|
| + }(window),
|
| + function(a) {
|
| + function b(a, b) {
|
| + var d = a.create("masonry");
|
| + return d.prototype._resetLayout = function() {
|
| + this.getSize(), this._getMeasurement("columnWidth",
|
| + "outerWidth"), this._getMeasurement("gutter", "outerWidth"),
|
| + this.measureColumns();
|
| + var a = this.cols;
|
| + for (this.colYs = []; a--;) this.colYs.push(0);
|
| + this.maxY = 0
|
| + }, d.prototype.measureColumns = function() {
|
| + if (this.getContainerWidth(), !this.columnWidth) {
|
| + var a = this.items[0],
|
| + c = a && a.element;
|
| + this.columnWidth = c && b(c).outerWidth ||
|
| + this.containerWidth
|
| + }
|
| + this.columnWidth += this.gutter, this.cols =
|
| + Math.floor((this.containerWidth + this.gutter) /
|
| + this.columnWidth), this.cols = Math.max(this.cols, 1)
|
| + }, d.prototype.getContainerWidth = function() {
|
| + var a = this.options.isFitWidth ? this.element.parentNode :
|
| + this.element,
|
| + c = b(a);
|
| + this.containerWidth = c && c.innerWidth
|
| + }, d.prototype._getItemLayoutPosition = function(a) {
|
| + a.getSize();
|
| + var b = a.size.outerWidth % this.columnWidth,
|
| + d = b && 1 > b ? "round" : "ceil",
|
| + e = Math[d](a.size.outerWidth / this.columnWidth);
|
| + e = Math.min(e, this.cols);
|
| + for (var f = this._getColGroup(e), g = Math.min.apply(Math, f),
|
| + h = c(f, g), i = {
|
| + x: this.columnWidth * h,
|
| + y: g
|
| + }, j = g + a.size.outerHeight, k = this.cols + 1 - f.length,
|
| + l = 0; k > l; l++) this.colYs[h + l] = j;
|
| + return i
|
| + }, d.prototype._getColGroup = function(a) {
|
| + if (2 > a) return this.colYs;
|
| + for (var b = [], c = this.cols + 1 - a, d = 0; c > d; d++) {
|
| + var e = this.colYs.slice(d, d + a);
|
| + b[d] = Math.max.apply(Math, e)
|
| + }
|
| + return b
|
| + }, d.prototype._manageStamp = function(a) {
|
| + var c = b(a),
|
| + d = this._getElementOffset(a),
|
| + e = this.options.isOriginLeft ? d.left : d.right,
|
| + f = e + c.outerWidth,
|
| + g = Math.floor(e / this.columnWidth);
|
| + g = Math.max(0, g);
|
| + var h = Math.floor(f / this.columnWidth);
|
| + h -= f % this.columnWidth ? 0 : 1, h = Math.min(this.cols - 1,
|
| + h);
|
| + for (var i = (this.options.isOriginTop ? d.top : d.bottom) +
|
| + c.outerHeight, j = g; h >= j; j++) this.colYs[j] =
|
| + Math.max(i, this.colYs[j])
|
| + }, d.prototype._getContainerSize = function() {
|
| + this.maxY = Math.max.apply(Math, this.colYs);
|
| + var a = {
|
| + height: this.maxY
|
| + };
|
| + return this.options.isFitWidth && (a.width =
|
| + this._getContainerFitWidth()), a
|
| + }, d.prototype._getContainerFitWidth = function() {
|
| + for (var a = 0, b = this.cols; --b && 0 === this.colYs[b];) a++;
|
| + return (this.cols - a) * this.columnWidth - this.gutter
|
| + }, d.prototype.needsResizeLayout = function() {
|
| + var a = this.containerWidth;
|
| + return this.getContainerWidth(), a !== this.containerWidth
|
| + }, d
|
| + }
|
| + var c = Array.prototype.indexOf ? function(a, b) {
|
| + return a.indexOf(b)
|
| + } : function(a, b) {
|
| + for (var c = 0, d = a.length; d > c; c++) {
|
| + var e = a[c];
|
| + if (e === b) return c
|
| + }
|
| + return -1
|
| + };
|
| + "function" == typeof define && define.amd ? define(["outlayer/outlayer",
|
| + "get-size/get-size"], b) : "object" == typeof exports ?
|
| + module.exports = b(require("outlayer"), require("get-size")) :
|
| + a.Masonry = b(a.Outlayer, a.getSize)
|
| + }(window);
|
| +var container = document.querySelector('#container');
|
| +var item = container.children[0];
|
| +for (var i = 0; i < 100; ++i) {
|
| + container.appendChild(item.cloneNode(true));
|
| +}
|
| +document.body.style.display = 'block';
|
| +window.done = false;
|
| +window.brick = function() {
|
| + var mason = new Masonry(container, {
|
| + itemSelector: '.item',
|
| + });
|
| + requestAnimationFrame(function() {
|
| + mason.element.style.maxWidth = '950px';
|
| + mason.layout();
|
| + requestAnimationFrame(function() {
|
| + window.done = true;
|
| + });
|
| + });
|
| +};
|
| +</script>
|
|
|