/*! UIkit 3.0.0-beta.20 | http://www.getuikit.com | (c) 2014 - 2017 YOOtheme | MIT License */ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) : typeof define === 'function' && define.amd ? define('uikit', ['jquery'], factory) : (global.UIkit = factory(global.jQuery)); }(this, (function ($) { 'use strict'; var $__default = 'default' in $ ? $['default'] : $; var win = $__default(window); var doc = $__default(document); var docElement = $__default(document.documentElement); var isRtl = $__default('html').attr('dir') === 'rtl'; function isReady() { return document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll; } function ready(fn) { var handle = function () { off(document, 'DOMContentLoaded', handle); off(window, 'load', handle); fn(); }; if (isReady()) { fn(); } else { on(document, 'DOMContentLoaded', handle); on(window, 'load', handle); } } function on(el, type, listener, useCapture) { toNode(el).addEventListener(type, listener, useCapture) } function off(el, type, listener, useCapture) { toNode(el).removeEventListener(type, listener, useCapture) } function transition(element, props, duration, transition) { if ( duration === void 0 ) duration = 400; if ( transition === void 0 ) transition = 'linear'; var p = promise(function (resolve, reject) { element = $__default(element); for (var name in props) { element.css(name, element.css(name)); } var timer = setTimeout(function () { return element.trigger(transitionend || 'transitionend'); }, duration); element .one(transitionend || 'transitionend', function (e, cancel) { e.promise = p; clearTimeout(timer); element.removeClass('uk-transition').css('transition', ''); if (!cancel) { resolve(); } else { reject(); } }) .addClass('uk-transition') .css('transition', ("all " + duration + "ms " + transition)) .css(props); }).then(null, function () {}); return p; } var Transition = { start: transition, stop: function stop(element, cancel) { var e = $__default.Event(transitionend || 'transitionend'); $__default(element).triggerHandler(e, [cancel]); return e.promise || promise.resolve(); }, cancel: function cancel(element) { return this.stop(element, true); }, inProgress: function inProgress(element) { return $__default(element).hasClass('uk-transition'); } }; function animate(element, animation, duration, origin, out) { if ( duration === void 0 ) duration = 200; var p = promise(function (resolve) { var cls = out ? 'uk-animation-leave' : 'uk-animation-enter'; element = $__default(element); if (animation.lastIndexOf('uk-animation-', 0) === 0) { if (origin) { animation += " uk-animation-" + origin; } if (out) { animation += ' uk-animation-reverse'; } } reset(); requestAnimationFrame(function () { return element .one(animationend || 'animationend', function (e) { e.promise = p; p.then(reset); resolve(); }) .css('animation-duration', (duration + "ms")) .addClass(animation) .addClass(cls); } ); if (!animationend) { requestAnimationFrame(function () { return Animation.cancel(element); }); } function reset() { element.css('animation-duration', '').removeClass((cls + " " + animation)); } }); return p; } var Animation = { in: function in$1(element, animation, duration, origin) { return animate(element, animation, duration, origin, false); }, out: function out(element, animation, duration, origin) { return animate(element, animation, duration, origin, true); }, inProgress: function inProgress(element) { return $__default(element).hasClass('uk-animation-enter') || $__default(element).hasClass('uk-animation-leave'); }, cancel: function cancel(element) { var e = $__default.Event(animationend || 'animationend'); $__default(element).triggerHandler(e); return e.promise || promise.resolve(); } }; function isJQuery(obj) { return obj instanceof $__default; } function isWithin(element, selector) { element = $__default(element); return element.is(selector) || !!(isString(selector) ? element.parents(selector).length : $__default.contains(toNode(selector), element[0])); } function attrFilter(element, attr, pattern, replacement) { element = $__default(element); return element.attr(attr, function (i, value) { return value ? value.replace(pattern, replacement) : value; }); } function removeClass(element, cls) { return attrFilter(element, 'class', new RegExp(("(^|\\s)" + cls + "(?!\\S)"), 'g'), ''); } function createEvent(e, bubbles, cancelable, data) { if ( bubbles === void 0 ) bubbles = true; if ( cancelable === void 0 ) cancelable = false; if ( data === void 0 ) data = false; if (isString(e)) { var event = document.createEvent('Event'); event.initEvent(e, bubbles, cancelable); e = event; } if (data) { $__default.extend(e, data); } return e; } function isInView(element, offsetTop, offsetLeft) { if ( offsetTop === void 0 ) offsetTop = 0; if ( offsetLeft === void 0 ) offsetLeft = 0; var rect = toNode(element).getBoundingClientRect(); return rect.bottom >= -1 * offsetTop && rect.right >= -1 * offsetLeft && rect.top <= (window.innerHeight || document.documentElement.clientHeight) + offsetTop && rect.left <= (window.innerWidth || document.documentElement.clientWidth) + offsetLeft; } function getIndex(index, elements, current) { if ( current === void 0 ) current = 0; elements = $__default(elements); var length = $__default(elements).length; index = (isNumber(index) ? index : index === 'next' ? current + 1 : index === 'previous' ? current - 1 : isString(index) ? parseInt(index, 10) : elements.index(index) ) % length; return index < 0 ? index + length : index; } var voidElements = { area: true, base: true, br: true, col: true, embed: true, hr: true, img: true, input: true, keygen: true, link: true, menuitem: true, meta: true, param: true, source: true, track: true, wbr: true }; function isVoidElement(element) { return voidElements[toNode(element).tagName.toLowerCase()]; } var Dimensions = { ratio: function ratio(dimensions, prop, value) { var aProp = prop === 'width' ? 'height' : 'width'; return ( obj = {}, obj[aProp] = Math.round(value * dimensions[aProp] / dimensions[prop]), obj[prop] = value, obj ); var obj; }, fit: function fit(dimensions, maxDimensions) { var this$1 = this; dimensions = $.extend({}, dimensions); $.each(dimensions, function (prop) { return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions; }); return dimensions; }, cover: function cover(dimensions, maxDimensions) { var this$1 = this; dimensions = this.fit(dimensions, maxDimensions); $.each(dimensions, function (prop) { return dimensions = dimensions[prop] < maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions; }); return dimensions; } }; function query(selector, context) { var selectors = getContextSelectors(selector); return selectors ? selectors.reduce(function (context, selector) { return toJQuery(selector, context); }, context) : toJQuery(selector); } function bind(fn, context) { return function (a) { var l = arguments.length; return l ? l > 1 ? fn.apply(context, arguments) : fn.call(context, a) : fn.call(context); }; } var hasOwnProperty = Object.prototype.hasOwnProperty; function hasOwn(obj, key) { return hasOwnProperty.call(obj, key); } function promise(executor) { if (hasPromise) { return new Promise(executor); } var def = $__default.Deferred(); executor(def.resolve, def.reject); return def; } promise.resolve = function (value) { return promise(function (resolve) { resolve(value); }); }; promise.reject = function (value) { return promise(function (_, reject) { reject(value); }); }; promise.all = function (iterable) { return hasPromise ? Promise.all(iterable) : $__default.when.apply($__default, iterable); }; function classify(str) { return str.replace(/(?:^|[-_\/])(\w)/g, function (_, c) { return c ? c.toUpperCase() : ''; }); } function hyphenate(str) { return str .replace(/([a-z\d])([A-Z])/g, '$1-$2') .toLowerCase() } var camelizeRE = /-(\w)/g; function camelize(str) { return str.replace(camelizeRE, toUpper) } function toUpper(_, c) { return c ? c.toUpperCase() : '' } function isString(value) { return typeof value === 'string'; } function isNumber(value) { return typeof value === 'number'; } function isUndefined(value) { return value === undefined; } function isContextSelector(selector) { return isString(selector) && selector.match(/^(!|>|\+|-)/); } function getContextSelectors(selector) { return isContextSelector(selector) && selector.split(/(?=\s(?:!|>|\+|-))/g).map(function (value) { return value.trim(); }); } var contextSelectors = {'!': 'closest', '+': 'nextAll', '-': 'prevAll'}; function toJQuery(element, context) { if (element === true) { return null; } try { if (context && isContextSelector(element) && element[0] !== '>') { var fn = contextSelectors[element[0]], selector = element.substr(1); context = $__default(context); if (fn === 'closest') { context = context.parent(); selector = selector || '*'; } element = context[fn](selector); } else { element = $__default(element, context); } } catch (e) { return null; } return element.length ? element : null; } function toNode(element) { return element && (isJQuery(element) ? element[0] : element); } function toBoolean(value) { return typeof value === 'boolean' ? value : value === 'true' || value == '1' || value === '' ? true : value === 'false' || value == '0' ? false : value; } function toNumber(value) { var number = Number(value); return !isNaN(number) ? number : false; } function toList(value) { return $.isArray(value) ? value : isString(value) ? value.split(',').map(function (value) { return toBoolean(value.trim()); }) : [value]; } var vars = {}; function toMedia(value) { if (isString(value)) { if (value[0] == '@') { var name = "media-" + (value.substr(1)); value = vars[name] || (vars[name] = parseFloat(getCssVar(name))); } else if (value.match(/^\(min-width:/)) { return value; } } return value && !isNaN(value) ? ("(min-width: " + value + "px)") : false; } function coerce(type, value, context) { if (type === Boolean) { return toBoolean(value); } else if (type === Number) { return toNumber(value); } else if (type === 'jQuery') { return query(value, context); } else if (type === 'list') { return toList(value); } else if (type === 'media') { return toMedia(value); } return type ? type(value) : value; } function toMs(time) { return !time ? 0 : time.substr(-2) === 'ms' ? parseFloat(time) : parseFloat(time) * 1000; } function swap(value, a, b) { return value.replace(new RegExp((a + "|" + b), 'mg'), function (match) { return match === a ? b : a }); } var Observer = window.MutationObserver || window.WebKitMutationObserver; var requestAnimationFrame = window.requestAnimationFrame || function (fn) { return setTimeout(fn, 1000 / 60); }; var cancelAnimationFrame = window.cancelAnimationFrame || window.clearTimeout; var hasTouchEvents = 'ontouchstart' in window; var hasPointerEvents = window.PointerEvent; var hasPromise = 'Promise' in window; var hasTouch = hasTouchEvents || window.DocumentTouch && document instanceof DocumentTouch || navigator.msPointerEnabled && navigator.msMaxTouchPoints > 0 // IE 10 || navigator.pointerEnabled && navigator.maxTouchPoints > 0; // IE >=11 var pointerDown = !hasTouch ? 'mousedown' : hasTouchEvents ? 'touchstart' : 'pointerdown'; var pointerMove = !hasTouch ? 'mousemove' : hasTouchEvents ? 'touchmove' : 'pointermove'; var pointerUp = !hasTouch ? 'mouseup' : hasTouchEvents ? 'touchend' : 'pointerup'; var pointerEnter = hasTouch && hasPointerEvents ? 'pointerenter' : 'mouseenter'; var pointerLeave = hasTouch && hasPointerEvents ? 'pointerleave' : 'mouseleave'; var pointerCancel = hasTouch && hasTouchEvents ? 'touchcancel' : 'pointercancel'; var transitionstart = prefix('transition', 'transition-start'); var transitionend = prefix('transition', 'transition-end'); var animationstart = prefix('animation', 'animation-start'); var animationend = prefix('animation', 'animation-end'); function getStyle(element, property, pseudoElt) { return (window.getComputedStyle(element, pseudoElt) || {})[property]; } function getCssVar(name) { /* usage in css: .var-name:before { content:"xyz" } */ var val, doc = document.documentElement, element = doc.appendChild(document.createElement('div')); element.classList.add(("var-" + name)); try { val = getStyle(element, 'content', ':before').replace(/^["'](.*)["']$/, '$1'); val = JSON.parse(val); } catch (e) {} doc.removeChild(element); return val || undefined; } function prefix(name, event) { var ucase = classify(name), lowered = classify(event).toLowerCase(), classified = classify(event), element = document.body || document.documentElement, names = ( obj = {}, obj[("Webkit" + ucase)] = ("webkit" + classified), obj[("Moz" + ucase)] = lowered, obj[("o" + ucase)] = ("o" + classified + " o" + lowered), obj[name] = lowered, obj ); var obj; for (name in names) { if (element.style[name] !== undefined) { return names[name]; } } } /* Based on: Copyright (c) 2016 Wilson Page wilsonpage@me.com https://github.com/wilsonpage/fastdom */ var fastdom = { reads: [], writes: [], measure: function(task) { this.reads.push(task); scheduleFlush(this); return task; }, mutate: function(task) { this.writes.push(task); scheduleFlush(this); return task; }, clear: function(task) { return remove(this.reads, task) || remove(this.writes, task); } }; function scheduleFlush(fastdom) { if (!fastdom.scheduled) { fastdom.scheduled = true; requestAnimationFrame(flush.bind(null, fastdom)); } } function flush(fastdom) { runTasks(fastdom.reads); runTasks(fastdom.writes.splice(0, fastdom.writes.length)); fastdom.scheduled = false; if (fastdom.reads.length || fastdom.writes.length) { scheduleFlush(fastdom); } } function runTasks(tasks) { var task; while (task = tasks.shift()) { task(); } } function remove(array, item) { var index = array.indexOf(item); return !!~index && !!array.splice(index, 1); } function MouseTracker() {} MouseTracker.prototype = { positions: [], position: null, init: function init() { var this$1 = this; this.positions = []; this.position = null; var ticking = false; this.handler = function (e) { if (!ticking) { setTimeout(function () { var time = Date.now(), length = this$1.positions.length; if (length && (time - this$1.positions[length - 1].time > 100)) { this$1.positions.splice(0, length); } this$1.positions.push({time: time, x: e.pageX, y: e.pageY}); if (this$1.positions.length > 5) { this$1.positions.shift(); } ticking = false; }, 5); } ticking = true; }; doc.on('mousemove', this.handler); }, cancel: function cancel() { if (this.handler) { doc.off('mousemove', this.handler); } }, movesTo: function movesTo(target) { if (this.positions.length < 2) { return false; } var p = getDimensions(target), position = this.positions[this.positions.length - 1], prevPos = this.positions[0]; if (p.left <= position.x && position.x <= p.right && p.top <= position.y && position.y <= p.bottom) { return false; } var points = [ [{x: p.left, y: p.top}, {x: p.right, y: p.bottom}], [{x: p.right, y: p.top}, {x: p.left, y: p.bottom}] ]; if (p.right <= position.x) { } else if (p.left >= position.x) { points[0].reverse(); points[1].reverse(); } else if (p.bottom <= position.y) { points[0].reverse(); } else if (p.top >= position.y) { points[1].reverse(); } return !!points.reduce(function (result, point) { return result + (slope(prevPos, point[0]) < slope(position, point[0]) && slope(prevPos, point[1]) > slope(position, point[1])); }, 0); } }; function slope(a, b) { return (b.y - a.y) / (b.x - a.x); } var strats = {}; // concat strategy strats.args = strats.attrs = strats.created = strats.events = strats.init = strats.ready = strats.connected = strats.disconnected = strats.destroy = function (parentVal, childVal) { parentVal = parentVal && !$.isArray(parentVal) ? [parentVal] : parentVal; return childVal ? parentVal ? parentVal.concat(childVal) : $.isArray(childVal) ? childVal : [childVal] : parentVal; }; // update strategy strats.update = function (parentVal, childVal) { return strats.args(parentVal, $.isFunction(childVal) ? {write: childVal} : childVal); }; // property strategy strats.props = function (parentVal, childVal) { if ($.isArray(childVal)) { childVal = childVal.reduce(function (value, key) { value[key] = String; return value; }, {}); } return strats.methods(parentVal, childVal); }; // extend strategy strats.computed = strats.defaults = strats.methods = function (parentVal, childVal) { return childVal ? parentVal ? $.extend(true, {}, parentVal, childVal) : childVal : parentVal; }; // default strategy var defaultStrat = function (parentVal, childVal) { return isUndefined(childVal) ? parentVal : childVal; }; function mergeOptions(parent, child) { var options = {}, key; if (child.mixins) { for (var i = 0, l = child.mixins.length; i < l; i++) { parent = mergeOptions(parent, child.mixins[i]); } } for (key in parent) { mergeKey(key); } for (key in child) { if (!hasOwn(parent, key)) { mergeKey(key); } } function mergeKey(key) { options[key] = (strats[key] || defaultStrat)(parent[key], child[key]); } return options; } var dirs = { x: ['width', 'left', 'right'], y: ['height', 'top', 'bottom'] }; function position(element, target, attach, targetAttach, offset, targetOffset, flip, boundary) { attach = getPos(attach); targetAttach = getPos(targetAttach); var flipped = {element: attach, target: targetAttach}; if (!element) { return flipped; } var dim = getDimensions(element), targetDim = getDimensions(target), position = targetDim; moveTo(position, attach, dim, -1); moveTo(position, targetAttach, targetDim, 1); offset = getOffsets(offset, dim.width, dim.height); targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height); offset['x'] += targetOffset['x']; offset['y'] += targetOffset['y']; position.left += offset['x']; position.top += offset['y']; boundary = getDimensions(boundary || window); if (flip) { $.each(dirs, function (dir, ref) { var prop = ref[0]; var align = ref[1]; var alignFlip = ref[2]; if (!(flip === true || ~flip.indexOf(dir))) { return; } var elemOffset = attach[dir] === align ? -dim[prop] : attach[dir] === alignFlip ? dim[prop] : 0, targetOffset = targetAttach[dir] === align ? targetDim[prop] : targetAttach[dir] === alignFlip ? -targetDim[prop] : 0; if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) { var newVal = position[align] + elemOffset + targetOffset - offset[dir] * 2; if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) { position[align] = newVal; ['element', 'target'].forEach(function (el) { flipped[el][dir] = !elemOffset ? flipped[el][dir] : flipped[el][dir] === dirs[dir][1] ? dirs[dir][2] : dirs[dir][1]; }); } } }); } $__default(element).offset({left: position.left, top: position.top}); return flipped; } function getDimensions(element) { element = toNode(element); var window = getWindow(element), top = window.pageYOffset, left = window.pageXOffset; if (!element.ownerDocument) { return { top: top, left: left, height: window.innerHeight, width: window.innerWidth, bottom: top + window.innerHeight, right: left + window.innerWidth, } } var display = false; if (!element.offsetHeight) { display = element.style.display; element.style.display = 'block'; } var rect = element.getBoundingClientRect(); if (display !== false) { element.style.display = display; } return { height: rect.height, width: rect.width, top: rect.top + top, left: rect.left + left, bottom: rect.bottom + top, right: rect.right + left, } } function offsetTop(element) { element = toNode(element); return element.getBoundingClientRect().top + getWindow(element).pageYOffset; } function getWindow(element) { return element && element.ownerDocument ? element.ownerDocument.defaultView : window; } function moveTo(position, attach, dim, factor) { $.each(dirs, function (dir, ref) { var prop = ref[0]; var align = ref[1]; var alignFlip = ref[2]; if (attach[dir] === alignFlip) { position[align] += dim[prop] * factor; } else if (attach[dir] === 'center') { position[align] += dim[prop] * factor / 2; } }); } function getPos(pos) { var x = /left|center|right/, y = /top|center|bottom/; pos = (pos || '').split(' '); if (pos.length === 1) { pos = x.test(pos[0]) ? pos.concat(['center']) : y.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center']; } return { x: x.test(pos[0]) ? pos[0] : 'center', y: y.test(pos[1]) ? pos[1] : 'center' }; } function getOffsets(offsets, width, height) { offsets = (offsets || '').split(' '); return { x: offsets[0] ? parseFloat(offsets[0]) * (offsets[0][offsets[0].length - 1] === '%' ? width / 100 : 1) : 0, y: offsets[1] ? parseFloat(offsets[1]) * (offsets[1][offsets[1].length - 1] === '%' ? height / 100 : 1) : 0 }; } function flipPosition(pos) { switch (pos) { case 'left': return 'right'; case 'right': return 'left'; case 'top': return 'bottom'; case 'bottom': return 'top'; default: return pos; } } /* Based on: Copyright (c) 2010-2016 Thomas Fuchs http://zeptojs.com/ */ var touch = {}; var touchTimeout; var tapTimeout; var swipeTimeout; var gesture; var clicked; function swipeDirection(x1, x2, y1, y2) { return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down'); } function cancelAll() { if (touchTimeout) { clearTimeout(touchTimeout); } if (tapTimeout) { clearTimeout(tapTimeout); } if (swipeTimeout) { clearTimeout(swipeTimeout); } touchTimeout = tapTimeout = swipeTimeout = null; touch = {}; } ready(function () { var now, delta, deltaX = 0, deltaY = 0, firstTouch; if ('MSGesture' in window) { gesture = new MSGesture(); gesture.target = document.body; } on(document, 'click', function () { return clicked = true; }, true); var gestureHandler = function (e) { var swipeDirectionFromVelocity = e.velocityX > 1 ? 'Right' : e.velocityX < -1 ? 'Left' : e.velocityY > 1 ? 'Down' : e.velocityY < -1 ? 'Up' : null; if (swipeDirectionFromVelocity && touch.el !== undefined) { touch.el.trigger('swipe'); touch.el.trigger(("swipe" + swipeDirectionFromVelocity)); } }; on(document, 'MSGestureEnd', gestureHandler); on(document, 'gestureend', gestureHandler); on(document, pointerDown, function (e) { firstTouch = e.touches ? e.touches[0] : e; now = Date.now(); delta = now - (touch.last || now); touch.el = $__default('tagName' in firstTouch.target ? firstTouch.target : firstTouch.target.parentNode); if (touchTimeout) { clearTimeout(touchTimeout); } touch.x1 = firstTouch.pageX; touch.y1 = firstTouch.pageY; if (delta > 0 && delta <= 250) { touch.isDoubleTap = true; } touch.last = now; // adds the current touch contact for IE gesture recognition if (gesture && ( e.type == 'pointerdown' || e.type == 'touchstart' )) { gesture.addPointer(e.pointerId); } clicked = e.button > 0; }); on(document, pointerMove, function (e) { firstTouch = e.touches ? e.touches[0] : e; touch.x2 = firstTouch.pageX; touch.y2 = firstTouch.pageY; deltaX += Math.abs(touch.x1 - touch.x2); deltaY += Math.abs(touch.y1 - touch.y2); }); on(document, pointerUp, function () { // swipe if ((touch.x2 && Math.abs(touch.x1 - touch.x2) > 30) || (touch.y2 && Math.abs(touch.y1 - touch.y2) > 30)) { swipeTimeout = setTimeout(function () { if (touch.el !== undefined) { touch.el.trigger('swipe'); touch.el.trigger(("swipe" + (swipeDirection(touch.x1, touch.x2, touch.y1, touch.y2)))); } touch = {}; }, 0); // normal tap } else if ('last' in touch) { // don't fire tap when delta position changed by more than 30 pixels, // for instance when moving to a point and back to origin if (isNaN(deltaX) || (deltaX < 30 && deltaY < 30)) { // delay by one tick so we can cancel the 'tap' event if 'scroll' fires // ('tap' fires before 'scroll') tapTimeout = setTimeout(function () { // trigger universal 'tap' with the option to cancelTouch() // (cancelTouch cancels processing of single vs double taps for faster 'tap' response) var event = $__default.Event('tap'); event.cancelTouch = cancelAll; if (touch.el !== undefined) { touch.el.trigger(event); } // trigger double tap immediately if (touch.isDoubleTap) { if (touch.el !== undefined) { touch.el.trigger('doubleTap'); } touch = {}; } // trigger single tap after 300ms of inactivity else { touchTimeout = setTimeout(function () { touchTimeout = null; if (touch.el !== undefined) { touch.el.trigger('singleTap'); if (!clicked) { touch.el.trigger('click'); } } touch = {}; }, 300); } }); } else { touch = {}; } deltaX = deltaY = 0; } }); // when the browser window loses focus, // for example when a modal dialog is shown, // cancel all ongoing events on(document, pointerCancel, cancelAll); // scrolling the window indicates intention of the user // to scroll, not tap or swipe, so cancel all ongoing events on(window, 'scroll', cancelAll); }); var touching = false; on(document, 'touchstart', function () { return touching = true; }, true); on(document, 'click', function () {touching = false}); on(document, 'touchcancel', function () { return touching = false; }, true); function isTouch(e) { return touching || (e.originalEvent || e).pointerType === 'touch'; } var util = Object.freeze({ win: win, doc: doc, docElement: docElement, isRtl: isRtl, isReady: isReady, ready: ready, on: on, off: off, transition: transition, Transition: Transition, animate: animate, Animation: Animation, isJQuery: isJQuery, isWithin: isWithin, attrFilter: attrFilter, removeClass: removeClass, createEvent: createEvent, isInView: isInView, getIndex: getIndex, isVoidElement: isVoidElement, Dimensions: Dimensions, query: query, Observer: Observer, requestAnimationFrame: requestAnimationFrame, cancelAnimationFrame: cancelAnimationFrame, hasPromise: hasPromise, hasTouch: hasTouch, pointerDown: pointerDown, pointerMove: pointerMove, pointerUp: pointerUp, pointerEnter: pointerEnter, pointerLeave: pointerLeave, pointerCancel: pointerCancel, transitionstart: transitionstart, transitionend: transitionend, animationstart: animationstart, animationend: animationend, getStyle: getStyle, getCssVar: getCssVar, fastdom: fastdom, $: $__default, bind: bind, hasOwn: hasOwn, promise: promise, classify: classify, hyphenate: hyphenate, camelize: camelize, isString: isString, isNumber: isNumber, isUndefined: isUndefined, isContextSelector: isContextSelector, getContextSelectors: getContextSelectors, toJQuery: toJQuery, toNode: toNode, toBoolean: toBoolean, toNumber: toNumber, toList: toList, toMedia: toMedia, coerce: coerce, toMs: toMs, swap: swap, ajax: $.ajax, each: $.each, extend: $.extend, map: $.map, merge: $.merge, isArray: $.isArray, isNumeric: $.isNumeric, isFunction: $.isFunction, isPlainObject: $.isPlainObject, MouseTracker: MouseTracker, mergeOptions: mergeOptions, position: position, getDimensions: getDimensions, offsetTop: offsetTop, flipPosition: flipPosition, isTouch: isTouch }); function boot (UIkit) { if (Observer) { if (document.body) { init(); } else { (new Observer(function () { if (document.body) { this.disconnect(); init(); } })).observe(document.documentElement, {childList: true, subtree: true}); } } else { ready(function () { apply(document.body, UIkit.connect); on(document.documentElement, 'DOMNodeInserted', function (e) { return apply(e.target, UIkit.connect); }); on(document.documentElement, 'DOMNodeRemoved', function (e) { return apply(e.target, UIkit.disconnect); }); }); } function init() { apply(document.body, UIkit.connect); (new Observer(function (mutations) { return mutations.forEach(function (mutation) { for (var i = 0; i < mutation.addedNodes.length; i++) { apply(mutation.addedNodes[i], UIkit.connect) } for (i = 0; i < mutation.removedNodes.length; i++) { apply(mutation.removedNodes[i], UIkit.disconnect) } UIkit.update('update', mutation.target, true); }); } )).observe(document.documentElement, {childList: true, subtree: true, characterData: true, attributes: true, attributeFilter: ['href']}); UIkit._initialized = true; } function apply(node, fn) { if (node.nodeType !== Node.ELEMENT_NODE || node.hasAttribute('uk-no-boot')) { return; } fn(node); node = node.firstChild; while (node) { var next = node.nextSibling; apply(node, fn); node = next; } } } function globalAPI (UIkit) { var DATA = UIkit.data; UIkit.use = function (plugin) { if (plugin.installed) { return; } plugin.call(null, this); plugin.installed = true; return this; }; UIkit.mixin = function (mixin, component) { component = (isString(component) ? UIkit.components[component] : component) || this; mixin = mergeOptions({}, mixin); mixin.mixins = component.options.mixins; delete component.options.mixins; component.options = mergeOptions(mixin, component.options); }; UIkit.extend = function (options) { options = options || {}; var Super = this, name = options.name || Super.options.name; var Sub = createClass(name || 'UIkitComponent'); Sub.prototype = Object.create(Super.prototype); Sub.prototype.constructor = Sub; Sub.options = mergeOptions(Super.options, options); Sub['super'] = Super; Sub.extend = Super.extend; return Sub; }; UIkit.update = function (e, element, parents) { if ( parents === void 0 ) parents = false; e = createEvent(e || 'update'); if (!element) { update(UIkit.instances, e); return; } element = toNode(element); if (parents) { do { update(element[DATA], e); element = element.parentNode; } while (element) } else { apply(element, function (element) { return update(element[DATA], e); }); } }; var container; Object.defineProperty(UIkit, 'container', { get: function get() { return container || document.body; }, set: function set(element) { container = element; } }); } function createClass(name) { return new Function(("return function " + (classify(name)) + " (options) { this._init(options); }"))(); } function apply(node, fn) { if (node.nodeType !== Node.ELEMENT_NODE) { return; } fn(node); node = node.firstChild; while (node) { apply(node, fn); node = node.nextSibling; } } function update(data, e) { if (!data) { return; } for (var name in data) { if (data[name]._isReady) { data[name]._callUpdate(e); } } } function hooksAPI (UIkit) { UIkit.prototype._callHook = function (hook) { var this$1 = this; var handlers = this.$options[hook]; if (handlers) { handlers.forEach(function (handler) { return handler.call(this$1); }); } }; UIkit.prototype._callReady = function () { if (this._isReady) { return; } this._isReady = true; this._callHook('ready'); this._callUpdate(); }; UIkit.prototype._callConnected = function () { var this$1 = this; if (this._connected) { return; } if (!~UIkit.elements.indexOf(this.$options.el)) { UIkit.elements.push(this.$options.el); } UIkit.instances[this._uid] = this; this._initEvents(); this._callHook('connected'); this._connected = true; this._initObserver(); if (!this._isReady) { ready(function () { return this$1._callReady(); }); } this._callUpdate(); }; UIkit.prototype._callDisconnected = function () { if (!this._connected) { return; } if (this._observer) { this._observer.disconnect(); this._observer = null; } var index = UIkit.elements.indexOf(this.$options.el); if (~index) { UIkit.elements.splice(index, 1); } delete UIkit.instances[this._uid]; this._initEvents(true); this._callHook('disconnected'); this._connected = false; }; UIkit.prototype._callUpdate = function (e) { var this$1 = this; e = createEvent(e || 'update'); if (e.type === 'update') { this._computeds = {}; } var updates = this.$options.update; if (!updates) { return; } updates.forEach(function (update, i) { if (e.type !== 'update' && (!update.events || !~update.events.indexOf(e.type))) { return; } if (e.sync) { if (update.read) { update.read.call(this$1, e); } if (update.write) { update.write.call(this$1, e); } return; } if (update.read && !~fastdom.reads.indexOf(this$1._frames.reads[i])) { this$1._frames.reads[i] = fastdom.measure(function () { return update.read.call(this$1, e); }); } if (update.write && !~fastdom.writes.indexOf(this$1._frames.writes[i])) { this$1._frames.writes[i] = fastdom.mutate(function () { return update.write.call(this$1, e); }); } }); }; } function stateAPI (UIkit) { var uid = 0; UIkit.prototype.props = {}; UIkit.prototype._init = function (options) { options = options || {}; options = this.$options = mergeOptions(this.constructor.options, options, this); this.$el = null; this.$name = UIkit.prefix + hyphenate(this.$options.name); this.$props = {}; this._uid = uid++; this._initData(); this._initMethods(); this._initComputeds(); this._callHook('created'); this._frames = {reads: {}, writes: {}}; if (options.el) { this.$mount(options.el); } }; UIkit.prototype._initData = function () { var this$1 = this; var defaults = $.extend(true, {}, this.$options.defaults), data = this.$options.data || {}, args = this.$options.args || [], props = this.$options.props || {}; if (!defaults) { return; } if (args.length && $.isArray(data)) { data = data.slice(0, args.length).reduce(function (data, value, index) { if ($.isPlainObject(value)) { $.extend(data, value); } else { data[args[index]] = value; } return data; }, {}); } for (var key in defaults) { this$1.$props[key] = this$1[key] = hasOwn(data, key) ? coerce(props[key], data[key], this$1.$options.el) : defaults[key]; } }; UIkit.prototype._initMethods = function () { var this$1 = this; var methods = this.$options.methods; if (methods) { for (var key in methods) { this$1[key] = bind(methods[key], this$1); } } }; UIkit.prototype._initComputeds = function () { var this$1 = this; var computed = this.$options.computed; this._computeds = {}; if (computed) { for (var key in computed) { registerComputed(this$1, key, computed[key]); } } }; UIkit.prototype._initProps = function (props) { var this$1 = this; this._computeds = {}; $.extend(this.$props, props || this._getProps()); var exclude = [this.$options.computed, this.$options.methods]; for (var key in this$1.$props) { if (notIn(exclude, key)) { this$1[key] = this$1.$props[key]; } } }; UIkit.prototype._initEvents = function (unbind) { var this$1 = this; var events = this.$options.events; if (events) { events.forEach(function (event) { if (!hasOwn(event, 'handler')) { for (var key in event) { registerEvent(this$1, unbind, event[key], key); } } else { registerEvent(this$1, unbind, event); } }); } }; UIkit.prototype._initObserver = function () { var this$1 = this; if (this._observer || !this.$options.props || !this.$options.attrs || !Observer) { return; } this._observer = new Observer(function (mutations) { var data = this$1._getProps(true), changed = mutations .map(function (mutation) { return camelize(mutation.attributeName); }) .some(function (key) { return !equals(data[key], this$1.$props[key]); }); if (changed) { this$1.$reset(data); } }); this._observer.observe(this.$options.el, { attributes: true, attributeFilter: $.isArray(this.$options.attrs) ? this.$options.attrs : Object.keys(this.$options.props).map(function (key) { return hyphenate(key); }) }); }; UIkit.prototype._getProps = function (attrs) { if ( attrs === void 0 ) attrs = false; var data = {}, el = this.$el[0], args = this.$options.args || [], props = this.$options.props || {}, options = el.getAttribute(this.$name) || el.getAttribute(("data-" + (this.$name))), key, prop; if (!props) { return data; } for (key in props) { prop = hyphenate(key); if (el.hasAttribute(prop)) { var value = coerce(props[key], el.getAttribute(prop), el); if (prop === 'target' && (!value || value.lastIndexOf('_', 0) === 0)) { continue; } data[key] = value; } } if (attrs || !options) { return data; } if (options[0] === '{') { try { options = JSON.parse(options); } catch (e) { console.warn("Invalid JSON."); options = {}; } } else if (args.length && !~options.indexOf(':')) { options = (( obj = {}, obj[args[0]] = options, obj )); var obj; } else { var tmp = {}; options.split(';').forEach(function (option) { var ref = option.split(/:(.+)/); var key = ref[0]; var value = ref[1]; if (key && value) { tmp[key.trim()] = value.trim(); } }); options = tmp; } for (key in options || {}) { prop = camelize(key); if (props[prop] !== undefined) { data[prop] = coerce(props[prop], options[key], el); } } return data; }; } function registerComputed(component, key, cb) { Object.defineProperty(component, key, { enumerable: true, get: function get() { if (!hasOwn(component._computeds, key)) { component._computeds[key] = cb.call(component); } return component._computeds[key]; }, set: function set(value) { component._computeds[key] = value; } }); } function registerEvent(component, unbind, event, key) { if (!$.isPlainObject(event)) { event = ({name: key, handler: event}); } var name = event.name; var el = event.el; var delegate = event.delegate; var self = event.self; var filter = event.filter; var handler = event.handler; el = el && el.call(component) || component.$el; name += "." + (component.$options.name) + "." + (component._uid); if (unbind) { el.off(name); } else { if (filter && !filter.call(component)) { return; } handler = isString(handler) ? component[handler] : bind(handler, component); if (self) { var fn = handler; handler = function (e) { if (!el.is(e.target)) { return; } return fn.call(component, e); } } if (delegate) { el.on(name, isString(delegate) ? delegate : delegate.call(component), handler); } else { el.on(name, handler); } } } function notIn(options, key) { return options.every(function (arr) { return !arr || !hasOwn(arr, key); }); } function equals(a, b) { return isUndefined(a) || a === b || isJQuery(a) && isJQuery(b) && a.is(b); } function instanceAPI (UIkit) { var DATA = UIkit.data; UIkit.prototype.$mount = function (el) { var name = this.$options.name; if (!el[DATA]) { el[DATA] = {}; } if (el[DATA][name]) { console.warn(("Component \"" + name + "\" is already mounted on element: "), el); return; } el[DATA][name] = this; this.$el = $__default(el); this._initProps(); this._callHook('init'); if (document.documentElement.contains(el)) { this._callConnected(); } }; UIkit.prototype.$emit = function (e) { this._callUpdate(e); }; UIkit.prototype.$emitSync = function (e) { this._callUpdate(createEvent(e || 'update', true, false, {sync: true})); }; UIkit.prototype.$update = function (e, parents) { UIkit.update(e, this.$el, parents); }; UIkit.prototype.$updateSync = function (e, parents) { this.$update(createEvent(e || 'update', true, false, {sync: true}), parents); }; UIkit.prototype.$reset = function (data) { this._callDisconnected(); this._initProps(data); this._callConnected(); }; UIkit.prototype.$destroy = function (remove) { if ( remove === void 0 ) remove = false; var el = this.$options.el; if (el) { this._callDisconnected(); } this._callHook('destroy'); if (!el || !el[DATA]) { return; } delete el[DATA][this.$options.name]; if (!Object.keys(el[DATA]).length) { delete el[DATA]; } if (remove) { this.$el.remove(); } }; } function componentAPI (UIkit) { var DATA = UIkit.data; UIkit.components = {}; UIkit.component = function (id, options) { var name = camelize(id); if ($.isPlainObject(options)) { options.name = name; options = UIkit.extend(options); } else { options.options.name = name; } UIkit.components[name] = options; UIkit[name] = function (element, data) { var i = arguments.length, argsArray = Array(i); while ( i-- ) argsArray[i] = arguments[i]; if ($.isPlainObject(element)) { return new UIkit.components[name]({data: element}); } if (UIkit.components[name].options.functional) { return new UIkit.components[name]({data: [].concat( argsArray )}); } return $__default(element).toArray().map(function (element) { return UIkit.getComponent(element, name) || new UIkit.components[name]({el: element, data: data || {}}); } )[0]; }; if (UIkit._initialized && !options.options.functional) { fastdom.measure(function () { return UIkit[name](("[uk-" + id + "],[data-uk-" + id + "]")); }); } return UIkit.components[name]; }; UIkit.getComponents = function (element) { return element && (element = isJQuery(element) ? element[0] : element) && element[DATA] || {}; }; UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; }; UIkit.connect = function (node) { var name; if (node[DATA]) { for (name in node[DATA]) { node[DATA][name]._callConnected(); } } for (var i = 0; i < node.attributes.length; i++) { name = node.attributes[i].name; if (name.lastIndexOf('uk-', 0) === 0 || name.lastIndexOf('data-uk-', 0) === 0) { name = camelize(name.replace('data-uk-', '').replace('uk-', '')); if (UIkit[name]) { UIkit[name](node); } } } }; UIkit.disconnect = function (node) { for (var name in node[DATA]) { node[DATA][name]._callDisconnected(); } } } var UIkit = function (options) { this._init(options); }; UIkit.util = util; UIkit.data = '__uikit__'; UIkit.prefix = 'uk-'; UIkit.options = {}; UIkit.instances = {}; UIkit.elements = []; globalAPI(UIkit); hooksAPI(UIkit); stateAPI(UIkit); instanceAPI(UIkit); componentAPI(UIkit); var Class = { init: function init() { this.$el.addClass(this.$name); } } var Toggable = { props: { cls: Boolean, animation: 'list', duration: Number, origin: String, transition: String, queued: Boolean }, defaults: { cls: false, animation: [false], duration: 200, origin: false, transition: 'linear', queued: false, initProps: { overflow: '', height: '', paddingTop: '', paddingBottom: '', marginTop: '', marginBottom: '' }, hideProps: { overflow: 'hidden', height: 0, paddingTop: 0, paddingBottom: 0, marginTop: 0, marginBottom: 0 } }, computed: { hasAnimation: function hasAnimation() { return !!this.animation[0]; }, hasTransition: function hasTransition() { return this.hasAnimation && this.animation[0] === true; } }, methods: { toggleElement: function toggleElement(targets, show, animate) { var this$1 = this; var toggles, body = document.body, scroll = body.scrollTop, all = function (targets) { return promise.all(targets.toArray().map(function (el) { return this$1._toggleElement(el, show, animate); })).then(null, function () {}); }, delay = function (targets) { var def = all(targets); this$1._queued = null; body.scrollTop = scroll; return def; }; targets = $__default(targets); if (!this.hasAnimation || !this.queued || targets.length < 2) { return all(targets); } if (this._queued) { return delay(targets.not(this._queued)); } this._queued = targets.not(toggles = targets.filter(function (_, el) { return this$1.isToggled(el); })); return all(toggles).then(function () { return this$1._queued && delay(this$1._queued); }); }, toggleNow: function toggleNow(targets, show) { var this$1 = this; return promise.all($__default(targets).toArray().map(function (el) { return this$1._toggleElement(el, show, false); })).then(null, function () {}); }, isToggled: function isToggled(el) { el = el && $__default(el) || this.$el; return this.cls ? el.hasClass(this.cls.split(' ')[0]) : !el.attr('hidden'); }, updateAria: function updateAria(el) { if (this.cls === false) { el.attr('aria-hidden', !this.isToggled(el)); } }, _toggleElement: function _toggleElement(el, show, animate) { var this$1 = this; el = $__default(el); if (Animation.inProgress(el)) { return Animation.cancel(el).then(function () { return this$1._toggleElement(el, show, animate); }); } show = typeof show === 'boolean' ? show : !this.isToggled(el); var event = $__default.Event(("before" + (show ? 'show' : 'hide'))); el.trigger(event, [this]); if (event.result === false) { return promise.reject(); } var def = (animate === false || !this.hasAnimation ? this._toggleImmediate : this.hasTransition ? this._toggleHeight : this._toggleAnimation )(el, show); el.trigger(show ? 'show' : 'hide', [this]); return def.then(function () { return el.trigger(show ? 'shown' : 'hidden', [this$1]); }); }, _toggle: function _toggle(el, toggled) { el = $__default(el); if (this.cls) { el.toggleClass(this.cls, ~this.cls.indexOf(' ') ? undefined : toggled); } else { el.attr('hidden', !toggled); } el.find('[autofocus]:visible').focus(); this.updateAria(el); UIkit.update(null, el); }, _toggleImmediate: function _toggleImmediate(el, show) { this._toggle(el, show); return promise.resolve(); }, _toggleHeight: function _toggleHeight(el, show) { var this$1 = this; var inProgress = Transition.inProgress(el), inner = parseFloat(el.children().first().css('margin-top')) + parseFloat(el.children().last().css('margin-bottom')), height = el[0].offsetHeight ? el.height() + (inProgress ? 0 : inner) : 0, endHeight; return Transition.cancel(el).then(function () { if (!this$1.isToggled(el)) { this$1._toggle(el, true); } el.height(''); return promise(function (resolve) { return requestAnimationFrame(function () { endHeight = el.height() + (inProgress ? 0 : inner); el.height(height); (show ? Transition.start(el, $.extend(this$1.initProps, {overflow: 'hidden', height: endHeight}), Math.round(this$1.duration * (1 - height / endHeight)), this$1.transition) : Transition.start(el, this$1.hideProps, Math.round(this$1.duration * (height / endHeight)), this$1.transition).then(function () { this$1._toggle(el, false); el.css(this$1.initProps); })).then(resolve); }); } ); }); }, _toggleAnimation: function _toggleAnimation(el, show) { var this$1 = this; if (show) { this._toggle(el, true); return Animation.in(el, this.animation[0], this.duration, this.origin); } return Animation.out(el, this.animation[1] || this.animation[0], this.duration, this.origin).then(function () { return this$1._toggle(el, false); }); } } }; var active; var Modal = { mixins: [Class, Toggable], props: { clsPanel: String, selClose: String, escClose: Boolean, bgClose: Boolean, stack: Boolean, container: Boolean }, defaults: { cls: 'uk-open', escClose: true, bgClose: true, overlay: true, stack: false, container: true }, computed: { body: function body() { return $__default(document.body); }, panel: function panel() { return this.$el.find(("." + (this.clsPanel))); }, container: function container() { return this.$props.container === true && UIkit.container || this.$props.container && toJQuery(this.$props.container); }, transitionElement: function transitionElement() { return this.panel; }, transitionDuration: function transitionDuration() { return toMs(this.transitionElement.css('transition-duration')); } }, events: [ { name: 'click', delegate: function delegate() { return this.selClose; }, handler: function handler(e) { e.preventDefault(); this.hide(); } }, { name: 'toggle', handler: function handler(e) { e.preventDefault(); this.toggle(); } }, { name: 'beforeshow', self: true, handler: function handler() { var this$1 = this; if (this.isToggled()) { return false; } var prev = active && active !== this && active; active = this; if (prev) { if (this.stack) { this.prev = prev; } else { prev.hide().then(this.show); return false; } } else { requestAnimationFrame(function () { return register(this$1.$options.name); }); } if (!prev) { this.scrollbarWidth = window.innerWidth - docElement[0].offsetWidth; this.body.css('overflow-y', this.scrollbarWidth && this.overlay ? 'scroll' : ''); } docElement.addClass(this.clsPage); } }, { name: 'beforehide', self: true, handler: function handler() { if (!this.isToggled()) { return false; } active = active && active !== this && active || this.prev; if (!active) { deregister(this.$options.name); } } }, { name: 'hidden', self: true, handler: function handler() { if (!active) { docElement.removeClass(this.clsPage); this.body.css('overflow-y', ''); } } } ], methods: { toggle: function toggle() { return this.isToggled() ? this.hide() : this.show(); }, show: function show() { var this$1 = this; if (this.container && !this.$el.parent().is(this.container)) { this.$el.appendTo(this.container); return promise(function (resolve) { return requestAnimationFrame(function () { return resolve(this$1.show()); } ); } ) } return this.toggleNow(this.$el, true); }, hide: function hide() { return this.toggleNow(this.$el, false); }, getActive: function getActive() { return active; }, _toggleImmediate: function _toggleImmediate(el, show) { var this$1 = this; this._toggle(el, show); return this.transitionDuration ? promise(function (resolve, reject) { if (this$1._transition) { this$1.transitionElement.off(transitionend, this$1._transition.handler); this$1._transition.reject(); } this$1._transition = { reject: reject, handler: function () { resolve(); this$1._transition = null; } }; this$1.transitionElement.one(transitionend, this$1._transition.handler); }) : promise.resolve(); }, } } function register(name) { doc.on(( obj = {}, obj[("click." + name)] = function (e) { if (active && active.bgClose && !e.isDefaultPrevented() && !isWithin(e.target, active.panel)) { active.hide(); } }, obj[("keydown." + name)] = function (e) { if (e.keyCode === 27 && active && active.escClose) { e.preventDefault(); active.hide(); } }, obj )); var obj; } function deregister(name) { doc.off(("click." + name)).off(("keydown." + name)); } var Position = { props: { pos: String, offset: null, flip: Boolean, clsPos: String }, defaults: { pos: !isRtl ? 'bottom-left' : 'bottom-right', flip: true, offset: false, clsPos: '' }, computed: { pos: function pos() { return (this.$props.pos + (!~this.$props.pos.indexOf('-') ? '-center' : '')).split('-'); }, dir: function dir() { return this.pos[0]; }, align: function align() { return this.pos[1]; } }, methods: { positionAt: function positionAt(element, target, boundary) { removeClass(element, ((this.clsPos) + "-(top|bottom|left|right)(-[a-z]+)?")).css({top: '', left: ''}); var offset = toNumber(this.offset) || 0, axis = this.getAxis(), flipped = position( element, target, axis === 'x' ? ((flipPosition(this.dir)) + " " + (this.align)) : ((this.align) + " " + (flipPosition(this.dir))), axis === 'x' ? ((this.dir) + " " + (this.align)) : ((this.align) + " " + (this.dir)), axis === 'x' ? ("" + (this.dir === 'left' ? -1 * offset : offset)) : (" " + (this.dir === 'top' ? -1 * offset : offset)), null, this.flip, boundary ); this.dir = axis === 'x' ? flipped.target.x : flipped.target.y; this.align = axis === 'x' ? flipped.target.y : flipped.target.x; element.toggleClass(((this.clsPos) + "-" + (this.dir) + "-" + (this.align)), this.offset === false); }, getAxis: function getAxis() { return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x'; } } } function mixin (UIkit) { UIkit.mixin.class = Class; UIkit.mixin.modal = Modal; UIkit.mixin.position = Position; UIkit.mixin.toggable = Toggable; } function Accordion (UIkit) { UIkit.component('accordion', { mixins: [Class, Toggable], props: { targets: String, active: null, collapsible: Boolean, multiple: Boolean, toggle: String, content: String, transition: String }, defaults: { targets: '> *', active: false, animation: [true], collapsible: true, multiple: false, clsOpen: 'uk-open', toggle: '> .uk-accordion-title', content: '> .uk-accordion-content', transition: 'ease' }, computed: { items: function items() { var this$1 = this; var items = $__default(this.targets, this.$el); this._changed = !this._items || items.length !== this._items.length || items.toArray().some(function (el, i) { return el !== this$1._items.get(i); }); return this._items = items; } }, connected: function connected() { this.$emitSync(); }, events: [ { name: 'click', delegate: function delegate() { return ((this.targets) + " " + (this.$props.toggle)); }, handler: function handler(e) { e.preventDefault(); this.toggle(this.items.find(this.$props.toggle).index(e.currentTarget)); } } ], update: function update() { var this$1 = this; if (!this.items || !this._changed) { return; } this.items.each(function (i, el) { el = $__default(el); this$1.toggleNow(el.find(this$1.content), el.hasClass(this$1.clsOpen)); }); var active = this.active !== false && toJQuery(this.items.eq(Number(this.active))) || !this.collapsible && toJQuery(this.items.eq(0)); if (active && !active.hasClass(this.clsOpen)) { this.toggle(active, false); } }, methods: { toggle: function toggle(item, animate) { var this$1 = this; var index = getIndex(item, this.items), active = this.items.filter(("." + (this.clsOpen))); item = this.items.eq(index); item.add(!this.multiple && active).each(function (i, el) { el = $__default(el); var isItem = el.is(item), state = isItem && !el.hasClass(this$1.clsOpen); if (!state && isItem && !this$1.collapsible && active.length < 2) { return; } el.toggleClass(this$1.clsOpen, state); var content = el[0]._wrapper ? el[0]._wrapper.children().first() : el.find(this$1.content); if (!el[0]._wrapper) { el[0]._wrapper = content.wrap('
').parent().attr('hidden', state); } this$1._toggleImmediate(content, true); this$1.toggleElement(el[0]._wrapper, state, animate).then(function () { if (el.hasClass(this$1.clsOpen) === state) { if (!state) { this$1._toggleImmediate(content, false); } el[0]._wrapper = null; content.unwrap(); } }); }) } } }); } function Alert (UIkit) { UIkit.component('alert', { mixins: [Class, Toggable], args: 'animation', props: { close: String }, defaults: { animation: [true], close: '.uk-alert-close', duration: 150, hideProps: {opacity: 0} }, events: [ { name: 'click', delegate: function delegate() { return this.close; }, handler: function handler(e) { e.preventDefault(); this.closeAlert(); } } ], methods: { closeAlert: function closeAlert() { var this$1 = this; this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); }); } } }); } function Cover (UIkit) { UIkit.component('cover', { mixins: [Class], props: { automute: Boolean, width: Number, height: Number }, defaults: {automute: true}, computed: { el: function el() { return this.$el[0]; }, parent: function parent() { return this.$el.parent()[0]; } }, ready: function ready() { if (!this.$el.is('iframe')) { return; } this.$el.css('pointerEvents', 'none'); if (this.automute) { var src = this.$el.attr('src'); this.$el .attr('src', ("" + src + (~src.indexOf('?') ? '&' : '?') + "enablejsapi=1&api=1")) .on('load', function (ref) { var target = ref.target; return target.contentWindow.postMessage('{"event": "command", "func": "mute", "method":"setVolume", "value":0}', '*'); }); } }, update: { write: function write() { if (this.el.offsetHeight === 0) { return; } this.$el .css({width: '', height: ''}) .css(Dimensions.cover( {width: this.width || this.el.clientWidth, height: this.height || this.el.clientHeight}, {width: this.parent.offsetWidth, height: this.parent.offsetHeight} )); }, events: ['load', 'resize'] }, events: { loadedmetadata: function loadedmetadata() { this.$emit(); } } }); } function Drop (UIkit) { var active; doc.on('click', function (e) { var prev; while (active && active !== prev && !isWithin(e.target, active.$el) && !(active.toggle && isWithin(e.target, active.toggle.$el))) { prev = active; active.hide(false); } }); UIkit.component('drop', { mixins: [Position, Toggable], args: 'pos', props: { mode: 'list', toggle: Boolean, boundary: 'jQuery', boundaryAlign: Boolean, delayShow: Number, delayHide: Number, clsDrop: String }, defaults: { mode: ['click', 'hover'], toggle: '- :first', boundary: window, boundaryAlign: false, delayShow: 0, delayHide: 800, clsDrop: false, hoverIdle: 200, animation: ['uk-animation-fade'], cls: 'uk-open' }, init: function init() { this.tracker = new MouseTracker(); this.clsDrop = this.clsDrop || ("uk-" + (this.$options.name)); this.clsPos = this.clsDrop; this.$el.addClass(this.clsDrop); }, ready: function ready() { this.updateAria(this.$el); if (this.toggle) { this.toggle = UIkit.toggle(query(this.toggle, this.$el), {target: this.$el, mode: this.mode}); } }, events: [ { name: 'click', delegate: function delegate() { return ("." + (this.clsDrop) + "-close"); }, handler: function handler(e) { e.preventDefault(); this.hide(false); } }, { name: 'click', delegate: function delegate() { return 'a[href^="#"]'; }, handler: function handler(e) { if (e.isDefaultPrevented()) { return; } var id = $__default(e.target).attr('href'); if (id.length === 1) { e.preventDefault(); } if (id.length === 1 || !isWithin(id, this.$el)) { this.hide(false); } } }, { name: 'toggle', handler: function handler(e, toggle) { if (toggle && !this.$el.is(toggle.target)) { return; } e.preventDefault(); if (this.isToggled()) { this.hide(false); } else { this.show(toggle, false); } } }, { name: pointerEnter, filter: function filter() { return ~this.mode.indexOf('hover'); }, handler: function handler(e) { if (isTouch(e)) { return; } if (active && active !== this && active.toggle && ~active.toggle.mode.indexOf('hover') && !isWithin(e.target, active.$el) && !isWithin(e.target, active.toggle.$el) ) { active.hide(false); } e.preventDefault(); this.show(this.toggle); } }, { name: 'toggleshow', handler: function handler(e, toggle) { if (toggle && !this.$el.is(toggle.target)) { return; } e.preventDefault(); this.show(toggle || this.toggle); } }, { name: ("togglehide " + pointerLeave), handler: function handler(e, toggle) { if (isTouch(e) || toggle && !this.$el.is(toggle.target)) { return; } e.preventDefault(); if (this.toggle && ~this.toggle.mode.indexOf('hover')) { this.hide(); } } }, { name: 'beforeshow', self: true, handler: function handler() { this.clearTimers(); } }, { name: 'show', self: true, handler: function handler() { this.tracker.init(); this.toggle.$el.addClass(this.cls).attr('aria-expanded', 'true'); } }, { name: 'beforehide', self: true, handler: function handler() { this.clearTimers(); } }, { name: 'hide', handler: function handler(ref) { var target = ref.target; if (!this.$el.is(target)) { active = active === null && isWithin(target, this.$el) && this.isToggled() ? this : active; return; } active = this.isActive() ? null : active; this.toggle.$el.removeClass(this.cls).attr('aria-expanded', 'false').blur().find('a, button').blur(); this.tracker.cancel(); } } ], update: { write: function write() { if (!this.$el.hasClass(this.cls)) { return; } removeClass(this.$el, ((this.clsDrop) + "-(stack|boundary)")).css({top: '', left: ''}); this.$el.toggleClass(((this.clsDrop) + "-boundary"), this.boundaryAlign); var boundary = getDimensions(this.boundary), alignTo = this.boundaryAlign ? boundary : getDimensions(this.toggle.$el); if (this.align === 'justify') { var prop = this.getAxis() === 'y' ? 'width' : 'height'; this.$el.css(prop, alignTo[prop]); } else if (this.$el.outerWidth() > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) { this.$el.addClass(((this.clsDrop) + "-stack")); this.$el.trigger('stack', [this]); } this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary); }, events: ['resize'] }, methods: { show: function show(toggle, delay) { var this$1 = this; if ( delay === void 0 ) delay = true; var show = function () { return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); }, tryShow = function () { this$1.toggle = toggle || this$1.toggle; this$1.clearTimers(); if (this$1.isActive()) { return; } else if (delay && active && active !== this$1 && active.isDelaying) { this$1.showTimer = setTimeout(this$1.show, 10); return; } else if (this$1.isParentOf(active)) { if (active.hideTimer) { active.hide(false); } else { return; } } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) { var prev; while (active && active !== prev) { prev = active; active.hide(false); } } if (delay && this$1.delayShow) { this$1.showTimer = setTimeout(show, this$1.delayShow); } else { show(); } active = this$1; }; if (toggle && this.toggle && !this.toggle.$el.is(toggle.$el)) { this.$el.one('hide', tryShow); this.hide(false); } else { tryShow(); } }, hide: function hide(delay) { var this$1 = this; if ( delay === void 0 ) delay = true; var hide = function () { return this$1.toggleNow(this$1.$el, false); }; this.clearTimers(); this.isDelaying = this.tracker.movesTo(this.$el); if (delay && this.isDelaying) { this.hideTimer = setTimeout(this.hide, this.hoverIdle); } else if (delay && this.delayHide) { this.hideTimer = setTimeout(hide, this.delayHide); } else { hide(); } }, clearTimers: function clearTimers() { clearTimeout(this.showTimer); clearTimeout(this.hideTimer); this.showTimer = null; this.hideTimer = null; this.isDelaying = false; }, isActive: function isActive() { return active === this; }, isChildOf: function isChildOf(drop) { return drop && drop !== this && isWithin(this.$el, drop.$el); }, isParentOf: function isParentOf(drop) { return drop && drop !== this && isWithin(drop.$el, this.$el); } } }); UIkit.drop.getActive = function () { return active; }; } function Dropdown (UIkit) { UIkit.component('dropdown', UIkit.components.drop.extend({name: 'dropdown'})); } function FormCustom (UIkit) { UIkit.component('form-custom', { mixins: [Class], args: 'target', props: { target: Boolean }, defaults: { target: false }, computed: { input: function input() { return this.$el.find(':input:first'); }, state: function state() { return this.input.next(); }, target: function target() { return this.$props.target && query(this.$props.target === true ? '> :input:first + :first' : this.$props.target, this.$el) } }, connected: function connected() { this.input.trigger('change'); }, events: [ { name: 'focus blur mouseenter mouseleave', delegate: ':input:first', handler: function handler(ref) { var type = ref.type; this.state.toggleClass(("uk-" + (~['focus', 'blur'].indexOf(type) ? 'focus' : 'hover')), ~['focus', 'mouseenter'].indexOf(type)); } }, { name: 'change', handler: function handler() { this.target && this.target[this.target.is(':input') ? 'val' : 'text']( this.input[0].files && this.input[0].files[0] ? this.input[0].files[0].name : this.input.is('select') ? this.input.find('option:selected').text() : this.input.val() ); } } ] }); } function Gif (UIkit) { UIkit.component('gif', { update: { read: function read() { var inview = isInView(this.$el); if (!this.isInView && inview) { this.$el[0].src = this.$el[0].src; } this.isInView = inview; }, events: ['scroll', 'load', 'resize'] } }); } function Grid (UIkit) { UIkit.component('grid', UIkit.components.margin.extend({ mixins: [Class], name: 'grid', defaults: { margin: 'uk-grid-margin', clsStack: 'uk-grid-stack' }, update: { write: function write() { this.$el.toggleClass(this.clsStack, this.stacks); }, events: ['load', 'resize'] } })); } function HeightMatch (UIkit) { UIkit.component('height-match', { args: 'target', props: { target: String, row: Boolean }, defaults: { target: '> *', row: true }, computed: { elements: function elements() { return $__default(this.target, this.$el); } }, update: { read: function read() { var this$1 = this; var lastOffset = false; this.elements.css('minHeight', ''); this.rows = !this.row ? [this.match(this.elements)] : this.elements.toArray().reduce(function (rows, el) { if (lastOffset !== el.offsetTop) { rows.push([el]); } else { rows[rows.length - 1].push(el); } lastOffset = el.offsetTop; return rows; }, []).map(function (elements) { return this$1.match($__default(elements)); }); }, write: function write() { this.rows.forEach(function (ref) { var height = ref.height; var elements = ref.elements; return elements && elements.each(function (_, el) { return el.style.minHeight = height + "px"; } ); } ); }, events: ['resize'] }, methods: { match: function match(elements) { if (elements.length < 2) { return {}; } var max = 0, heights = []; elements = elements .each(function (_, el) { var $el, style, hidden; if (el.offsetHeight === 0) { $el = $__default(el); style = $el.attr('style') || null; hidden = $el.attr('hidden') || null; $el.attr({ style: (style + ";display:block !important;"), hidden: null }); } max = Math.max(max, el.offsetHeight); heights.push(el.offsetHeight); if ($el) { $el.attr({style: style, hidden: hidden}); } }) .filter(function (i) { return heights[i] < max; }); return {height: max, elements: elements}; } } }); } function HeightViewport (UIkit) { UIkit.component('height-viewport', { props: { expand: Boolean, offsetTop: Boolean, offsetBottom: Boolean }, defaults: { expand: false, offsetTop: false, offsetBottom: false }, connected: function connected() { this.$emitSync(); }, update: { write: function write() { this.$el.css('boxSizing', 'border-box'); var viewport = window.innerHeight, height, offset = 0; if (this.expand) { this.$el.css({height: '', minHeight: ''}); var diff = viewport - document.documentElement.offsetHeight; if (diff > 0) { this.$el.css('min-height', height = this.$el.outerHeight() + diff) } } else { var top = offsetTop(this.$el); if (top < viewport && this.offsetTop) { offset += top; } if (this.offsetBottom === true) { offset += this.$el.next().outerHeight() || 0; } else if ($.isNumeric(this.offsetBottom)) { offset += (viewport / 100) * this.offsetBottom; } else if (this.offsetBottom && this.offsetBottom.substr(-2) === 'px') { offset += parseFloat(this.offsetBottom); } else if (isString(this.offsetBottom)) { var el = query(this.offsetBottom, this.$el); offset += el && el.outerHeight() || 0; } this.$el.css('min-height', height = offset ? ("calc(100vh - " + offset + "px)") : '100vh'); } // IE 10-11 fix (min-height on a flex container won't apply to its flex items) this.$el.height(''); if (height && viewport - offset >= this.$el.outerHeight()) { this.$el.css('height', height); } }, events: ['load', 'resize'] } }); } function Hover (UIkit) { ready(function () { if (!hasTouch) { return; } var cls = 'uk-hover'; docElement.on('tap', function (ref) { var target = ref.target; return $__default(("." + cls)).filter(function (_, el) { return !isWithin(target, el); }).removeClass(cls); }); Object.defineProperty(UIkit, 'hoverSelector', { set: function set(selector) { docElement.on('tap', selector, function (ref) { var currentTarget = ref.currentTarget; return currentTarget.classList.add(cls); }); } }); UIkit.hoverSelector = '.uk-animation-toggle, .uk-transition-toggle, [uk-hover]'; }); } var closeIcon = ""; var closeLarge = ""; var navbarToggleIcon = ""; var overlayIcon = ""; var paginationNext = ""; var paginationPrevious = ""; var searchIcon = ""; var searchLarge = ""; var searchNavbar = ""; var slidenavNext = ""; var slidenavNextLarge = ""; var slidenavPrevious = ""; var slidenavPreviousLarge = ""; var spinner = ""; var totop = ""; function Icon (UIkit) { var parsed = {}, icons = { spinner: spinner, totop: totop, 'close-icon': closeIcon, 'close-large': closeLarge, 'navbar-toggle-icon': navbarToggleIcon, 'overlay-icon': overlayIcon, 'pagination-next': paginationNext, 'pagination-previous': paginationPrevious, 'search-icon': searchIcon, 'search-large': searchLarge, 'search-navbar': searchNavbar, 'slidenav-next': slidenavNext, 'slidenav-next-large': slidenavNextLarge, 'slidenav-previous': slidenavPrevious, 'slidenav-previous-large': slidenavPreviousLarge }; UIkit.component('icon', UIkit.components.svg.extend({ attrs: ['icon', 'ratio'], mixins: [Class], name: 'icon', args: 'icon', props: ['icon'], defaults: {exclude: ['id', 'style', 'class', 'src']}, init: function init() { this.$el.addClass('uk-icon'); if (isRtl) { this.icon = swap(swap(this.icon, 'left', 'right'), 'previous', 'next'); } }, update: { read: function read() { if (this.delay) { var icon = this.getIcon(); if (icon) { this.delay(icon); } } }, events: ['load'] }, methods: { getSvg: function getSvg() { var this$1 = this; var icon = this.getIcon(); if (!icon) { if (document.readyState !== 'complete') { return promise(function (resolve) { this$1.delay = resolve; }); } return promise.reject('Icon not found.'); } return promise.resolve(icon); }, getIcon: function getIcon() { if (!icons[this.icon]) { return null; } if (!parsed[this.icon]) { parsed[this.icon] = this.parse(icons[this.icon]); } return parsed[this.icon]; } } })); [ 'navbar-toggle-icon', 'overlay-icon', 'pagination-previous', 'pagination-next', 'totop' ].forEach(function (name) { return registerComponent(name); }); [ 'slidenav-previous', 'slidenav-next' ].forEach(function (name) { return registerComponent(name, { init: function init() { this.$el.addClass('uk-slidenav'); if (this.$el.hasClass('uk-slidenav-large')) { this.icon += '-large'; } } }); }); registerComponent('search-icon', { init: function init() { if (this.$el.hasClass('uk-search-icon') && this.$el.parents('.uk-search-large').length) { this.icon = 'search-large'; } else if (this.$el.parents('.uk-search-navbar').length) { this.icon = 'search-navbar'; } } }); registerComponent('close', { init: function init() { this.icon = "close-" + (this.$el.hasClass('uk-close-large') ? 'large' : 'icon'); } }); registerComponent('spinner', { connected: function connected() { var this$1 = this; this.height = this.width = this.$el.width(); this.svg.then(function (svg) { var circle = svg.find('circle'), diameter = Math.floor(this$1.width / 2); svg[0].setAttribute('viewBox', ("0 0 " + (this$1.width) + " " + (this$1.width))); circle.attr({cx: diameter, cy: diameter, r: diameter - parseFloat(circle.css('stroke-width') || 0)}); }); } }); UIkit.icon.add = function (added) { return $.extend(icons, added); }; function registerComponent(name, mixin) { UIkit.component(name, UIkit.components.icon.extend({ name: name, mixins: mixin ? [mixin] : [], defaults: { icon: name } })); } } function Margin (UIkit) { UIkit.component('margin', { props: { margin: String, firstColumn: Boolean }, defaults: { margin: 'uk-margin-small-top', firstColumn: 'uk-first-column' }, update: { read: function read() { var this$1 = this; if (this.$el[0].offsetHeight === 0) { this.hidden = true; return; } this.hidden = false; this.stacks = true; var columns = this.$el.children().filter(function (_, el) { return el.offsetHeight > 0; }); this.rows = [[columns.get(0)]]; columns.slice(1).each(function (_, el) { var top = Math.ceil(el.offsetTop), bottom = top + el.offsetHeight; for (var index = this$1.rows.length - 1; index >= 0; index--) { var row = this$1.rows[index], rowTop = Math.ceil(row[0].offsetTop); if (top >= rowTop + row[0].offsetHeight) { this$1.rows.push([el]); break; } if (bottom > rowTop) { this$1.stacks = false; if (el.offsetLeft < row[0].offsetLeft) { row.unshift(el); break; } row.push(el); break; } if (index === 0) { this$1.rows.splice(index, 0, [el]); break; } } }); }, write: function write() { var this$1 = this; if (this.hidden) { return; } this.rows.forEach(function (row, i) { return row.forEach(function (el, j) { return $__default(el) .toggleClass(this$1.margin, i !== 0) .toggleClass(this$1.firstColumn, j === 0); } ); } ) }, events: ['load', 'resize'] } }); } function Modal$1 (UIkit) { UIkit.component('modal', { mixins: [Modal], props: { center: Boolean }, defaults: { center: false, clsPage: 'uk-modal-page', clsPanel: 'uk-modal-dialog', selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full' }, update: { write: function write() { if (this.$el.css('display') === 'block' && this.center) { this.$el .removeClass('uk-flex uk-flex-center uk-flex-middle') .css('display', 'block') .toggleClass('uk-flex uk-flex-center uk-flex-middle', window.innerHeight > this.panel.outerHeight(true)) .css('display', this.$el.hasClass('uk-flex') ? '' : 'block'); } }, events: ['resize'] }, events: [ { name: 'beforeshow', self: true, handler: function handler() { this.$el.css('display', 'block').height(); } }, { name: 'hidden', self: true, handler: function handler() { this.$el.css('display', '').removeClass('uk-flex uk-flex-center uk-flex-middle'); } } ] }); UIkit.component('overflow-auto', { mixins: [Class], computed: { panel: function panel() { return this.$el.closest('.uk-modal-dialog'); } }, connected: function connected() { this.$el.css('min-height', 150); }, update: { write: function write() { var current = this.$el.css('max-height'); this.$el.css('max-height', 150).css('max-height', Math.max(150, 150 - (this.panel.outerHeight(true) - window.innerHeight))); if (current !== this.$el.css('max-height')) { this.$el.trigger('resize'); } }, events: ['load', 'resize'] } }); UIkit.modal.dialog = function (content, options) { var dialog = UIkit.modal( ("
\n
" + content + "
\n
") , options); dialog.$el.on('hidden', function () { return dialog.$destroy(true); }); dialog.show(); return dialog; }; UIkit.modal.alert = function (message, options) { options = $.extend({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options); return promise( function (resolve) { return UIkit.modal.dialog(("\n
" + (isString(message) ? message : $__default(message).html()) + "
\n \n "), options).$el.on('hide', resolve); } ); }; UIkit.modal.confirm = function (message, options) { options = $.extend({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options); return promise( function (resolve, reject) { return UIkit.modal.dialog(("\n
" + (isString(message) ? message : $__default(message).html()) + "
\n \n "), options).$el.on('click', '.uk-modal-footer button', function (e) { return $__default(e.target).index() === 0 ? reject() : resolve(); }); } ); }; UIkit.modal.prompt = function (message, value, options) { options = $.extend({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options); return promise(function (resolve) { var resolved = false, prompt = UIkit.modal.dialog(("\n
\n
\n \n \n
\n \n
\n "), options), input = prompt.$el.find('input').val(value); prompt.$el .on('submit', 'form', function (e) { e.preventDefault(); resolve(input.val()); resolved = true; prompt.hide() }) .on('hide', function () { if (!resolved) { resolve(null); } }); }); }; UIkit.modal.labels = { ok: 'Ok', cancel: 'Cancel' } } function Nav (UIkit) { UIkit.component('nav', UIkit.components.accordion.extend({ name: 'nav', defaults: { targets: '> .uk-parent', toggle: '> a', content: 'ul:first' } })); } function Navbar (UIkit) { UIkit.component('navbar', { mixins: [Class], props: { dropdown: String, mode: 'list', align: String, offset: Number, boundary: Boolean, boundaryAlign: Boolean, clsDrop: String, delayShow: Number, delayHide: Number, dropbar: Boolean, dropbarMode: String, dropbarAnchor: 'jQuery', duration: Number }, defaults: { dropdown: '.uk-navbar-nav > li', align: !isRtl ? 'left' : 'right', clsDrop: 'uk-navbar-dropdown', mode: undefined, offset: undefined, delayShow: undefined, delayHide: undefined, boundaryAlign: undefined, flip: 'x', boundary: true, dropbar: false, dropbarMode: 'slide', dropbarAnchor: false, duration: 200, }, computed: { boundary: function boundary() { return (this.$props.boundary === true || this.boundaryAlign) ? this.$el : this.$props.boundary }, pos: function pos() { return ("bottom-" + (this.align)); } }, ready: function ready() { if (this.dropbar) { UIkit.navbarDropbar( query(this.dropbar, this.$el) || $__default('
').insertAfter(this.dropbarAnchor || this.$el), {clsDrop: this.clsDrop, mode: this.dropbarMode, duration: this.duration, navbar: this} ); } }, update: function update() { UIkit.drop($__default(((this.dropdown) + " ." + (this.clsDrop)), this.$el), $.extend({}, this)) }, events: [ { name: pointerEnter, delegate: function delegate() { return this.dropdown; }, handler: function handler(ref) { var currentTarget = ref.currentTarget; var active = this.getActive(); if (active && active.toggle && !isWithin(active.toggle.$el, currentTarget) && !active.tracker.movesTo(active.$el)) { active.hide(false); } } } ], methods: { getActive: function getActive() { var active = UIkit.drop.getActive(); return active && active.mode !== 'click' && isWithin(active.toggle.$el, this.$el) && active; } } }); UIkit.component('navbar-dropbar', { mixins: [Class], defaults: { clsDrop: '', mode: 'slide', navbar: null, duration: 200 }, init: function init() { if (this.mode === 'slide') { this.$el.addClass('uk-navbar-dropbar-slide'); } }, events: [ { name: 'beforeshow', el: function el() { return this.navbar.$el; }, handler: function handler(_, ref) { var $el = ref.$el; var dir = ref.dir; if (dir === 'bottom' && !isWithin($el, this.$el)) { $el.appendTo(this.$el); this.$el.trigger('beforeshow', [{$el: $el}]); } } }, { name: 'mouseleave', handler: function handler() { var active = this.navbar.getActive(); if (active && !this.$el.is(':hover')) { active.hide(); } } }, { name: 'beforeshow', handler: function handler(e, ref) { var $el = ref.$el; this.clsDrop && $el.addClass(((this.clsDrop) + "-dropbar")); this.transitionTo($el.outerHeight(true)); } }, { name: 'beforehide', handler: function handler(e, ref) { var $el = ref.$el; var active = this.navbar.getActive(); if (this.$el.is(':hover') && active && active.$el.is($el)) { return false; } } }, { name: 'hide', handler: function handler(e, ref) { var $el = ref.$el; var active = this.navbar.getActive(); if (!active || active && active.$el.is($el)) { this.transitionTo(0); } } } ], methods: { transitionTo: function transitionTo(height) { var this$1 = this; this.$el.height(this.$el[0].offsetHeight ? this.$el.height() : 0); return Transition.cancel(this.$el).then(function () { return Transition.start(this$1.$el, {height: height}, this$1.duration); }); } } }); } var scroll; function Offcanvas (UIkit) { UIkit.component('offcanvas', { mixins: [Modal], args: 'mode', props: { content: String, mode: String, flip: Boolean, overlay: Boolean }, defaults: { content: '.uk-offcanvas-content:first', mode: 'slide', flip: false, overlay: false, clsPage: 'uk-offcanvas-page', clsContainer: 'uk-offcanvas-container', clsPanel: 'uk-offcanvas-bar', clsFlip: 'uk-offcanvas-flip', clsContent: 'uk-offcanvas-content', clsContentAnimation: 'uk-offcanvas-content-animation', clsSidebarAnimation: 'uk-offcanvas-bar-animation', clsMode: 'uk-offcanvas', clsOverlay: 'uk-offcanvas-overlay', selClose: '.uk-offcanvas-close' }, computed: { content: function content() { return $__default(query(this.$props.content, this.$el)); }, clsFlip: function clsFlip() { return this.flip ? this.$props.clsFlip : ''; }, clsOverlay: function clsOverlay() { return this.overlay ? this.$props.clsOverlay : ''; }, clsMode: function clsMode() { return ((this.$props.clsMode) + "-" + (this.mode)); }, clsSidebarAnimation: function clsSidebarAnimation() { return this.mode === 'none' || this.mode === 'reveal' ? '' : this.$props.clsSidebarAnimation; }, clsContentAnimation: function clsContentAnimation() { return this.mode !== 'push' && this.mode !== 'reveal' ? '' : this.$props.clsContentAnimation }, transitionElement: function transitionElement() { return this.mode === 'reveal' ? this.panel.parent() : this.panel; } }, update: { write: function write() { if (this.isToggled()) { if (this.overlay || this.clsContentAnimation) { this.content.width(window.innerWidth - this.scrollbarWidth); } if (this.overlay) { this.content.height(window.innerHeight); scroll && this.content.scrollTop(scroll.y); } } }, events: ['resize'] }, events: [ { name: 'beforeshow', self: true, handler: function handler() { scroll = scroll || {x: window.pageXOffset, y: window.pageYOffset}; if (this.mode === 'reveal' && !this.panel.parent().hasClass(this.clsMode)) { this.panel.wrap('
').parent().addClass(this.clsMode); } docElement.css('overflow-y', (!this.clsContentAnimation || this.flip) && this.scrollbarWidth && this.overlay ? 'scroll' : ''); this.body.addClass(((this.clsContainer) + " " + (this.clsFlip) + " " + (this.clsOverlay))).height(); this.content.addClass(this.clsContentAnimation); this.panel.addClass(((this.clsSidebarAnimation) + " " + (this.mode !== 'reveal' ? this.clsMode : ''))); this.$el.addClass(this.clsOverlay).css('display', 'block').height(); } }, { name: 'beforehide', self: true, handler: function handler() { this.content.removeClass(this.clsContentAnimation); if (this.mode === 'none' || this.getActive() && this.getActive() !== this) { this.panel.trigger(transitionend); } } }, { name: 'hidden', self: true, handler: function handler() { if (this.mode === 'reveal') { this.panel.unwrap(); } if (!this.overlay) { scroll = {x: window.pageXOffset, y: window.pageYOffset} } this.panel.removeClass(((this.clsSidebarAnimation) + " " + (this.clsMode))); this.$el.removeClass(this.clsOverlay).css('display', ''); this.body.removeClass(((this.clsContainer) + " " + (this.clsFlip) + " " + (this.clsOverlay))).scrollTop(scroll.y); docElement.css('overflow-y', ''); this.content.width('').height(''); window.scrollTo(scroll.x, scroll.y); scroll = null; } }, { name: 'swipeLeft swipeRight', handler: function handler(e) { if (this.isToggled() && isTouch(e) && (e.type === 'swipeLeft' && !this.flip || e.type === 'swipeRight' && this.flip)) { this.hide(); } } } ] }); } function Responsive (UIkit) { UIkit.component('responsive', { props: ['width', 'height'], init: function init() { this.$el.addClass('uk-responsive-width'); }, update: { write: function write() { if (this.$el.is(':visible') && this.width && this.height) { this.$el.height(Dimensions.fit( {height: this.height, width: this.width}, {width: this.$el.parent().width(), height: this.height || this.$el.height()} )['height']); } }, events: ['load', 'resize'] } }); } function Scroll (UIkit) { UIkit.component('scroll', { props: { duration: Number, transition: String, offset: Number }, defaults: { duration: 1000, transition: 'easeOutExpo', offset: 0 }, methods: { scrollToElement: function scrollToElement(el) { var this$1 = this; el = $__default(el); // get / set parameters var target = offsetTop(el) - this.offset, docHeight = document.documentElement.offsetHeight, winHeight = window.innerHeight; if (target + winHeight > docHeight) { target = docHeight - winHeight; } // animate to target, fire callback when done $__default('html,body') .stop() .animate({scrollTop: parseInt(target, 10) || 1}, this.duration, this.transition) .promise() .then(function () { return this$1.$el.trigger('scrolled', [this$1]); }); } }, events: { click: function click(e) { if (e.isDefaultPrevented()) { return; } e.preventDefault(); this.scrollToElement($__default(this.$el[0].hash).length ? this.$el[0].hash : 'body'); } } }); if (!$__default.easing.easeOutExpo) { $__default.easing.easeOutExpo = function (x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; }; } } function Scrollspy (UIkit) { UIkit.component('scrollspy', { args: 'cls', props: { cls: 'list', target: String, hidden: Boolean, offsetTop: Number, offsetLeft: Number, repeat: Boolean, delay: Number }, defaults: { cls: ['uk-scrollspy-inview'], target: false, hidden: true, offsetTop: 0, offsetLeft: 0, repeat: false, delay: 0, inViewClass: 'uk-scrollspy-inview' }, init: function init() { this.$emitSync(); }, computed: { elements: function elements() { return this.target && $__default(this.target, this.$el) || this.$el; } }, update: [ { write: function write() { if (this.hidden) { this.elements.filter((":not(." + (this.inViewClass) + ")")).css('visibility', 'hidden'); } } }, { read: function read() { var this$1 = this; this.elements.each(function (_, el) { if (!el._scrollspy) { var cls = $__default(el).attr('uk-scrollspy-class'); el._scrollspy = {toggles: cls && cls.split(',') || this$1.cls}; } el._scrollspy.show = isInView(el, this$1.offsetTop, this$1.offsetLeft); }); }, write: function write() { var this$1 = this; var index = this.elements.length === 1 ? 1 : 0; this.elements.each(function (_, el) { var $el = $__default(el); var data = el._scrollspy; if (data.show) { if (!data.inview && !data.timer) { data.timer = setTimeout(function () { $el.css('visibility', '') .addClass(this$1.inViewClass) .toggleClass(data.toggles[0]) .trigger('inview'); data.inview = true; delete data.timer; }, this$1.delay * index++); } } else { if (data.inview && this$1.repeat) { if (data.timer) { clearTimeout(data.timer); delete data.timer; } $el.removeClass(this$1.inViewClass) .toggleClass(data.toggles[0]) .css('visibility', this$1.hidden ? 'hidden' : '') .trigger('outview'); data.inview = false; } } data.toggles.reverse(); }); }, events: ['scroll', 'load', 'resize'] } ] }); } function ScrollspyNav (UIkit) { UIkit.component('scrollspy-nav', { props: { cls: String, closest: String, scroll: Boolean, overflow: Boolean, offset: Number }, defaults: { cls: 'uk-active', closest: false, scroll: false, overflow: true, offset: 0 }, computed: { links: function links() { return this.$el.find('a[href^="#"]').filter(function (i, el) { return el.hash; }); }, elements: function elements() { return this.closest ? this.links.closest(this.closest) : this.links; }, targets: function targets() { return $__default(this.links.toArray().map(function (el) { return el.hash; }).join(',')); } }, update: [ { read: function read() { if (this.scroll) { UIkit.scroll(this.links, {offset: this.offset || 0}); } } }, { read: function read() { var this$1 = this; var scroll = window.pageYOffset + this.offset, max = document.documentElement.scrollHeight - window.innerHeight + this.offset; this.active = false; this.targets.each(function (i, el) { el = $__default(el); var top = offsetTop(el), last = i + 1 === this$1.targets.length; if (!this$1.overflow && (i === 0 && top > scroll || last && top + el[0].offsetTop < scroll)) { return false; } if (!last && offsetTop(this$1.targets.eq(i + 1)) <= scroll) { return; } if (scroll >= max) { for (var j = this$1.targets.length - 1; j > i; j--) { if (isInView(this$1.targets.eq(j))) { el = this$1.targets.eq(j); break; } } } return !(this$1.active = toJQuery(this$1.links.filter(("[href=\"#" + (el.attr('id')) + "\"]")))); }); }, write: function write() { this.links.blur(); this.elements.removeClass(this.cls); if (this.active) { this.$el.trigger('active', [ this.active, (this.closest ? this.active.closest(this.closest) : this.active).addClass(this.cls) ]); } }, events: ['scroll', 'load', 'resize'] } ] }); } function Sticky (UIkit) { UIkit.component('sticky', { mixins: [Class], attrs: true, props: { top: null, bottom: Boolean, offset: Number, animation: String, clsActive: String, clsInactive: String, clsFixed: String, widthElement: 'jQuery', showOnUp: Boolean, media: 'media', target: Number }, defaults: { top: 0, bottom: false, offset: 0, animation: '', clsActive: 'uk-active', clsInactive: '', clsFixed: 'uk-sticky-fixed', widthElement: false, showOnUp: false, media: false, target: false }, connected: function connected() { this.placeholder = $__default('
'); this.widthElement = this.$props.widthElement || this.placeholder; if (!this.isActive) { this.$el.addClass(this.clsInactive); } }, disconnected: function disconnected() { if (this.isActive) { this.isActive = false; this.hide(); this.$el.removeClass(this.clsInactive); } this.placeholder.remove(); this.placeholder = null; this.widthElement = null; }, ready: function ready() { var this$1 = this; if (!(this.target && location.hash && window.pageYOffset > 0)) { return; } var target = query(location.hash); if (target) { requestAnimationFrame(function () { var top = offsetTop(target), elTop = offsetTop(this$1.$el), elHeight = this$1.$el[0].offsetHeight, elBottom = elTop + elHeight; if (elBottom >= top && elTop <= top + target[0].offsetHeight) { window.scrollTo(0, top - elHeight - this$1.target - this$1.offset); } }); } }, update: [ { write: function write() { var this$1 = this; var outerHeight = this.$el[0].offsetHeight, el; this.placeholder .css('height', this.$el.css('position') !== 'absolute' ? outerHeight : '') .css(this.$el.css(['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])); if (!document.documentElement.contains(this.placeholder[0])) { this.placeholder.insertAfter(this.$el).attr('hidden', true); } this.width = this.widthElement.attr('hidden', null)[0].offsetWidth; this.widthElement.attr('hidden', !this.isActive); this.topOffset = offsetTop(this.isActive ? this.placeholder : this.$el); this.bottomOffset = this.topOffset + outerHeight; ['top', 'bottom'].forEach(function (prop) { this$1[prop] = this$1.$props[prop]; if (!this$1[prop]) { return; } if ($.isNumeric(this$1[prop])) { this$1[prop] = this$1[(prop + "Offset")] + parseFloat(this$1[prop]); } else { if (isString(this$1[prop]) && this$1[prop].match(/^-?\d+vh$/)) { this$1[prop] = window.innerHeight * parseFloat(this$1[prop]) / 100; } else { el = this$1[prop] === true ? this$1.$el.parent() : query(this$1[prop], this$1.$el); if (el) { this$1[prop] = offsetTop(el) + el[0].offsetHeight; } } } }); this.top = Math.max(parseFloat(this.top), this.topOffset) - this.offset; this.bottom = this.bottom && this.bottom - outerHeight; this.inactive = this.media && !window.matchMedia(this.media).matches; if (this.isActive) { this.update(); } }, events: ['load', 'resize'] }, { read: function read() { this.offsetTop = offsetTop(this.$el) }, write: function write(ref) { var this$1 = this; if ( ref === void 0 ) ref = {}; var dir = ref.dir; var scroll = window.pageYOffset; if (scroll < 0 || !this.$el.is(':visible') || this.disabled || this.showOnUp && !dir) { return; } if (this.inactive || scroll < this.top || this.showOnUp && (scroll <= this.top || dir ==='down' || dir === 'up' && !this.isActive && scroll <= this.bottomOffset) ) { if (!this.isActive) { return; } this.isActive = false; if (this.animation && this.bottomOffset < this.offsetTop) { Animation.cancel(this.$el).then(function () { return Animation.out(this$1.$el, this$1.animation).then(function () { return this$1.hide(); }); }); } else { this.hide(); } } else if (this.isActive) { this.update(); } else if (this.animation) { Animation.cancel(this.$el).then(function () { this$1.show(); Animation.in(this$1.$el, this$1.animation); }); } else { this.show(); } }, events: ['scroll'] } ], methods: { show: function show() { this.isActive = true; this.update(); this.$el.trigger('active'); this.placeholder.attr('hidden', null); }, hide: function hide() { this.$el .addClass(this.clsInactive) .removeClass(this.clsFixed) .removeClass(this.clsActive) .css({position: '', top: '', width: ''}) .trigger('inactive'); this.placeholder.attr('hidden', true); }, update: function update() { var top = Math.max(0, this.offset), scroll = window.pageYOffset, active = scroll > this.top; if (this.bottom && scroll > this.bottom - this.offset) { top = this.bottom - scroll; } this.$el .css({ position: 'fixed', top: (top + "px"), width: this.width }) .addClass(this.clsFixed) .toggleClass(this.clsActive, active) .toggleClass(this.clsInactive, !active); } } }); } var svgs = {}; var parser = new DOMParser(); function Svg (UIkit) { UIkit.component('svg', { attrs: true, props: { id: String, icon: String, src: String, style: String, width: Number, height: Number, ratio: Number, 'class': String }, defaults: { ratio: 1, id: false, exclude: ['src'], 'class': '' }, init: function init() { this.class += ' uk-svg'; }, connected: function connected() { var this$1 = this; if (!this.icon && this.src && ~this.src.indexOf('#')) { var parts = this.src.split('#'); if (parts.length > 1) { this.src = parts[0]; this.icon = parts[1]; } } this.width = this.$props.width; this.height = this.$props.height; this.svg = this.getSvg().then(function (doc) { return promise(function (resolve, reject) { return fastdom.mutate(function () { var svg, el; if (!doc) { reject('SVG not found.'); return; } if (!this$1.icon) { el = doc.documentElement.cloneNode(true); } else { svg = doc.getElementById(this$1.icon); if (!svg) { // fallback if SVG has no symbols if (!doc.querySelector('symbol')) { el = doc.documentElement.cloneNode(true); } } else { var html = svg.outerHTML; // IE workaround if (!html) { var div = document.createElement('div'); div.appendChild(svg.cloneNode(true)); html = div.innerHTML; } html = html .replace(//g, 'svg>'); el = parser.parseFromString(html, 'image/svg+xml').documentElement; } } if (!el) { reject('SVG not found.'); return; } var dimensions = el.getAttribute('viewBox'); // jQuery workaround, el.attr('viewBox') if (dimensions) { dimensions = dimensions.split(' '); this$1.width = this$1.width || dimensions[2]; this$1.height = this$1.height || dimensions[3]; } el = $__default(el); this$1.width *= this$1.ratio; this$1.height *= this$1.ratio; for (var prop in this$1.$options.props) { if (this$1[prop] && !~this$1.exclude.indexOf(prop)) { el.attr(prop, this$1[prop]); } } if (!this$1.id) { el.removeAttr('id'); } if (this$1.width && !this$1.height) { el.removeAttr('height'); } if (this$1.height && !this$1.width) { el.removeAttr('width'); } if (isVoidElement(this$1.$el) || this$1.$el[0].tagName === 'CANVAS') { this$1.$el.attr({hidden: true, id: null}); el.insertAfter(this$1.$el); } else { el.appendTo(this$1.$el); } resolve(el); }); }); }).then(null, function () {}); if (!this._isReady) { this.$emitSync(); } }, disconnected: function disconnected() { if (isVoidElement(this.$el)) { this.$el.attr({hidden: null, id: this.id || null}); } if (this.svg) { this.svg.then(function (svg) { svg && svg.remove(); }); this.svg = null; } }, methods: { getSvg: function getSvg() { var this$1 = this; if (!this.src) { return promise.reject(); } if (svgs[this.src]) { return svgs[this.src]; } svgs[this.src] = promise(function (resolve, reject) { if (this$1.src.lastIndexOf('data:', 0) === 0) { resolve(this$1.parse(decodeURIComponent(this$1.src.split(',')[1]))); } else { $__default.ajax(this$1.src, {dataType: 'html'}).then(function (doc) { resolve(this$1.parse(doc)); }, function () { reject('SVG not found.'); }); } }); return svgs[this.src]; }, parse: function parse(doc) { var parsed = parser.parseFromString(doc, 'image/svg+xml'); return parsed.documentElement && parsed.documentElement.nodeName === 'svg' ? parsed : null; } } }); } function Switcher (UIkit) { UIkit.component('switcher', { mixins: [Toggable], args: 'connect', props: { connect: String, toggle: String, active: Number, swiping: Boolean }, defaults: { connect: false, toggle: ' > *', active: 0, swiping: true, cls: 'uk-active', clsContainer: 'uk-switcher', attrItem: 'uk-switcher-item', queued: true }, connected: function connected() { this.$emitSync(); }, computed: { connects: function connects() { return query(this.connect, this.$el) || $__default(this.$el.next(("." + (this.clsContainer)))); }, toggles: function toggles() { return $__default(this.toggle, this.$el); } }, events: [ { name: 'click', delegate: function delegate() { return ((this.toggle) + ":not(.uk-disabled)"); }, handler: function handler(e) { e.preventDefault(); this.show(e.currentTarget); } }, { name: 'click', el: function el() { return this.connects; }, delegate: function delegate() { return ("[" + (this.attrItem) + "],[data-" + (this.attrItem) + "]"); }, handler: function handler(e) { e.preventDefault(); this.show($__default(e.currentTarget)[e.currentTarget.hasAttribute(this.attrItem) ? 'attr' : 'data'](this.attrItem)); } }, { name: 'swipeRight swipeLeft', filter: function filter() { return this.swiping; }, el: function el() { return this.connects; }, delegate: function delegate() { return ("[" + (this.attrItem) + "],[data-" + (this.attrItem) + "]"); }, handler: function handler(e) { if (!isTouch(e)) { return; } e.preventDefault(); if (!window.getSelection().toString()) { this.show(e.type == 'swipeLeft' ? 'next' : 'previous'); } } } ], update: function update() { this.updateAria(this.connects.children()); this.show(toJQuery(this.toggles.filter(("." + (this.cls) + ":first"))) || toJQuery(this.toggles.eq(this.active)) || this.toggles.first()); }, methods: { show: function show(item) { var this$1 = this; var length = this.toggles.length, prev = this.connects.children(("." + (this.cls))).index(), hasPrev = prev >= 0, index = getIndex(item, this.toggles, prev), dir = item === 'previous' ? -1 : 1, toggle; for (var i = 0; i < length; i++, index = (index + dir + length) % length) { if (!this$1.toggles.eq(index).is('.uk-disabled, [disabled]')) { toggle = this$1.toggles.eq(index); break; } } if (!toggle || prev >= 0 && toggle.hasClass(this.cls) || prev === index) { return; } this.toggles.removeClass(this.cls).attr('aria-expanded', false); toggle.addClass(this.cls).attr('aria-expanded', true); if (!hasPrev) { this.toggleNow(this.connects.children((":nth-child(" + (index + 1) + ")"))); } else { this.toggleElement(this.connects.children((":nth-child(" + (prev + 1) + "),:nth-child(" + (index + 1) + ")"))); } } } }); } function Tab (UIkit) { UIkit.component('tab', UIkit.components.switcher.extend({ mixins: [Class], name: 'tab', props: { media: 'media' }, defaults: { media: 960, attrItem: 'uk-tab-item' }, init: function init() { var cls = this.$el.hasClass('uk-tab-left') && 'uk-tab-left' || this.$el.hasClass('uk-tab-right') && 'uk-tab-right'; if (cls) { UIkit.toggle(this.$el, {cls: cls, mode: 'media', media: this.media}); } } })); } function Toggle (UIkit) { UIkit.component('toggle', { mixins: [UIkit.mixin.toggable], args: 'target', props: { href: String, target: null, mode: 'list', media: 'media' }, defaults: { href: false, target: false, mode: 'click', queued: true, media: false }, computed: { target: function target() { return query(this.$props.target || this.href, this.$el) || this.$el; } }, events: [ { name: (pointerEnter + " " + pointerLeave), filter: function filter() { return ~this.mode.indexOf('hover'); }, handler: function handler(e) { if (!isTouch(e)) { this.toggle(("toggle" + (e.type === pointerEnter ? 'show' : 'hide'))); } } }, { name: 'click', filter: function filter() { return ~this.mode.indexOf('click') || hasTouch; }, handler: function handler(e) { if (!isTouch(e) && !~this.mode.indexOf('click')) { return; } // TODO better isToggled handling var link = $__default(e.target).closest('a[href]'); if ($__default(e.target).closest('a[href="#"], button').length || link.length && ( this.cls || !this.target.is(':visible') || this.target.is(link.attr('href')) ) ) { e.preventDefault(); } this.toggle(); } } ], update: { write: function write() { if (!~this.mode.indexOf('media') || !this.media) { return; } var toggled = this.isToggled(this.target); if (window.matchMedia(this.media).matches ? !toggled : toggled) { this.toggle(); } }, events: ['load', 'resize'] }, methods: { toggle: function toggle(type) { var event = $__default.Event(type || 'toggle'); this.target.triggerHandler(event, [this]); if (!event.isDefaultPrevented()) { this.toggleElement(this.target); } } } }); } function Leader (UIkit) { UIkit.component('leader', { mixins: [Class], props: { fill: String, media: 'media' }, defaults: { fill: '', media: false, clsWrapper: 'uk-leader-fill', clsHide: 'uk-leader-hide', attrFill: 'data-fill' }, computed: { fill: function fill() { return this.$props.fill || getCssVar('leader-fill'); } }, connected: function connected() { this.wrapper = this.$el.wrapInner(("")).children().first(); }, disconnected: function disconnected() { this.wrapper.contents().unwrap(); }, update: [ { read: function read() { var prev = this._width; this._width = Math.floor(this.$el[0].offsetWidth / 2); this._changed = prev !== this._width; this._hide = this.media && !window.matchMedia(this.media).matches; }, write: function write() { this.wrapper.toggleClass(this.clsHide, this._hide); if (this._changed) { this.wrapper.attr(this.attrFill, Array(this._width).join(this.fill)); } }, events: ['load', 'resize'] } ] }); } function core (UIkit) { var scroll = null, dir, ticking, resizing, started = 0; win .on('load', UIkit.update) .on('resize', function (e) { if (!resizing) { requestAnimationFrame(function () { UIkit.update(e); resizing = false; }); resizing = true; } }) .on('scroll', function (e) { if (scroll === null) { scroll = 0; } if (scroll === window.pageYOffset) { return; } dir = scroll < window.pageYOffset; scroll = window.pageYOffset; if (!ticking) { requestAnimationFrame(function () { e.dir = dir ? 'down' : 'up'; UIkit.update(e); ticking = false; }); ticking = true; } }); on(document, animationstart, function (ref) { var target = ref.target; if ((getStyle(target, 'animationName') || '').match(/^uk-.*(left|right)/)) { started++; document.body.style.overflowX = 'hidden'; setTimeout(function () { if (!--started) { document.body.style.overflowX = ''; } }, toMs(getStyle(target, 'animationDuration')) + 100); } }, true); // core components UIkit.use(Toggle); UIkit.use(Accordion); UIkit.use(Alert); UIkit.use(Cover); UIkit.use(Drop); UIkit.use(Dropdown); UIkit.use(FormCustom); UIkit.use(HeightMatch); UIkit.use(HeightViewport); UIkit.use(Hover); UIkit.use(Margin); UIkit.use(Gif); UIkit.use(Grid); UIkit.use(Leader); UIkit.use(Modal$1); UIkit.use(Nav); UIkit.use(Navbar); UIkit.use(Offcanvas); UIkit.use(Responsive); UIkit.use(Scroll); UIkit.use(Scrollspy); UIkit.use(ScrollspyNav); UIkit.use(Sticky); UIkit.use(Svg); UIkit.use(Icon); UIkit.use(Switcher); UIkit.use(Tab); } UIkit.version = '3.0.0-beta.20'; mixin(UIkit); core(UIkit); function plugin(UIkit) { if (plugin.installed) { return; } var ref = UIkit.util; var $ = ref.$; var doc = ref.doc; var extend = ref.extend; var Dimensions = ref.Dimensions; var getIndex = ref.getIndex; var Transition = ref.Transition; var active; doc.on({ keydown: function (e) { if (active) { switch (e.keyCode) { case 37: active.show('previous'); break; case 39: active.show('next'); break; } } } }); UIkit.component('lightbox', { name: 'lightbox', props: { toggle: String, duration: Number, inverse: Boolean }, defaults: { toggle: 'a', duration: 400, dark: false, attrItem: 'uk-lightbox-item', items: [], index: 0 }, computed: { toggles: function toggles() { var this$1 = this; return $(this.toggle, this.$el).each(function (_, el) { return this$1.items.push({ source: el.getAttribute('href'), title: el.getAttribute('title'), type: el.getAttribute('type') }); }); } }, events: [ { name: 'click', delegate: function delegate() { return ((this.toggle) + ":not(.uk-disabled)"); }, handler: function handler(e) { e.preventDefault(); this.show(this.toggles.index(e.currentTarget)); } }, { name: 'showitem', handler: function handler(e) { var item = this.getItem(); if (item.content) { this.$update(); e.stopImmediatePropagation(); } } } ], update: { write: function write() { var this$1 = this; var item = this.getItem(); if (!this.modal || !item.content) { return; } var panel = this.modal.panel, dim = {width: panel.width(), height: panel.height()}, max = { width: window.innerWidth - (panel.outerWidth(true) - dim.width), height: window.innerHeight - (panel.outerHeight(true) - dim.height) }, newDim = Dimensions.fit({width: item.width, height: item.height}, max); Transition.stop(panel); Transition.stop(this.modal.content); if (this.modal.content) { this.modal.content.remove(); } this.modal.content = $(item.content).css('opacity', 0).appendTo(panel); panel.css(dim); Transition.start(panel, newDim, this.duration).then(function () { Transition.start(this$1.modal.content, {opacity: 1}, 400).then(function () { panel.find('[uk-transition-hide]').show(); panel.find('[uk-transition-show]').hide(); }); }); }, events: ['resize'] }, methods: { show: function show(index) { var this$1 = this; this.index = getIndex(index, this.items, this.index); if (!this.modal) { this.modal = UIkit.modal.dialog("\n \n \n ", {center: true}); this.modal.$el.css('overflow', 'hidden').addClass('uk-modal-lightbox'); this.modal.panel.css({width: 200, height: 200}); this.modal.caption = $('
').appendTo(this.modal.panel); if (this.items.length > 1) { $(("
\n \n \n
\n ")).appendTo(this.modal.panel.addClass('uk-slidenav-position')); } this.modal.$el .on('hidden', this.hide) .on('click', ("[" + (this.attrItem) + "]"), function (e) { e.preventDefault(); this$1.show($(e.currentTarget).attr(this$1.attrItem)); }).on('swipeRight swipeLeft', function (e) { e.preventDefault(); if (!window.getSelection().toString()) { this$1.show(e.type == 'swipeLeft' ? 'next' : 'previous'); } }); } active = this; this.modal.panel.find('[uk-transition-hide]').hide(); this.modal.panel.find('[uk-transition-show]').show(); this.modal.content && this.modal.content.remove(); this.modal.caption.text(this.getItem().title); var event = $.Event('showitem'); this.$el.trigger(event); if (!event.isImmediatePropagationStopped()) { this.setError(this.getItem()); } }, hide: function hide() { var this$1 = this; active = active && active !== this && active; this.modal.hide().then(function () { this$1.modal.$destroy(true); this$1.modal = null; }); }, getItem: function getItem() { return this.items[this.index] || {source: '', title: '', type: ''}; }, setItem: function setItem(item, content, width, height) { if ( width === void 0 ) width = 200; if ( height === void 0 ) height = 200; extend(item, {content: content, width: width, height: height}); this.$update(); }, setError: function setError(item) { this.setItem(item, '
Loading resource failed!
', 400, 300); } } }); UIkit.mixin({ events: { showitem: function showitem(e) { var this$1 = this; var item = this.getItem(); if (item.type !== 'image' && item.source && !item.source.match(/\.(jp(e)?g|png|gif|svg)$/i)) { return; } var img = new Image(); img.onerror = function () { return this$1.setError(item); }; img.onload = function () { return this$1.setItem(item, (""), img.width, img.height); }; img.src = item.source; e.stopImmediatePropagation(); } } }, 'lightbox'); UIkit.mixin({ events: { showitem: function showitem(e) { var this$1 = this; var item = this.getItem(); if (item.type !== 'video' && item.source && !item.source.match(/\.(mp4|webm|ogv)$/i)) { return; } var video = $('') .on('loadedmetadata', function () { return this$1.setItem(item, video.attr({width: video[0].videoWidth, height: video[0].videoHeight}), video[0].videoWidth, video[0].videoHeight); }) .attr('src', item.source); e.stopImmediatePropagation(); } } }, 'lightbox'); UIkit.mixin({ events: { showitem: function showitem(e) { var this$1 = this; var item = this.getItem(), matches; if (!(matches = item.source.match(/\/\/.*?youtube\.[a-z]+\/watch\?v=([^&]+)&?(.*)/)) && !(item.source.match(/youtu\.be\/(.*)/))) { return; } var id = matches[1], img = new Image(), lowres = false, setIframe = function (width, height) { return this$1.setItem(item, (""), width, height); }; img.onerror = function () { return setIframe(640, 320); }; img.onload = function () { //youtube default 404 thumb, fall back to lowres if (img.width === 120 && img.height === 90) { if (!lowres) { lowres = true; img.src = "//img.youtube.com/vi/" + id + "/0.jpg"; } else { setIframe(640, 320); } } else { setIframe(img.width, img.height); } }; img.src = "//img.youtube.com/vi/" + id + "/maxresdefault.jpg"; e.stopImmediatePropagation(); } } }, 'lightbox'); UIkit.mixin({ events: { showitem: function showitem(e) { var this$1 = this; var item = this.getItem(), matches; if (!(matches = item.source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))) { return; } var id = matches[2], setIframe = function (width, height) { return this$1.setItem(item, (""), width, height); }; $.ajax({type: 'GET', url: ("http://vimeo.com/api/oembed.json?url=" + (encodeURI(item.source))), jsonp: 'callback', dataType: 'jsonp'}).then(function (res) { return setIframe(res.width, res.height); }); e.stopImmediatePropagation(); } } }, 'lightbox'); } function plugin$1(UIkit) { if (plugin$1.installed) { return; } var ref = UIkit.util; var $ = ref.$; var each = ref.each; var pointerEnter = ref.pointerEnter; var pointerLeave = ref.pointerLeave; var Transition = ref.Transition; var containers = {}; UIkit.component('notification', { functional: true, args: ['message', 'status'], defaults: { message: '', status: '', timeout: 5000, group: null, pos: 'top-center', onClose: null, clsClose: 'uk-notification-close' }, created: function created() { if (!containers[this.pos]) { containers[this.pos] = $(("
")).appendTo(UIkit.container); } this.$mount($( ("
\n \n
" + (this.message) + "
\n
") ).appendTo(containers[this.pos].show())[0]); }, ready: function ready() { var this$1 = this; var marginBottom = parseInt(this.$el.css('margin-bottom'), 10); Transition.start( this.$el.css({opacity: 0, marginTop: -1 * this.$el.outerHeight(), marginBottom: 0}), {opacity: 1, marginTop: 0, marginBottom: marginBottom} ).then(function () { if (this$1.timeout) { this$1.timer = setTimeout(this$1.close, this$1.timeout); this$1.$el .on(pointerEnter, function () { return clearTimeout(this$1.timer); }) .on(pointerLeave, function () { return this$1.timer = setTimeout(this$1.close, this$1.timeout); }); } }); }, events: { click: function click(e) { if ($(e.target).closest('a[href="#"]').length) { e.preventDefault(); } this.close(); } }, methods: { close: function close(immediate) { var this$1 = this; var remove = function () { this$1.onClose && this$1.onClose(); this$1.$el.trigger('close', [this$1]).remove(); if (!containers[this$1.pos].children().length) { containers[this$1.pos].hide(); } }; if (this.timer) { clearTimeout(this.timer); } if (immediate) { remove(); } else { Transition.start(this.$el, {opacity: 0, marginTop: -1 * this.$el.outerHeight(), marginBottom: 0}).then(remove) } } } }); UIkit.notification.closeAll = function (group, immediate) { each(UIkit.instances, function (_, component) { if (component.$options.name === 'notification' && (!group || group === component.group)) { component.close(immediate); } }) }; } function plugin$2(UIkit) { if (plugin$2.installed) { return; } var mixin = UIkit.mixin; var util = UIkit.util; var $ = util.$; var doc = util.docElement; var extend = util.extend; var getDimensions = util.getDimensions; var isWithin = util.isWithin; var on = util.on; var off = util.off; var offsetTop = util.offsetTop; var pointerDown = util.pointerDown; var pointerMove = util.pointerMove; var pointerUp = util.pointerUp; var promise = util.promise; var win = util.win; UIkit.component('sortable', { mixins: [mixin.class], props: { group: String, animation: Number, threshold: Number, clsItem: String, clsPlaceholder: String, clsDrag: String, clsDragState: String, clsBase: String, clsNoDrag: String, clsEmpty: String, clsCustom: String, handle: String }, defaults: { group: false, animation: 150, threshold: 5, clsItem: 'uk-sortable-item', clsPlaceholder: 'uk-sortable-placeholder', clsDrag: 'uk-sortable-drag', clsDragState: 'uk-drag', clsBase: 'uk-sortable', clsNoDrag: 'uk-sortable-nodrag', clsEmpty: 'uk-sortable-empty', clsCustom: '', handle: false }, init: function init() { var this$1 = this; ['init', 'start', 'move', 'end'].forEach(function (key) { var fn = this$1[key]; this$1[key] = function (e) { e = e.originalEvent || e; this$1.scrollY = window.scrollY; var ref = e.touches && e.touches[0] || e; var pageX = ref.pageX; var pageY = ref.pageY; this$1.pos = {x: pageX, y: pageY}; fn(e); } }); }, events: ( obj = {}, obj[pointerDown] = 'init', obj ), update: { write: function write() { var this$1 = this; if (this.clsEmpty) { this.$el.toggleClass(this.clsEmpty, !this.$el.children().length); } if (!this.drag) { return; } this.drag.offset({top: this.pos.y + this.origin.top, left: this.pos.x + this.origin.left}); var top = offsetTop(this.drag), bottom = top + this.drag[0].offsetHeight; if (top > 0 && top < this.scrollY) { setTimeout(function () { return win.scrollTop(this$1.scrollY - 5); }, 5); } else if (bottom < doc[0].offsetHeight && bottom > window.innerHeight + this.scrollY) { setTimeout(function () { return win.scrollTop(this$1.scrollY + 5); }, 5); } } }, methods: { init: function init(e) { var target = $(e.target), placeholder = this.$el.children().filter(function (i, el) { return isWithin(e.target, el); }); if (!placeholder.length || target.is(':input') || this.handle && !isWithin(target, this.handle) || e.button && e.button !== 0 || isWithin(target, ("." + (this.clsNoDrag))) ) { return; } e.preventDefault(); e.stopPropagation(); this.touched = [this]; this.placeholder = placeholder; this.origin = extend({target: target, index: this.placeholder.index()}, this.pos); doc.on(pointerMove, this.move); doc.on(pointerUp, this.end); win.on('scroll', this.scroll); if (!this.threshold) { this.start(e); } }, start: function start(e) { this.drag = $(this.placeholder[0].outerHTML.replace(/^
  • $/i, 'div>')) .attr('uk-no-boot', '') .addClass(((this.clsDrag) + " " + (this.clsCustom))) .css({ boxSizing: 'border-box', width: this.placeholder.outerWidth(), height: this.placeholder.outerHeight() }) .css(this.placeholder.css(['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])) .appendTo(UIkit.container); this.drag.children().first().height(this.placeholder.children().height()); var ref = getDimensions(this.placeholder); var left = ref.left; var top = ref.top; extend(this.origin, {left: left - this.pos.x, top: top - this.pos.y}); this.placeholder.addClass(this.clsPlaceholder); this.$el.children().addClass(this.clsItem); doc.addClass(this.clsDragState); this.$el.trigger('start', [this, this.placeholder, this.drag]); this.move(e); }, move: function move(e) { if (!this.drag) { if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) { this.start(e); } return; } this.$emit(); var target = e.type === 'mousemove' ? e.target : document.elementFromPoint(this.pos.x - document.body.scrollLeft, this.pos.y - document.body.scrollTop), sortable = getSortable(target), previous = getSortable(this.placeholder[0]), move = sortable !== previous; if (!sortable || isWithin(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) { return; } target = sortable.$el.is(target.parentNode) && $(target) || sortable.$el.children().has(target); if (move) { previous.remove(this.placeholder); } else if (!target.length) { return; } sortable.insert(this.placeholder, target); if (!~this.touched.indexOf(sortable)) { this.touched.push(sortable); } }, scroll: function scroll() { var scroll = window.scrollY; if (scroll !== this.scrollY) { this.pos.y += scroll - this.scrollY; this.scrollY = scroll; this.$emit(); } }, end: function end(e) { doc.off(pointerMove, this.move); doc.off(pointerUp, this.end); win.off('scroll', this.scroll); if (!this.drag) { if (e.type !== 'mouseup' && isWithin(e.target, 'a[href]')) { location.href = $(e.target).closest('a[href]').attr('href'); } return; } preventClick(); var sortable = getSortable(this.placeholder[0]); if (this === sortable) { if (this.origin.index !== this.placeholder.index()) { this.$el.trigger('change', [this, this.placeholder, 'moved']); } } else { sortable.$el.trigger('change', [sortable, this.placeholder, 'added']); this.$el.trigger('change', [this, this.placeholder, 'removed']); } this.$el.trigger('stop', [this]); this.drag.remove(); this.drag = null; this.touched.forEach(function (sortable) { return sortable.$el.children().removeClass(((sortable.clsPlaceholder) + " " + (sortable.clsItem))); }); doc.removeClass(this.clsDragState); }, insert: function insert(element, target) { var this$1 = this; this.$el.children().addClass(this.clsItem); var insert = function () { if (target.length) { if (!this$1.$el.has(element).length || element.prevAll().filter(target).length) { element.insertBefore(target); } else { element.insertAfter(target); } } else { this$1.$el.append(element); } }; if (this.animation) { this.animate(insert); } else { insert(); } }, remove: function remove(element) { if (!this.$el.has(element).length) { return; } if (this.animation) { this.animate(function () { return element.detach(); }); } else { element.detach(); } }, animate: function animate(action) { var this$1 = this; var props = [], children = this.$el.children().toArray().map(function (el) { el = $(el); props.push(extend({ position: 'absolute', pointerEvents: 'none', width: el.outerWidth(), height: el.outerHeight() }, el.position())); return el; }), reset = {position: '', width: '', height: '', pointerEvents: '', top: '', left: ''}; action(); children.forEach(function (el) { return el.stop(); }); this.$el.children().css(reset); this.$updateSync('update', true); this.$el.css('min-height', this.$el.height()); var positions = children.map(function (el) { return el.position(); }); promise.all(children.map(function (el, i) { return el.css(props[i]).animate(positions[i], this$1.animation).promise(); })) .then(function () { this$1.$el.css('min-height', '').children().css(reset); this$1.$updateSync('update', true); }); } } }); var obj; function getSortable(element) { return UIkit.getComponent(element, 'sortable') || element.parentNode && getSortable(element.parentNode); } function preventClick() { var timer = setTimeout(function () { return doc.trigger('click'); }, 0), listener = function (e) { e.preventDefault(); e.stopPropagation(); clearTimeout(timer); off(doc, 'click', listener, true); }; on(doc, 'click', listener, true); } } function plugin$3(UIkit) { if (plugin$3.installed) { return; } var util = UIkit.util; var mixin = UIkit.mixin; var $ = util.$; var doc = util.doc; var fastdom = util.fastdom; var flipPosition = util.flipPosition; var isTouch = util.isTouch; var isWithin = util.isWithin; var pointerDown = util.pointerDown; var pointerEnter = util.pointerEnter; var pointerLeave = util.pointerLeave; var toJQuery = util.toJQuery; var active; doc.on('click', function (e) { if (active && !isWithin(e.target, active.$el)) { active.hide(); } }); UIkit.component('tooltip', { attrs: true, mixins: [mixin.toggable, mixin.position], props: { delay: Number, container: Boolean, title: String }, defaults: { pos: 'top', title: '', delay: 0, animation: ['uk-animation-scale-up'], duration: 100, cls: 'uk-active', clsPos: 'uk-tooltip', container: true, }, init: function init() { this.container = this.container === true && UIkit.container || this.container && toJQuery(this.container); }, connected: function connected() { var this$1 = this; fastdom.mutate(function () { return this$1.$el.removeAttr('title').attr('aria-expanded', false); }); }, disconnected: function disconnected() { this.hide(); }, methods: { show: function show() { var this$1 = this; if (active === this) { return; } if (active) { active.hide(); } active = this; clearTimeout(this.showTimer); this.tooltip = $(("
    " + (this.title) + "
    ")).appendTo(this.container); this.$el.attr('aria-expanded', true); this.positionAt(this.tooltip, this.$el); this.origin = this.getAxis() === 'y' ? ((flipPosition(this.dir)) + "-" + (this.align)) : ((this.align) + "-" + (flipPosition(this.dir))); this.showTimer = setTimeout(function () { this$1.toggleElement(this$1.tooltip, true); this$1.hideTimer = setInterval(function () { if (!this$1.$el.is(':visible')) { this$1.hide(); } }, 150); }, this.delay); }, hide: function hide() { if (this.$el.is('input') && this.$el[0] === document.activeElement) { return; } active = active !== this && active || false; clearTimeout(this.showTimer); clearInterval(this.hideTimer); this.$el.attr('aria-expanded', false); this.toggleElement(this.tooltip, false); this.tooltip && this.tooltip.remove(); this.tooltip = false; } }, events: ( obj = { 'blur': 'hide' }, obj[("focus " + pointerEnter + " " + pointerDown)] = function (e) { if (e.type !== pointerDown || !isTouch(e)) { this.show(); } }, obj[pointerLeave] = function (e) { if (!isTouch(e)) { this.hide() } }, obj ) }); var obj; } function plugin$4(UIkit) { if (plugin$4.installed) { return; } var ref = UIkit.util; var $ = ref.$; var ajax = ref.ajax; var on = ref.on; UIkit.component('upload', { props: { allow: String, clsDragover: String, concurrent: Number, dataType: String, mime: String, msgInvalidMime: String, msgInvalidName: String, multiple: Boolean, name: String, params: Object, type: String, url: String }, defaults: { allow: false, clsDragover: 'uk-dragover', concurrent: 1, dataType: undefined, mime: false, msgInvalidMime: 'Invalid File Type: %s', msgInvalidName: 'Invalid File Name: %s', multiple: false, name: 'files[]', params: {}, type: 'POST', url: '', abort: null, beforeAll: null, beforeSend: null, complete: null, completeAll: null, error: null, fail: function fail(msg) { alert(msg); }, load: null, loadEnd: null, loadStart: null, progress: null }, events: { change: function change(e) { if (!$(e.target).is('input[type="file"]')) { return; } e.preventDefault(); if (e.target.files) { this.upload(e.target.files); } e.target.value = ''; }, drop: function drop(e) { e.preventDefault(); e.stopPropagation(); var transfer = e.originalEvent.dataTransfer; if (!transfer || !transfer.files) { return; } this.$el.removeClass(this.clsDragover); this.upload(transfer.files); }, dragenter: function dragenter(e) { e.preventDefault(); e.stopPropagation(); }, dragover: function dragover(e) { e.preventDefault(); e.stopPropagation(); this.$el.addClass(this.clsDragover); }, dragleave: function dragleave(e) { e.preventDefault(); e.stopPropagation(); this.$el.removeClass(this.clsDragover); } }, methods: { upload: function upload(files) { var this$1 = this; if (!files.length) { return; } this.$el.trigger('upload', [files]); for (var i = 0; i < files.length; i++) { if (this$1.allow) { if (!match(this$1.allow, files[i].name)) { this$1.fail(this$1.msgInvalidName.replace(/%s/, this$1.allow)); return; } } if (this$1.mime) { if (!match(this$1.mime, files[i].type)) { this$1.fail(this$1.msgInvalidMime.replace(/%s/, this$1.mime)); return; } } } if (!this.multiple) { files = [files[0]]; } this.beforeAll && this.beforeAll(this, files); var chunks = chunk(files, this.concurrent), upload = function (files) { var data = new FormData(); files.forEach(function (file) { return data.append(this$1.name, file); }); for (var key in this$1.params) { data.append(key, this$1.params[key]); } ajax({ data: data, url: this$1.url, type: this$1.type, dataType: this$1.dataType, beforeSend: this$1.beforeSend, complete: [this$1.complete, function (xhr, status) { if (chunks.length) { upload(chunks.shift()); } else { this$1.completeAll && this$1.completeAll(xhr); } if (status === 'abort') { this$1.abort && this$1.abort(xhr); } }], cache: false, contentType: false, processData: false, xhr: function () { var xhr = $.ajaxSettings.xhr(); xhr.upload && this$1.progress && on(xhr.upload, 'progress', this$1.progress); ['loadStart', 'load', 'loadEnd', 'error', 'abort'].forEach(function (type) { return this$1[type] && on(xhr, type.toLowerCase(), this$1[type]); }); return xhr; } }) }; upload(chunks.shift()); } } }); function match(pattern, path) { return path.match(new RegExp(("^" + (pattern.replace(/\//g, '\\/').replace(/\*\*/g, '(\\/[^\\/]+)*').replace(/\*/g, '[^\\/]+').replace(/((?!\\))\?/g, '$1.')) + "$"), 'i')); } function chunk(files, size) { var chunks = []; for (var i = 0; i < files.length; i += size) { var chunk = []; for (var j = 0; j < size; j++) { chunk.push(files[i+j]); } chunks.push(chunk); } return chunks; } } UIkit.use(plugin); UIkit.use(plugin$1); UIkit.use(plugin$2); UIkit.use(plugin$3); UIkit.use(plugin$4); if (true) { boot(UIkit); } return UIkit; })));