{"version":3,"names":["factory","define","amd","jQuery","$","Mosaicflow","container","options","this","trigger","init","dataToOptions","elem","upper","m","l","toUpper","data","key","replace","getImageSizes","image","sizes","height","parseInt","attr","width","utilImage","Image","src","cnt","fn","mosaicflow","args","Array","prototype","slice","call","arguments","each","elm","extend","defaults","itemSelector","columnClass","minItemWidth","minColumns","itemHeightCalculation","threshold","__uid","__uidItemCounter","items","find","columns","columnsHeights","itemsHeights","tempContainer","css","visibility","workOnTemp","autoCalculation","after","that","id","generateUniqueId","refill","window","resize","proxy","numberOfColumns","Math","floor","max","dfbmPhp","cMax","needToRefill","ensureColumns","fillColumns","filter","length","remove","sessionStorage","getItem","addClass","parent","inner","children","apply","map","innerHeight","get","createdCnt","calculatedCnt","workingContainer","neededCnt","columnIdx","column","class","append","lastColumn","eq","hide","diff","splice","columnsCnt","itemsCnt","itemIdx","item","outerHeight","levelBottomEdge","lowestColumn","inArray","min","highestColumn","lastInHighestColumn","last","lastInHighestColumnHeight","lowestHeight","highestHeight","newLowestHeight","add","position","display","appendTo","inlineImages","imageSizes","actualHeight","detach","push","parents","index","not","empty","recomputeHeights","computeHeight","idx"],"sources":["dfbm-masonry.js"],"sourcesContent":["/**\n * Mosaic Flow\n *\n * Pinterest like responsive image grid that doesn’t sucks\n *\n * @requires jQuery\n * @author Artem Sapegin\n * @copyright 2012 Artem Sapegin, http://sapegin.me\n * @license MIT\n *\n * This is a custom version of this plugin, to work nicely with Divi and the Plugin \"Divi - Filterable Blog Module\" by Bruno Bouyajdad from https://indikator-design.com\n *\n */\n\n/*jshint browser:true, jquery:true, white:false, smarttabs:true */\n/*global jQuery:false, define:false*/\n(function(factory) { // Try to register as an anonymous AMD module\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n }\n else {\n factory(jQuery);\n }\n}(function($) {\n 'use strict';\n var cnt = 0;\n\n $.fn.mosaicflow = function(options) {\n var args = Array.prototype.slice.call(arguments, 0);\n\n return this.each(function() {\n var elm = $(this);\n var data = elm.data('mosaicflow');\n\n if (!data) {\n options = $.extend({}, $.fn.mosaicflow.defaults, options, dataToOptions(elm));\n data = new Mosaicflow(elm, options);\n elm.data('mosaicflow', data);\n }\n else if (typeof options === 'string') {\n data[options](args[1]);\n }\n });\n };\n\n $.fn.mosaicflow.defaults = {\n itemSelector: '> *',\n columnClass: 'mosaicflow__column',\n minItemWidth: 240,\n minColumns: 2,\n itemHeightCalculation: 'auto',\n threshold: 40\n };\n\n function Mosaicflow(container, options) {\n this.container = container;\n this.options = options;\n\n this.container.trigger('mosaicflow-start');\n this.init();\n this.container.trigger('mosaicflow-ready');\n }\n\n Mosaicflow.prototype = {\n init: function() {\n this.__uid = cnt++;\n this.__uidItemCounter = 0;\n this.items = this.container.find(this.options.itemSelector);\n this.columns = $([]);\n this.columnsHeights = [];\n this.itemsHeights = {};\n this.tempContainer = $('
').css({'visibility': 'hidden', 'width': '100%'});\n this.workOnTemp = false;\n this.autoCalculation = this.options.itemHeightCalculation === 'auto';\n\n this.container.after(this.tempContainer);\n\n var that = this;\n this.items.each(function() {\n var elm = $(this);\n var id = elm.attr('id');\n\n if (!id) {\n // Generate an unique id\n id = that.generateUniqueId();\n elm.attr('id', id);\n }\n });\n\n this.container.css('visibility', 'hidden');\n // if (this.autoCalculation) {\n // $(window).on('load', $.proxy(this.refill, this));\n // }\n // else {\n this.refill();\n // }\n $(window).resize($.proxy(this.refill, this));\n },\n\n refill: function() {\n this.container.trigger('mosaicflow-fill');\n this.numberOfColumns = Math.floor(this.container.width() / this.options.minItemWidth);\n\n var max = parseInt( dfbmPhp.cMax );\n\n if ( $(window).width() < 768 ) this.numberOfColumns = 1;\n if ( $(window).width() > 767 && this.numberOfColumns < 2 ) this.numberOfColumns = 2;\n if ( $(window).width() > 767 && this.numberOfColumns > max ) this.numberOfColumns = max;\n\n // Always keep min columns number\n if (this.numberOfColumns < this.options.minColumns)\n this.numberOfColumns = this.options.minColumns;\n\n var needToRefill = this.ensureColumns();\n if (needToRefill) {\n this.fillColumns();\n\n // Remove excess columns, only if there are visible columns remaining\n if (this.columns.filter(':visible').length > 0) {\n this.columns.filter(':hidden').remove();\n }\n }\n\n if ( ! window.sessionStorage.getItem( 'dfbmAddMore' ) && ! window.sessionStorage.getItem( 'dfbmRedirect' ) )\n {\n\n this.container.trigger( 'adjust-scroll-top' );\n\n this.container.addClass( 'completed' ).css('visibility', 'visible').parent().addClass( 'completed' );\n\n }\n\n// to add for the next update\n// console.log('triggered');\nvar inner = $( '#dfbm-container' ).children( '.filterable-blogposts' ).find( 'div.inner' ),\nheight = Math.max.apply(null, inner.map(function ()\n{\n\n return $(this).innerHeight();\n\n}).get());\n\ninner.css( 'height', height );\n\n this.container.trigger('mosaicflow-filled');\n },\n\n ensureColumns: function() {\n var createdCnt = this.columns.filter(':visible').length;\n var calculatedCnt = this.numberOfColumns;\n\n this.workingContainer = createdCnt === 0 ? this.tempContainer : this.container;\n\n if (calculatedCnt > createdCnt) {\n var neededCnt = calculatedCnt - createdCnt;\n for (var columnIdx = 0; columnIdx < neededCnt; columnIdx++) {\n var column = $('
', {\n 'class': this.options.columnClass\n });\n\n this.workingContainer.append(column);\n }\n }\n else if (calculatedCnt < createdCnt) {\n var lastColumn = createdCnt;\n while (calculatedCnt <= lastColumn) {\n // We can't remove columns here becase it will remove items to. So we hide it and will remove later.\n this.columns.eq(lastColumn).hide();\n lastColumn--;\n }\n\n var diff = createdCnt - calculatedCnt;\n this.columnsHeights.splice(this.columnsHeights.length - diff, diff);\n }\n\n if (calculatedCnt !== createdCnt) {\n this.columns = this.workingContainer.find('.' + this.options.columnClass);\n this.columns.css('width', (100 / calculatedCnt) + '%');\n return true;\n }\n\n return false;\n },\n\n fillColumns: function() {\n var columnsCnt = this.numberOfColumns;\n\n var itemsCnt = this.items.length;\n\n for (var columnIdx = 0; columnIdx < columnsCnt; columnIdx++) {\n var column = this.columns.eq(columnIdx);\n\n this.columnsHeights[columnIdx] = 0;\n\n for (var itemIdx = columnIdx; itemIdx < itemsCnt; itemIdx += columnsCnt) {\n\n var item = this.items.eq(itemIdx);\n var height = 0;\n\n column.append(item);\n\n if (this.autoCalculation) {\n // Check height after being placed in its column\n height = item.outerHeight();\n }\n else {\n // Read img height attribute\n height = parseInt(item.find('img').attr('height'), 10);\n }\n\n this.itemsHeights[item.attr('id')] = height;\n this.columnsHeights[columnIdx] += height;\n }\n }\n\n this.levelBottomEdge(this.itemsHeights, this.columnsHeights);\n\n if (this.workingContainer === this.tempContainer) {\n this.container.append(this.tempContainer.children());\n }\n this.container.trigger('mosaicflow-layout');\n },\n\n levelBottomEdge: function(itemsHeights, columnsHeights) {\n while (true) {\n var lowestColumn = $.inArray(Math.min.apply(null, columnsHeights), columnsHeights);\n var highestColumn = $.inArray(Math.max.apply(null, columnsHeights), columnsHeights);\n if (lowestColumn === highestColumn) return;\n\n var lastInHighestColumn = this.columns.eq(highestColumn).children().last();\n var lastInHighestColumnHeight = itemsHeights[lastInHighestColumn.attr('id')];\n var lowestHeight = columnsHeights[lowestColumn];\n var highestHeight = columnsHeights[highestColumn];\n var newLowestHeight = lowestHeight + lastInHighestColumnHeight;\n\n if (newLowestHeight >= highestHeight) return;\n\n if (highestHeight - newLowestHeight < this.options.threshold) return;\n\n this.columns.eq(lowestColumn).append(lastInHighestColumn);\n columnsHeights[highestColumn] -= lastInHighestColumnHeight;\n columnsHeights[lowestColumn] += lastInHighestColumnHeight;\n }\n },\n\n add: function(elm) {\n this.container.trigger('mosaicflow-item-add', [elm]);\n var lowestColumn = $.inArray(Math.min.apply(null, this.columnsHeights), this.columnsHeights);\n var height = 0;\n\n if (this.autoCalculation) {\n\n // Get height of elm\n elm.css({\n position: 'static',\n visibility: 'hidden',\n display: 'block'\n }).appendTo(this.columns.eq(lowestColumn));\n\n height = elm.outerHeight();\n\n var inlineImages = elm.find('img');\n if (inlineImages.length !== 0) {\n inlineImages.each(function() {\n var image = $(this);\n var imageSizes = getImageSizes(image);\n var actualHeight = (image.width() * imageSizes.height) / imageSizes.width;\n\n height += actualHeight;\n });\n }\n\n elm.detach().css({\n position: 'static',\n visibility: 'visible'\n });\n }\n else {\n height = parseInt(elm.find('img').attr('height'), 10);\n }\n\n if (!elm.attr('id')) {\n // Generate a unique id\n elm.attr('id', this.generateUniqueId());\n }\n\n // Update item collection.\n // Item needs to be placed at the end of this.items to keep order of elements\n\n this.items.push( elm[0] ); // Fixed adding array to array\n\n this.itemsHeights[elm.attr('id')] = height;\n this.columnsHeights[lowestColumn] += height;\n this.columns.eq(lowestColumn).append(elm);\n\n this.levelBottomEdge(this.itemsHeights, this.columnsHeights);\n this.container.trigger('mosaicflow-layout');\n this.container.trigger('mosaicflow-item-added', [elm]);\n },\n\n remove: function(elm) {\n this.container.trigger('mosaicflow-item-remove', [elm]);\n var column = elm.parents('.' + this.options.columnClass);\n\n // Update column height\n this.columnsHeights[column.index() - 1] -= this.itemsHeights[elm.attr('id')];\n\n elm.detach();\n\n // Update item collection\n this.items = this.items.not(elm);\n this.levelBottomEdge(this.itemsHeights, this.columnsHeights);\n this.container.trigger('mosaicflow-layout');\n this.container.trigger('mosaicflow-item-removed', [elm]);\n },\n\n empty: function() {\n var columnsCnt = this.numberOfColumns;\n\n this.items = $([]);\n this.itemsHeights = {};\n\n for (var columnIdx = 0; columnIdx < columnsCnt; columnIdx++) {\n var column = this.columns.eq(columnIdx);\n this.columnsHeights[columnIdx] = 0;\n column.empty();\n }\n this.container.trigger('mosaicflow-layout');\n },\n\n recomputeHeights: function() {\n function computeHeight(idx, item) {\n item = $(item);\n var height = 0;\n if (that.autoCalculation) {\n // Check height after being placed in its column\n height = item.outerHeight();\n }\n else {\n // Read img height attribute\n height = parseInt(item.find('img').attr('height'), 10);\n }\n\n that.itemsHeights[item.attr('id')] = height;\n that.columnsHeights[columnIdx] += height;\n }\n\n var that = this;\n var columnsCnt = this.numberOfColumns;\n\n for (var columnIdx = 0; columnIdx < columnsCnt; columnIdx++) {\n var column = this.columns.eq(columnIdx);\n\n this.columnsHeights[columnIdx] = 0;\n column.children().each(computeHeight);\n }\n },\n\n generateUniqueId: function() {\n // Increment the counter\n this.__uidItemCounter++;\n\n // Return an unique ID\n return 'mosaic-' + this.__uid + '-itemid-' + this.__uidItemCounter;\n }\n };\n\n // Camelize data-attributes\n function dataToOptions(elem) {\n function upper(m, l) {\n return l.toUpper();\n }\n var options = {};\n var data = elem.data();\n for (var key in data) {\n options[key.replace(/-(\\w)/g, upper)] = data[key];\n }\n return options;\n }\n\n function getImageSizes(image) {\n var sizes = {};\n\n sizes.height = parseInt(image.attr('height'), 10);\n sizes.width = parseInt(image.attr('width'), 10);\n\n if (sizes.height === 0 || sizes.width === 0) {\n var utilImage = new Image();\n utilImage.src = image.attr('src');\n\n sizes.width = utilImage.width;\n sizes.height = utilImage.height;\n }\n\n return sizes;\n }\n\n // Auto init\n // $(function() { $('.mosaicflow').mosaicflow(); });\n\n}));\n"],"mappings":"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"}