%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/tjamichg/intranet.tjamich.gob.mx/intranet/common/vendors/isotope/js/
Upload File :
Create Path :
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);

Zerion Mini Shell 1.0