%PDF- %PDF-
| Direktori : /home/tjamichg/intranet.tjamich.gob.mx/intranet/common/vendors/isotope/js/ |
| Current File : /home/tjamichg/intranet.tjamich.gob.mx/intranet/common/vendors/isotope/js/layout-mode.js |
(function (window) {
'use strict';
// -------------------------- -------------------------- //
function layoutModeDefinition(getSize, Outlayer) {
// layout mode class
function LayoutMode(isotope) {
this.isotope = isotope;
// link properties
if (isotope) {
this.options = isotope.options[ this.namespace ];
this.element = isotope.element;
this.items = isotope.filteredItems;
this.size = isotope.size;
}
}
/**
* some methods should just defer to default Outlayer method
* and reference the Isotope instance as `this`
**/
(function () {
var facadeMethods = [
'_resetLayout',
'_getItemLayoutPosition',
'_manageStamp',
'_getContainerSize',
'_getElementOffset',
'needsResizeLayout'
];
for (var i = 0, len = facadeMethods.length; i < len; i++) {
var methodName = facadeMethods[i];
LayoutMode.prototype[ methodName ] = getOutlayerMethod(methodName);
}
function getOutlayerMethod(methodName) {
return function () {
return Outlayer.prototype[ methodName ].apply(this.isotope, arguments);
};
}
})();
// ----- ----- //
// for horizontal layout modes, check vertical size
LayoutMode.prototype.needsVerticalResizeLayout = function () {
// don't trigger if size did not change
var size = getSize(this.isotope.element);
// check that this.size and size are there
// IE8 triggers resize on body size change, so they might not be
var hasSizes = this.isotope.size && size;
return hasSizes && size.innerHeight !== this.isotope.size.innerHeight;
};
// ----- measurements ----- //
LayoutMode.prototype._getMeasurement = function () {
this.isotope._getMeasurement.apply(this, arguments);
};
LayoutMode.prototype.getColumnWidth = function () {
this.getSegmentSize('column', 'Width');
};
LayoutMode.prototype.getRowHeight = function () {
this.getSegmentSize('row', 'Height');
};
/**
* get columnWidth or rowHeight
* segment: 'column' or 'row'
* size 'Width' or 'Height'
**/
LayoutMode.prototype.getSegmentSize = function (segment, size) {
var segmentName = segment + size;
var outerSize = 'outer' + size;
// columnWidth / outerWidth // rowHeight / outerHeight
this._getMeasurement(segmentName, outerSize);
// got rowHeight or columnWidth, we can chill
if (this[ segmentName ]) {
return;
}
// fall back to item of first element
var firstItemSize = this.getFirstItemSize();
this[ segmentName ] = firstItemSize && firstItemSize[ outerSize ] ||
// or size of container
this.isotope.size[ 'inner' + size ];
};
LayoutMode.prototype.getFirstItemSize = function () {
var firstItem = this.isotope.filteredItems[0];
return firstItem && firstItem.element && getSize(firstItem.element);
};
// ----- methods that should reference isotope ----- //
LayoutMode.prototype.layout = function () {
this.isotope.layout.apply(this.isotope, arguments);
};
LayoutMode.prototype.getSize = function () {
this.isotope.getSize();
this.size = this.isotope.size;
};
// -------------------------- create -------------------------- //
LayoutMode.modes = {};
LayoutMode.create = function (namespace, options) {
function Mode() {
LayoutMode.apply(this, arguments);
}
Mode.prototype = new LayoutMode();
// default options
if (options) {
Mode.options = options;
}
Mode.prototype.namespace = namespace;
// register in Isotope
LayoutMode.modes[ namespace ] = Mode;
return Mode;
};
return LayoutMode;
}
if (typeof define === 'function' && define.amd) {
// AMD
define([
'get-size/get-size',
'outlayer/outlayer'
],
layoutModeDefinition);
} else {
// browser global
window.Isotope = window.Isotope || {};
window.Isotope.LayoutMode = layoutModeDefinition(
window.getSize,
window.Outlayer
);
}
})(window);