You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

6822 lines
184 KiB

/*! 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('<div>').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 = "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"></line><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"></line></svg>";
var closeLarge = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"></line><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"></line></svg>";
var navbarToggleIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"></rect><rect y=\"3\" width=\"20\" height=\"2\"></rect><rect y=\"15\" width=\"20\" height=\"2\"></rect></svg>";
var overlayIcon = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"></rect><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"></rect></svg>";
var paginationNext = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"></polyline></svg>";
var paginationPrevious = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"></polyline></svg>";
var searchIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"></circle><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"></path></svg>";
var searchLarge = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"></circle><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"></line></svg>";
var searchNavbar = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>";
var slidenavNext = "<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 10 10 1 19\"></polyline></svg>";
var slidenavNextLarge = "<svg width=\"18\" height=\"34\" viewBox=\"0 0 18 34\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1 1 17 17 1 33\"></polyline></svg>";
var slidenavPrevious = "<svg width=\"11\" height=\"20\" viewBox=\"0 0 11 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"10 1 1 10 10 19\"></polyline></svg>";
var slidenavPreviousLarge = "<svg width=\"18\" height=\"34\" viewBox=\"0 0 18 34\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"17 1 1 17 17 33\"></polyline></svg>";
var spinner = "<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"></circle></svg>";
var totop = "<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"></polyline></svg>";
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(
("<div class=\"uk-modal\">\n <div class=\"uk-modal-dialog\">" + content + "</div>\n </div>")
, 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 <div class=\"uk-modal-body\">" + (isString(message) ? message : $__default(message).html()) + "</div>\n <div class=\"uk-modal-footer uk-text-right\">\n <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>" + (options.labels.ok) + "</button>\n </div>\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 <div class=\"uk-modal-body\">" + (isString(message) ? message : $__default(message).html()) + "</div>\n <div class=\"uk-modal-footer uk-text-right\">\n <button class=\"uk-button uk-button-default uk-modal-close\">" + (options.labels.cancel) + "</button>\n <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>" + (options.labels.ok) + "</button>\n </div>\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 <form class=\"uk-form-stacked\">\n <div class=\"uk-modal-body\">\n <label>" + (isString(message) ? message : $__default(message).html()) + "</label>\n <input class=\"uk-input\" type=\"text\" autofocus>\n </div>\n <div class=\"uk-modal-footer uk-text-right\">\n <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + (options.labels.cancel) + "</button>\n <button class=\"uk-button uk-button-primary\" type=\"submit\">" + (options.labels.ok) + "</button>\n </div>\n </form>\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('<div></div>').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('<div>').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('<div class="uk-sticky-placeholder"></div>');
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(/<symbol/g, ("<svg" + (!~html.indexOf('xmlns') ? ' xmlns="http://www.w3.org/2000/svg"' : '')))
.replace(/symbol>/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(("<span class=\"" + (this.clsWrapper) + "\">")).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 <button class=\"uk-modal-close-outside\" uk-transition-hide type=\"button\" uk-close></button>\n <span class=\"uk-position-center\" uk-transition-show uk-spinner></span>\n ", {center: true});
this.modal.$el.css('overflow', 'hidden').addClass('uk-modal-lightbox');
this.modal.panel.css({width: 200, height: 200});
this.modal.caption = $('<div class="uk-modal-caption" uk-transition-hide></div>').appendTo(this.modal.panel);
if (this.items.length > 1) {
$(("<div class=\"" + (this.dark ? 'uk-dark' : 'uk-light') + "\" uk-transition-hide>\n <a href=\"#\" class=\"uk-position-center-left\" uk-slidenav-previous uk-lightbox-item=\"previous\"></a>\n <a href=\"#\" class=\"uk-position-center-right\" uk-slidenav-next uk-lightbox-item=\"next\"></a>\n </div>\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, '<div class="uk-position-cover uk-flex uk-flex-middle uk-flex-center"><strong>Loading resource failed!</strong></div>', 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 class=\"uk-responsive-width\" width=\"" + (img.width) + "\" height=\"" + (img.height) + "\" src =\"" + (item.source) + "\">"), 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 = $('<video class="uk-responsive-width" controls></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, ("<iframe src=\"//www.youtube.com/embed/" + id + "\" width=\"" + width + "\" height=\"" + height + "\" style=\"max-width:100%;box-sizing:border-box;\"></iframe>"), 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, ("<iframe src=\"//player.vimeo.com/video/" + id + "\" width=\"" + width + "\" height=\"" + height + "\" style=\"max-width:100%;box-sizing:border-box;\"></iframe>"), 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] = $(("<div class=\"uk-notification uk-notification-" + (this.pos) + "\"></div>")).appendTo(UIkit.container);
}
this.$mount($(
("<div class=\"uk-notification-message" + (this.status ? (" uk-notification-message-" + (this.status)) : '') + "\">\n <a href=\"#\" class=\"" + (this.clsClose) + "\" data-uk-close></a>\n <div>" + (this.message) + "</div>\n </div>")
).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(/^<li/i, '<div').replace(/li>$/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 = $(("<div class=\"" + (this.clsPos) + "\" aria-hidden=\"true\"><div class=\"" + (this.clsPos) + "-inner\">" + (this.title) + "</div></div>")).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;
})));