/*! UIkit 2.26.4 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ (function(UI) { "use strict"; var stacks = []; UI.component('stackMargin', { defaults: { cls: 'uk-margin-small-top', rowfirst: false, observe: false }, boot: function() { // init code UI.ready(function(context) { UI.$("[data-uk-margin]", context).each(function() { var ele = UI.$(this); if (!ele.data("stackMargin")) { UI.stackMargin(ele, UI.Utils.options(ele.attr("data-uk-margin"))); } }); }); }, init: function() { var $this = this; UI.$win.on('resize orientationchange', (function() { var fn = function() { $this.process(); }; UI.$(function() { fn(); UI.$win.on("load", fn); }); return UI.Utils.debounce(fn, 20); })()); this.on("display.uk.check", function(e) { if (this.element.is(":visible")) this.process(); }.bind(this)); if (this.options.observe) { UI.domObserve(this.element, function(e) { if ($this.element.is(":visible")) $this.process(); }); } stacks.push(this); }, process: function() { var $this = this, columns = this.element.children(); UI.Utils.stackMargin(columns, this.options); if (!this.options.rowfirst || !columns.length) { return this; } // Mark first column elements var group = {}, minleft = false; columns.removeClass(this.options.rowfirst).each(function(offset, $ele){ $ele = UI.$(this); if (this.style.display != 'none') { offset = $ele.offset().left; ((group[offset] = group[offset] || []) && group[offset]).push(this); minleft = minleft === false ? offset : Math.min(minleft, offset); } }); UI.$(group[minleft]).addClass(this.options.rowfirst); return this; } }); // responsive element e.g. iframes (function(){ var elements = [], check = function(ele) { if (!ele.is(':visible')) return; var width = ele.parent().width(), iwidth = ele.data('width'), ratio = (width / iwidth), height = Math.floor(ratio * ele.data('height')); ele.css({'height': (width < iwidth) ? height : ele.data('height')}); }; UI.component('responsiveElement', { defaults: {}, boot: function() { // init code UI.ready(function(context) { UI.$("iframe.uk-responsive-width, [data-uk-responsive]", context).each(function() { var ele = UI.$(this), obj; if (!ele.data("responsiveElement")) { obj = UI.responsiveElement(ele, {}); } }); }); }, init: function() { var ele = this.element; if (ele.attr('width') && ele.attr('height')) { ele.data({ 'width' : ele.attr('width'), 'height': ele.attr('height') }).on('display.uk.check', function(){ check(ele); }); check(ele); elements.push(ele); } } }); UI.$win.on('resize load', UI.Utils.debounce(function(){ elements.forEach(function(ele){ check(ele); }); }, 15)); })(); // helper UI.Utils.stackMargin = function(elements, options) { options = UI.$.extend({ 'cls': 'uk-margin-small-top' }, options); elements = UI.$(elements).removeClass(options.cls); var min = false; elements.each(function(offset, height, pos, $ele){ $ele = UI.$(this); if ($ele.css('display') != 'none') { offset = $ele.offset(); height = $ele.outerHeight(); pos = offset.top + height; $ele.data({ 'ukMarginPos': pos, 'ukMarginTop': offset.top }); if (min === false || (offset.top < min.top) ) { min = { top : offset.top, left : offset.left, pos : pos }; } } }).each(function($ele) { $ele = UI.$(this); if ($ele.css('display') != 'none' && $ele.data('ukMarginTop') > min.top && $ele.data('ukMarginPos') > min.pos) { $ele.addClass(options.cls); } }); }; UI.Utils.matchHeights = function(elements, options) { elements = UI.$(elements).css('min-height', ''); options = UI.$.extend({ row : true }, options); var matchHeights = function(group){ if (group.length < 2) return; var max = 0; group.each(function() { max = Math.max(max, UI.$(this).outerHeight()); }).each(function() { var element = UI.$(this), height = max - (element.css('box-sizing') == 'border-box' ? 0 : (element.outerHeight() - element.height())); element.css('min-height', height + 'px'); }); }; if (options.row) { elements.first().width(); // force redraw setTimeout(function(){ var lastoffset = false, group = []; elements.each(function() { var ele = UI.$(this), offset = ele.offset().top; if (offset != lastoffset && group.length) { matchHeights(UI.$(group)); group = []; offset = ele.offset().top; } group.push(ele); lastoffset = offset; }); if (group.length) { matchHeights(UI.$(group)); } }, 0); } else { matchHeights(elements); } }; (function(cacheSvgs){ UI.Utils.inlineSvg = function(selector, root) { var images = UI.$(selector || 'img[src$=".svg"]', root || document).each(function(){ var img = UI.$(this), src = img.attr('src'); if (!cacheSvgs[src]) { var d = UI.$.Deferred(); UI.$.get(src, {nc: Math.random()}, function(data){ d.resolve(UI.$(data).find('svg')); }); cacheSvgs[src] = d.promise(); } cacheSvgs[src].then(function(svg) { var $svg = UI.$(svg).clone(); if (img.attr('id')) $svg.attr('id', img.attr('id')); if (img.attr('class')) $svg.attr('class', img.attr('class')); if (img.attr('style')) $svg.attr('style', img.attr('style')); if (img.attr('width')) { $svg.attr('width', img.attr('width')); if (!img.attr('height')) $svg.removeAttr('height'); } if (img.attr('height')){ $svg.attr('height', img.attr('height')); if (!img.attr('width')) $svg.removeAttr('width'); } img.replaceWith($svg); }); }); }; // init code UI.ready(function(context) { UI.Utils.inlineSvg('[data-uk-svg]', context); }); })({}); })(UIkit);