diff options
author | 2018-08-22 19:59:51 +0200 | |
---|---|---|
committer | 2018-08-22 19:59:51 +0200 | |
commit | 8ef1cd50a0bf34adc3033706a2eeadd4339daa67 (patch) | |
tree | 8885bc6035dbf664cff573fba56822cec6f3128d /js/vendor/uikit/uikit.js | |
parent | Use `postgres` service on CI. (diff) |
Remove unused files.
Diffstat (limited to 'js/vendor/uikit/uikit.js')
-rw-r--r-- | js/vendor/uikit/uikit.js | 11749 |
1 files changed, 0 insertions, 11749 deletions
diff --git a/js/vendor/uikit/uikit.js b/js/vendor/uikit/uikit.js deleted file mode 100644 index 8089d8e6..00000000 --- a/js/vendor/uikit/uikit.js +++ /dev/null @@ -1,11749 +0,0 @@ -/*! UIkit 3.0.0-rc.5 | http://www.getuikit.com | (c) 2014 - 2017 YOOtheme | MIT License */ - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define('uikit', factory) : - (global.UIkit = factory()); -}(this, (function () { 'use strict'; - - 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 ref = Object.prototype; - var hasOwnProperty = ref.hasOwnProperty; - - function hasOwn(obj, key) { - return hasOwnProperty.call(obj, key); - } - - var hyphenateCache = {}; - var hyphenateRe = /([a-z\d])([A-Z])/g; - - function hyphenate(str) { - - if (!(str in hyphenateCache)) { - hyphenateCache[str] = str - .replace(hyphenateRe, '$1-$2') - .toLowerCase(); - } - - return hyphenateCache[str]; - } - - var camelizeRe = /-(\w)/g; - - function camelize(str) { - return str.replace(camelizeRe, toUpper); - } - - function toUpper(_, c) { - return c ? c.toUpperCase() : ''; - } - - function ucfirst(str) { - return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ''; - } - - var strPrototype = String.prototype; - var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; }; - - function startsWith(str, search) { - return startsWithFn.call(str, search); - } - - var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; }; - - function endsWith(str, search) { - return endsWithFn.call(str, search); - } - - var includesFn = function (search) { return ~this.indexOf(search); }; - var includesStr = strPrototype.includes || includesFn; - var includesArray = Array.prototype.includes || includesFn; - - function includes(obj, search) { - return obj && (isString(obj) ? includesStr : includesArray).call(obj, search); - } - - var isArray = Array.isArray; - - function isFunction(obj) { - return typeof obj === 'function'; - } - - function isObject(obj) { - return obj !== null && typeof obj === 'object'; - } - - function isPlainObject(obj) { - return isObject(obj) && Object.getPrototypeOf(obj) === Object.prototype; - } - - function isWindow(obj) { - return isObject(obj) && obj === obj.window; - } - - function isDocument(obj) { - return isObject(obj) && obj.nodeType === 9; - } - - function isJQuery(obj) { - return isObject(obj) && !!obj.jquery; - } - - function isNode(element) { - return element instanceof Node || isObject(element) && element.nodeType === 1; - } - - function isNodeCollection(element) { - return element instanceof NodeList || element instanceof HTMLCollection; - } - - function isBoolean(value) { - return typeof value === 'boolean'; - } - - function isString(value) { - return typeof value === 'string'; - } - - function isNumber(value) { - return typeof value === 'number'; - } - - function isNumeric(value) { - return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value)); - } - - function isUndefined(value) { - return value === void 0; - } - - function toBoolean(value) { - return isBoolean(value) - ? 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 toFloat(value) { - return parseFloat(value) || 0; - } - - function toNode(element) { - return isNode(element) || isWindow(element) || isDocument(element) - ? element - : isNodeCollection(element) || isJQuery(element) - ? element[0] - : isArray(element) - ? toNode(element[0]) - : null; - } - - var arrayProto = Array.prototype; - function toNodes(element) { - return isNode(element) - ? [element] - : isNodeCollection(element) - ? arrayProto.slice.call(element) - : isArray(element) - ? element.map(toNode).filter(Boolean) - : isJQuery(element) - ? element.toArray() - : []; - } - - function toList(value) { - return isArray(value) - ? value - : isString(value) - ? value.split(/,(?![^(]*\))/).map(function (value) { return isNumeric(value) - ? toNumber(value) - : toBoolean(value.trim()); }) - : [value]; - } - - function toMs(time) { - return !time - ? 0 - : endsWith(time, 'ms') - ? toFloat(time) - : toFloat(time) * 1000; - } - - function swap(value, a, b) { - return value.replace(new RegExp((a + "|" + b), 'mg'), function (match) { - return match === a ? b : a; - }); - } - - var assign = Object.assign || function (target) { - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - target = Object(target); - for (var i = 0; i < args.length; i++) { - var source = args[i]; - if (source !== null) { - for (var key in source) { - if (hasOwn(source, key)) { - target[key] = source[key]; - } - } - } - } - return target; - }; - - function each(obj, cb) { - for (var key in obj) { - cb.call(obj[key], obj[key], key); - } - } - - function sortBy(collection, prop) { - return collection.sort(function (a, b) { return a[prop] > b[prop] - ? 1 - : b[prop] > a[prop] - ? -1 - : 0; } - ); - } - - function clamp(number, min, max) { - if ( min === void 0 ) min = 0; - if ( max === void 0 ) max = 1; - - return Math.min(Math.max(number, min), max); - } - - function noop() {} - - function intersectRect(r1, r2) { - return r1.left <= r2.right && - r2.left <= r1.right && - r1.top <= r2.bottom && - r2.top <= r1.bottom; - } - - function pointInRect(point, rect) { - return intersectRect({top: point.y, bottom: point.y, left: point.x, right: point.x}, rect); - } - - var Dimensions = { - - ratio: function(dimensions, prop, value) { - var obj; - - - var aProp = prop === 'width' ? 'height' : 'width'; - - return ( obj = {}, obj[aProp] = Math.round(value * dimensions[aProp] / dimensions[prop]), obj[prop] = value, obj ); - }, - - contain: function(dimensions, maxDimensions) { - var this$1 = this; - - dimensions = assign({}, dimensions); - - each(dimensions, function (_, prop) { return dimensions = dimensions[prop] > maxDimensions[prop] - ? this$1.ratio(dimensions, prop, maxDimensions[prop]) - : dimensions; } - ); - - return dimensions; - }, - - cover: function(dimensions, maxDimensions) { - var this$1 = this; - - dimensions = this.contain(dimensions, maxDimensions); - - each(dimensions, function (_, prop) { return dimensions = dimensions[prop] < maxDimensions[prop] - ? this$1.ratio(dimensions, prop, maxDimensions[prop]) - : dimensions; } - ); - - return dimensions; - } - - }; - - function attr(element, name, value) { - - if (isObject(name)) { - for (var key in name) { - attr(element, key, name[key]); - } - return; - } - - if (isUndefined(value)) { - element = toNode(element); - return element && element.getAttribute(name); - } else { - toNodes(element).forEach(function (element) { - - if (isFunction(value)) { - value = value.call(element, attr(element, name)); - } - - if (value === null) { - removeAttr(element, name); - } else { - element.setAttribute(name, value); - } - }); - } - - } - - function hasAttr(element, name) { - return toNodes(element).some(function (element) { return element.hasAttribute(name); }); - } - - function removeAttr(element, name) { - element = toNodes(element); - name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.removeAttribute(name); } - ); } - ); - } - - function filterAttr(element, attribute, pattern, replacement) { - attr(element, attribute, function (value) { return value ? value.replace(pattern, replacement) : value; }); - } - - function data(element, attribute) { - for (var i = 0, attrs = [attribute, ("data-" + attribute)]; i < attrs.length; i++) { - if (hasAttr(element, attrs[i])) { - return attr(element, attrs[i]); - } - } - } - - function query(selector, context) { - return toNode(selector) || find(selector, isContextSelector(selector) ? context : document); - } - - function queryAll(selector, context) { - var nodes = toNodes(selector); - return nodes.length && nodes || findAll(selector, isContextSelector(selector) ? context : document); - } - - function find(selector, context) { - return toNode(_query(selector, context, 'querySelector')); - } - - function findAll(selector, context) { - return toNodes(_query(selector, context, 'querySelectorAll')); - } - - function _query(selector, context, queryFn) { - if ( context === void 0 ) context = document; - - - if (!selector || !isString(selector)) { - return null; - } - - selector = selector.replace(contextSanitizeRe, '$1 *'); - - var removes; - - if (isContextSelector(selector)) { - - removes = []; - - selector = selector.split(',').map(function (selector, i) { - - var ctx = context; - - selector = selector.trim(); - - if (selector[0] === '!') { - - var selectors = selector.substr(1).trim().split(' '); - ctx = closest(context.parentNode, selectors[0]); - selector = selectors.slice(1).join(' ').trim(); - - } - - if (selector[0] === '-') { - - var selectors$1 = selector.substr(1).trim().split(' '); - var prev = (ctx || context).previousElementSibling; - ctx = matches(prev, selector.substr(1)) ? prev : null; - selector = selectors$1.slice(1).join(' '); - - } - - if (!ctx) { - return null; - } - - if (!ctx.id) { - ctx.id = "uk-" + (Date.now()) + i; - removes.push(function () { return removeAttr(ctx, 'id'); }); - } - - return ("#" + (escape(ctx.id)) + " " + selector); - - }).filter(Boolean).join(','); - - context = document; - - } - - try { - - return context[queryFn](selector); - - } catch (e) { - - return null; - - } finally { - - removes && removes.forEach(function (remove) { return remove(); }); - - } - - } - - var contextSelectorRe = /(^|,)\s*[!>+~-]/; - var contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g; - - function isContextSelector(selector) { - return isString(selector) && selector.match(contextSelectorRe); - } - - var elProto = Element.prototype; - var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector; - - function matches(element, selector) { - return toNodes(element).some(function (element) { return matchesFn.call(element, selector); }); - } - - var closestFn = elProto.closest || function (selector) { - var ancestor = this; - - do { - - if (matches(ancestor, selector)) { - return ancestor; - } - - ancestor = ancestor.parentNode; - - } while (ancestor && ancestor.nodeType === 1); - }; - - function closest(element, selector) { - - if (startsWith(selector, '>')) { - selector = selector.slice(1); - } - - return isNode(element) - ? element.parentNode && closestFn.call(element, selector) - : toNodes(element).map(function (element) { return element.parentNode && closestFn.call(element, selector); }).filter(Boolean); - } - - function parents(element, selector) { - var elements = []; - var parent = toNode(element).parentNode; - - while (parent && parent.nodeType === 1) { - - if (matches(parent, selector)) { - elements.push(parent); - } - - parent = parent.parentNode; - } - - return elements; - } - - var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\x7f-\uFFFF\w-])/g, function (match) { return ("\\" + match); }); }; - function escape(css) { - return isString(css) ? escapeFn.call(null, css) : ''; - } - - 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 toNodes(element).some(function (element) { return voidElements[element.tagName.toLowerCase()]; }); - } - - function isVisible(element) { - return toNodes(element).some(function (element) { return element.offsetWidth || element.offsetHeight || element.getClientRects().length; }); - } - - var selInput = 'input,select,textarea,button'; - function isInput(element) { - return toNodes(element).some(function (element) { return matches(element, selInput); }); - } - - function filter(element, selector) { - return toNodes(element).filter(function (element) { return matches(element, selector); }); - } - - function within(element, selector) { - return !isString(selector) - ? element === selector || (isDocument(selector) - ? selector.documentElement - : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains - : matches(element, selector) || closest(element, selector); - } - - function on() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - - var ref = getArgs(args); - var target = ref[0]; - var type = ref[1]; - var selector = ref[2]; - var listener = ref[3]; - var useCapture = ref[4]; - - target = toEventTarget(target); - - if (selector) { - listener = delegate(target, selector, listener); - } - - if (listener.length > 1) { - listener = detail(listener); - } - - type.split(' ').forEach(function (type) { return target && target.addEventListener(type, listener, useCapture); }); - return function () { return off(target, type, listener, useCapture); }; - } - - function off(target, type, listener, useCapture) { - if ( useCapture === void 0 ) useCapture = false; - - target = toEventTarget(target); - target && type.split(' ').forEach(function (type) { return target.removeEventListener(type, listener, useCapture); }); - } - - function once() { - var args = [], len = arguments.length; - while ( len-- ) args[ len ] = arguments[ len ]; - - - var ref = getArgs(args); - var element = ref[0]; - var type = ref[1]; - var selector = ref[2]; - var listener = ref[3]; - var useCapture = ref[4]; - var condition = ref[5]; - var off = on(element, type, selector, function (e) { - var result = !condition || condition(e); - if (result) { - off(); - listener(e, result); - } - }, useCapture); - - return off; - } - - function trigger(target, event, detail) { - return toEventTargets(target).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); } - , true); - } - - function createEvent(e, bubbles, cancelable, detail) { - if ( bubbles === void 0 ) bubbles = true; - if ( cancelable === void 0 ) cancelable = false; - - if (isString(e)) { - var event = document.createEvent('CustomEvent'); // IE 11 - event.initCustomEvent(e, bubbles, cancelable, detail); - e = event; - } - - return e; - } - - function getArgs(args) { - - if (isString(args[0])) { - args[0] = find(args[0]); - } - - if (isFunction(args[2])) { - args.splice(2, 0, false); - } - return args; - } - - function delegate(element, selector, listener) { - var this$1 = this; - - return function (e) { - - var target = e.target; - var current = selector[0] === '>' - ? findAll(selector, element).reverse().filter(function (element) { return within(target, element); })[0] - : closest(target, selector); - - if (current) { - e.delegate = element; - e.current = current; - - listener.call(this$1, e); - } - }; - } - - function detail(listener) { - return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); }; - } - - function isEventTarget(target) { - return 'EventTarget' in window - ? target instanceof EventTarget - : target && 'addEventListener' in target; - } - - function toEventTarget(target) { - return isEventTarget(target) ? target : toNode(target); - } - - function toEventTargets(target) { - return isEventTarget(target) - ? [target] - : isArray(target) - ? target.map(toEventTarget).filter(Boolean) - : toNodes(target); - } - - function preventClick() { - - var timer = setTimeout(once(document, 'click', function (e) { - - e.preventDefault(); - e.stopImmediatePropagation(); - - clearTimeout(timer); - - }, true)); - - trigger(document, 'touchcancel'); - - } - - /* global setImmediate */ - - var Promise$1 = 'Promise' in window ? window.Promise : PromiseFn; - - var Deferred = function() { - var this$1 = this; - - this.promise = new Promise$1(function (resolve, reject) { - this$1.reject = reject; - this$1.resolve = resolve; - }); - }; - - /** - * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis) - */ - - var RESOLVED = 0; - var REJECTED = 1; - var PENDING = 2; - - var async = 'setImmediate' in window ? setImmediate : setTimeout; - - function PromiseFn(executor) { - - this.state = PENDING; - this.value = undefined; - this.deferred = []; - - var promise = this; - - try { - executor( - function (x) { - promise.resolve(x); - }, - function (r) { - promise.reject(r); - } - ); - } catch (e) { - promise.reject(e); - } - } - - PromiseFn.reject = function (r) { - return new PromiseFn(function (resolve, reject) { - reject(r); - }); - }; - - PromiseFn.resolve = function (x) { - return new PromiseFn(function (resolve, reject) { - resolve(x); - }); - }; - - PromiseFn.all = function all(iterable) { - return new PromiseFn(function (resolve, reject) { - var result = []; - var count = 0; - - if (iterable.length === 0) { - resolve(result); - } - - function resolver(i) { - return function (x) { - result[i] = x; - count += 1; - - if (count === iterable.length) { - resolve(result); - } - }; - } - - for (var i = 0; i < iterable.length; i += 1) { - PromiseFn.resolve(iterable[i]).then(resolver(i), reject); - } - }); - }; - - PromiseFn.race = function race(iterable) { - return new PromiseFn(function (resolve, reject) { - for (var i = 0; i < iterable.length; i += 1) { - PromiseFn.resolve(iterable[i]).then(resolve, reject); - } - }); - }; - - var p = PromiseFn.prototype; - - p.resolve = function resolve(x) { - var promise = this; - - if (promise.state === PENDING) { - if (x === promise) { - throw new TypeError('Promise settled with itself.'); - } - - var called = false; - - try { - var then = x && x.then; - - if (x !== null && isObject(x) && isFunction(then)) { - then.call( - x, - function (x) { - if (!called) { - promise.resolve(x); - } - called = true; - }, - function (r) { - if (!called) { - promise.reject(r); - } - called = true; - } - ); - return; - } - } catch (e) { - if (!called) { - promise.reject(e); - } - return; - } - - promise.state = RESOLVED; - promise.value = x; - promise.notify(); - } - }; - - p.reject = function reject(reason) { - var promise = this; - - if (promise.state === PENDING) { - if (reason === promise) { - throw new TypeError('Promise settled with itself.'); - } - - promise.state = REJECTED; - promise.value = reason; - promise.notify(); - } - }; - - p.notify = function notify() { - var this$1 = this; - - async(function () { - if (this$1.state !== PENDING) { - while (this$1.deferred.length) { - var ref = this$1.deferred.shift(); - var onResolved = ref[0]; - var onRejected = ref[1]; - var resolve = ref[2]; - var reject = ref[3]; - - try { - if (this$1.state === RESOLVED) { - if (isFunction(onResolved)) { - resolve(onResolved.call(undefined, this$1.value)); - } else { - resolve(this$1.value); - } - } else if (this$1.state === REJECTED) { - if (isFunction(onRejected)) { - resolve(onRejected.call(undefined, this$1.value)); - } else { - reject(this$1.value); - } - } - } catch (e) { - reject(e); - } - } - } - }); - }; - - p.then = function then(onResolved, onRejected) { - var this$1 = this; - - return new PromiseFn(function (resolve, reject) { - this$1.deferred.push([onResolved, onRejected, resolve, reject]); - this$1.notify(); - }); - }; - - p.catch = function (onRejected) { - return this.then(undefined, onRejected); - }; - - function ajax(url, options) { - return new Promise$1(function (resolve, reject) { - - var env = assign({ - data: null, - method: 'GET', - headers: {}, - xhr: new XMLHttpRequest(), - beforeSend: noop, - responseType: '' - }, options); - - env.beforeSend(env); - - var xhr = env.xhr; - - for (var prop in env) { - if (prop in xhr) { - try { - - xhr[prop] = env[prop]; - - } catch (e) {} - } - } - - xhr.open(env.method.toUpperCase(), url); - - for (var header in env.headers) { - xhr.setRequestHeader(header, env.headers[header]); - } - - on(xhr, 'load', function () { - - if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) { - resolve(xhr); - } else { - reject(assign(Error(xhr.statusText), { - xhr: xhr, - status: xhr.status - })); - } - - }); - - on(xhr, 'error', function () { return reject(assign(Error('Network Error'), {xhr: xhr})); }); - on(xhr, 'timeout', function () { return reject(assign(Error('Network Timeout'), {xhr: xhr})); }); - - xhr.send(env.data); - }); - } - - function getImage(src, srcset, sizes) { - - return new Promise$1(function (resolve, reject) { - var img = new Image(); - - img.onerror = reject; - img.onload = function () { return resolve(img); }; - - img.src = src; - srcset && (img.srcset = srcset); - sizes && (img.sizes = sizes); - }); - - } - - function isReady() { - return document.readyState === 'complete' || document.readyState !== 'loading' && !document.documentElement.doScroll; - } - - function ready(fn) { - - if (isReady()) { - fn(); - return; - } - - var handle = function () { - unbind1(); - unbind2(); - fn(); - }; - var unbind1 = on(document, 'DOMContentLoaded', handle); - var unbind2 = on(window, 'load', handle); - } - - function index(element, ref) { - return ref - ? toNodes(element).indexOf(toNode(ref)) - : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element); - } - - function getIndex(i, elements, current, finite) { - if ( current === void 0 ) current = 0; - if ( finite === void 0 ) finite = false; - - - elements = toNodes(elements); - - var length = elements.length; - - i = isNumeric(i) - ? toNumber(i) - : i === 'next' - ? current + 1 - : i === 'previous' - ? current - 1 - : index(elements, i); - - if (finite) { - return clamp(i, 0, length - 1); - } - - i %= length; - - return i < 0 ? i + length : i; - } - - function empty(element) { - element = toNode(element); - element.innerHTML = ''; - return element; - } - - function html(parent, html) { - parent = toNode(parent); - return isUndefined(html) - ? parent.innerHTML - : append(parent.hasChildNodes() ? empty(parent) : parent, html); - } - - function prepend(parent, element) { - - parent = toNode(parent); - - if (!parent.hasChildNodes()) { - return append(parent, element); - } else { - return insertNodes(element, function (element) { return parent.insertBefore(element, parent.firstChild); }); - } - } - - function append(parent, element) { - parent = toNode(parent); - return insertNodes(element, function (element) { return parent.appendChild(element); }); - } - - function before(ref, element) { - ref = toNode(ref); - return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); }); - } - - function after(ref, element) { - ref = toNode(ref); - return insertNodes(element, function (element) { return ref.nextSibling - ? before(ref.nextSibling, element) - : append(ref.parentNode, element); } - ); - } - - function insertNodes(element, fn) { - element = isString(element) ? fragment(element) : element; - return element - ? 'length' in element - ? toNodes(element).map(fn) - : fn(element) - : null; - } - - function remove(element) { - toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); }); - } - - function wrapAll(element, structure) { - - structure = toNode(before(element, structure)); - - while (structure.firstChild) { - structure = structure.firstChild; - } - - append(structure, element); - - return structure; - } - - function wrapInner(element, structure) { - return toNodes(toNodes(element).map(function (element) { return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); } - )); - } - - function unwrap(element) { - toNodes(element) - .map(function (element) { return element.parentNode; }) - .filter(function (value, index, self) { return self.indexOf(value) === index; }) - .forEach(function (parent) { - before(parent, parent.childNodes); - remove(parent); - }); - } - - var fragmentRe = /^\s*<(\w+|!)[^>]*>/; - var singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/; - - function fragment(html) { - - var matches = singleTagRe.exec(html); - if (matches) { - return document.createElement(matches[1]); - } - - var container = document.createElement('div'); - if (fragmentRe.test(html)) { - container.insertAdjacentHTML('beforeend', html.trim()); - } else { - container.textContent = html; - } - - return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild; - - } - - function apply(node, fn) { - - if (!node || node.nodeType !== 1) { - return; - } - - fn(node); - node = node.firstElementChild; - while (node) { - apply(node, fn); - node = node.nextElementSibling; - } - } - - function addClass(element) { - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - apply$1(element, args, 'add'); - } - - function removeClass(element) { - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - apply$1(element, args, 'remove'); - } - - function removeClasses(element, cls) { - filterAttr(element, 'class', new RegExp(("(^|\\s)" + cls + "(?!\\S)"), 'g'), ''); - } - - function replaceClass(element) { - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - args[0] && removeClass(element, args[0]); - args[1] && addClass(element, args[1]); - } - - function hasClass(element, cls) { - return toNodes(element).some(function (element) { return element.classList.contains(cls); }); - } - - function toggleClass(element) { - var args = [], len = arguments.length - 1; - while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ]; - - - if (!args.length) { - return; - } - - args = getArgs$1(args); - - var force = !isString(args[args.length - 1]) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false - - args = args.filter(Boolean); - - toNodes(element).forEach(function (ref) { - var classList = ref.classList; - - for (var i = 0; i < args.length; i++) { - supports.Force - ? classList.toggle.apply(classList, [args[i]].concat(force)) - : (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i])); - } - }); - - } - - function apply$1(element, args, fn) { - args = getArgs$1(args).filter(Boolean); - - args.length && toNodes(element).forEach(function (ref) { - var classList = ref.classList; - - supports.Multiple - ? classList[fn].apply(classList, args) - : args.forEach(function (cls) { return classList[fn](cls); }); - }); - } - - function getArgs$1(args) { - return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); } - , []); - } - - var supports = {}; - - // IE 11 - (function () { - - var list = document.createElement('_').classList; - if (list) { - list.add('a', 'b'); - list.toggle('c', false); - supports.Multiple = list.contains('b'); - supports.Force = !list.contains('c'); - } - list = null; - - })(); - - var cssNumber = { - 'animation-iteration-count': true, - 'column-count': true, - 'fill-opacity': true, - 'flex-grow': true, - 'flex-shrink': true, - 'font-weight': true, - 'line-height': true, - 'opacity': true, - 'order': true, - 'orphans': true, - 'widows': true, - 'z-index': true, - 'zoom': true - }; - - function css(element, property, value) { - - return toNodes(element).map(function (element) { - - if (isString(property)) { - - property = propName(property); - - if (isUndefined(value)) { - return getStyle(element, property); - } else if (!value && value !== 0) { - element.style.removeProperty(property); - } else { - element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + "px") : value; - } - - } else if (isArray(property)) { - - var styles = getStyles(element); - - return property.reduce(function (props, property) { - props[property] = styles[propName(property)]; - return props; - }, {}); - - } else if (isObject(property)) { - each(property, function (value, property) { return css(element, property, value); }); - } - - return element; - - })[0]; - - } - - function getStyles(element, pseudoElt) { - element = toNode(element); - return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt); - } - - function getStyle(element, property, pseudoElt) { - return getStyles(element, pseudoElt)[property]; - } - - var vars = {}; - - function getCssVar(name) { - - if (!(name in vars)) { - - /* usage in css: .var-name:before { content:"xyz" } */ - - var element = append(document.documentElement, document.createElement('div')); - - addClass(element, ("var-" + name)); - - try { - - vars[name] = getStyle(element, 'content', ':before').replace(/^["'](.*)["']$/, '$1'); - vars[name] = JSON.parse(vars[name]); - - } catch (e) {} - - document.documentElement.removeChild(element); - - } - - return vars[name]; - - } - - var cssProps = {}; - - function propName(name) { - - var ret = cssProps[name]; - if (!ret) { - ret = cssProps[name] = vendorPropName(name) || name; - } - return ret; - } - - var cssPrefixes = ['webkit', 'moz', 'ms']; - var ref$1 = document.createElement('_'); - var style = ref$1.style; - - function vendorPropName(name) { - - name = hyphenate(name); - - if (name in style) { - return name; - } - - var i = cssPrefixes.length, prefixedName; - - while (i--) { - prefixedName = "-" + (cssPrefixes[i]) + "-" + name; - if (prefixedName in style) { - return prefixedName; - } - } - } - - function transition(element, props, duration, timing) { - if ( duration === void 0 ) duration = 400; - if ( timing === void 0 ) timing = 'linear'; - - - return Promise$1.all(toNodes(element).map(function (element) { return new Promise$1(function (resolve, reject) { - - for (var name in props) { - var value = css(element, name); - if (value === '') { - css(element, name, value); - } - } - - var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration); - - once(element, 'transitionend transitioncanceled', function (ref) { - var type = ref.type; - - clearTimeout(timer); - removeClass(element, 'uk-transition'); - css(element, { - 'transition-property': '', - 'transition-duration': '', - 'transition-timing-function': '' - }); - type === 'transitioncanceled' ? reject() : resolve(); - }, false, function (ref) { - var target = ref.target; - - return element === target; - }); - - addClass(element, 'uk-transition'); - css(element, assign({ - 'transition-property': Object.keys(props).map(propName).join(','), - 'transition-duration': (duration + "ms"), - 'transition-timing-function': timing - }, props)); - - }); } - )); - - } - - var Transition = { - - start: transition, - - stop: function(element) { - trigger(element, 'transitionend'); - return Promise$1.resolve(); - }, - - cancel: function(element) { - trigger(element, 'transitioncanceled'); - }, - - inProgress: function(element) { - return hasClass(element, 'uk-transition'); - } - - }; - - var animationPrefix = 'uk-animation-'; - var clsCancelAnimation = 'uk-cancel-animation'; - - function animate(element, animation, duration, origin, out) { - var arguments$1 = arguments; - if ( duration === void 0 ) duration = 200; - - - return Promise$1.all(toNodes(element).map(function (element) { return new Promise$1(function (resolve, reject) { - - if (hasClass(element, clsCancelAnimation)) { - requestAnimationFrame(function () { return Promise$1.resolve().then(function () { return animate.apply(void 0, arguments$1).then(resolve, reject); } - ); } - ); - return; - } - - var cls = animation + " " + animationPrefix + (out ? 'leave' : 'enter'); - - if (startsWith(animation, animationPrefix)) { - - if (origin) { - cls += " uk-transform-origin-" + origin; - } - - if (out) { - cls += " " + animationPrefix + "reverse"; - } - - } - - reset(); - - once(element, 'animationend animationcancel', function (ref) { - var type = ref.type; - - - var hasReset = false; - - if (type === 'animationcancel') { - reject(); - reset(); - } else { - resolve(); - Promise$1.resolve().then(function () { - hasReset = true; - reset(); - }); - } - - requestAnimationFrame(function () { - if (!hasReset) { - addClass(element, clsCancelAnimation); - - requestAnimationFrame(function () { return removeClass(element, clsCancelAnimation); }); - } - }); - - }, false, function (ref) { - var target = ref.target; - - return element === target; - }); - - css(element, 'animationDuration', (duration + "ms")); - addClass(element, cls); - - function reset() { - css(element, 'animationDuration', ''); - removeClasses(element, (animationPrefix + "\\S*")); - } - - }); } - )); - - } - - var inProgress = new RegExp((animationPrefix + "(enter|leave)")); - var Animation = { - - in: function(element, animation, duration, origin) { - return animate(element, animation, duration, origin, false); - }, - - out: function(element, animation, duration, origin) { - return animate(element, animation, duration, origin, true); - }, - - inProgress: function(element) { - return inProgress.test(attr(element, 'class')); - }, - - cancel: function(element) { - trigger(element, 'animationcancel'); - } - - }; - - function $(selector, context) { - return !isString(selector) - ? toNode(selector) - : isHtml(selector) - ? toNode(fragment(selector)) - : find(selector, context); - } - - function $$(selector, context) { - return !isString(selector) - ? toNodes(selector) - : isHtml(selector) - ? toNodes(fragment(selector)) - : findAll(selector, context); - } - - function isHtml(str) { - return str[0] === '<' || str.match(/^\s*</); - } - - var dirs = { - width: ['x', 'left', 'right'], - height: ['y', 'top', 'bottom'] - }; - - function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) { - - elAttach = getPos(elAttach); - targetAttach = getPos(targetAttach); - - var flipped = {element: elAttach, target: targetAttach}; - - if (!element || !target) { - return flipped; - } - - var dim = getDimensions(element); - var targetDim = getDimensions(target); - var position = targetDim; - - moveTo(position, elAttach, dim, -1); - moveTo(position, targetAttach, targetDim, 1); - - elOffset = getOffsets(elOffset, dim.width, dim.height); - targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height); - - elOffset['x'] += targetOffset['x']; - elOffset['y'] += targetOffset['y']; - - position.left += elOffset['x']; - position.top += elOffset['y']; - - boundary = getDimensions(boundary || window$1(element)); - - if (flip) { - each(dirs, function (ref, prop) { - var dir = ref[0]; - var align = ref[1]; - var alignFlip = ref[2]; - - - if (!(flip === true || includes(flip, dir))) { - return; - } - - var elemOffset = elAttach[dir] === align - ? -dim[prop] - : elAttach[dir] === alignFlip - ? dim[prop] - : 0; - - var targetOffset = targetAttach[dir] === align - ? targetDim[prop] - : targetAttach[dir] === alignFlip - ? -targetDim[prop] - : 0; - - if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) { - - var centerOffset = dim[prop] / 2; - var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0; - - elAttach[dir] === 'center' && ( - apply(centerOffset, centerTargetOffset) - || apply(-centerOffset, -centerTargetOffset) - ) || apply(elemOffset, targetOffset); - - } - - function apply(elemOffset, targetOffset) { - - var newVal = position[align] + elemOffset + targetOffset - elOffset[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[prop][1] - ? dirs[prop][2] - : dirs[prop][1]; - }); - - return true; - } - - } - - }); - } - - offset(element, position); - - return flipped; - } - - function offset(element, coordinates) { - - element = toNode(element); - - if (coordinates) { - - var currentOffset = offset(element); - var pos = css(element, 'position'); - - ['left', 'top'].forEach(function (prop) { - if (prop in coordinates) { - var value = css(element, prop); - css(element, prop, coordinates[prop] - currentOffset[prop] - + toFloat(pos === 'absolute' && value === 'auto' - ? position(element)[prop] - : value) - ); - } - }); - - return; - } - - return getDimensions(element); - } - - function getDimensions(element) { - - element = toNode(element); - - var ref = window$1(element); - var top = ref.pageYOffset; - var left = ref.pageXOffset; - - if (isWindow(element)) { - - var height = element.innerHeight; - var width = element.innerWidth; - - return { - top: top, - left: left, - height: height, - width: width, - bottom: top + height, - right: left + width, - }; - } - - var style, hidden; - - if (!isVisible(element)) { - style = attr(element, 'style'); - hidden = attr(element, 'hidden'); - - attr(element, { - style: ((style || '') + ";display:block !important;"), - hidden: null - }); - } - - var rect = element.getBoundingClientRect(); - - if (!isUndefined(style)) { - attr(element, {style: style, hidden: hidden}); - } - - return { - height: rect.height, - width: rect.width, - top: rect.top + top, - left: rect.left + left, - bottom: rect.bottom + top, - right: rect.right + left, - }; - } - - function position(element) { - element = toNode(element); - - var parent = offsetParent(element); - var parentOffset = parent === docEl(element) ? {top: 0, left: 0} : offset(parent); - var ref = ['top', 'left'].reduce(function (props, prop) { - var propName$$1 = ucfirst(prop); - props[prop] -= parentOffset[prop] - + (toFloat(css(element, ("margin" + propName$$1))) || 0) - + (toFloat(css(parent, ("border" + propName$$1 + "Width"))) || 0); - return props; - }, offset(element)); - var top = ref.top; - var left = ref.left; - - return {top: top, left: left}; - } - - function offsetParent(element) { - - var parent = toNode(element).offsetParent; - - while (parent && css(parent, 'position') === 'static') { - parent = parent.offsetParent; - } - - return parent || docEl(element); - } - - var height = dimension('height'); - var width = dimension('width'); - - function dimension(prop) { - var propName$$1 = ucfirst(prop); - return function (element, value) { - - element = toNode(element); - - if (isUndefined(value)) { - - if (isWindow(element)) { - return element[("inner" + propName$$1)]; - } - - if (isDocument(element)) { - var doc = element.documentElement; - return Math.max(doc[("offset" + propName$$1)], doc[("scroll" + propName$$1)]); - } - - value = css(element, prop); - value = value === 'auto' ? element[("offset" + propName$$1)] : toFloat(value) || 0; - - return value - boxModelAdjust(prop, element); - - } else { - - css(element, prop, !value && value !== 0 - ? '' - : +value + boxModelAdjust(prop, element) + 'px' - ); - - } - - }; - } - - function boxModelAdjust(prop, element) { - return css(element, 'boxSizing') === 'border-box' - ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value - + toFloat(css(element, ("padding" + prop))) - + toFloat(css(element, ("border" + prop + "Width"))); } - , 0) - : 0; - } - - function moveTo(position, attach, dim, factor) { - each(dirs, function (ref, prop) { - var dir = 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/; - var 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) { - - var ref = (offsets || '').split(' '); - var x = ref[0]; - var y = ref[1]; - - return { - x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0, - y: y ? toFloat(y) * (endsWith(y, '%') ? 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; - } - } - - function isInView(element, topOffset, leftOffset, relativeToViewport) { - if ( topOffset === void 0 ) topOffset = 0; - if ( leftOffset === void 0 ) leftOffset = 0; - - - if (!isVisible(element)) { - return false; - } - - element = toNode(element); - var win = window$1(element); - - if (relativeToViewport) { - - return intersectRect(element.getBoundingClientRect(), { - top: -topOffset, - left: -leftOffset, - bottom: topOffset + height(win), - right: leftOffset + width(win) - }); - - } else { - - var ref = offsetPosition(element); - var elTop = ref[0]; - var elLeft = ref[1]; - var top = win.pageYOffset; - var left = win.pageXOffset; - - return intersectRect( - { - top: elTop, - left: elLeft, - bottom: elTop + element.offsetHeight, - right: elTop + element.offsetWidth - }, - { - top: top - topOffset, - left: left - leftOffset, - bottom: top + topOffset + height(win), - right: left + leftOffset + width(win) - } - ); - } - - } - - function scrolledOver(element, heightOffset) { - if ( heightOffset === void 0 ) heightOffset = 0; - - - if (!isVisible(element)) { - return 0; - } - - element = toNode(element); - - var win = window$1(element); - var doc = document$1(element); - var elHeight = element.offsetHeight + heightOffset; - var ref = offsetPosition(element); - var top = ref[0]; - var vp = height(win); - var vh = vp + Math.min(0, top - vp); - var diff = Math.max(0, vp - (height(doc) + heightOffset - (top + elHeight))); - - return clamp(((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100)) / 100); - } - - function offsetPosition(element) { - var offset = [0, 0]; - - do { - - offset[0] += element.offsetTop; - offset[1] += element.offsetLeft; - - if (css(element, 'position') === 'fixed') { - var win = window$1(element); - offset[0] += win.pageYOffset; - offset[1] += win.pageXOffset; - return offset; - } - - } while ((element = element.offsetParent)); - - return offset; - } - - function window$1(element) { - return isWindow(element) ? element : document$1(element).defaultView; - } - - function document$1(element) { - return toNode(element).ownerDocument; - } - - function docEl(element) { - return document$1(element).documentElement; - } - - /* global DocumentTouch */ - - var isRtl = attr(document.documentElement, 'dir') === 'rtl'; - - var hasTouchEvents = 'ontouchstart' in window; - var hasPointerEvents = window.PointerEvent; - var hasTouch = hasTouchEvents - || window.DocumentTouch && document instanceof DocumentTouch - || navigator.maxTouchPoints; // IE >=11 - - var pointerDown = !hasTouch ? 'mousedown' : ("mousedown " + (hasTouchEvents ? 'touchstart' : 'pointerdown')); - var pointerMove = !hasTouch ? 'mousemove' : ("mousemove " + (hasTouchEvents ? 'touchmove' : 'pointermove')); - var pointerUp = !hasTouch ? 'mouseup' : ("mouseup " + (hasTouchEvents ? 'touchend' : 'pointerup')); - var pointerEnter = hasTouch && hasPointerEvents ? 'pointerenter' : 'mouseenter'; - var pointerLeave = hasTouch && hasPointerEvents ? 'pointerleave' : 'mouseleave'; - - /* - Based on: - Copyright (c) 2016 Wilson Page [email protected] - https://github.com/wilsonpage/fastdom - */ - - var fastdom = { - - reads: [], - writes: [], - - read: function(task) { - this.reads.push(task); - scheduleFlush(); - return task; - }, - - write: function(task) { - this.writes.push(task); - scheduleFlush(); - return task; - }, - - clear: function(task) { - return remove$1(this.reads, task) || remove$1(this.writes, task); - }, - - flush: function() { - - runTasks(this.reads); - runTasks(this.writes.splice(0, this.writes.length)); - - this.scheduled = false; - - if (this.reads.length || this.writes.length) { - scheduleFlush(); - } - - } - - }; - - function scheduleFlush() { - if (!fastdom.scheduled) { - fastdom.scheduled = true; - requestAnimationFrame(fastdom.flush.bind(fastdom)); - } - } - - function runTasks(tasks) { - var task; - while ((task = tasks.shift())) { - task(); - } - } - - function remove$1(array, item) { - var index = array.indexOf(item); - return !!~index && !!array.splice(index, 1); - } - - function MouseTracker() {} - - MouseTracker.prototype = { - - positions: [], - position: null, - - init: function() { - var this$1 = this; - - - this.positions = []; - this.position = null; - - var ticking = false; - this.unbind = on(document, 'mousemove', function (e) { - - if (ticking) { - return; - } - - setTimeout(function () { - - var time = Date.now(); - var ref = this$1.positions; - var length = ref.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; - }); - - }, - - cancel: function() { - if (this.unbind) { - this.unbind(); - } - }, - - movesTo: function(target) { - - if (this.positions.length < 2) { - return false; - } - - var p = offset(target); - var position$$1 = this.positions[this.positions.length - 1]; - var ref = this.positions; - var prevPos = ref[0]; - - if (p.left <= position$$1.x && position$$1.x <= p.right && p.top <= position$$1.y && position$$1.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$$1.x) ; else if (p.left >= position$$1.x) { - points[0].reverse(); - points[1].reverse(); - } else if (p.bottom <= position$$1.y) { - points[0].reverse(); - } else if (p.top >= position$$1.y) { - points[1].reverse(); - } - - return !!points.reduce(function (result, point) { - return result + (slope(prevPos, point[0]) < slope(position$$1, point[0]) && slope(prevPos, point[1]) > slope(position$$1, point[1])); - }, 0); - } - - }; - - function slope(a, b) { - return (b.y - a.y) / (b.x - a.x); - } - - var strats = {}; - - // concat strategy - strats.args = - strats.events = - strats.init = - strats.created = - strats.beforeConnect = - strats.connected = - strats.ready = - strats.beforeDisconnect = - 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) ? {read: 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.methods = function (parentVal, childVal) { - return childVal - ? parentVal - ? assign({}, parentVal, childVal) - : childVal - : parentVal; - }; - - // data strategy - strats.data = function (parentVal, childVal, vm) { - - if (!vm) { - - if (!childVal) { - return parentVal; - } - - if (!parentVal) { - return childVal; - } - - return function (vm) { - return mergeFnData(parentVal, childVal, vm); - }; - - } - - return mergeFnData(parentVal, childVal, vm); - }; - - function mergeFnData(parentVal, childVal, vm) { - return strats.computed( - isFunction(parentVal) - ? parentVal.call(vm, vm) - : parentVal, - isFunction(childVal) - ? childVal.call(vm, vm) - : childVal - ); - } - - // default strategy - var defaultStrat = function (parentVal, childVal) { - return isUndefined(childVal) ? parentVal : childVal; - }; - - function mergeOptions(parent, child, vm) { - - var options = {}; - - if (isFunction(child)) { - child = child.options; - } - - if (child.extends) { - parent = mergeOptions(parent, child.extends, vm); - } - - if (child.mixins) { - for (var i = 0, l = child.mixins.length; i < l; i++) { - parent = mergeOptions(parent, child.mixins[i], vm); - } - } - - for (var key in parent) { - mergeKey(key); - } - - for (var key$1 in child) { - if (!hasOwn(parent, key$1)) { - mergeKey(key$1); - } - } - - function mergeKey(key) { - options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm); - } - - return options; - } - - function parseOptions(options, args) { - var obj; - - if ( args === void 0 ) args = []; - - try { - - return !options - ? {} - : startsWith(options, '{') - ? JSON.parse(options) - : args.length && !includes(options, ':') - ? (( obj = {}, obj[args[0]] = options, obj )) - : options.split(';').reduce(function (options, option) { - var ref = option.split(/:(.*)/); - var key = ref[0]; - var value = ref[1]; - if (key && !isUndefined(value)) { - options[key.trim()] = value.trim(); - } - return options; - }, {}); - - } catch (e) { - return {}; - } - - } - - var id = 0; - - var Player = function(el) { - this.id = ++id; - this.el = toNode(el); - }; - - Player.prototype.isVideo = function () { - return this.isYoutube() || this.isVimeo() || this.isHTML5(); - }; - - Player.prototype.isHTML5 = function () { - return this.el.tagName === 'VIDEO'; - }; - - Player.prototype.isIFrame = function () { - return this.el.tagName === 'IFRAME'; - }; - - Player.prototype.isYoutube = function () { - return this.isIFrame() && !!this.el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/); - }; - - Player.prototype.isVimeo = function () { - return this.isIFrame() && !!this.el.src.match(/vimeo\.com\/video\/.*/); - }; - - Player.prototype.enableApi = function () { - var this$1 = this; - - - if (this.ready) { - return this.ready; - } - - var youtube = this.isYoutube(); - var vimeo = this.isVimeo(); - - var poller; - - if (youtube || vimeo) { - - return this.ready = new Promise$1(function (resolve) { - - once(this$1.el, 'load', function () { - if (youtube) { - var listener = function () { return post(this$1.el, {event: 'listening', id: this$1.id}); }; - poller = setInterval(listener, 100); - listener(); - } - }); - - listen(function (data$$1) { return youtube && data$$1.id === this$1.id && data$$1.event === 'onReady' || vimeo && Number(data$$1.player_id) === this$1.id; }) - .then(function () { - resolve(); - poller && clearInterval(poller); - }); - - attr(this$1.el, 'src', ("" + (this$1.el.src) + (includes(this$1.el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : ("api=1&player_id=" + (this$1.id))))); - - }); - - } - - return Promise$1.resolve(); - - }; - - Player.prototype.play = function () { - var this$1 = this; - - - if (!this.isVideo()) { - return; - } - - if (this.isIFrame()) { - this.enableApi().then(function () { return post(this$1.el, {func: 'playVideo', method: 'play'}); }); - } else if (this.isHTML5()) { - try { - var promise = this.el.play(); - - if (promise) { - promise.catch(noop); - } - } catch (e) {} - } - }; - - Player.prototype.pause = function () { - var this$1 = this; - - - if (!this.isVideo()) { - return; - } - - if (this.isIFrame()) { - this.enableApi().then(function () { return post(this$1.el, {func: 'pauseVideo', method: 'pause'}); }); - } else if (this.isHTML5()) { - this.el.pause(); - } - }; - - Player.prototype.mute = function () { - var this$1 = this; - - - if (!this.isVideo()) { - return; - } - - if (this.isIFrame()) { - this.enableApi().then(function () { return post(this$1.el, {func: 'mute', method: 'setVolume', value: 0}); }); - } else if (this.isHTML5()) { - this.el.muted = true; - attr(this.el, 'muted', ''); - } - - }; - - function post(el, cmd) { - try { - el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*'); - } catch (e) {} - } - - function listen(cb) { - - return new Promise$1(function (resolve) { - - once(window, 'message', function (_, data$$1) { return resolve(data$$1); }, false, function (ref) { - var data$$1 = ref.data; - - - if (!data$$1 || !isString(data$$1)) { - return; - } - - try { - data$$1 = JSON.parse(data$$1); - } catch (e) { - return; - } - - return data$$1 && cb(data$$1); - - }); - - }); - - } - - /* - Based on: - Copyright (c) 2010-2016 Thomas Fuchs - http://zeptojs.com/ - */ - - var touch = {}, clickTimeout, swipeTimeout, tapTimeout, clicked; - - function swipeDirection(ref) { - var x1 = ref.x1; - var x2 = ref.x2; - var y1 = ref.y1; - var y2 = ref.y2; - - return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down'); - } - - function cancelAll() { - clickTimeout && clearTimeout(clickTimeout); - swipeTimeout && clearTimeout(swipeTimeout); - tapTimeout && clearTimeout(tapTimeout); - clickTimeout = swipeTimeout = tapTimeout = null; - touch = {}; - } - - ready(function () { - - on(document, 'click', function () { return clicked = true; }, true); - - on(document, pointerDown, function (e) { - - var target = e.target; - var ref = getPos$1(e); - var x = ref.x; - var y = ref.y; - var now = Date.now(); - var type = getType(e.type); - - if (touch.type && touch.type !== type) { - return; - } - - touch.el = 'tagName' in target ? target : target.parentNode; - - clickTimeout && clearTimeout(clickTimeout); - - touch.x1 = x; - touch.y1 = y; - - if (touch.last && now - touch.last <= 250) { - touch = {}; - } - - touch.type = type; - touch.last = now; - - clicked = e.button > 0; - - }); - - on(document, pointerMove, function (e) { - - if (e.defaultPrevented) { - return; - } - - var ref = getPos$1(e); - var x = ref.x; - var y = ref.y; - - touch.x2 = x; - touch.y2 = y; - - }); - - on(document, pointerUp, function (ref) { - var type = ref.type; - var target = ref.target; - - - if (touch.type !== getType(type)) { - return; - } - - // 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) { - trigger(touch.el, 'swipe'); - trigger(touch.el, ("swipe" + (swipeDirection(touch)))); - } - touch = {}; - }); - - // normal tap - } else if ('last' in touch) { - - tapTimeout = setTimeout(function () { return trigger(touch.el, 'tap'); }); - - // trigger single click after 350ms of inactivity - if (touch.el && type !== 'mouseup' && within(target, touch.el)) { - clickTimeout = setTimeout(function () { - clickTimeout = null; - if (touch.el && !clicked) { - trigger(touch.el, 'click'); - } - touch = {}; - }, 350); - } - - } else { - touch = {}; - } - - }); - - on(document, 'touchcancel', cancelAll); - 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.pointerType === 'touch'; - } - - function getPos$1(e) { - var touches = e.touches; - var changedTouches = e.changedTouches; - var ref = touches && touches[0] || changedTouches && changedTouches[0] || e; - var x = ref.pageX; - var y = ref.pageY; - - return {x: x, y: y}; - } - - function getType(type) { - return type.slice(0, 5); - } - - - - var util = /*#__PURE__*/Object.freeze({ - ajax: ajax, - getImage: getImage, - transition: transition, - Transition: Transition, - animate: animate, - Animation: Animation, - attr: attr, - hasAttr: hasAttr, - removeAttr: removeAttr, - filterAttr: filterAttr, - data: data, - addClass: addClass, - removeClass: removeClass, - removeClasses: removeClasses, - replaceClass: replaceClass, - hasClass: hasClass, - toggleClass: toggleClass, - $: $, - $$: $$, - positionAt: positionAt, - offset: offset, - position: position, - height: height, - width: width, - flipPosition: flipPosition, - isInView: isInView, - scrolledOver: scrolledOver, - isReady: isReady, - ready: ready, - index: index, - getIndex: getIndex, - empty: empty, - html: html, - prepend: prepend, - append: append, - before: before, - after: after, - remove: remove, - wrapAll: wrapAll, - wrapInner: wrapInner, - unwrap: unwrap, - fragment: fragment, - apply: apply, - isRtl: isRtl, - hasTouch: hasTouch, - pointerDown: pointerDown, - pointerMove: pointerMove, - pointerUp: pointerUp, - pointerEnter: pointerEnter, - pointerLeave: pointerLeave, - on: on, - off: off, - once: once, - trigger: trigger, - createEvent: createEvent, - toEventTargets: toEventTargets, - preventClick: preventClick, - fastdom: fastdom, - isVoidElement: isVoidElement, - isVisible: isVisible, - selInput: selInput, - isInput: isInput, - filter: filter, - within: within, - bind: bind, - hasOwn: hasOwn, - hyphenate: hyphenate, - camelize: camelize, - ucfirst: ucfirst, - startsWith: startsWith, - endsWith: endsWith, - includes: includes, - isArray: isArray, - isFunction: isFunction, - isObject: isObject, - isPlainObject: isPlainObject, - isWindow: isWindow, - isDocument: isDocument, - isJQuery: isJQuery, - isNode: isNode, - isNodeCollection: isNodeCollection, - isBoolean: isBoolean, - isString: isString, - isNumber: isNumber, - isNumeric: isNumeric, - isUndefined: isUndefined, - toBoolean: toBoolean, - toNumber: toNumber, - toFloat: toFloat, - toNode: toNode, - toNodes: toNodes, - toList: toList, - toMs: toMs, - swap: swap, - assign: assign, - each: each, - sortBy: sortBy, - clamp: clamp, - noop: noop, - intersectRect: intersectRect, - pointInRect: pointInRect, - Dimensions: Dimensions, - MouseTracker: MouseTracker, - mergeOptions: mergeOptions, - parseOptions: parseOptions, - Player: Player, - Promise: Promise$1, - Deferred: Deferred, - query: query, - queryAll: queryAll, - find: find, - findAll: findAll, - matches: matches, - closest: closest, - parents: parents, - escape: escape, - css: css, - getStyles: getStyles, - getStyle: getStyle, - getCssVar: getCssVar, - propName: propName, - isTouch: isTouch, - getPos: getPos$1 - }); - - function componentAPI (UIkit) { - - var DATA = UIkit.data; - - var components = {}; - - UIkit.component = function (name, options) { - - if (!options) { - - if (isPlainObject(components[name])) { - components[name] = UIkit.extend(components[name]); - } - - return components[name]; - - } - - UIkit[name] = function (element, data$$1) { - var i = arguments.length, argsArray = Array(i); - while ( i-- ) argsArray[i] = arguments[i]; - - - var component = UIkit.component(name); - - if (isPlainObject(element)) { - return new component({data: element}); - } - - if (component.options.functional) { - return new component({data: [].concat( argsArray )}); - } - - return element && element.nodeType ? init(element) : $$(element).map(init)[0]; - - function init(element) { - - var instance = UIkit.getComponent(element, name); - - if (instance) { - if (!data$$1) { - return instance; - } else { - instance.$destroy(); - } - } - - return new component({el: element, data: data$$1}); - - } - - }; - - var opt = isPlainObject(options) ? assign({}, options) : options.options; - - opt.name = name; - - if (opt.install) { - opt.install(UIkit, opt, name); - } - - if (UIkit._initialized && !opt.functional) { - var id = hyphenate(name); - fastdom.read(function () { return UIkit[name](("[uk-" + id + "],[data-uk-" + id + "]")); }); - } - - return components[name] = isPlainObject(options) ? opt : options; - }; - - UIkit.getComponents = function (element) { return element && element[DATA] || {}; }; - UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; }; - - UIkit.connect = function (node) { - - if (node[DATA]) { - for (var name in node[DATA]) { - node[DATA][name]._callConnected(); - } - } - - for (var i = 0; i < node.attributes.length; i++) { - - var name$1 = getComponentName(node.attributes[i].name); - - if (name$1 && name$1 in components) { - UIkit[name$1](node); - } - - } - - }; - - UIkit.disconnect = function (node) { - for (var name in node[DATA]) { - node[DATA][name]._callDisconnected(); - } - }; - - } - - function getComponentName(attribute) { - return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-') - ? camelize(attribute.replace('data-uk-', '').replace('uk-', '')) - : false; - } - - function boot (UIkit) { - - var connect = UIkit.connect; - var disconnect = UIkit.disconnect; - - if (!('MutationObserver' in window)) { - return; - } - - if (document.body) { - - init(); - - } else { - - (new MutationObserver(function () { - - if (document.body) { - this.disconnect(); - init(); - } - - })).observe(document, {childList: true, subtree: true}); - - } - - function init() { - - apply$$1(document.body, connect); - - fastdom.flush(); - - (new MutationObserver(function (mutations) { return mutations.forEach(applyMutation); })).observe(document, { - childList: true, - subtree: true, - characterData: true, - attributes: true - }); - - UIkit._initialized = true; - } - - function applyMutation(mutation) { - - var target = mutation.target; - var type = mutation.type; - - var update = type !== 'attributes' - ? applyChildList(mutation) - : applyAttribute(mutation); - - update && UIkit.update(target); - - } - - function applyAttribute(ref) { - var target = ref.target; - var attributeName = ref.attributeName; - - - if (attributeName === 'href') { - return true; - } - - var name = getComponentName(attributeName); - - if (!name || !(name in UIkit)) { - return; - } - - if (hasAttr(target, attributeName)) { - UIkit[name](target); - return true; - } - - var component = UIkit.getComponent(target, name); - - if (component) { - component.$destroy(); - return true; - } - - } - - function applyChildList(ref) { - var addedNodes = ref.addedNodes; - var removedNodes = ref.removedNodes; - - - for (var i = 0; i < addedNodes.length; i++) { - apply$$1(addedNodes[i], connect); - } - - for (var i$1 = 0; i$1 < removedNodes.length; i$1++) { - apply$$1(removedNodes[i$1], disconnect); - } - - return true; - } - - function apply$$1(node, fn) { - - if (node.nodeType !== 1 || hasAttr(node, 'uk-no-boot')) { - return; - } - - fn(node); - node = node.firstElementChild; - while (node) { - var next = node.nextElementSibling; - apply$$1(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.component(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; - var Sub = function UIkitComponent (options) { - this._init(options); - }; - - 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 (element, e) { - - e = createEvent(e || 'update'); - element = element ? toNode(element) : document.body; - - path(element).map(function (element) { return update(element[DATA], e); }); - apply(element, function (element) { return update(element[DATA], e); }); - - }; - - var container; - Object.defineProperty(UIkit, 'container', { - - get: function() { - return container || document.body; - }, - - set: function(element) { - container = $(element); - } - - }); - - function update(data$$1, e) { - - if (!data$$1) { - return; - } - - for (var name in data$$1) { - if (data$$1[name]._isReady) { - data$$1[name]._callUpdate(e); - } - } - - } - - function path(element) { - var path = []; - - while (element && element !== document.body && element.parentNode) { - - element = element.parentNode; - path.unshift(element); - - } - - return path; - } - - } - - 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._callConnected = function () { - var this$1 = this; - - - if (this._connected) { - return; - } - - this._data = {}; - this._initProps(); - - this._callHook('beforeConnect'); - this._connected = true; - - this._initEvents(); - this._initObserver(); - - this._callHook('connected'); - - if (!this._isReady) { - ready(function () { return this$1._callReady(); }); - } - - this._callUpdate(); - }; - - UIkit.prototype._callDisconnected = function () { - - if (!this._connected) { - return; - } - - this._callHook('beforeDisconnect'); - - if (this._observer) { - this._observer.disconnect(); - this._observer = null; - } - - this._unbindEvents(); - this._callHook('disconnected'); - - this._connected = false; - - }; - - UIkit.prototype._callReady = function () { - - if (this._isReady) { - return; - } - - this._isReady = true; - this._callHook('ready'); - this._resetComputeds(); - this._callUpdate(); - }; - - UIkit.prototype._callUpdate = function (e) { - var this$1 = this; - - - e = createEvent(e || 'update'); - - var type = e.type; - - if (includes(['update', 'load', 'resize'], type)) { - this._resetComputeds(); - } - - var updates = this.$options.update; - var ref = this._frames; - var reads = ref.reads; - var writes = ref.writes; - - if (!updates) { - return; - } - - updates.forEach(function (ref, i) { - var read = ref.read; - var write = ref.write; - var events = ref.events; - - - if (type !== 'update' && !includes(events, type)) { - return; - } - - if (read && !includes(fastdom.reads, reads[i])) { - reads[i] = fastdom.read(function () { - - var result = this$1._connected && read.call(this$1, this$1._data, e); - - if (result === false && write) { - fastdom.clear(writes[i]); - delete writes[i]; - } else if (isPlainObject(result)) { - assign(this$1._data, result); - } - delete reads[i]; - }); - } - - if (write && !includes(fastdom.writes, writes[i])) { - writes[i] = fastdom.write(function () { - this$1._connected && write.call(this$1, this$1._data, e); - delete writes[i]; - }); - } - - }); - - }; - - } - - function stateAPI (UIkit) { - - var uid = 0; - - UIkit.prototype._init = function (options) { - - options = options || {}; - options.data = normalizeData(options, this.constructor.options); - - this.$options = mergeOptions(this.constructor.options, options, this); - this.$el = null; - this.$props = {}; - - this._frames = {reads: {}, writes: {}}; - this._events = []; - - this._uid = uid++; - this._initData(); - this._initMethods(); - this._initComputeds(); - this._callHook('created'); - - if (options.el) { - this.$mount(options.el); - } - }; - - UIkit.prototype._initData = function () { - var this$1 = this; - - - var ref = this.$options; - var data$$1 = ref.data; if ( data$$1 === void 0 ) data$$1 = {}; - - for (var key in data$$1) { - this$1.$props[key] = this$1[key] = data$$1[key]; - } - }; - - UIkit.prototype._initMethods = function () { - var this$1 = this; - - - var ref = this.$options; - var methods = ref.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 ref = this.$options; - var computed = ref.computed; - - this._resetComputeds(); - - if (computed) { - for (var key in computed) { - registerComputed(this$1, key, computed[key]); - } - } - }; - - UIkit.prototype._resetComputeds = function () { - this._computeds = {}; - }; - - UIkit.prototype._initProps = function (props) { - var this$1 = this; - - - var key; - - this._resetComputeds(); - - props = props || getProps(this.$options, this.$name); - - for (key in props) { - if (!isUndefined(props[key])) { - this$1.$props[key] = props[key]; - } - } - - var exclude = [this.$options.computed, this.$options.methods]; - for (key in this$1.$props) { - if (key in props && notIn(exclude, key)) { - this$1[key] = this$1.$props[key]; - } - } - }; - - UIkit.prototype._initEvents = function () { - var this$1 = this; - - - var ref = this.$options; - var events = ref.events; - - if (events) { - - events.forEach(function (event) { - - if (!hasOwn(event, 'handler')) { - for (var key in event) { - registerEvent(this$1, event[key], key); - } - } else { - registerEvent(this$1, event); - } - - }); - } - }; - - UIkit.prototype._unbindEvents = function () { - this._events.forEach(function (unbind) { return unbind(); }); - this._events = []; - }; - - UIkit.prototype._initObserver = function () { - var this$1 = this; - - - var ref = this.$options; - var attrs = ref.attrs; - var props = ref.props; - var el = ref.el; - if (this._observer || !props || !attrs) { - return; - } - - attrs = isArray(attrs) ? attrs : Object.keys(props).map(function (key) { return hyphenate(key); }); - - this._observer = new MutationObserver(function () { - - var data$$1 = getProps(this$1.$options, this$1.$name); - if (attrs.some(function (key) { return !isUndefined(data$$1[key]) && data$$1[key] !== this$1.$props[key]; })) { - this$1.$reset(); - } - - }); - - this._observer.observe(el, {attributes: true, attributeFilter: attrs.concat([this.$name, ("data-" + (this.$name))])}); - }; - - function getProps(opts, name) { - - var data$$1 = {}; - var args = opts.args; if ( args === void 0 ) args = []; - var props = opts.props; if ( props === void 0 ) props = {}; - var el = opts.el; - - if (!props) { - return data$$1; - } - - for (var key in props) { - var prop = hyphenate(key); - if (hasAttr(el, prop)) { - - var value = coerce(props[key], attr(el, prop)); - - if (prop === 'target' && (!value || startsWith(value, '_'))) { - continue; - } - - data$$1[key] = value; - } - } - - var options = parseOptions(data(el, name), args); - - for (var key$1 in options) { - var prop$1 = camelize(key$1); - if (props[prop$1] !== undefined) { - data$$1[prop$1] = coerce(props[prop$1], options[key$1]); - } - } - - return data$$1; - } - - function registerComputed(component, key, cb) { - Object.defineProperty(component, key, { - - enumerable: true, - - get: function() { - - var _computeds = component._computeds; - var $props = component.$props; - var $el = component.$el; - - if (!hasOwn(_computeds, key)) { - _computeds[key] = cb.call(component, $props, $el); - } - - return _computeds[key]; - }, - - set: function(value) { - component._computeds[key] = value; - } - - }); - } - - function registerEvent(component, event, key) { - - if (!isPlainObject(event)) { - event = ({name: key, handler: event}); - } - - var name = event.name; - var el = event.el; - var handler = event.handler; - var capture = event.capture; - var delegate = event.delegate; - var filter$$1 = event.filter; - var self = event.self; - el = isFunction(el) - ? el.call(component) - : el || component.$el; - - if (isArray(el)) { - el.forEach(function (el) { return registerEvent(component, assign({}, event, {el: el}), key); }); - return; - } - - if (!el || filter$$1 && !filter$$1.call(component)) { - return; - } - - handler = detail(isString(handler) ? component[handler] : bind(handler, component)); - - if (self) { - handler = selfFilter(handler); - } - - component._events.push( - on( - el, - name, - !delegate - ? null - : isString(delegate) - ? delegate - : delegate.call(component), - handler, - capture - ) - ); - - } - - function selfFilter(handler) { - return function selfHandler(e) { - if (e.target === e.currentTarget || e.target === e.current) { - return handler.call(null, e); - } - }; - } - - function notIn(options, key) { - return options.every(function (arr) { return !arr || !hasOwn(arr, key); }); - } - - function detail(listener) { - return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); }; - } - - function coerce(type, value) { - - if (type === Boolean) { - return toBoolean(value); - } else if (type === Number) { - return toNumber(value); - } else if (type === 'list') { - return toList(value); - } else if (type === 'media') { - return toMedia(value); - } - - return type ? type(value) : value; - } - - function toMedia(value) { - - if (isString(value)) { - if (value[0] === '@') { - var name = "media-" + (value.substr(1)); - value = toFloat(getCssVar(name)); - } else if (isNaN(value)) { - return value; - } - } - - return value && !isNaN(value) ? ("(min-width: " + value + "px)") : false; - } - - function normalizeData(ref, ref$1) { - var data$$1 = ref.data; - var el = ref.el; - var args = ref$1.args; - var props = ref$1.props; if ( props === void 0 ) props = {}; - - data$$1 = isArray(data$$1) - ? args && args.length - ? data$$1.slice(0, args.length).reduce(function (data$$1, value, index$$1) { - if (isPlainObject(value)) { - assign(data$$1, value); - } else { - data$$1[args[index$$1]] = value; - } - return data$$1; - }, {}) - : undefined - : data$$1; - - if (data$$1) { - for (var key in data$$1) { - if (isUndefined(data$$1[key])) { - delete data$$1[key]; - } else { - data$$1[key] = props[key] ? coerce(props[key], data$$1[key], el) : data$$1[key]; - } - } - } - - return data$$1; - } - } - - function instanceAPI (UIkit) { - - var DATA = UIkit.data; - - UIkit.prototype.$mount = function (el) { - - var ref = this.$options; - var name = ref.name; - - if (!el[DATA]) { - el[DATA] = {}; - } - - if (el[DATA][name]) { - return; - } - - el[DATA][name] = this; - - this.$el = this.$options.el = this.$options.el || el; - - this._callHook('init'); - - if (within(el, document)) { - this._callConnected(); - } - }; - - UIkit.prototype.$emit = function (e) { - this._callUpdate(e); - }; - - UIkit.prototype.$reset = function () { - this._callDisconnected(); - this._callConnected(); - }; - - UIkit.prototype.$destroy = function (removeEl) { - if ( removeEl === void 0 ) removeEl = false; - - - var ref = this.$options; - var el = ref.el; - var name = ref.name; - - if (el) { - this._callDisconnected(); - } - - this._callHook('destroy'); - - if (!el || !el[DATA]) { - return; - } - - delete el[DATA][name]; - - if (!Object.keys(el[DATA]).length) { - delete el[DATA]; - } - - if (removeEl) { - remove(this.$el); - } - }; - - UIkit.prototype.$create = function (component, element, data$$1) { - return UIkit[component](element, data$$1); - }; - - UIkit.prototype.$update = UIkit.update; - UIkit.prototype.$getComponent = UIkit.getComponent; - - var names = {}; - Object.defineProperties(UIkit.prototype, { - - $container: Object.getOwnPropertyDescriptor(UIkit, 'container'), - - $name: { - - get: function() { - var ref = this.$options; - var name = ref.name; - - if (!names[name]) { - names[name] = UIkit.prefix + hyphenate(name); - } - - return names[name]; - } - - } - - }); - - } - - var UIkit = function (options) { - this._init(options); - }; - - UIkit.util = util; - UIkit.data = '__uikit__'; - UIkit.prefix = 'uk-'; - UIkit.options = {}; - - globalAPI(UIkit); - hooksAPI(UIkit); - stateAPI(UIkit); - componentAPI(UIkit); - instanceAPI(UIkit); - - var Class = { - - connected: function() { - addClass(this.$el, this.$name); - } - - }; - - var Togglable = { - - props: { - cls: Boolean, - animation: 'list', - duration: Number, - origin: String, - transition: String, - queued: Boolean - }, - - data: { - 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(ref) { - var animation = ref.animation; - - return !!animation[0]; - }, - - hasTransition: function(ref) { - var animation = ref.animation; - - return this.hasAnimation && animation[0] === true; - } - - }, - - methods: { - - toggleElement: function(targets, show, animate$$1) { - var this$1 = this; - - return new Promise$1(function (resolve) { - - targets = toNodes(targets); - - var all = function (targets) { return Promise$1.all(targets.map(function (el) { return this$1._toggleElement(el, show, animate$$1); })); }; - var toggled = targets.filter(function (el) { return this$1.isToggled(el); }); - var untoggled = targets.filter(function (el) { return !includes(toggled, el); }); - - var p; - - if (!this$1.queued || !isUndefined(animate$$1) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) { - - p = all(untoggled.concat(toggled)); - - } else { - - var body = document.body; - var scroll = body.scrollTop; - var el = toggled[0]; - var inProgress = Animation.inProgress(el) && hasClass(el, 'uk-animation-leave') - || Transition.inProgress(el) && el.style.height === '0px'; - - p = all(toggled); - - if (!inProgress) { - p = p.then(function () { - var p = all(untoggled); - body.scrollTop = scroll; - return p; - }); - } - - } - - p.then(resolve, noop); - - }); - }, - - toggleNow: function(targets, show) { - var this$1 = this; - - return new Promise$1(function (resolve) { return Promise$1.all(toNodes(targets).map(function (el) { return this$1._toggleElement(el, show, false); })).then(resolve, noop); }); - }, - - isToggled: function(el) { - var nodes = toNodes(el || this.$el); - return this.cls - ? hasClass(nodes, this.cls.split(' ')[0]) - : !hasAttr(nodes, 'hidden'); - }, - - updateAria: function(el) { - if (this.cls === false) { - attr(el, 'aria-hidden', !this.isToggled(el)); - } - }, - - _toggleElement: function(el, show, animate$$1) { - var this$1 = this; - - - show = isBoolean(show) - ? show - : Animation.inProgress(el) - ? hasClass(el, 'uk-animation-leave') - : Transition.inProgress(el) - ? el.style.height === '0px' - : !this.isToggled(el); - - if (!trigger(el, ("before" + (show ? 'show' : 'hide')), [this])) { - return Promise$1.reject(); - } - - var promise = (animate$$1 === false || !this.hasAnimation - ? this._toggleImmediate - : this.hasTransition - ? this._toggleHeight - : this._toggleAnimation - )(el, show); - - trigger(el, show ? 'show' : 'hide', [this]); - - return promise.then(function () { - trigger(el, show ? 'shown' : 'hidden', [this$1]); - this$1.$update(el); - }); - }, - - _toggle: function(el, toggled) { - - if (!el) { - return; - } - - var changed; - if (this.cls) { - changed = includes(this.cls, ' ') || Boolean(toggled) !== hasClass(el, this.cls); - changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled); - } else { - changed = Boolean(toggled) === hasAttr(el, 'hidden'); - changed && attr(el, 'hidden', !toggled ? '' : null); - } - - $$('[autofocus]', el).some(function (el) { return isVisible(el) && (el.focus() || true); }); - - this.updateAria(el); - changed && this.$update(el); - }, - - _toggleImmediate: function(el, show) { - this._toggle(el, show); - return Promise$1.resolve(); - }, - - _toggleHeight: function(el, show) { - var this$1 = this; - - - var inProgress = Transition.inProgress(el); - var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0; - var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0; - - Transition.cancel(el); - - if (!this.isToggled(el)) { - this._toggle(el, true); - } - - height(el, ''); - - // Update child components first - fastdom.flush(); - - var endHeight = height(el) + (inProgress ? 0 : inner); - height(el, currentHeight); - - return (show - ? Transition.start(el, assign({}, this.initProps, {overflow: 'hidden', height: endHeight}), Math.round(this.duration * (1 - currentHeight / endHeight)), this.transition) - : Transition.start(el, this.hideProps, Math.round(this.duration * (currentHeight / endHeight)), this.transition).then(function () { return this$1._toggle(el, false); }) - ).then(function () { return css(el, this$1.initProps); }); - - }, - - _toggleAnimation: function(el, show) { - var this$1 = this; - - - Animation.cancel(el); - - 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 Accordion = { - - mixins: [Class, Togglable], - - props: { - targets: String, - active: null, - collapsible: Boolean, - multiple: Boolean, - toggle: String, - content: String, - transition: String - }, - - data: { - 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(ref, $el) { - var targets = ref.targets; - - return $$(targets, $el); - } - - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return ((this.targets) + " " + (this.$props.toggle)); - }, - - handler: function(e) { - e.preventDefault(); - this.toggle(index($$(((this.targets) + " " + (this.$props.toggle)), this.$el), e.current)); - } - - } - - ], - - connected: function() { - - if (this.active === false) { - return; - } - - var active = this.items[Number(this.active)]; - if (active && !hasClass(active, this.clsOpen)) { - this.toggle(active, false); - } - }, - - update: function() { - var this$1 = this; - - - this.items.forEach(function (el) { return this$1._toggleImmediate($(this$1.content, el), hasClass(el, this$1.clsOpen)); }); - - var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0]; - if (active) { - this.toggle(active, false); - } - }, - - methods: { - - toggle: function(item, animate$$1) { - var this$1 = this; - - - var index$$1 = getIndex(item, this.items); - var active = filter(this.items, ("." + (this.clsOpen))); - - item = this.items[index$$1]; - - item && [item] - .concat(!this.multiple && !includes(active, item) && active || []) - .forEach(function (el) { - - var isItem = el === item; - var state = isItem && !hasClass(el, this$1.clsOpen); - - if (!state && isItem && !this$1.collapsible && active.length < 2) { - return; - } - - toggleClass(el, this$1.clsOpen, state); - - var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el); - - if (!el._wrapper) { - el._wrapper = wrapAll(content, '<div>'); - attr(el._wrapper, 'hidden', state ? '' : null); - } - - this$1._toggleImmediate(content, true); - this$1.toggleElement(el._wrapper, state, animate$$1).then(function () { - if (hasClass(el, this$1.clsOpen) === state) { - - if (!state) { - this$1._toggleImmediate(content, false); - } - - el._wrapper = null; - unwrap(content); - } - }); - - }); - } - - } - - }; - - var Alert = { - - attrs: true, - - mixins: [Class, Togglable], - - args: 'animation', - - props: { - close: String - }, - - data: { - animation: [true], - selClose: '.uk-alert-close', - duration: 150, - hideProps: assign({opacity: 0}, Togglable.data.hideProps) - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return this.selClose; - }, - - handler: function(e) { - e.preventDefault(); - this.close(); - } - - } - - ], - - methods: { - - close: function() { - var this$1 = this; - - this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); }); - } - - } - - }; - - function Core (UIkit) { - - ready(function () { - - var scroll = 0; - var started = 0; - - on(window, 'load resize', function (e) { return UIkit.update(null, e); }); - on(window, 'scroll', function (e) { - e.dir = scroll <= window.pageYOffset ? 'down' : 'up'; - e.pageYOffset = scroll = window.pageYOffset; - UIkit.update(null, e); - }, {capture: true, passive: false}); - - on(document, 'animationstart', function (ref) { - var target = ref.target; - - if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) { - - started++; - css(document.body, 'overflowX', 'hidden'); - setTimeout(function () { - if (!--started) { - css(document.body, 'overflowX', ''); - } - }, toMs(css(target, 'animationDuration')) + 100); - } - }, true); - - if (!hasTouch) { - return; - } - - var cls = 'uk-hover'; - - on(document, 'tap', function (ref) { - var target = ref.target; - - return $$(("." + cls)).forEach(function (el) { return !within(target, el) && removeClass(el, cls); } - ); - } - ); - - Object.defineProperty(UIkit, 'hoverSelector', { - - set: function(selector) { - on(document, 'tap', selector, function (ref) { - var current = ref.current; - - return addClass(current, cls); - }); - } - - }); - - UIkit.hoverSelector = '.uk-animation-toggle, .uk-transition-toggle, [uk-hover]'; - - }); - - } - - var Video = { - - args: 'autoplay', - - props: { - automute: Boolean, - autoplay: Boolean, - }, - - data: { - automute: false, - autoplay: true - }, - - computed: { - - inView: function(ref) { - var autoplay = ref.autoplay; - - return autoplay === 'inview'; - } - - }, - - connected: function() { - - if (this.inView && !hasAttr(this.$el, 'preload')) { - this.$el.preload = 'none'; - } - - }, - - ready: function() { - - this.player = new Player(this.$el); - - if (this.automute) { - this.player.mute(); - } - - }, - - update: [ - - { - - read: function(_, ref) { - var type = ref.type; - - - return !this.player || (type === 'scroll' || type === 'resize') && !this.inView - ? false - : { - visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden', - inView: this.inView && isInView(this.$el) - }; - }, - - write: function(ref) { - var visible = ref.visible; - var inView = ref.inView; - - - if (!visible || this.inView && !inView) { - this.player.pause(); - } else if (this.autoplay === true || this.inView && inView) { - this.player.play(); - } - - }, - - events: ['load', 'resize', 'scroll'] - - } - - ] - - }; - - var Cover = { - - mixins: [Class, Video], - - props: { - width: Number, - height: Number - }, - - data: { - automute: true - }, - - update: { - - write: function() { - - var el = this.$el; - - if (!isVisible(el)) { - return; - } - - var ref = el.parentNode; - var height$$1 = ref.offsetHeight; - var width$$1 = ref.offsetWidth; - - css( - css(el, {width: '', height: ''}), - Dimensions.cover( - { - width: this.width || el.clientWidth, - height: this.height || el.clientHeight - }, - { - width: width$$1 + (width$$1 % 2 ? 1 : 0), - height: height$$1 + (height$$1 % 2 ? 1 : 0) - } - ) - ); - - }, - - events: ['load', 'resize'] - - }, - - events: { - - loadedmetadata: function() { - this.$emit(); - } - - } - - }; - - var Position = { - - props: { - pos: String, - offset: null, - flip: Boolean, - clsPos: String - }, - - data: { - pos: ("bottom-" + (!isRtl ? 'left' : 'right')), - flip: true, - offset: false, - clsPos: '' - }, - - computed: { - - pos: function(ref) { - var pos = ref.pos; - - return (pos + (!includes(pos, '-') ? '-center' : '')).split('-'); - }, - - dir: function() { - return this.pos[0]; - }, - - align: function() { - return this.pos[1]; - } - - }, - - methods: { - - positionAt: function(element, target, boundary) { - - removeClasses(element, ((this.clsPos) + "-(top|bottom|left|right)(-[a-z]+)?")); - css(element, {top: '', left: ''}); - - var node; - var ref = this; - var offset$$1 = ref.offset; - - offset$$1 = isNumeric(offset$$1) - ? offset$$1 - : (node = $(offset$$1)) - ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom'] - : 0; - - var axis = this.getAxis(); - var ref$1 = positionAt( - 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' ? -offset$$1 : offset$$1)) : (" " + (this.dir === 'top' ? -offset$$1 : offset$$1)), - null, - this.flip, - boundary - ).target; - var x = ref$1.x; - var y = ref$1.y; - - this.dir = axis === 'x' ? x : y; - this.align = axis === 'x' ? y : x; - - toggleClass(element, ((this.clsPos) + "-" + (this.dir) + "-" + (this.align)), this.offset === false); - - }, - - getAxis: function() { - return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x'; - } - - } - - }; - - var active; - - var Drop = { - - mixins: [Position, Togglable], - - args: 'pos', - - props: { - mode: 'list', - toggle: Boolean, - boundary: Boolean, - boundaryAlign: Boolean, - delayShow: Number, - delayHide: Number, - clsDrop: String - }, - - data: { - mode: ['click', 'hover'], - toggle: '- *', - boundary: window, - boundaryAlign: false, - delayShow: 0, - delayHide: 800, - clsDrop: false, - hoverIdle: 200, - animation: ['uk-animation-fade'], - cls: 'uk-open' - }, - - computed: { - - boundary: function(ref, $el) { - var boundary = ref.boundary; - - return query(boundary, $el); - }, - - clsDrop: function(ref) { - var clsDrop = ref.clsDrop; - - return clsDrop || ("uk-" + (this.$options.name)); - }, - - clsPos: function() { - return this.clsDrop; - } - - }, - - init: function() { - this.tracker = new MouseTracker(); - }, - - connected: function() { - - addClass(this.$el, this.clsDrop); - - var ref = this.$props; - var toggle = ref.toggle; - this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), { - target: this.$el, - mode: this.mode - }); - - this.updateAria(this.$el); - - }, - - events: [ - - - { - - name: 'click', - - delegate: function() { - return ("." + (this.clsDrop) + "-close"); - }, - - handler: function(e) { - e.preventDefault(); - this.hide(false); - } - - }, - - { - - name: 'click', - - delegate: function() { - return 'a[href^="#"]'; - }, - - handler: function(e) { - - if (e.defaultPrevented) { - return; - } - - var id = e.target.hash; - - if (!id) { - e.preventDefault(); - } - - if (!id || !within(id, this.$el)) { - this.hide(false); - } - } - - }, - - { - - name: 'beforescroll', - - handler: function() { - this.hide(false); - } - - }, - - { - - name: 'toggle', - - self: true, - - handler: function(e, toggle) { - - e.preventDefault(); - - if (this.isToggled()) { - this.hide(false); - } else { - this.show(toggle, false); - } - } - - }, - - { - - name: pointerEnter, - - filter: function() { - return includes(this.mode, 'hover'); - }, - - handler: function(e) { - - if (isTouch(e)) { - return; - } - - if (active - && active !== this - && active.toggle - && includes(active.toggle.mode, 'hover') - && !within(e.target, active.toggle.$el) - && !pointInRect({x: e.pageX, y: e.pageY}, offset(active.$el)) - ) { - active.hide(false); - } - - e.preventDefault(); - this.show(this.toggle); - } - - }, - - { - - name: 'toggleshow', - - handler: function(e, toggle) { - - if (toggle && !includes(toggle.target, this.$el)) { - return; - } - - e.preventDefault(); - this.show(toggle || this.toggle); - } - - }, - - { - - name: ("togglehide " + pointerLeave), - - handler: function(e, toggle) { - - if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) { - return; - } - - e.preventDefault(); - - if (this.toggle && includes(this.toggle.mode, 'hover')) { - this.hide(); - } - } - - }, - - { - - name: 'beforeshow', - - self: true, - - handler: function() { - this.clearTimers(); - Animation.cancel(this.$el); - this.position(); - } - - }, - - { - - name: 'show', - - self: true, - - handler: function() { - this.tracker.init(); - if (this.toggle) { - addClass(this.toggle.$el, this.cls); - attr(this.toggle.$el, 'aria-expanded', 'true'); - } - registerEvent(); - } - - }, - - { - - name: 'beforehide', - - self: true, - - handler: function() { - this.clearTimers(); - } - - }, - - { - - name: 'hide', - - handler: function(ref) { - var target = ref.target; - - - if (this.$el !== target) { - active = active === null && within(target, this.$el) && this.isToggled() ? this : active; - return; - } - - active = this.isActive() ? null : active; - - if (this.toggle) { - removeClass(this.toggle.$el, this.cls); - attr(this.toggle.$el, 'aria-expanded', 'false'); - this.toggle.$el.blur(); - $$('a, button', this.toggle.$el).forEach(function (el) { return el.blur(); }); - } - - this.tracker.cancel(); - } - - } - - ], - - update: { - - write: function() { - - if (this.isToggled() && !Animation.inProgress(this.$el)) { - this.position(); - } - - }, - - events: ['resize'] - - }, - - methods: { - - show: function(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); }; - var 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 && !this$1.isChildOf(active)) { - 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 && toggle.$el !== this.toggle.$el) { - - once(this.$el, 'hide', tryShow); - this.hide(false); - - } else { - tryShow(); - } - }, - - hide: function(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() { - clearTimeout(this.showTimer); - clearTimeout(this.hideTimer); - this.showTimer = null; - this.hideTimer = null; - this.isDelaying = false; - }, - - isActive: function() { - return active === this; - }, - - isChildOf: function(drop) { - return drop && drop !== this && within(this.$el, drop.$el); - }, - - isParentOf: function(drop) { - return drop && drop !== this && within(drop.$el, this.$el); - }, - - position: function() { - - removeClasses(this.$el, ((this.clsDrop) + "-(stack|boundary)")); - css(this.$el, {top: '', left: '', display: 'block'}); - toggleClass(this.$el, ((this.clsDrop) + "-boundary"), this.boundaryAlign); - - var boundary = offset(this.boundary); - var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el); - - if (this.align === 'justify') { - var prop = this.getAxis() === 'y' ? 'width' : 'height'; - css(this.$el, prop, alignTo[prop]); - } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) { - addClass(this.$el, ((this.clsDrop) + "-stack")); - } - - this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary); - - css(this.$el, 'display', ''); - - } - - } - - }; - - var registered; - - function registerEvent() { - - if (registered) { - return; - } - - registered = true; - on(document, 'click', function (ref) { - var target = ref.target; - var defaultPrevented = ref.defaultPrevented; - - var prev; - - if (defaultPrevented) { - return; - } - - while (active && active !== prev && !within(target, active.$el) && !(active.toggle && within(target, active.toggle.$el))) { - prev = active; - active.hide(false); - } - }); - } - - var Dropdown = { - - extends: Drop - - }; - - var FormCustom = { - - mixins: [Class], - - args: 'target', - - props: { - target: Boolean - }, - - data: { - target: false - }, - - computed: { - - input: function(_, $el) { - return $(selInput, $el); - }, - - state: function() { - return this.input.nextElementSibling; - }, - - target: function(ref, $el) { - var target = ref.target; - - return target && (target === true - && this.input.parentNode === $el - && this.input.nextElementSibling - || query(target, $el)); - } - - }, - - update: function() { - - var ref = this; - var target = ref.target; - var input = ref.input; - - if (!target) { - return; - } - - var option; - var prop = isInput(target) ? 'value' : 'textContent'; - var prev = target[prop]; - var value = input.files && input.files[0] - ? input.files[0].name - : matches(input, 'select') && (option = $$('option', input).filter(function (el) { return el.selected; })[0]) - ? option.textContent - : input.value; - - if (prev !== value) { - target[prop] = value; - } - - }, - - events: [ - - { - - name: 'focusin focusout mouseenter mouseleave', - - delegate: selInput, - - handler: function(ref) { - var type = ref.type; - var current = ref.current; - - if (current === this.input) { - toggleClass( - this.state, - ("uk-" + (includes(type, 'focus') ? 'focus' : 'hover')), - includes(['focusin', 'mouseenter'], type) - ); - } - } - - }, - - { - - name: 'change', - - handler: function() { - this.$emit(); - } - - } - - ] - - }; - - // Deprecated - var Gif = { - - update: { - - read: function(data$$1) { - - var inview = isInView(this.$el); - - if (!inview || data$$1.isInView === inview) { - return false; - } - - data$$1.isInView = inview; - }, - - write: function() { - this.$el.src = this.$el.src; - }, - - events: ['scroll', 'load', 'resize'] - } - - }; - - var Margin = { - - props: { - margin: String, - firstColumn: Boolean - }, - - data: { - margin: 'uk-margin-small-top', - firstColumn: 'uk-first-column' - }, - - update: { - - read: function(data$$1) { - - var items = this.$el.children; - var rows = [[]]; - - if (!items.length || !isVisible(this.$el)) { - return data$$1.rows = rows; - } - - data$$1.rows = getRows(items); - data$$1.stacks = !data$$1.rows.some(function (row) { return row.length > 1; }); - - }, - - write: function(ref) { - var this$1 = this; - var rows = ref.rows; - - - rows.forEach(function (row, i) { return row.forEach(function (el, j) { - toggleClass(el, this$1.margin, i !== 0); - toggleClass(el, this$1.firstColumn, j === 0); - }); } - ); - - }, - - events: ['load', 'resize'] - - } - - }; - - function getRows(items) { - var rows = [[]]; - - for (var i = 0; i < items.length; i++) { - - var el = items[i]; - var dim = getOffset(el); - - if (!dim.height) { - continue; - } - - for (var j = rows.length - 1; j >= 0; j--) { - - var row = rows[j]; - - if (!row[0]) { - row.push(el); - break; - } - - var leftDim = getOffset(row[0]); - - if (dim.top >= leftDim.bottom - 1) { - rows.push([el]); - break; - } - - if (dim.bottom > leftDim.top) { - - if (dim.left < leftDim.left && !isRtl) { - row.unshift(el); - break; - } - - row.push(el); - break; - } - - if (j === 0) { - rows.unshift([el]); - break; - } - - } - - } - - return rows; - - } - - function getOffset(element) { - - var offsetTop = element.offsetTop; - var offsetLeft = element.offsetLeft; - var offsetHeight = element.offsetHeight; - - return { - top: offsetTop, - left: offsetLeft, - height: offsetHeight, - bottom: offsetTop + offsetHeight - }; - } - - var Grid = { - - extends: Margin, - - mixins: [Class], - - attrs: true, - - name: 'grid', - - props: { - masonry: Boolean, - parallax: Number - }, - - data: { - margin: 'uk-grid-margin', - clsStack: 'uk-grid-stack', - masonry: false, - parallax: 0 - }, - - computed: { - - parallax: function(ref) { - var parallax = ref.parallax; - - return Math.abs(parallax); - } - - }, - - connected: function() { - this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top'); - }, - - update: [ - - { - - read: function(ref) { - var rows = ref.rows; - - - if (this.masonry || this.parallax) { - rows = rows.map(function (elements) { return sortBy(elements, 'offsetLeft'); }); - } - - var translates = false; - var elHeight = false; - - if (this.masonry) { - - var height$$1 = 0; - - translates = rows.reduce(function (translates, row, i) { - - translates[i] = row.map(function (_, j) { return i === 0 ? 0 : toFloat(translates[i - 1][j]) + (height$$1 - toFloat(rows[i - 1][j] && rows[i - 1][j].offsetHeight)); }); - height$$1 = row.reduce(function (height$$1, el) { return Math.max(height$$1, el.offsetHeight); }, 0); - - return translates; - - }, []); - - elHeight = maxColumnHeight(rows) + getMarginTop(this.$el, this.margin) * (rows.length - 1); - - } - - return {rows: rows, translates: translates, height: elHeight}; - - }, - - write: function(ref) { - var rows = ref.rows; - var stacks = ref.stacks; - var height$$1 = ref.height; - - - toggleClass(this.$el, this.clsStack, stacks); - - css(this.$el, 'paddingBottom', this.parallax && rows.some(function (row) { return row.length > 1; }) ? this.parallax : ''); - - height$$1 && css(this.$el, 'minHeight', height$$1); - - }, - - events: ['load', 'resize'] - - }, - - { - - read: function(ref) { - var rows = ref.rows; - var height$$1 = ref.height; - - return { - scrolled: this.parallax && rows.some(function (row) { return row.length > 1; }) - ? scrolledOver(this.$el, height$$1 ? height$$1 - height(this.$el) : 0) * this.parallax - : false - }; - }, - - write: function(ref) { - var rows = ref.rows; - var scrolled = ref.scrolled; - var translates = ref.translates; - - - if (scrolled === false && !translates) { - return; - } - - rows.forEach(function (row, i) { return row.forEach(function (el, j) { return css(el, 'transform', !scrolled && !translates ? '' : ("translateY(" + ((translates && -translates[i][j]) + (scrolled ? j % 2 ? scrolled : scrolled / 8 : 0)) + "px)")); } - ); } - ); - - }, - - events: ['scroll', 'load', 'resize'] - - } - - ] - - }; - - function getMarginTop(root, cls) { - - var nodes = toNodes(root.children); - var ref = nodes.filter(function (el) { return hasClass(el, cls); }); - var node = ref[0]; - - return toFloat(node - ? css(node, 'marginTop') - : css(nodes[0], 'paddingLeft')); - } - - function maxColumnHeight(rows) { - return Math.max.apply(Math, rows.reduce(function (sum, row) { - row.forEach(function (el, i) { return sum[i] = (sum[i] || 0) + el.offsetHeight; }); - return sum; - }, [])); - } - - var HeightMatch = { - - args: 'target', - - props: { - target: String, - row: Boolean - }, - - data: { - target: '> *', - row: true - }, - - computed: { - - elements: function(ref, $el) { - var target = ref.target; - - return $$(target, $el); - } - - }, - - update: { - - read: function() { - var this$1 = this; - - - css(this.elements, { - minHeight: '', - boxSizing: '' - }); - - return { - rows: !this.row - ? [this.match(this.elements)] - : getRows(this.elements).map(function (elements) { return this$1.match(elements); }) - }; - }, - - write: function(ref) { - var rows = ref.rows; - - - rows.forEach(function (ref) { - var height$$1 = ref.height; - var elements = ref.elements; - - return css(elements, { - minHeight: height$$1, - boxSizing: 'border-box' - }); - }); - - }, - - events: ['load', 'resize'] - - }, - - methods: { - - match: function(elements) { - - if (elements.length < 2) { - return {}; - } - - var heights = []; - var max = 0; - - elements - .forEach(function (el) { - var ref = offset(el); - var height$$1 = ref.height; - max = Math.max(max, height$$1); - heights.push(height$$1); - }); - - elements = elements.filter(function (el, i) { return heights[i] < max; }); - - return {height: max, elements: elements}; - } - } - - }; - - var HeightViewport = { - - props: { - expand: Boolean, - offsetTop: Boolean, - offsetBottom: Boolean, - minHeight: Number - }, - - data: { - expand: false, - offsetTop: false, - offsetBottom: false, - minHeight: 0 - }, - - update: { - - write: function() { - - css(this.$el, 'boxSizing', 'border-box'); - - var viewport = height(window); - var minHeight, offsetTop = 0; - - if (this.expand) { - - css(this.$el, {height: '', minHeight: ''}); - - var diff = viewport - offsetHeight(document.documentElement); - - if (diff > 0) { - minHeight = offsetHeight(this.$el) + diff; - } - - } else { - - var ref = offset(this.$el); - var top = ref.top; - - if (top < viewport / 2 && this.offsetTop) { - offsetTop += top; - } - - if (this.offsetBottom === true) { - - offsetTop += offsetHeight(this.$el.nextElementSibling); - - } else if (isNumeric(this.offsetBottom)) { - - offsetTop += (viewport / 100) * this.offsetBottom; - - } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) { - - offsetTop += toFloat(this.offsetBottom); - - } else if (isString(this.offsetBottom)) { - - offsetTop += offsetHeight(query(this.offsetBottom, this.$el)); - - } - - // on mobile devices (iOS and Android) window.innerHeight !== 100vh - minHeight = offsetTop ? ("calc(100vh - " + offsetTop + "px)") : '100vh'; - - } - - if (!minHeight) { - return; - } - - css(this.$el, {height: '', minHeight: minHeight}); - - var elHeight = this.$el.offsetHeight; - if (this.minHeight && this.minHeight > elHeight) { - css(this.$el, 'minHeight', this.minHeight); - } - - // IE 11 fix (min-height on a flex container won't apply to its flex items) - if (viewport - offsetTop >= elHeight) { - css(this.$el, 'height', minHeight); - } - - }, - - events: ['load', 'resize'] - - } - - }; - - function offsetHeight(el) { - return el && el.offsetHeight || 0; - } - - var svgs = {}; - - var SVG = { - - attrs: true, - - props: { - id: String, - icon: String, - src: String, - style: String, - width: Number, - height: Number, - ratio: Number, - 'class': String - }, - - data: { - ratio: 1, - id: false, - exclude: ['ratio', 'src', 'icon'], - 'class': '' - }, - - connected: function() { - var this$1 = this; - var assign$$1; - - - this.class += ' uk-svg'; - - if (!this.icon && includes(this.src, '#')) { - - var parts = this.src.split('#'); - - if (parts.length > 1) { - (assign$$1 = parts, this.src = assign$$1[0], this.icon = assign$$1[1]); - } - } - - this.svg = this.getSvg().then(function (svg) { - - var el; - - if (isString(svg)) { - - if (this$1.icon && includes(svg, '<symbol')) { - svg = parseSymbols(svg, this$1.icon) || svg; - } - - el = $(svg.substr(svg.indexOf('<svg'))); - - } else { - el = svg.cloneNode(true); - } - - if (!el) { - return Promise$1.reject('SVG not found.'); - } - - var dimensions = attr(el, 'viewBox'); - - if (dimensions) { - dimensions = dimensions.split(' '); - this$1.width = this$1.$props.width || dimensions[2]; - this$1.height = this$1.$props.height || dimensions[3]; - } - - this$1.width *= this$1.ratio; - this$1.height *= this$1.ratio; - - for (var prop in this$1.$options.props) { - if (this$1[prop] && !includes(this$1.exclude, prop)) { - attr(el, prop, this$1[prop]); - } - } - - if (!this$1.id) { - removeAttr(el, 'id'); - } - - if (this$1.width && !this$1.height) { - removeAttr(el, 'height'); - } - - if (this$1.height && !this$1.width) { - removeAttr(el, 'width'); - } - - var root = this$1.$el; - if (isVoidElement(root) || root.tagName === 'CANVAS') { - - attr(root, {hidden: true, id: null}); - - var next = root.nextElementSibling; - if (next && el.isEqualNode(next)) { - el = next; - } else { - after(root, el); - } - - } else { - - var last = root.lastElementChild; - if (last && el.isEqualNode(last)) { - el = last; - } else { - append(root, el); - } - - } - - this$1.svgEl = el; - - return el; - - }, noop); - - }, - - disconnected: function() { - var this$1 = this; - - - if (isVoidElement(this.$el)) { - attr(this.$el, {hidden: null, id: this.id || null}); - } - - if (this.svg) { - this.svg.then(function (svg) { return (!this$1._connected || svg !== this$1.svgEl) && remove(svg); }, noop); - } - - this.svg = this.svgEl = null; - - }, - - methods: { - - getSvg: function() { - var this$1 = this; - - - if (!this.src) { - return Promise$1.reject(); - } - - if (svgs[this.src]) { - return svgs[this.src]; - } - - svgs[this.src] = new Promise$1(function (resolve, reject) { - - if (startsWith(this$1.src, 'data:')) { - resolve(decodeURIComponent(this$1.src.split(',')[1])); - } else { - - ajax(this$1.src).then( - function (xhr) { return resolve(xhr.response); }, - function () { return reject('SVG not found.'); } - ); - - } - - }); - - return svgs[this.src]; - - } - - } - - }; - - var symbolRe = /<symbol(.*?id=(['"])(.*?)\2[^]*?<\/)symbol>/g; - var symbols = {}; - - function parseSymbols(svg, icon) { - - if (!symbols[svg]) { - - symbols[svg] = {}; - - var match; - while ((match = symbolRe.exec(svg))) { - symbols[svg][match[3]] = "<svg xmlns=\"http://www.w3.org/2000/svg\"" + (match[1]) + "svg>"; - } - - symbolRe.lastIndex = 0; - - } - - return symbols[svg][icon]; - } - - 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 fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></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 fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>"; - - var marker = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></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 y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></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 x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></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\"/></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\"/></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\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></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\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></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=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>"; - - var slidenavNextLarge = "<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>"; - - var slidenavPrevious = "<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>"; - - var slidenavPreviousLarge = "<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></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\"/></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 \"/></svg>"; - - var parsed = {}; - var icons = { - spinner: spinner, - totop: totop, - marker: marker, - '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 - }; - - var Icon = { - - install: install, - - attrs: ['icon', 'ratio'], - - mixins: [Class, SVG], - - args: 'icon', - - props: ['icon'], - - data: {exclude: ['id', 'style', 'class', 'src', 'icon', 'ratio']}, - - isIcon: true, - - connected: function() { - addClass(this.$el, 'uk-icon'); - }, - - methods: { - - getSvg: function() { - - var icon = getIcon(applyRtl(this.icon)); - - if (!icon) { - return Promise$1.reject('Icon not found.'); - } - - return Promise$1.resolve(icon); - } - - } - - }; - - var IconComponent = { - - extends: Icon, - - data: function (vm) { return ({ - icon: hyphenate(vm.constructor.options.name) - }); } - - }; - - var Slidenav = { - - extends: IconComponent, - - connected: function() { - addClass(this.$el, 'uk-slidenav'); - }, - - computed: { - - icon: function(ref, $el) { - var icon = ref.icon; - - return hasClass($el, 'uk-slidenav-large') - ? (icon + "-large") - : icon; - } - - } - - }; - - var Search = { - - extends: IconComponent, - - computed: { - - icon: function(ref, $el) { - var icon = ref.icon; - - return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length - ? 'search-large' - : parents($el, '.uk-search-navbar').length - ? 'search-navbar' - : icon; - } - - } - - }; - - var Close = { - - extends: IconComponent, - - computed: { - - icon: function() { - return ("close-" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon')); - } - - } - - }; - - var Spinner = { - - extends: IconComponent, - - connected: function() { - var this$1 = this; - - this.svg.then(function (svg) { return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); }, noop); - } - - }; - - function install(UIkit) { - UIkit.icon.add = function (name, svg) { - var obj; - - - var added = isString(name) ? (( obj = {}, obj[name] = svg, obj )) : name; - each(added, function (svg, name) { - icons[name] = svg; - delete parsed[name]; - }); - - if (UIkit._initialized) { - apply(document.body, function (el) { return each(UIkit.getComponents(el), function (cmp) { return cmp.$options.isIcon && cmp.icon in added && cmp.$reset(); } - ); } - ); - } - }; - } - - function getIcon(icon) { - - if (!icons[icon]) { - return null; - } - - if (!parsed[icon]) { - parsed[icon] = $(icons[icon].trim()); - } - - return parsed[icon]; - } - - function applyRtl(icon) { - return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon; - } - - var Img = { - - attrs: true, - - props: { - dataSrc: String, - dataSrcset: Boolean, - dataSizes: Boolean, - sizes: String, - width: Number, - height: Number, - dataWidth: Number, - dataHeight: Number, - offsetTop: String, - offsetLeft: String, - target: String - }, - - data: { - dataSrc: '', - dataSrcset: false, - dataSizes: false, - sizes: false, - width: false, - height: false, - offsetTop: '50vh', - offsetLeft: 0, - target: false - }, - - computed: { - - cacheKey: function(ref) { - var dataSrc = ref.dataSrc; - - return ((this.$name) + "." + dataSrc); - }, - - width: function(ref) { - var width$$1 = ref.width; - var dataWidth = ref.dataWidth; - - return width$$1 || dataWidth; - }, - - height: function(ref) { - var height$$1 = ref.height; - var dataHeight = ref.dataHeight; - - return height$$1 || dataHeight; - }, - - sizes: function(ref) { - var sizes = ref.sizes; - var dataSizes = ref.dataSizes; - - return sizes || dataSizes; - }, - - isImg: function(_, $el) { - return isImg($el); - }, - - target: function(ref) { - var target = ref.target; - - return [this.$el].concat(queryAll(target, this.$el)); - }, - - offsetTop: function(ref) { - var offsetTop = ref.offsetTop; - - return toPx(offsetTop, 'height'); - }, - - offsetLeft: function(ref) { - var offsetLeft = ref.offsetLeft; - - return toPx(offsetLeft, 'width'); - } - - }, - - connected: function() { - - if (storage[this.cacheKey]) { - setSrcAttrs(this.$el, storage[this.cacheKey] || this.dataSrc, this.dataSrcset, this.sizes); - } else if (this.isImg && this.width && this.height) { - setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes)); - } - - }, - - update: [ - - { - - read: function(ref) { - var this$1 = this; - var delay = ref.delay; - var image = ref.image; - - - if (!delay) { - return; - } - - if (image || !this.target.some(function (el) { return isInView(el, this$1.offsetTop, this$1.offsetLeft, true); })) { - - if (!this.isImg && image) { - image.then(function (img) { return img && setSrcAttrs(this$1.$el, currentSrc(img)); }); - } - - return; - } - - return { - image: getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) { - - setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes); - storage[this$1.cacheKey] = currentSrc(img); - return img; - - }, noop) - }; - - }, - - write: function(data$$1) { - - // Give placeholder images time to apply their dimensions - if (!data$$1.delay) { - this.$emit(); - return data$$1.delay = true; - } - - }, - - events: ['scroll', 'load', 'resize'] - - } - - ] - - }; - - function setSrcAttrs(el, src, srcset, sizes) { - - if (isImg(el)) { - src && (el.src = src); - srcset && (el.srcset = srcset); - sizes && (el.sizes = sizes); - } else { - src && css(el, 'backgroundImage', ("url(" + src + ")")); - } - - } - - var urlCache = {}; - var sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g; - function getPlaceholderImage(width$$1, height$$1, sizes, color) { - var assign$$1; - - if ( color === void 0 ) color = 'transparent'; - - if (sizes) { - var matches$$1; - - while ((matches$$1 = sizesRe.exec(sizes))) { - if (!matches$$1[1] || window.matchMedia(matches$$1[1]).matches) { - matches$$1 = evaluateSize(matches$$1[2]); - break; - } - } - - sizesRe.lastIndex = 0; - - ((assign$$1 = Dimensions.ratio({width: width$$1, height: height$$1}, 'width', toPx(matches$$1 || '100vw')), width$$1 = assign$$1.width, height$$1 = assign$$1.height)); - - } - - var key = width$$1 + "." + height$$1 + "." + color; - if (urlCache[key]) { - return urlCache[key]; - } - - var canvas = fragment('<canvas>'); - canvas.width = width$$1; - canvas.height = height$$1; - - var context = canvas.getContext('2d'); - context.fillStyle = color; - context.fillRect(0, 0, width$$1, height$$1); - - return urlCache[key] = canvas.toDataURL('image/png'); - } - - var sizeRe = /\d+(?:\w+|%)/g; - var additionRe = /[+-]?(\d+)/g; - function evaluateSize(size) { - return startsWith(size, 'calc') - ? size - .substring(5, size.length - 1) - .replace(sizeRe, function (size) { return toPx(size); }) - .replace(/ /g, '') - .match(additionRe) - .reduce(function (a, b) { return a + +b; }, 0) - : size; - } - - function toPx(value, property, element) { - if ( property === void 0 ) property = 'width'; - if ( element === void 0 ) element = window; - - return isNumeric(value) - ? +value - : endsWith(value, 'vw') - ? percent(element, 'width', value) - : endsWith(value, 'vh') - ? percent(element, 'height', value) - : endsWith(value, '%') - ? percent(element, property, value) - : toFloat(value); - } - - var dimensions = {height: height, width: width}; - function percent(element, property, value) { - return dimensions[property](element) * toFloat(value) / 100; - } - - function isImg(el) { - return el.tagName === 'IMG'; - } - - function currentSrc(el) { - return el.currentSrc || el.src; - } - - var key = '__test__'; - var storage; - - // workaround for Safari's private browsing mode and accessing sessionStorage in Blink - try { - storage = window.sessionStorage || {}; - storage[key] = 1; - delete storage[key]; - } catch (e) { - storage = {}; - } - - var Leader = { - - mixins: [Class], - - props: { - fill: String, - media: 'media' - }, - - data: { - fill: '', - media: false, - clsWrapper: 'uk-leader-fill', - clsHide: 'uk-leader-hide', - attrFill: 'data-fill' - }, - - computed: { - - fill: function(ref) { - var fill = ref.fill; - - return fill || getCssVar('leader-fill'); - } - - }, - - connected: function() { - var assign$$1; - - (assign$$1 = wrapInner(this.$el, ("<span class=\"" + (this.clsWrapper) + "\">")), this.wrapper = assign$$1[0]); - }, - - disconnected: function() { - unwrap(this.wrapper.childNodes); - }, - - update: [ - - { - - read: function(ref) { - var changed = ref.changed; - var width$$1 = ref.width; - - - var prev = width$$1; - - width$$1 = Math.floor(this.$el.offsetWidth / 2); - - return { - width: width$$1, - changed: changed || prev !== width$$1, - hide: this.media && !window.matchMedia(this.media).matches - }; - }, - - write: function(data$$1) { - - toggleClass(this.wrapper, this.clsHide, data$$1.hide); - - if (data$$1.changed) { - data$$1.changed = false; - attr(this.wrapper, this.attrFill, new Array(data$$1.width).join(this.fill)); - } - - }, - - events: ['load', 'resize'] - - } - ] - - }; - - var Container = { - - props: { - container: Boolean - }, - - data: { - container: true - }, - - computed: { - - container: function(ref) { - var container = ref.container; - - return container === true && this.$container || container && $(container); - } - - } - - }; - - var active$1; - - var Modal = { - - mixins: [Class, Container, Togglable], - - props: { - selPanel: String, - selClose: String, - escClose: Boolean, - bgClose: Boolean, - stack: Boolean - }, - - data: { - cls: 'uk-open', - escClose: true, - bgClose: true, - overlay: true, - stack: false - }, - - computed: { - - panel: function(ref, $el) { - var selPanel = ref.selPanel; - - return $(selPanel, $el); - }, - - transitionElement: function() { - return this.panel; - }, - - transitionDuration: function() { - return toMs(css(this.transitionElement, 'transitionDuration')); - }, - - bgClose: function(ref) { - var bgClose = ref.bgClose; - - return bgClose && this.panel; - } - - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return this.selClose; - }, - - handler: function(e) { - e.preventDefault(); - this.hide(); - } - - }, - - { - - name: 'toggle', - - self: true, - - handler: function(e) { - - if (e.defaultPrevented) { - return; - } - - e.preventDefault(); - this.toggle(); - } - - }, - - { - name: 'beforeshow', - - self: true, - - handler: function(e) { - - var prev = active$1 && active$1 !== this && active$1; - - active$1 = this; - - if (prev) { - if (this.stack) { - this.prev = prev; - } else { - prev.hide().then(this.show); - e.preventDefault(); - return; - } - } - - registerEvents(); - - } - - }, - - { - name: 'beforehide', - - self: true, - - handler: function() { - - active$1 = active$1 && active$1 !== this && active$1 || this.prev; - - if (!active$1) { - deregisterEvents(); - } - - } - - }, - - { - - name: 'show', - - self: true, - - handler: function() { - - if (!hasClass(document.documentElement, this.clsPage)) { - this.scrollbarWidth = width(window) - width(document); - css(document.body, 'overflowY', this.scrollbarWidth && this.overlay ? 'scroll' : ''); - } - - addClass(document.documentElement, this.clsPage); - - } - - }, - - { - - name: 'hidden', - - self: true, - - handler: function() { - var this$1 = this; - - - var found; - var ref = this; - var prev = ref.prev; - - while (prev) { - - if (prev.clsPage === this$1.clsPage) { - found = true; - break; - } - - prev = prev.prev; - - } - - if (!found) { - removeClass(document.documentElement, this.clsPage); - - } - - !this.prev && css(document.body, 'overflowY', ''); - } - - } - - ], - - methods: { - - toggle: function() { - return this.isToggled() ? this.hide() : this.show(); - }, - - show: function() { - - if (this.isToggled()) { - return Promise$1.resolve(); - } - - if (this.container && this.$el.parentNode !== this.container) { - append(this.container, this.$el); - this._callConnected(); - } - - return this.toggleNow(this.$el, true); - }, - - hide: function() { - return this.isToggled() - ? this.toggleNow(this.$el, false) - : Promise$1.resolve(); - }, - - getActive: function() { - return active$1; - }, - - _toggleImmediate: function(el, show) { - var this$1 = this; - - return new Promise$1(function (resolve) { return requestAnimationFrame(function () { - this$1._toggle(el, show); - - if (this$1.transitionDuration) { - once(this$1.transitionElement, 'transitionend', resolve, false, function (e) { return e.target === this$1.transitionElement; }); - } else { - resolve(); - } - }); } - ); - } - - } - - }; - - var events; - - function registerEvents() { - - if (events) { - return; - } - - events = [ - on(document, 'click', function (ref) { - var target = ref.target; - var defaultPrevented = ref.defaultPrevented; - - if (active$1 && active$1.bgClose && !defaultPrevented && (!active$1.overlay || within(target, active$1.$el)) && !within(target, active$1.panel)) { - active$1.hide(); - } - }), - on(document, 'keydown', function (e) { - if (e.keyCode === 27 && active$1 && active$1.escClose) { - e.preventDefault(); - active$1.hide(); - } - }) - ]; - } - - function deregisterEvents() { - events && events.forEach(function (unbind) { return unbind(); }); - events = null; - } - - var Modal$1 = { - - install: install$1, - - mixins: [Modal], - - data: { - clsPage: 'uk-modal-page', - selPanel: '.uk-modal-dialog', - selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full' - }, - - events: [ - - { - name: 'show', - - self: true, - - handler: function() { - - if (hasClass(this.panel, 'uk-margin-auto-vertical')) { - addClass(this.$el, 'uk-flex'); - } else { - css(this.$el, 'display', 'block'); - } - - height(this.$el); // force reflow - } - }, - - { - name: 'hidden', - - self: true, - - handler: function() { - - css(this.$el, 'display', ''); - removeClass(this.$el, 'uk-flex'); - - } - } - - ] - - }; - - function install$1 (UIkit) { - - UIkit.modal.dialog = function (content, options) { - - var dialog = UIkit.modal((" <div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">" + content + "</div> </div> "), options); - - dialog.show(); - - on(dialog.$el, 'hidden', function (ref) { - var target = ref.target; - var currentTarget = ref.currentTarget; - - if (target === currentTarget) { - dialog.$destroy(true); - } - }); - - return dialog; - }; - - UIkit.modal.alert = function (message, options) { - - options = assign({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options); - - return new Promise$1( - function (resolve) { return on(UIkit.modal.dialog((" <div class=\"uk-modal-body\">" + (isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>" + (options.labels.ok) + "</button> </div> "), options).$el, 'hide', resolve); } - ); - }; - - UIkit.modal.confirm = function (message, options) { - - options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options); - - return new Promise$1(function (resolve, reject) { - - var confirm = UIkit.modal.dialog((" <form> <div class=\"uk-modal-body\">" + (isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + (options.labels.cancel) + "</button> <button class=\"uk-button uk-button-primary\" autofocus>" + (options.labels.ok) + "</button> </div> </form> "), options); - - var resolved = false; - - on(confirm.$el, 'submit', 'form', function (e) { - e.preventDefault(); - resolve(); - resolved = true; - confirm.hide(); - }); - on(confirm.$el, 'hide', function () { - if (!resolved) { - reject(); - } - }); - - }); - }; - - UIkit.modal.prompt = function (message, value, options) { - - options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options); - - return new Promise$1(function (resolve) { - - var prompt = UIkit.modal.dialog((" <form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>" + (isString(message) ? message : html(message)) + "</label> <input class=\"uk-input\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + (options.labels.cancel) + "</button> <button class=\"uk-button uk-button-primary\">" + (options.labels.ok) + "</button> </div> </form> "), options), - input = $('input', prompt.$el); - - input.value = value; - - var resolved = false; - - on(prompt.$el, 'submit', 'form', function (e) { - e.preventDefault(); - resolve(input.value); - resolved = true; - prompt.hide(); - }); - on(prompt.$el, 'hide', function () { - if (!resolved) { - resolve(null); - } - }); - - }); - }; - - UIkit.modal.labels = { - ok: 'Ok', - cancel: 'Cancel' - }; - - } - - var Nav = { - - extends: Accordion, - - data: { - targets: '> .uk-parent', - toggle: '> a', - content: '> ul' - } - - }; - - var 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: Boolean, - duration: Number - }, - - data: { - 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(ref, $el) { - var boundary = ref.boundary; - var boundaryAlign = ref.boundaryAlign; - - return (boundary === true || boundaryAlign) ? $el : boundary; - }, - - dropbarAnchor: function(ref, $el) { - var dropbarAnchor = ref.dropbarAnchor; - - return query(dropbarAnchor, $el); - }, - - pos: function(ref) { - var align = ref.align; - - return ("bottom-" + align); - }, - - dropdowns: function(ref, $el) { - var dropdown = ref.dropdown; - var clsDrop = ref.clsDrop; - - return $$((dropdown + " ." + clsDrop), $el); - } - - }, - - beforeConnect: function() { - - var ref = this.$props; - var dropbar = ref.dropbar; - - this.dropbar = dropbar && (query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el) || $('<div></div>')); - - if (this.dropbar) { - - addClass(this.dropbar, 'uk-navbar-dropbar'); - - if (this.dropbarMode === 'slide') { - addClass(this.dropbar, 'uk-navbar-dropbar-slide'); - } - } - - }, - - disconnected: function() { - this.dropbar && remove(this.dropbar); - }, - - update: function() { - var this$1 = this; - - - this.$create( - 'drop', - this.dropdowns.filter(function (el) { return !this$1.getDropdown(el); }), - assign({}, this.$props, {boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset}) - ); - - }, - - events: [ - - { - name: 'mouseover', - - delegate: function() { - return this.dropdown; - }, - - handler: function(ref) { - var current = ref.current; - - var active = this.getActive(); - if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) { - active.hide(false); - } - } - - }, - - { - name: 'mouseleave', - - el: function() { - return this.dropbar; - }, - - handler: function() { - var active = this.getActive(); - - if (active && !matches(this.dropbar, ':hover')) { - active.hide(); - } - } - }, - - { - name: 'beforeshow', - - capture: true, - - filter: function() { - return this.dropbar; - }, - - handler: function() { - - if (!this.dropbar.parentNode) { - after(this.dropbarAnchor || this.$el, this.dropbar); - } - - } - }, - - { - name: 'show', - - capture: true, - - filter: function() { - return this.dropbar; - }, - - handler: function(_, drop) { - - var $el = drop.$el; - var dir = drop.dir; - - this.clsDrop && addClass($el, ((this.clsDrop) + "-dropbar")); - - if (dir === 'bottom') { - this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el); - } - } - }, - - { - name: 'beforehide', - - filter: function() { - return this.dropbar; - }, - - handler: function(e, ref) { - var $el = ref.$el; - - - var active = this.getActive(); - - if (matches(this.dropbar, ':hover') && active && active.$el === $el) { - e.preventDefault(); - } - } - }, - - { - name: 'hide', - - filter: function() { - return this.dropbar; - }, - - handler: function(_, ref) { - var $el = ref.$el; - - - var active = this.getActive(); - - if (!active || active && active.$el === $el) { - this.transitionTo(0); - } - } - } - - ], - - methods: { - - getActive: function() { - var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { return drop.isActive(); }); - var active = ref[0]; - return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active; - }, - - transitionTo: function(newHeight, el) { - - var ref = this; - var dropbar = ref.dropbar; - var oldHeight = isVisible(dropbar) ? height(dropbar) : 0; - - el = oldHeight < newHeight && el; - - css(el, 'clip', ("rect(0," + (el.offsetWidth) + "px," + oldHeight + "px,0)")); - - height(dropbar, oldHeight); - - Transition.cancel([el, dropbar]); - return Promise.all([ - Transition.start(dropbar, {height: newHeight}, this.duration), - Transition.start(el, {clip: ("rect(0," + (el.offsetWidth) + "px," + newHeight + "px,0)")}, this.duration) - ]) - .catch(noop) - .then(function () { return css(el, {clip: ''}); }); - }, - - getDropdown: function(el) { - return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown'); - } - - } - - }; - - var scroll; - - var Offcanvas = { - - mixins: [Modal], - - args: 'mode', - - props: { - content: String, - mode: String, - flip: Boolean, - overlay: Boolean - }, - - data: { - content: '.uk-offcanvas-content', - mode: 'slide', - flip: false, - overlay: false, - clsPage: 'uk-offcanvas-page', - clsContainer: 'uk-offcanvas-container', - selPanel: '.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(ref) { - var content = ref.content; - - return $(content) || document.body; - }, - - clsFlip: function(ref) { - var flip = ref.flip; - var clsFlip = ref.clsFlip; - - return flip ? clsFlip : ''; - }, - - clsOverlay: function(ref) { - var overlay = ref.overlay; - var clsOverlay = ref.clsOverlay; - - return overlay ? clsOverlay : ''; - }, - - clsMode: function(ref) { - var mode = ref.mode; - var clsMode = ref.clsMode; - - return (clsMode + "-" + mode); - }, - - clsSidebarAnimation: function(ref) { - var mode = ref.mode; - var clsSidebarAnimation = ref.clsSidebarAnimation; - - return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation; - }, - - clsContentAnimation: function(ref) { - var mode = ref.mode; - var clsContentAnimation = ref.clsContentAnimation; - - return mode !== 'push' && mode !== 'reveal' ? '' : clsContentAnimation; - }, - - transitionElement: function(ref) { - var mode = ref.mode; - - return mode === 'reveal' ? this.panel.parentNode : this.panel; - } - - }, - - update: { - - write: function() { - - if (this.getActive() === this) { - - if (this.overlay || this.clsContentAnimation) { - width(this.content, width(window) - this.scrollbarWidth); - } - - if (this.overlay) { - height(this.content, height(window)); - if (scroll) { - this.content.scrollTop = scroll.y; - } - } - - } - - }, - - events: ['resize'] - - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return 'a[href^="#"]'; - }, - - handler: function(ref) { - var current = ref.current; - - if (current.hash && $(current.hash, this.content)) { - scroll = null; - this.hide(); - } - } - - }, - - { - - name: 'beforescroll', - - filter: function() { - return this.overlay; - }, - - handler: function(e, scroll, target) { - if (scroll && target && this.isToggled() && $(target, this.content)) { - once(this.$el, 'hidden', function () { return scroll.scrollTo(target); }); - e.preventDefault(); - } - } - - }, - - { - name: 'show', - - self: true, - - handler: function() { - - scroll = scroll || {x: window.pageXOffset, y: window.pageYOffset}; - - if (this.mode === 'reveal' && !hasClass(this.panel, this.clsMode)) { - wrapAll(this.panel, '<div>'); - addClass(this.panel.parentNode, this.clsMode); - } - - css(document.documentElement, 'overflowY', (!this.clsContentAnimation || this.flip) && this.scrollbarWidth && this.overlay ? 'scroll' : ''); - addClass(document.body, this.clsContainer, this.clsFlip, this.clsOverlay); - height(document.body); // force reflow - addClass(this.content, this.clsContentAnimation); - addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : ''); - addClass(this.$el, this.clsOverlay); - css(this.$el, 'display', 'block'); - height(this.$el); // force reflow - - } - }, - - { - name: 'hide', - - self: true, - - handler: function() { - removeClass(this.content, this.clsContentAnimation); - - var active = this.getActive(); - if (this.mode === 'none' || active && active !== this && active !== this.prev) { - trigger(this.panel, 'transitionend'); - } - } - }, - - { - name: 'hidden', - - self: true, - - handler: function() { - - if (this.mode === 'reveal') { - unwrap(this.panel); - } - - if (!this.overlay) { - scroll = {x: window.pageXOffset, y: window.pageYOffset}; - } else if (!scroll) { - var ref = this.content; - var x = ref.scrollLeft; - var y = ref.scrollTop; - scroll = {x: x, y: y}; - } - - removeClass(this.panel, this.clsSidebarAnimation, this.clsMode); - removeClass(this.$el, this.clsOverlay); - css(this.$el, 'display', ''); - removeClass(document.body, this.clsContainer, this.clsFlip, this.clsOverlay); - document.body.scrollTop = scroll.y; - - css(document.documentElement, 'overflowY', ''); - - width(this.content, ''); - height(this.content, ''); - - window.scroll(scroll.x, scroll.y); - - scroll = null; - - } - }, - - { - name: 'swipeLeft swipeRight', - - handler: function(e) { - - if (this.isToggled() && isTouch(e) && (e.type === 'swipeLeft' && !this.flip || e.type === 'swipeRight' && this.flip)) { - this.hide(); - } - - } - } - - ] - - }; - - var OverflowAuto = { - - mixins: [Class], - - computed: { - - modal: function(_, $el) { - return closest($el, '.uk-modal'); - }, - - panel: function(_, $el) { - return closest($el, '.uk-modal-dialog'); - } - - }, - - connected: function() { - css(this.$el, 'minHeight', 150); - }, - - update: { - - write: function() { - - if (!this.panel || !this.modal) { - return; - } - - var current = css(this.$el, 'maxHeight'); - - css(css(this.$el, 'maxHeight', 150), 'maxHeight', Math.max(150, 150 + height(this.modal) - this.panel.offsetHeight)); - if (current !== css(this.$el, 'maxHeight')) { - trigger(this.$el, 'resize'); - } - }, - - events: ['load', 'resize'] - - } - - }; - - var Responsive = { - - props: ['width', 'height'], - - connected: function() { - addClass(this.$el, 'uk-responsive-width'); - }, - - update: { - - read: function() { - return isVisible(this.$el) && this.width && this.height - ? {width: width(this.$el.parentNode), height: this.height} - : false; - }, - - write: function(dim) { - height(this.$el, Dimensions.contain({height: this.height, width: this.width}, dim).height); - }, - - events: ['load', 'resize'] - - } - - }; - - var Scroll = { - - props: { - duration: Number, - offset: Number - }, - - data: { - duration: 1000, - offset: 0 - }, - - methods: { - - scrollTo: function(el) { - var this$1 = this; - - - el = el && $(el) || document.body; - - var docHeight = height(document); - var winHeight = height(window); - - var target = offset(el).top - this.offset; - if (target + winHeight > docHeight) { - target = docHeight - winHeight; - } - - if (!trigger(this.$el, 'beforescroll', [this, el])) { - return; - } - - var start = Date.now(); - var startY = window.pageYOffset; - var step = function () { - - var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration)); - - window.scroll(window.pageXOffset, currentY); - - // scroll more if we have not reached our destination - if (currentY !== target) { - requestAnimationFrame(step); - } else { - trigger(this$1.$el, 'scrolled', [this$1, el]); - } - - }; - - step(); - - } - - }, - - events: { - - click: function(e) { - - if (e.defaultPrevented) { - return; - } - - e.preventDefault(); - this.scrollTo(escape(this.$el.hash).substr(1)); - } - - } - - }; - - function ease(k) { - return 0.5 * (1 - Math.cos(Math.PI * k)); - } - - var Scrollspy = { - - args: 'cls', - - props: { - cls: 'list', - target: String, - hidden: Boolean, - offsetTop: Number, - offsetLeft: Number, - repeat: Boolean, - delay: Number - }, - - data: function () { return ({ - cls: [], - target: false, - hidden: true, - offsetTop: 0, - offsetLeft: 0, - repeat: false, - delay: 0, - inViewClass: 'uk-scrollspy-inview' - }); }, - - computed: { - - elements: function(ref, $el) { - var target = ref.target; - - return target ? $$(target, $el) : [$el]; - } - - }, - - update: [ - - { - - write: function() { - if (this.hidden) { - css(filter(this.elements, (":not(." + (this.inViewClass) + ")")), 'visibility', 'hidden'); - } - } - - }, - - { - - read: function(els) { - var this$1 = this; - - - if (!els.delay) { - return; - } - - this.elements.forEach(function (el, i) { - - var elData = els[i]; - - if (!elData || elData.el !== el) { - var cls = data(el, 'uk-scrollspy-class'); - elData = {el: el, toggles: cls && cls.split(',') || this$1.cls}; - } - - elData.show = isInView(el, this$1.offsetTop, this$1.offsetLeft); - els[i] = elData; - - }); - }, - - write: function(els) { - var this$1 = this; - - - // Let child components be applied at least once first - if (!els.delay) { - this.$emit(); - return els.delay = true; - } - - var index$$1 = this.elements.length === 1 ? 1 : 0; - - this.elements.forEach(function (el, i) { - - var elData = els[i]; - var cls = elData.toggles[i] || elData.toggles[0]; - - if (elData.show && !elData.inview && !elData.timer) { - - var show = function () { - css(el, 'visibility', ''); - addClass(el, this$1.inViewClass); - toggleClass(el, cls); - - trigger(el, 'inview'); - - this$1.$update(el); - - elData.inview = true; - delete elData.timer; - }; - - if (this$1.delay && index$$1) { - elData.timer = setTimeout(show, this$1.delay * index$$1); - } else { - show(); - } - - index$$1++; - - } else if (!elData.show && elData.inview && this$1.repeat) { - - if (elData.timer) { - clearTimeout(elData.timer); - delete elData.timer; - } - - css(el, 'visibility', this$1.hidden ? 'hidden' : ''); - removeClass(el, this$1.inViewClass); - toggleClass(el, cls); - - trigger(el, 'outview'); - - this$1.$update(el); - - elData.inview = false; - - } - - - }); - - }, - - events: ['scroll', 'load', 'resize'] - - } - - ] - - }; - - var ScrollspyNav = { - - props: { - cls: String, - closest: String, - scroll: Boolean, - overflow: Boolean, - offset: Number - }, - - data: { - cls: 'uk-active', - closest: false, - scroll: false, - overflow: true, - offset: 0 - }, - - computed: { - - links: function(_, $el) { - return $$('a[href^="#"]', $el).filter(function (el) { return el.hash; }); - }, - - elements: function() { - return this.closest ? closest(this.links, this.closest) : this.links; - }, - - targets: function() { - return $$(this.links.map(function (el) { return el.hash; }).join(',')); - } - - }, - - update: [ - - { - - read: function() { - if (this.scroll) { - this.$create('scroll', this.links, {offset: this.offset || 0}); - } - } - - }, - - { - - read: function(data$$1) { - var this$1 = this; - - - var scroll = window.pageYOffset + this.offset + 1; - var max = height(document) - height(window) + this.offset; - - data$$1.active = false; - - this.targets.every(function (el, i) { - - var ref = offset(el); - var top = ref.top; - var last = i + 1 === this$1.targets.length; - - if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) { - return false; - } - - if (!last && offset(this$1.targets[i + 1]).top <= scroll) { - return true; - } - - if (scroll >= max) { - for (var j = this$1.targets.length - 1; j > i; j--) { - if (isInView(this$1.targets[j])) { - el = this$1.targets[j]; - break; - } - } - } - - return !(data$$1.active = $(filter(this$1.links, ("[href=\"#" + (el.id) + "\"]")))); - - }); - - }, - - write: function(ref) { - var active = ref.active; - - - this.links.forEach(function (el) { return el.blur(); }); - removeClass(this.elements, this.cls); - - if (active) { - trigger(this.$el, 'active', [active, addClass(this.closest ? closest(active, this.closest) : active, this.cls)]); - } - - }, - - events: ['scroll', 'load', 'resize'] - - } - - ] - - }; - - var Sticky = { - - mixins: [Class], - - attrs: true, - - props: { - top: null, - bottom: Boolean, - offset: Number, - animation: String, - clsActive: String, - clsInactive: String, - clsFixed: String, - clsBelow: String, - selTarget: String, - widthElement: Boolean, - showOnUp: Boolean, - media: 'media', - targetOffset: Number - }, - - data: { - top: 0, - bottom: false, - offset: 0, - animation: '', - clsActive: 'uk-active', - clsInactive: '', - clsFixed: 'uk-sticky-fixed', - clsBelow: 'uk-sticky-below', - selTarget: '', - widthElement: false, - showOnUp: false, - media: false, - targetOffset: false - }, - - computed: { - - selTarget: function(ref, $el) { - var selTarget = ref.selTarget; - - return selTarget && $(selTarget, $el) || $el; - }, - - widthElement: function(ref, $el) { - var widthElement = ref.widthElement; - - return query(widthElement, $el) || this.placeholder; - } - - }, - - connected: function() { - - this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class="uk-sticky-placeholder"></div>'); - - if (!this.isActive) { - this.hide(); - } - }, - - disconnected: function() { - - if (this.isActive) { - this.isActive = false; - this.hide(); - removeClass(this.selTarget, this.clsInactive); - } - - remove(this.placeholder); - this.placeholder = null; - this.widthElement = null; - }, - - events: [ - - { - name: 'active', - - self: true, - - handler: function() { - replaceClass(this.selTarget, this.clsInactive, this.clsActive); - } - - }, - - { - name: 'inactive', - - self: true, - - handler: function() { - replaceClass(this.selTarget, this.clsActive, this.clsInactive); - } - - }, - - { - - name: 'load hashchange popstate', - - el: window, - - handler: function() { - var this$1 = this; - - - if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) { - return; - } - - var target = $(location.hash); - - if (target) { - fastdom.read(function () { - - var ref = offset(target); - var top = ref.top; - var elTop = offset(this$1.$el).top; - var elHeight = this$1.$el.offsetHeight; - - if (this$1.isActive && elTop + elHeight >= top && elTop <= top + target.offsetHeight) { - window.scroll(0, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset); - } - - }); - } - - } - - } - - ], - - update: [ - - { - - write: function() { - - var ref = this; - var placeholder = ref.placeholder; - var offsetHeight = ref.$el.offsetHeight; - - css(placeholder, assign( - {height: css(this.$el, 'position') !== 'absolute' ? offsetHeight : ''}, - css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight']) - )); - - if (!within(placeholder, document)) { - after(this.$el, placeholder); - attr(placeholder, 'hidden', ''); - } - - this.topOffset = offset(this.isActive ? placeholder : this.$el).top; - this.bottomOffset = this.topOffset + offsetHeight; - - var bottom = parseProp('bottom', this); - - this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset; - this.bottom = bottom && bottom - offsetHeight; - this.inactive = this.media && !window.matchMedia(this.media).matches; - - }, - - events: ['load', 'resize'] - - }, - - { - - read: function(_, ref) { - var scrollY = ref.scrollY; if ( scrollY === void 0 ) scrollY = window.pageYOffset; - - - this.width = (isVisible(this.widthElement) ? this.widthElement : this.$el).offsetWidth; - - return { - scroll: this.scroll = scrollY, - visible: isVisible(this.$el) - }; - }, - - write: function(ref, ref$1) { - var this$1 = this; - var visible = ref.visible; - var scroll = ref.scroll; - if ( ref$1 === void 0 ) ref$1 = {}; - var dir = ref$1.dir; - - - if (scroll < 0 || !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 && scroll > this.topOffset) { - Animation.cancel(this.$el); - Animation.out(this.$el, this.animation).then(function () { return this$1.hide(); }, noop); - } else { - this.hide(); - } - - } else if (this.isActive) { - - this.update(); - - } else if (this.animation) { - - Animation.cancel(this.$el); - this.show(); - Animation.in(this.$el, this.animation).catch(noop); - - } else { - this.show(); - } - - }, - - events: ['load', 'resize', 'scroll'] - - } ], - - methods: { - - show: function() { - - this.isActive = true; - this.update(); - attr(this.placeholder, 'hidden', null); - - }, - - hide: function() { - - if (!this.isActive || hasClass(this.selTarget, this.clsActive)) { - trigger(this.$el, 'inactive'); - } - - removeClass(this.$el, this.clsFixed, this.clsBelow); - css(this.$el, {position: '', top: '', width: ''}); - attr(this.placeholder, 'hidden', ''); - - }, - - update: function() { - - var active = this.top !== 0 || this.scroll > this.top; - var top = Math.max(0, this.offset); - - if (this.bottom && this.scroll > this.bottom - this.offset) { - top = this.bottom - this.scroll; - } - - css(this.$el, { - position: 'fixed', - top: (top + "px"), - width: this.width - }); - - if (hasClass(this.selTarget, this.clsActive)) { - - if (!active) { - trigger(this.$el, 'inactive'); - } - - } else if (active) { - trigger(this.$el, 'active'); - } - - toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset); - addClass(this.$el, this.clsFixed); - - } - - } - - }; - - function parseProp(prop, ref) { - var $props = ref.$props; - var $el = ref.$el; - var propOffset = ref[(prop + "Offset")]; - - - var value = $props[prop]; - - if (!value) { - return; - } - - if (isNumeric(value)) { - - return propOffset + toFloat(value); - - } else if (isString(value) && value.match(/^-?\d+vh$/)) { - - return height(window) * toFloat(value) / 100; - - } else { - - var el = value === true ? $el.parentNode : query(value, $el); - - if (el) { - return offset(el).top + el.offsetHeight; - } - - } - } - - var Switcher = { - - mixins: [Togglable], - - args: 'connect', - - props: { - connect: String, - toggle: String, - active: Number, - swiping: Boolean - }, - - data: { - connect: '~.uk-switcher', - toggle: '> *', - active: 0, - swiping: true, - cls: 'uk-active', - clsContainer: 'uk-switcher', - attrItem: 'uk-switcher-item', - queued: true - }, - - computed: { - - connects: function(ref, $el) { - var connect = ref.connect; - - return queryAll(connect, $el); - }, - - toggles: function(ref, $el) { - var toggle = ref.toggle; - - return $$(toggle, $el); - } - - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return ((this.toggle) + ":not(.uk-disabled)"); - }, - - handler: function(e) { - e.preventDefault(); - this.show(e.current); - } - - }, - - { - name: 'click', - - el: function() { - return this.connects; - }, - - delegate: function() { - return ("[" + (this.attrItem) + "],[data-" + (this.attrItem) + "]"); - }, - - handler: function(e) { - e.preventDefault(); - this.show(data(e.current, this.attrItem)); - } - }, - - { - name: 'swipeRight swipeLeft', - - filter: function() { - return this.swiping; - }, - - el: function() { - return this.connects; - }, - - handler: function(e) { - if (!isTouch(e)) { - return; - } - - e.preventDefault(); - if (!window.getSelection().toString()) { - this.show(e.type === 'swipeLeft' ? 'next' : 'previous'); - } - } - } - - ], - - update: function() { - var this$1 = this; - - - this.connects.forEach(function (list) { return this$1.updateAria(list.children); }); - this.show(filter(this.toggles, ("." + (this.cls)))[0] || this.toggles[this.active] || this.toggles[0]); - - }, - - methods: { - - show: function(item) { - var this$1 = this; - - - var ref = this.toggles; - var length = ref.length; - var prev = !!this.connects.length && index(filter(this.connects[0].children, ("." + (this.cls)))[0]); - var hasPrev = prev >= 0; - var dir = item === 'previous' ? -1 : 1; - - var toggle, next = getIndex(item, this.toggles, prev); - - for (var i = 0; i < length; i++, next = (next + dir + length) % length) { - if (!matches(this$1.toggles[next], '.uk-disabled, [disabled]')) { - toggle = this$1.toggles[next]; - break; - } - } - - if (!toggle || prev >= 0 && hasClass(toggle, this.cls) || prev === next) { - return; - } - - removeClass(this.toggles, this.cls); - attr(this.toggles, 'aria-expanded', false); - addClass(toggle, this.cls); - attr(toggle, 'aria-expanded', true); - - this.connects.forEach(function (list) { - if (!hasPrev) { - this$1.toggleNow(list.children[next]); - } else { - this$1.toggleElement([list.children[prev], list.children[next]]); - } - }); - - } - - } - - }; - - var Tab = { - - mixins: [Class], - - extends: Switcher, - - props: { - media: 'media' - }, - - data: { - media: 960, - attrItem: 'uk-tab-item' - }, - - connected: function() { - - var cls = hasClass(this.$el, 'uk-tab-left') - ? 'uk-tab-left' - : hasClass(this.$el, 'uk-tab-right') - ? 'uk-tab-right' - : false; - - if (cls) { - this.$create('toggle', this.$el, {cls: cls, mode: 'media', media: this.media}); - } - } - - }; - - var Toggle = { - - mixins: [Togglable], - - args: 'target', - - props: { - href: String, - target: null, - mode: 'list', - media: 'media' - }, - - data: { - href: false, - target: false, - mode: 'click', - queued: true, - media: false - }, - - computed: { - - target: function(ref, $el) { - var href = ref.href; - var target = ref.target; - - target = queryAll(target || href, $el); - return target.length && target || [$el]; - } - - }, - - events: [ - - { - - name: (pointerEnter + " " + pointerLeave), - - filter: function() { - return includes(this.mode, 'hover'); - }, - - handler: function(e) { - if (!isTouch(e)) { - this.toggle(("toggle" + (e.type === pointerEnter ? 'show' : 'hide'))); - } - } - - }, - - { - - name: 'click', - - filter: function() { - return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover'); - }, - - handler: function(e) { - - if (!isTouch(e) && !includes(this.mode, 'click')) { - return; - } - - // TODO better isToggled handling - var link; - if (closest(e.target, 'a[href="#"], button') - || (link = closest(e.target, 'a[href]')) && ( - this.cls - || !isVisible(this.target) - || link.hash && matches(this.target, link.hash) - ) - ) { - once(document, 'click', function (e) { return e.preventDefault(); }); - } - - this.toggle(); - } - - } - ], - - update: { - - write: function() { - - if (!includes(this.mode, '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(type) { - if (trigger(this.target, type || 'toggle', [this])) { - this.toggleElement(this.target); - } - } - - } - - }; - - function core (UIkit) { - - // core components - UIkit.component('accordion', Accordion); - UIkit.component('alert', Alert); - UIkit.component('cover', Cover); - UIkit.component('drop', Drop); - UIkit.component('dropdown', Dropdown); - UIkit.component('formCustom', FormCustom); - UIkit.component('gif', Gif); - UIkit.component('grid', Grid); - UIkit.component('heightMatch', HeightMatch); - UIkit.component('heightViewport', HeightViewport); - UIkit.component('icon', Icon); - UIkit.component('img', Img); - UIkit.component('leader', Leader); - UIkit.component('margin', Margin); - UIkit.component('modal', Modal$1); - UIkit.component('nav', Nav); - UIkit.component('navbar', Navbar); - UIkit.component('offcanvas', Offcanvas); - UIkit.component('overflowAuto', OverflowAuto); - UIkit.component('responsive', Responsive); - UIkit.component('scroll', Scroll); - UIkit.component('scrollspy', Scrollspy); - UIkit.component('scrollspyNav', ScrollspyNav); - UIkit.component('sticky', Sticky); - UIkit.component('svg', SVG); - UIkit.component('switcher', Switcher); - UIkit.component('tab', Tab); - UIkit.component('toggle', Toggle); - UIkit.component('video', Video); - - // Icon components - UIkit.component('close', Close); - UIkit.component('marker', IconComponent); - UIkit.component('navbarToggleIcon', IconComponent); - UIkit.component('overlayIcon', IconComponent); - UIkit.component('paginationNext', IconComponent); - UIkit.component('paginationPrevious', IconComponent); - UIkit.component('searchIcon', Search); - UIkit.component('slidenavNext', Slidenav); - UIkit.component('slidenavPrevious', Slidenav); - UIkit.component('spinner', Spinner); - UIkit.component('totop', IconComponent); - - // core functionality - UIkit.use(Core); - - } - - UIkit.version = '3.0.0-rc.5'; - - core(UIkit); - - var Countdown = { - - mixins: [Class], - - attrs: true, - - props: { - date: String, - clsWrapper: String - }, - - data: { - date: '', - clsWrapper: '.uk-countdown-%unit%' - }, - - computed: { - - date: function(ref) { - var date = ref.date; - - return Date.parse(date); - }, - - days: function(ref, $el) { - var clsWrapper = ref.clsWrapper; - - return $(clsWrapper.replace('%unit%', 'days'), $el); - }, - - hours: function(ref, $el) { - var clsWrapper = ref.clsWrapper; - - return $(clsWrapper.replace('%unit%', 'hours'), $el); - }, - - minutes: function(ref, $el) { - var clsWrapper = ref.clsWrapper; - - return $(clsWrapper.replace('%unit%', 'minutes'), $el); - }, - - seconds: function(ref, $el) { - var clsWrapper = ref.clsWrapper; - - return $(clsWrapper.replace('%unit%', 'seconds'), $el); - }, - - units: function() { - var this$1 = this; - - return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { return this$1[unit]; }); - } - - }, - - connected: function() { - this.start(); - }, - - disconnected: function() { - var this$1 = this; - - this.stop(); - this.units.forEach(function (unit) { return empty(this$1[unit]); }); - }, - - events: [ - - { - - name: 'visibilitychange', - - el: document, - - handler: function() { - if (document.hidden) { - this.stop(); - } else { - this.start(); - } - } - - } - - ], - - update: { - - write: function() { - var this$1 = this; - - - var timespan = getTimeSpan(this.date); - - if (timespan.total <= 0) { - - this.stop(); - - timespan.days - = timespan.hours - = timespan.minutes - = timespan.seconds - = 0; - } - - this.units.forEach(function (unit) { - - var digits = String(Math.floor(timespan[unit])); - - digits = digits.length < 2 ? ("0" + digits) : digits; - - var el = this$1[unit]; - if (el.textContent !== digits) { - digits = digits.split(''); - - if (digits.length !== el.children.length) { - html(el, digits.map(function () { return '<span></span>'; }).join('')); - } - - digits.forEach(function (digit, i) { return el.children[i].textContent = digit; }); - } - - }); - - } - - }, - - methods: { - - start: function() { - var this$1 = this; - - - this.stop(); - - if (this.date && this.units.length) { - this.$emit(); - this.timer = setInterval(function () { return this$1.$emit(); }, 1000); - } - - }, - - stop: function() { - - if (this.timer) { - clearInterval(this.timer); - this.timer = null; - } - - } - - } - - }; - - function getTimeSpan(date) { - - var total = date - Date.now(); - - return { - total: total, - seconds: total / 1000 % 60, - minutes: total / 1000 / 60 % 60, - hours: total / 1000 / 60 / 60 % 24, - days: total / 1000 / 60 / 60 / 24 - }; - } - - var targetClass = 'uk-animation-target'; - - var Animate = { - - props: { - animation: Number - }, - - data: { - animation: 150 - }, - - computed: { - - target: function() { - return this.$el; - } - - }, - - methods: { - - animate: function(action) { - var this$1 = this; - - - addStyle(); - - var children = toNodes(this.target.children); - var propsFrom = children.map(function (el) { return getProps(el, true); }); - - var oldHeight = height(this.target); - var oldScrollY = window.pageYOffset; - - action(); - - Transition.cancel(this.target); - children.forEach(Transition.cancel); - - reset(this.target); - this.$update(this.target); - fastdom.flush(); - - var newHeight = height(this.target); - - children = children.concat(toNodes(this.target.children).filter(function (el) { return !includes(children, el); })); - - var propsTo = children.map(function (el, i) { return el.parentNode && i in propsFrom - ? propsFrom[i] - ? isVisible(el) - ? getPositionWithMargin(el) - : {opacity: 0} - : {opacity: isVisible(el) ? 1 : 0} - : false; } - ); - - propsFrom = propsTo.map(function (props, i) { - var from = children[i].parentNode === this$1.target - ? propsFrom[i] || getProps(children[i]) - : false; - - if (from) { - if (!props) { - delete from.opacity; - } else if (!('opacity' in props)) { - var opacity = from.opacity; - - if (opacity % 1) { - props.opacity = 1; - } else { - delete from.opacity; - } - } - } - - return from; - }); - - addClass(this.target, targetClass); - children.forEach(function (el, i) { return propsFrom[i] && css(el, propsFrom[i]); }); - css(this.target, 'minHeight', oldHeight); - window.scroll(window.pageXOffset, oldScrollY); - - return Promise$1.all(children.map(function (el, i) { return propsFrom[i] && propsTo[i] - ? Transition.start(el, propsTo[i], this$1.animation, 'ease') - : Promise$1.resolve(); } - ).concat(Transition.start(this.target, {minHeight: newHeight}, this.animation, 'ease'))).then(function () { - children.forEach(function (el, i) { return css(el, {display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: ''}); }); - reset(this$1.target); - this$1.$update(this$1.target); - }, noop); - - } - } - }; - - function getProps(el, opacity) { - - var zIndex = css(el, 'zIndex'); - - return isVisible(el) - ? assign({ - display: '', - opacity: opacity ? css(el, 'opacity') : '0', - pointerEvents: 'none', - position: 'absolute', - zIndex: zIndex === 'auto' ? index(el) : zIndex - }, getPositionWithMargin(el)) - : false; - } - - function reset(el) { - css(el.children, { - height: '', - left: '', - opacity: '', - pointerEvents: '', - position: '', - top: '', - width: '' - }); - removeClass(el, targetClass); - css(el, 'minHeight', ''); - } - - function getPositionWithMargin(el) { - var ref = el.getBoundingClientRect(); - var height$$1 = ref.height; - var width$$1 = ref.width; - var ref$1 = position(el); - var top = ref$1.top; - var left = ref$1.left; - top += toFloat(css(el, 'marginTop')); - - return {top: top, left: left, height: height$$1, width: width$$1}; - } - - var style$1; - - function addStyle() { - if (!style$1) { - style$1 = append(document.head, '<style>').sheet; - style$1.insertRule( - ("." + targetClass + " > * {\n margin-top: 0 !important;\n transform: none !important;\n }") - ); - } - } - - var Filter = { - - mixins: [Animate], - - args: 'target', - - props: { - target: Boolean, - selActive: Boolean - }, - - data: { - target: null, - selActive: false, - attrItem: 'uk-filter-control', - cls: 'uk-active', - animation: 250 - }, - - computed: { - - toggles: function(ref, $el) { - var attrItem = ref.attrItem; - - return $$(("[" + (this.attrItem) + "],[data-" + (this.attrItem) + "]"), $el); - }, - - target: function(ref, $el) { - var target = ref.target; - - return $(target, $el); - } - - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return ("[" + (this.attrItem) + "],[data-" + (this.attrItem) + "]"); - }, - - handler: function(e) { - - e.preventDefault(); - this.apply(e.current); - - } - - } - - ], - - connected: function() { - var this$1 = this; - - - if (this.selActive === false) { - return; - } - - var actives = $$(this.selActive, this.$el); - this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, includes(actives, el)); }); - }, - - update: function(data$$1) { - - var toggles = data$$1.toggles; - var children = data$$1.children; - if (isEqualList(toggles, this.toggles, false) && isEqualList(children, this.target.children, false)) { - return; - } - - data$$1.toggles = this.toggles; - data$$1.children = this.target.children; - - this.setState(this.getState(), false); - - }, - - methods: { - - apply: function(el) { - this.setState(mergeState(el, this.attrItem, this.getState())); - }, - - getState: function() { - var this$1 = this; - - return this.toggles - .filter(function (item) { return hasClass(item, this$1.cls); }) - .reduce(function (state, el) { return mergeState(el, this$1.attrItem, state); }, {filter: {'': ''}, sort: []}); - }, - - setState: function(state, animate$$1) { - var this$1 = this; - if ( animate$$1 === void 0 ) animate$$1 = true; - - - state = assign({filter: {'': ''}, sort: []}, state); - - trigger(this.$el, 'beforeFilter', [this, state]); - - var children = toNodes(this.target.children); - - this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, matchFilter(el, this$1.attrItem, state)); }); - - var apply$$1 = function () { - - var selector = getSelector(state); - - children.forEach(function (el) { return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); }); - - var ref = state.sort; - var sort = ref[0]; - var order = ref[1]; - - if (sort) { - var sorted = sortItems(children, sort, order); - if (!isEqualList(sorted, children)) { - sorted.forEach(function (el) { return append(this$1.target, el); }); - } - } - - }; - - if (animate$$1) { - this.animate(apply$$1).then(function () { return trigger(this$1.$el, 'afterFilter', [this$1]); }); - } else { - apply$$1(); - trigger(this.$el, 'afterFilter', [this]); - } - - } - - } - - }; - - function getFilter(el, attr$$1) { - return parseOptions(data(el, attr$$1), ['filter']); - } - - function mergeState(el, attr$$1, state) { - - toNodes(el).forEach(function (el) { - var filterBy = getFilter(el, attr$$1); - var filter$$1 = filterBy.filter; - var group = filterBy.group; - var sort = filterBy.sort; - var order = filterBy.order; if ( order === void 0 ) order = 'asc'; - - if (filter$$1 || isUndefined(sort)) { - - if (group) { - delete state.filter['']; - state.filter[group] = filter$$1; - } else { - state.filter = {'': filter$$1}; - } - - } - - if (!isUndefined(sort)) { - state.sort = [sort, order]; - } - }); - - return state; - } - - function matchFilter(el, attr$$1, ref) { - var stateFilter = ref.filter; - var ref_sort = ref.sort; - var stateSort = ref_sort[0]; - var stateOrder = ref_sort[1]; - - var ref$1 = getFilter(el, attr$$1); - var filter$$1 = ref$1.filter; - var group = ref$1.group; if ( group === void 0 ) group = ''; - var sort = ref$1.sort; - var order = ref$1.order; if ( order === void 0 ) order = 'asc'; - return Boolean( - (filter$$1 || isUndefined(sort)) && group in stateFilter && (filter$$1 === stateFilter[group] || isUndefined(filter$$1) && !stateFilter[group]) - || stateSort && sort && stateSort === sort && stateOrder === order - ); - } - - function isEqualList(listA, listB, strict) { - if ( strict === void 0 ) strict = true; - - - listA = toNodes(listA); - listB = toNodes(listB); - - return listA.length === listB.length - && listA.every(function (el, i) { return strict ? el === listB[i] : ~listB.indexOf(el); }); - } - - function getSelector(ref) { - var filter$$1 = ref.filter; - - var selector = ''; - each(filter$$1, function (value) { return selector += value || ''; }); - return selector; - } - - function sortItems(nodes, sort, order) { - return toNodes(nodes).sort(function (a, b) { return data(a, sort).localeCompare(data(b, sort)) * (order === 'asc' || -1); }); - } - - var Animations = { - - slide: { - - show: function(dir) { - return [ - {transform: translate(dir * -100)}, - {transform: translate()} - ]; - }, - - percent: function(current) { - return translated(current); - }, - - translate: function(percent, dir) { - return [ - {transform: translate(dir * -100 * percent)}, - {transform: translate(dir * 100 * (1 - percent))} - ]; - } - - } - - }; - - function translated(el) { - return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0; - } - - function translate(value, unit) { - if ( value === void 0 ) value = 0; - if ( unit === void 0 ) unit = '%'; - - return ("translateX(" + value + (value ? unit : '') + ")"); // currently not translate3d to support IE, translate3d within translate3d does not work while transitioning - } - - function scale3d(value) { - return ("scale3d(" + value + ", " + value + ", 1)"); - } - - var Animations$1 = assign({}, Animations, { - - fade: { - - show: function() { - return [ - {opacity: 0}, - {opacity: 1} - ]; - }, - - percent: function(current) { - return 1 - css(current, 'opacity'); - }, - - translate: function(percent) { - return [ - {opacity: 1 - percent}, - {opacity: percent} - ]; - } - - }, - - scale: { - - show: function() { - return [ - {opacity: 0, transform: scale3d(1 - .2)}, - {opacity: 1, transform: scale3d(1)} - ]; - }, - - percent: function(current) { - return 1 - css(current, 'opacity'); - }, - - translate: function(percent) { - return [ - {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)}, - {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)} - ]; - } - - } - - }); - - function Transitioner(prev, next, dir, ref) { - var animation = ref.animation; - var easing = ref.easing; - - - var percent = animation.percent; - var translate = animation.translate; - var show = animation.show; if ( show === void 0 ) show = noop; - var props = show(dir); - var deferred = new Deferred(); - - return { - - dir: dir, - - show: function(duration, percent, linear) { - var this$1 = this; - if ( percent === void 0 ) percent = 0; - - - var timing = linear ? 'linear' : easing; - duration -= Math.round(duration * clamp(percent, -1, 1)); - - this.translate(percent); - - triggerUpdate(next, 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir}); - triggerUpdate(prev, 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir}); - - Promise$1.all([ - Transition.start(next, props[1], duration, timing), - Transition.start(prev, props[0], duration, timing) - ]).then(function () { - this$1.reset(); - deferred.resolve(); - }, noop); - - return deferred.promise; - }, - - stop: function() { - return Transition.stop([next, prev]); - }, - - cancel: function() { - Transition.cancel([next, prev]); - }, - - reset: function() { - for (var prop in props[0]) { - css([next, prev], prop, ''); - } - }, - - forward: function(duration, percent) { - if ( percent === void 0 ) percent = this.percent(); - - Transition.cancel([next, prev]); - return this.show(duration, percent, true); - - }, - - translate: function(percent) { - - this.reset(); - - var props = translate(percent, dir); - css(next, props[1]); - css(prev, props[0]); - triggerUpdate(next, 'itemtranslatein', {percent: percent, dir: dir}); - triggerUpdate(prev, 'itemtranslateout', {percent: 1 - percent, dir: dir}); - - }, - - percent: function() { - return percent(prev || next, next, dir); - }, - - getDistance: function() { - return prev.offsetWidth; - } - - }; - - } - - function triggerUpdate(el, type, data$$1) { - trigger(el, createEvent(type, false, false, data$$1)); - } - - var SliderAutoplay = { - - props: { - autoplay: Boolean, - autoplayInterval: Number, - pauseOnHover: Boolean - }, - - data: { - autoplay: false, - autoplayInterval: 7000, - pauseOnHover: true - }, - - connected: function() { - this.startAutoplay(); - }, - - disconnected: function() { - this.stopAutoplay(); - }, - - events: [ - - { - - name: 'visibilitychange', - - el: document, - - handler: function() { - if (document.hidden) { - this.stopAutoplay(); - } else { - this.startAutoplay(); - } - } - - }, - - { - - name: pointerDown, - handler: 'stopAutoplay' - - }, - - { - - name: 'mouseenter', - - filter: function() { - return this.autoplay; - }, - - handler: function() { - this.isHovering = true; - } - - }, - - { - - name: 'mouseleave', - - filter: function() { - return this.autoplay; - }, - - handler: function() { - this.isHovering = false; - } - - } - - ], - - methods: { - - startAutoplay: function() { - var this$1 = this; - - - this.stopAutoplay(); - - if (this.autoplay) { - this.interval = setInterval( - function () { return !(this$1.isHovering && this$1.pauseOnHover) && !this$1.stack.length && this$1.show('next'); }, - this.autoplayInterval - ); - } - - }, - - stopAutoplay: function() { - if (this.interval) { - clearInterval(this.interval); - } - } - - } - - }; - - var SliderDrag = { - - data: { - threshold: 10, - preventCatch: false - }, - - init: function() { - var this$1 = this; - - - ['start', 'move', 'end'].forEach(function (key) { - - var fn = this$1[key]; - this$1[key] = function (e) { - - var pos = getPos$1(e).x * (isRtl ? -1 : 1); - - this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos; - this$1.pos = pos; - - fn(e); - }; - - }); - - }, - - events: [ - - { - - name: pointerDown, - - delegate: function() { - return this.slidesSelector; - }, - - handler: function(e) { - - if (!isTouch(e) && hasTextNodesOnly(e.target) - || e.button > 0 - || this.length < 2 - || this.preventCatch - ) { - return; - } - - this.start(e); - } - - }, - - { - name: 'dragstart', - - handler: function(e) { - e.preventDefault(); - } - } - - ], - - methods: { - - start: function() { - - this.drag = this.pos; - - if (this._transitioner) { - - this.percent = this._transitioner.percent(); - this.drag += this._transitioner.getDistance() * this.percent * this.dir; - - this._transitioner.translate(this.percent); - this._transitioner.cancel(); - - this.dragging = true; - - this.stack = []; - - } else { - this.prevIndex = this.index; - } - - this.unbindMove = on(document, pointerMove, this.move, {capture: true, passive: false}); - on(window, 'scroll', this.unbindMove); - on(document, pointerUp, this.end, true); - - }, - - move: function(e) { - var this$1 = this; - - - var distance = this.pos - this.drag; - - if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) { - return; - } - - e.cancelable && e.preventDefault(); - - this.dragging = true; - this.dir = (distance < 0 ? 1 : -1); - - var ref = this; - var slides = ref.slides; - var ref$1 = this; - var prevIndex = ref$1.prevIndex; - var dis = Math.abs(distance); - var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex); - var width$$1 = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth; - - while (nextIndex !== prevIndex && dis > width$$1) { - - this$1.drag -= width$$1 * this$1.dir; - - prevIndex = nextIndex; - dis -= width$$1; - nextIndex = this$1.getIndex(prevIndex + this$1.dir, prevIndex); - width$$1 = this$1._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth; - - } - - this.percent = dis / width$$1; - - var prev = slides[prevIndex]; - var next = slides[nextIndex]; - var changed = this.index !== nextIndex; - var edge = prevIndex === nextIndex; - - var itemShown; - - [this.index, this.prevIndex].filter(function (i) { return !includes([nextIndex, prevIndex], i); }).forEach(function (i) { - trigger(slides[i], 'itemhidden', [this$1]); - - if (edge) { - itemShown = true; - this$1.prevIndex = prevIndex; - } - - }); - - if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) { - trigger(slides[this.index], 'itemshown', [this]); - } - - if (changed) { - this.prevIndex = prevIndex; - this.index = nextIndex; - - !edge && trigger(prev, 'beforeitemhide', [this]); - trigger(next, 'beforeitemshow', [this]); - } - - this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next); - - if (changed) { - !edge && trigger(prev, 'itemhide', [this]); - trigger(next, 'itemshow', [this]); - } - - }, - - end: function() { - - off(window, 'scroll', this.unbindMove); - this.unbindMove(); - off(document, pointerUp, this.end, true); - - if (this.dragging) { - - this.dragging = null; - - if (this.index === this.prevIndex) { - this.percent = 1 - this.percent; - this.dir *= -1; - this._show(false, this.index, true); - this._transitioner = null; - } else { - - var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos; - this.index = dirChange ? this.index : this.prevIndex; - - if (dirChange) { - this.percent = 1 - this.percent; - } - - this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true); - } - - preventClick(); - - } - - this.drag - = this.percent - = null; - - } - - } - - }; - - function hasTextNodesOnly(el) { - return !el.children.length && el.childNodes.length; - } - - var SliderNav = { - - data: { - selNav: false - }, - - computed: { - - nav: function(ref, $el) { - var selNav = ref.selNav; - - return $(selNav, $el); - }, - - navItemSelector: function(ref) { - var attrItem = ref.attrItem; - - return ("[" + attrItem + "],[data-" + attrItem + "]"); - }, - - navItems: function(_, $el) { - return $$(this.navItemSelector, $el); - } - - }, - - update: [ - - { - - write: function() { - var this$1 = this; - - - if (this.nav && this.length !== this.nav.children.length) { - html(this.nav, this.slides.map(function (_, i) { return ("<li " + (this$1.attrItem) + "=\"" + i + "\"><a href=\"#\"></a></li>"); }).join('')); - } - - toggleClass($$(this.navItemSelector, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex); - - this.updateNav(); - - }, - - events: ['load', 'resize'] - - } - - ], - - events: [ - - { - - name: 'click', - - delegate: function() { - return this.navItemSelector; - }, - - handler: function(e) { - e.preventDefault(); - e.current.blur(); - this.show(data(e.current, this.attrItem)); - } - - }, - - { - - name: 'itemshow', - handler: 'updateNav' - - } - - ], - - methods: { - - updateNav: function() { - var this$1 = this; - - - var i = this.getValidIndex(); - this.navItems.forEach(function (el) { - - var cmd = data(el, this$1.attrItem); - - toggleClass(el, this$1.clsActive, toNumber(cmd) === i); - toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex)); - }); - - } - - } - - }; - - var Slider = { - - attrs: true, - - mixins: [SliderAutoplay, SliderDrag, SliderNav], - - props: { - clsActivated: Boolean, - easing: String, - index: Number, - finite: Boolean, - velocity: Number - }, - - data: function () { return ({ - easing: 'ease', - finite: false, - velocity: 1, - index: 0, - stack: [], - percent: 0, - clsActive: 'uk-active', - clsActivated: false, - Transitioner: false, - transitionOptions: {} - }); }, - - computed: { - - duration: function(ref, $el) { - var velocity = ref.velocity; - - return speedUp($el.offsetWidth / velocity); - }, - - length: function() { - return this.slides.length; - }, - - list: function(ref, $el) { - var selList = ref.selList; - - return $(selList, $el); - }, - - maxIndex: function() { - return this.length - 1; - }, - - slidesSelector: function(ref) { - var selList = ref.selList; - - return (selList + " > *"); - }, - - slides: function() { - return toNodes(this.list.children); - } - - }, - - events: { - - itemshown: function() { - this.$update(this.list); - } - - }, - - methods: { - - show: function(index$$1, force) { - var this$1 = this; - if ( force === void 0 ) force = false; - - - if (this.dragging || !this.length) { - return; - } - - var ref = this; - var stack = ref.stack; - var queueIndex = force ? 0 : stack.length; - var reset = function () { - stack.splice(queueIndex, 1); - - if (stack.length) { - this$1.show(stack.shift(), true); - } - }; - - stack[force ? 'unshift' : 'push'](index$$1); - - if (!force && stack.length > 1) { - - if (stack.length === 2) { - this._transitioner.forward(Math.min(this.duration, 200)); - } - - return; - } - - var prevIndex = this.index; - var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex]; - var nextIndex = this.getIndex(index$$1, this.index); - var next = this.slides[nextIndex]; - - if (prev === next) { - reset(); - return; - } - - this.dir = getDirection(index$$1, prevIndex); - this.prevIndex = prevIndex; - this.index = nextIndex; - - prev && trigger(prev, 'beforeitemhide', [this]); - if (!trigger(next, 'beforeitemshow', [this, prev])) { - this.index = this.prevIndex; - reset(); - return; - } - - var promise = this._show(prev, next, force).then(function () { - - prev && trigger(prev, 'itemhidden', [this$1]); - trigger(next, 'itemshown', [this$1]); - - return new Promise$1(function (resolve) { - fastdom.write(function () { - stack.shift(); - if (stack.length) { - this$1.show(stack.shift(), true); - } else { - this$1._transitioner = null; - } - resolve(); - }); - }); - - }); - - prev && trigger(prev, 'itemhide', [this]); - trigger(next, 'itemshow', [this]); - - return promise; - - }, - - getIndex: function(index$$1, prev) { - if ( index$$1 === void 0 ) index$$1 = this.index; - if ( prev === void 0 ) prev = this.index; - - return clamp(getIndex(index$$1, this.slides, prev, this.finite), 0, this.maxIndex); - }, - - getValidIndex: function(index$$1, prevIndex) { - if ( index$$1 === void 0 ) index$$1 = this.index; - if ( prevIndex === void 0 ) prevIndex = this.prevIndex; - - return this.getIndex(index$$1, prevIndex); - }, - - _show: function(prev, next, force) { - - this._transitioner = this._getTransitioner( - prev, - next, - this.dir, - assign({ - easing: force - ? next.offsetWidth < 600 - ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */ - : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */ - : this.easing - }, this.transitionOptions) - ); - - if (!force && !prev) { - this._transitioner.translate(1); - return Promise$1.resolve(); - } - - var ref = this.stack; - var length = ref.length; - return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent); - - }, - - _getDistance: function(prev, next) { - return new this._getTransitioner(prev, prev !== next && next).getDistance(); - }, - - _translate: function(percent, prev, next) { - if ( prev === void 0 ) prev = this.prevIndex; - if ( next === void 0 ) next = this.index; - - var transitioner = this._getTransitioner(prev !== next ? prev : false, next); - transitioner.translate(percent); - return transitioner; - }, - - _getTransitioner: function(prev, next, dir, options) { - if ( prev === void 0 ) prev = this.prevIndex; - if ( next === void 0 ) next = this.index; - if ( dir === void 0 ) dir = this.dir || 1; - if ( options === void 0 ) options = this.transitionOptions; - - return new this.Transitioner( - isNumber(prev) ? this.slides[prev] : prev, - isNumber(next) ? this.slides[next] : next, - dir * (isRtl ? -1 : 1), - options - ); - } - - } - - }; - - function getDirection(index$$1, prevIndex) { - return index$$1 === 'next' - ? 1 - : index$$1 === 'previous' - ? -1 - : index$$1 < prevIndex - ? -1 - : 1; - } - - function speedUp(x) { - return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200) - } - - var Slideshow = { - - mixins: [Slider], - - props: { - animation: String - }, - - data: { - animation: 'slide', - clsActivated: 'uk-transition-active', - Animations: Animations, - Transitioner: Transitioner - }, - - computed: { - - animation: function(ref) { - var animation = ref.animation; - var Animations$$1 = ref.Animations; - - return assign(animation in Animations$$1 ? Animations$$1[animation] : Animations$$1.slide, {name: animation}); - }, - - transitionOptions: function() { - return {animation: this.animation}; - } - - }, - - events: { - - 'itemshow itemhide itemshown itemhidden': function(ref) { - var target = ref.target; - - this.$update(target); - }, - - itemshow: function() { - isNumber(this.prevIndex) && fastdom.flush(); // iOS 10+ will honor the video.play only if called from a gesture handler - }, - - beforeitemshow: function(ref) { - var target = ref.target; - - addClass(target, this.clsActive); - }, - - itemshown: function(ref) { - var target = ref.target; - - addClass(target, this.clsActivated); - }, - - itemhidden: function(ref) { - var target = ref.target; - - removeClass(target, this.clsActive, this.clsActivated); - } - - } - - }; - - var LightboxPanel = { - - mixins: [Container, Modal, Togglable, Slideshow], - - functional: true, - - props: { - delayControls: Number, - preload: Number, - videoAutoplay: Boolean, - template: String - }, - - data: function () { return ({ - preload: 1, - videoAutoplay: false, - delayControls: 3000, - items: [], - cls: 'uk-open', - clsPage: 'uk-lightbox-page', - selList: '.uk-lightbox-items', - attrItem: 'uk-lightbox-item', - selClose: '.uk-close-large', - pauseOnHover: false, - velocity: 2, - Animations: Animations$1, - template: "<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\"></div> </div>" - }); }, - - created: function() { - var this$1 = this; - - - this.$mount(append(this.container, this.template)); - - this.caption = $('.uk-lightbox-caption', this.$el); - - this.items.forEach(function () { return append(this$1.list, '<li></li>'); }); - - }, - - events: [ - - { - - name: (pointerMove + " " + pointerDown + " keydown"), - - handler: 'showControls' - - }, - - { - - name: 'click', - - self: true, - - delegate: function() { - return this.slidesSelector; - }, - - handler: function(e) { - e.preventDefault(); - this.hide(); - } - - }, - - { - - name: 'shown', - - self: true, - - handler: 'showControls' - }, - - { - - name: 'hide', - - self: true, - - handler: function() { - - this.hideControls(); - - removeClass(this.slides, this.clsActive); - Transition.stop(this.slides); - - } - }, - - { - - name: 'keyup', - - el: document, - - handler: function(e) { - - if (!this.isToggled(this.$el)) { - return; - } - - switch (e.keyCode) { - case 37: - this.show('previous'); - break; - case 39: - this.show('next'); - break; - } - } - }, - - { - - name: 'beforeitemshow', - - handler: function(e) { - - if (this.isToggled()) { - return; - } - - this.preventCatch = true; - - e.preventDefault(); - - this.toggleNow(this.$el, true); - - this.animation = Animations$1['scale']; - removeClass(e.target, this.clsActive); - this.stack.splice(1, 0, this.index); - - } - - }, - - { - - name: 'itemshow', - - handler: function(ref) { - var this$1 = this; - var target = ref.target; - - - var i = index(target); - var ref$1 = this.getItem(i); - var caption = ref$1.caption; - - css(this.caption, 'display', caption ? '' : 'none'); - html(this.caption, caption); - - for (var j = 0; j <= this.preload; j++) { - this$1.loadItem(this$1.getIndex(i + j)); - this$1.loadItem(this$1.getIndex(i - j)); - } - - } - - }, - - { - - name: 'itemshown', - - handler: function() { - this.preventCatch = false; - } - - }, - - { - - name: 'itemload', - - handler: function(_, item) { - var this$1 = this; - - - var source = item.source; - var type = item.type; - var alt = item.alt; - - this.setItem(item, '<span uk-spinner></span>'); - - if (!source) { - return; - } - - var matches$$1; - - // Image - if (type === 'image' || source.match(/\.(jp(e)?g|png|gif|svg)($|\?)/i)) { - - getImage(source).then( - function (img) { return this$1.setItem(item, ("<img width=\"" + (img.width) + "\" height=\"" + (img.height) + "\" src=\"" + source + "\" alt=\"" + (alt ? alt : '') + "\">")); }, - function () { return this$1.setError(item); } - ); - - // Video - } else if (type === 'video' || source.match(/\.(mp4|webm|ogv)($|\?)/i)) { - - var video = $(("<video controls playsinline" + (item.poster ? (" poster=\"" + (item.poster) + "\"") : '') + " uk-video=\"" + (this.videoAutoplay) + "\"></video>")); - attr(video, 'src', source); - - on(video, 'error', function () { return this$1.setError(item); }); - on(video, 'loadedmetadata', function () { - attr(video, {width: video.videoWidth, height: video.videoHeight}); - this$1.setItem(item, video); - }); - - // Iframe - } else if (type === 'iframe' || source.match(/\.(html|php)($|\?)/i)) { - - this.setItem(item, ("<iframe class=\"uk-lightbox-iframe\" src=\"" + source + "\" frameborder=\"0\" allowfullscreen></iframe>")); - - // YouTube - } else if ((matches$$1 = source.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/watch\?v=([^&\s]+)/) || source.match(/()youtu\.be\/(.*)/))) { - - var id = matches$$1[2]; - var setIframe = function (width$$1, height$$1) { - if ( width$$1 === void 0 ) width$$1 = 640; - if ( height$$1 === void 0 ) height$$1 = 450; - - return this$1.setItem(item, getIframe(("https://www.youtube" + (matches$$1[1] || '') + ".com/embed/" + id), width$$1, height$$1, this$1.videoAutoplay)); - }; - - getImage(("https://img.youtube.com/vi/" + id + "/maxresdefault.jpg")).then( - function (ref) { - var width$$1 = ref.width; - var height$$1 = ref.height; - - // YouTube default 404 thumb, fall back to low resolution - if (width$$1 === 120 && height$$1 === 90) { - getImage(("https://img.youtube.com/vi/" + id + "/0.jpg")).then( - function (ref) { - var width$$1 = ref.width; - var height$$1 = ref.height; - - return setIframe(width$$1, height$$1); - }, - setIframe - ); - } else { - setIframe(width$$1, height$$1); - } - }, - setIframe - ); - - // Vimeo - } else if ((matches$$1 = source.match(/(\/\/.*?)vimeo\.[a-z]+\/([0-9]+).*?/))) { - - ajax(("https://vimeo.com/api/oembed.json?maxwidth=1920&url=" + (encodeURI(source))), {responseType: 'json', withCredentials: false}) - .then( - function (ref) { - var ref_response = ref.response; - var height$$1 = ref_response.height; - var width$$1 = ref_response.width; - - return this$1.setItem(item, getIframe(("https://player.vimeo.com/video/" + (matches$$1[2])), width$$1, height$$1, this$1.videoAutoplay)); - }, - function () { return this$1.setError(item); } - ); - - } - - } - - } - - ], - - methods: { - - loadItem: function(index$$1) { - if ( index$$1 === void 0 ) index$$1 = this.index; - - - var item = this.getItem(index$$1); - - if (item.content) { - return; - } - - trigger(this.$el, 'itemload', [item]); - }, - - getItem: function(index$$1) { - if ( index$$1 === void 0 ) index$$1 = this.index; - - return this.items[index$$1] || {}; - }, - - setItem: function(item, content) { - assign(item, {content: content}); - var el = html(this.slides[this.items.indexOf(item)], content); - trigger(this.$el, 'itemloaded', [this, el]); - this.$update(el); - }, - - setError: function(item) { - this.setItem(item, '<span uk-icon="icon: bolt; ratio: 2"></span>'); - }, - - showControls: function() { - - clearTimeout(this.controlsTimer); - this.controlsTimer = setTimeout(this.hideControls, this.delayControls); - - addClass(this.$el, 'uk-active', 'uk-transition-active'); - - }, - - hideControls: function() { - removeClass(this.$el, 'uk-active', 'uk-transition-active'); - } - - } - - }; - - function getIframe(src, width$$1, height$$1, autoplay) { - return ("<iframe src=\"" + src + "\" width=\"" + width$$1 + "\" height=\"" + height$$1 + "\" style=\"max-width: 100%; box-sizing: border-box;\" frameborder=\"0\" allowfullscreen uk-video=\"autoplay: " + autoplay + "\" uk-responsive></iframe>"); - } - - var props = merge(LightboxPanel, 'props'); - var defaults = merge(LightboxPanel, 'data'); - - var Lightbox = { - - install: install$2, - - attrs: true, - - props: assign({toggle: String}, props), - - data: assign({toggle: 'a'}, Object.keys(props).reduce(function (data$$1, key) { - data$$1[key] = defaults[key]; - return data$$1; - }, {})), - - computed: { - - toggles: function(ref, $el) { - var toggle = ref.toggle; - - return $$(toggle, $el); - } - - }, - - disconnected: function() { - this._destroy(); - }, - - events: [ - - { - - name: 'click', - - delegate: function() { - return ((this.toggle) + ":not(.uk-disabled)"); - }, - - handler: function(e) { - e.preventDefault(); - e.current.blur(); - this.show(index(this.toggles, e.current)); - } - - } - - ], - - update: function(data$$1) { - - data$$1.toggles = data$$1.toggles || this.toggles; - - if (this.panel && this.animation) { - this.panel.$props.animation = this.animation; - this.panel.$emit(); - } - - if (!this.panel || isEqualList$1(data$$1.toggles, this.toggles)) { - return; - } - - data$$1.toggles = this.toggles; - this._destroy(); - this._init(); - - }, - - methods: { - - _init: function() { - return this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, { - items: this.toggles.reduce(function (items, el) { - items.push(['href', 'caption', 'type', 'poster', 'alt'].reduce(function (obj, attr$$1) { - obj[attr$$1 === 'href' ? 'source' : attr$$1] = data(el, attr$$1); - return obj; - }, {})); - return items; - }, []) - })); - }, - - _destroy: function() { - if (this.panel) { - this.panel.$destroy(true); - this.panel = null; - } - }, - - show: function(index$$1) { - - if (!this.panel) { - this._init(); - } - - return this.panel.show(index$$1); - - }, - - hide: function() { - - return this.panel && this.panel.hide(); - - } - - } - - }; - - function isEqualList$1(listA, listB) { - return listA.length === listB.length - && listA.every(function (el, i) { return el === listB[i]; }); - } - - function merge(options, prop) { - return assign.apply( - void 0, [ {} ].concat( (options.mixins ? options.mixins.map(function (mixin) { return merge(mixin, prop); }) : []), - [isFunction(options[prop]) ? options[prop]() : options[prop]] )); - } - - function install$2(UIkit) { - if (!UIkit.lightboxPanel) { - UIkit.component('lightboxPanel', LightboxPanel); - } - } - - var obj; - - var containers = {}; - - var Notification = { - - functional: true, - - args: ['message', 'status'], - - data: { - message: '', - status: '', - timeout: 5000, - group: null, - pos: 'top-center', - clsClose: 'uk-notification-close', - clsMsg: 'uk-notification-message' - }, - - install: install$3, - - created: function() { - - if (!containers[this.pos]) { - containers[this.pos] = append(this.$container, ("<div class=\"uk-notification uk-notification-" + (this.pos) + "\"></div>")); - } - - var container = css(containers[this.pos], 'display', 'block'); - - this.$mount(append(container, - ("<div class=\"" + (this.clsMsg) + (this.status ? (" " + (this.clsMsg) + "-" + (this.status)) : '') + "\"> <a href=\"#\" class=\"" + (this.clsClose) + "\" data-uk-close></a> <div>" + (this.message) + "</div> </div>") - )); - - }, - - ready: function() { - var this$1 = this; - - - var marginBottom = toFloat(css(this.$el, 'marginBottom')); - Transition.start( - css(this.$el, {opacity: 0, marginTop: -this.$el.offsetHeight, marginBottom: 0}), - {opacity: 1, marginTop: 0, marginBottom: marginBottom} - ).then(function () { - if (this$1.timeout) { - this$1.timer = setTimeout(this$1.close, this$1.timeout); - } - }); - - }, - - events: ( obj = { - - click: function(e) { - if (closest(e.target, 'a[href="#"]')) { - e.preventDefault(); - } - this.close(); - } - - }, obj[pointerEnter] = function () { - if (this.timer) { - clearTimeout(this.timer); - } - }, obj[pointerLeave] = function () { - if (this.timeout) { - this.timer = setTimeout(this.close, this.timeout); - } - }, obj ), - - methods: { - - close: function(immediate) { - var this$1 = this; - - - var removeFn = function () { - - trigger(this$1.$el, 'close', [this$1]); - remove(this$1.$el); - - if (!containers[this$1.pos].children.length) { - css(containers[this$1.pos], 'display', 'none'); - } - - }; - - if (this.timer) { - clearTimeout(this.timer); - } - - if (immediate) { - removeFn(); - } else { - Transition.start(this.$el, { - opacity: 0, - marginTop: -this.$el.offsetHeight, - marginBottom: 0 - }).then(removeFn); - } - } - - } - - }; - - function install$3(UIkit) { - UIkit.notification.closeAll = function (group, immediate) { - apply(document.body, function (el) { - var notification = UIkit.getComponent(el, 'notification'); - if (notification && (!group || group === notification.group)) { - notification.close(immediate); - } - }); - }; - } - - var props$1 = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity']; - - var Parallax = { - - props: props$1.reduce(function (props, prop) { - props[prop] = 'list'; - return props; - }, { - media: 'media' - }), - - data: props$1.reduce(function (data$$1, prop) { - data$$1[prop] = undefined; - return data$$1; - }, { - media: false - }), - - computed: { - - props: function(properties, $el) { - var this$1 = this; - - - return props$1.reduce(function (props, prop) { - - if (isUndefined(properties[prop])) { - return props; - } - - var isColor = prop.match(/color/i); - var isCssProp = isColor || prop === 'opacity'; - - var pos, bgPos, diff; - var steps = properties[prop].slice(0); - - if (isCssProp) { - css($el, prop, ''); - } - - if (steps.length < 2) { - steps.unshift((prop === 'scale' - ? 1 - : isCssProp - ? css($el, prop) - : 0) || 0); - } - - var unit = includes(steps.join(''), '%') ? '%' : 'px'; - - if (isColor) { - - var ref = $el.style; - var color = ref.color; - steps = steps.map(function (step) { return parseColor($el, step); }); - $el.style.color = color; - - } else { - - steps = steps.map(toFloat); - - } - - if (prop.match(/^bg/)) { - - css($el, ("background-position-" + (prop[2])), ''); - bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y] - - if (this$1.covers) { - - var min = Math.min.apply(Math, steps); - var max = Math.max.apply(Math, steps); - var down = steps.indexOf(min) < steps.indexOf(max); - - diff = max - min; - - steps = steps.map(function (step) { return step - (down ? min : max); }); - pos = (down ? -diff : 0) + "px"; - - } else { - - pos = bgPos; - - } - } - - props[prop] = {steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff}; - - return props; - - }, {}); - - }, - - bgProps: function() { - var this$1 = this; - - return ['bgx', 'bgy'].filter(function (bg) { return bg in this$1.props; }); - }, - - covers: function(_, $el) { - return covers($el); - } - - }, - - disconnected: function() { - delete this._image; - }, - - update: [ - - { - - read: function(data$$1) { - var this$1 = this; - - - data$$1.active = !this.media || window.matchMedia(this.media).matches; - - if (data$$1.image) { - data$$1.image.dimEl = { - width: this.$el.offsetWidth, - height: this.$el.offsetHeight - }; - } - - if ('image' in data$$1 || !this.covers || !this.bgProps.length) { - return; - } - - var src = css(this.$el, 'backgroundImage').replace(/^none|url\(["']?(.+?)["']?\)$/, '$1'); - - if (!src) { - return; - } - - data$$1.image = false; - - getImage(src).then(function (img) { - data$$1.image = { - width: img.naturalWidth, - height: img.naturalHeight - }; - - this$1.$emit(); - }); - - }, - - write: function(ref) { - var this$1 = this; - var image = ref.image; - var active = ref.active; - - - if (!image) { - return; - } - - if (!active) { - css(this.$el, {backgroundSize: '', backgroundRepeat: ''}); - return; - } - - var dimEl = image.dimEl; - - var dim = Dimensions.cover(image, dimEl); - - this.bgProps.forEach(function (prop) { - - var ref = this$1.props[prop]; - var diff = ref.diff; - var bgPos = ref.bgPos; - var steps = ref.steps; - var attr$$1 = prop === 'bgy' ? 'height' : 'width'; - var span = dim[attr$$1] - dimEl[attr$$1]; - - if (!bgPos.match(/%$|0px/)) { - return; - } - - if (span < diff) { - dimEl[attr$$1] = dim[attr$$1] + diff - span; - } else if (span > diff) { - - var bgPosFloat = parseFloat(bgPos); - - if (bgPosFloat) { - this$1.props[prop].steps = steps.map(function (step) { return step - (span - diff) / (100 / bgPosFloat); }); - } - } - - dim = Dimensions.cover(image, dimEl); - }); - - css(this.$el, { - backgroundSize: ((dim.width) + "px " + (dim.height) + "px"), - backgroundRepeat: 'no-repeat' - }); - - }, - - events: ['load', 'resize'] - - } - - ], - - methods: { - - reset: function() { - var this$1 = this; - - each(this.getCss(0), function (_, prop) { return css(this$1.$el, prop, ''); }); - }, - - getCss: function(percent) { - - var ref = this; - var props = ref.props; - var translated = false; - - return Object.keys(props).reduce(function (css$$1, prop) { - - var ref = props[prop]; - var steps = ref.steps; - var unit = ref.unit; - var pos = ref.pos; - var value = getValue(steps, percent); - - switch (prop) { - - // transforms - case 'x': - case 'y': - - if (translated) { - break; - } - - var ref$1 = ['x', 'y'].map(function (dir) { return prop === dir - ? value + unit - : props[dir] - ? getValue(props[dir].steps, percent) + props[dir].unit - : 0; } - ); - var x = ref$1[0]; - var y = ref$1[1]; - - translated = css$$1.transform += " translate3d(" + x + ", " + y + ", 0)"; - break; - case 'rotate': - css$$1.transform += " rotate(" + value + "deg)"; - break; - case 'scale': - css$$1.transform += " scale(" + value + ")"; - break; - - // bg image - case 'bgy': - case 'bgx': - css$$1[("background-position-" + (prop[2]))] = "calc(" + pos + " + " + (value + unit) + ")"; - break; - - // color - case 'color': - case 'backgroundColor': - case 'borderColor': - - var ref$2 = getStep(steps, percent); - var start = ref$2[0]; - var end = ref$2[1]; - var p = ref$2[2]; - - css$$1[prop] = "rgba(" + (start.map(function (value, i) { - value = value + p * (end[i] - value); - return i === 3 ? toFloat(value) : parseInt(value, 10); - }).join(',')) + ")"; - break; - - // CSS Filter - case 'blur': - css$$1.filter += " blur(" + value + "px)"; - break; - case 'hue': - css$$1.filter += " hue-rotate(" + value + "deg)"; - break; - case 'fopacity': - css$$1.filter += " opacity(" + value + "%)"; - break; - case 'grayscale': - case 'invert': - case 'saturate': - case 'sepia': - css$$1.filter += " " + prop + "(" + value + "%)"; - break; - - default: - css$$1[prop] = value; - } - - return css$$1; - - }, {transform: '', filter: ''}); - - } - - } - - }; - - function parseColor(el, color) { - return css(css(el, 'color', color), 'color').split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(function (n) { return toFloat(n); }); - } - - function getStep(steps, percent) { - var count = steps.length - 1; - var index$$1 = Math.min(Math.floor(count * percent), count - 1); - var step = steps.slice(index$$1, index$$1 + 2); - - step.push(percent === 1 ? 1 : percent % (1 / count) * count); - - return step; - } - - function getValue(steps, percent) { - var ref = getStep(steps, percent); - var start = ref[0]; - var end = ref[1]; - var p = ref[2]; - return (isNumber(start) - ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) - : +end - ).toFixed(2); - } - - function covers(el) { - var ref = el.style; - var backgroundSize = ref.backgroundSize; - var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover'; - el.style.backgroundSize = backgroundSize; - return covers; - } - - var Parallax$1 = { - - mixins: [Parallax], - - props: { - target: String, - viewport: Number, - easing: Number, - }, - - data: { - target: false, - viewport: 1, - easing: 1, - }, - - computed: { - - target: function(ref, $el) { - var target = ref.target; - - return target && query(target, $el) || $el; - } - - }, - - update: [ - - { - - read: function(ref) { - var percent = ref.percent; - - return { - prev: percent, - percent: ease$1(scrolledOver(this.target) / (this.viewport || 1), this.easing) - }; - }, - - write: function(ref, ref$1) { - var prev = ref.prev; - var percent = ref.percent; - var active = ref.active; - var type = ref$1.type; - - - if (type !== 'scroll') { - prev = false; - } - - if (!active) { - this.reset(); - return; - } - - if (prev !== percent) { - css(this.$el, this.getCss(percent)); - } - - }, - - events: ['scroll', 'load', 'resize'] - } - - ] - - }; - - function ease$1(percent, easing) { - return clamp(percent * (1 - (easing - easing * percent))); - } - - var SliderReactive = { - - update: [ - - { - - write: function() { - - if (this.stack.length || this.dragging) { - return; - } - - var index$$1 = this.getValidIndex(); - delete this.index; - removeClass(this.slides, this.clsActive, this.clsActivated); - this.show(index$$1); - - }, - - events: ['load', 'resize'] - - } - - ] - - }; - - function Transitioner$1 (prev, next, dir, ref) { - var center = ref.center; - var easing = ref.easing; - var list = ref.list; - - - var deferred = new Deferred(); - - var from = prev - ? getLeft(prev, list, center) - : getLeft(next, list, center) + next.offsetWidth * dir; - var to = next - ? getLeft(next, list, center) - : from + prev.offsetWidth * dir * (isRtl ? -1 : 1); - - return { - - dir: dir, - - show: function(duration, percent, linear) { - if ( percent === void 0 ) percent = 0; - - - var timing = linear ? 'linear' : easing; - duration -= Math.round(duration * clamp(percent, -1, 1)); - - this.translate(percent); - - prev && this.updateTranslates(); - percent = prev ? percent : clamp(percent, 0, 1); - triggerUpdate$1(this.getItemIn(), 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir}); - prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir}); - - Transition - .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing) - .then(deferred.resolve, noop); - - return deferred.promise; - - }, - - stop: function() { - return Transition.stop(list); - }, - - cancel: function() { - Transition.cancel(list); - }, - - reset: function() { - css(list, 'transform', ''); - }, - - forward: function(duration, percent) { - if ( percent === void 0 ) percent = this.percent(); - - Transition.cancel(list); - return this.show(duration, percent, true); - }, - - translate: function(percent) { - - var distance = this.getDistance() * dir * (isRtl ? -1 : 1); - - css(list, 'transform', translate(clamp( - -to + (distance - distance * percent), - -getWidth(list), - list.offsetWidth - ) * (isRtl ? -1 : 1), 'px')); - - this.updateTranslates(); - - if (prev) { - percent = clamp(percent, -1, 1); - triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {percent: percent, dir: dir}); - triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {percent: 1 - percent, dir: dir}); - } - - }, - - percent: function() { - return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from)); - }, - - getDistance: function() { - return Math.abs(to - from); - }, - - getItemIn: function(out) { - if ( out === void 0 ) out = false; - - - var actives = this.getActives(); - var all = sortBy(slides(list), 'offsetLeft'); - var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]); - - return ~i && all[i + (prev && !out ? dir : 0)]; - - }, - - getActives: function() { - - var left = getLeft(prev || next, list, center); - - return sortBy(slides(list).filter(function (slide) { - var slideLeft = getElLeft(slide, list); - return slideLeft >= left && slideLeft + slide.offsetWidth <= list.offsetWidth + left; - }), 'offsetLeft'); - - }, - - updateTranslates: function() { - - var actives = this.getActives(); - - slides(list).forEach(function (slide) { - var isActive = includes(actives, slide); - - triggerUpdate$1(slide, ("itemtranslate" + (isActive ? 'in' : 'out')), { - percent: isActive ? 1 : 0, - dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1 - }); - }); - } - - }; - - } - - function getLeft(el, list, center) { - - var left = getElLeft(el, list); - - return center - ? left - centerEl(el, list) - : Math.min(left, getMax(list)); - - } - - function getMax(list) { - return Math.max(0, getWidth(list) - list.offsetWidth); - } - - function getWidth(list) { - return slides(list).reduce(function (right, el) { return el.offsetWidth + right; }, 0); - } - - function getMaxWidth(list) { - return slides(list).reduce(function (right, el) { return Math.max(right, el.offsetWidth); }, 0); - } - - function centerEl(el, list) { - return list.offsetWidth / 2 - el.offsetWidth / 2; - } - - function getElLeft(el, list) { - return (el.offsetLeft + (isRtl ? el.offsetWidth - list.offsetWidth : 0)) * (isRtl ? -1 : 1); - } - - function triggerUpdate$1(el, type, data$$1) { - trigger(el, createEvent(type, false, false, data$$1)); - } - - function slides(list) { - return toNodes(list.children); - } - - var Slider$1 = { - - mixins: [Class, Slider, SliderReactive], - - props: { - center: Boolean, - sets: Boolean, - }, - - data: { - center: false, - sets: false, - attrItem: 'uk-slider-item', - selList: '.uk-slider-items', - selNav: '.uk-slider-nav', - clsContainer: 'uk-slider-container', - Transitioner: Transitioner$1 - }, - - computed: { - - avgWidth: function() { - return getWidth(this.list) / this.length; - }, - - finite: function(ref) { - var finite = ref.finite; - - return finite || getWidth(this.list) < this.list.offsetWidth + getMaxWidth(this.list) + this.center; - }, - - maxIndex: function() { - var this$1 = this; - - - if (!this.finite || this.center && !this.sets) { - return this.length - 1; - } - - if (this.center) { - return this.sets[this.sets.length - 1]; - } - - css(this.slides, 'order', ''); - - var max = getMax(this.list); - var i = this.length; - - while (i--) { - if (getElLeft(this$1.list.children[i], this$1.list) < max) { - return Math.min(i + 1, this$1.length - 1); - } - } - - return 0; - }, - - sets: function(ref) { - var this$1 = this; - var sets = ref.sets; - - - var width$$1 = this.list.offsetWidth / (this.center ? 2 : 1); - - var left = 0; - var leftCenter = width$$1; - var slideLeft = 0; - - sets = sets && this.slides.reduce(function (sets, slide, i) { - - var ref = offset(slide); - var slideWidth = ref.width; - var slideRight = slideLeft + slideWidth; - - if (slideRight > left) { - - if (!this$1.center && i > this$1.maxIndex) { - i = this$1.maxIndex; - } - - if (!includes(sets, i)) { - - var cmp = this$1.slides[i + 1]; - if (this$1.center && cmp && slideWidth < leftCenter - offset(cmp).width / 2) { - leftCenter -= slideWidth; - } else { - leftCenter = width$$1; - sets.push(i); - left = slideLeft + width$$1 + (this$1.center ? slideWidth / 2 : 0); - } - - } - } - - slideLeft += slideWidth; - - return sets; - - }, []); - - return sets && sets.length && sets; - - }, - - transitionOptions: function() { - return { - center: this.center, - list: this.list - }; - } - - }, - - connected: function() { - toggleClass(this.$el, this.clsContainer, !$(("." + (this.clsContainer)), this.$el)); - }, - - update: { - - write: function() { - var this$1 = this; - - - $$(("[" + (this.attrItem) + "],[data-" + (this.attrItem) + "]"), this.$el).forEach(function (el) { - var index$$1 = data(el, this$1.attrItem); - this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index$$1) && (this$1.sets && !includes(this$1.sets, toFloat(index$$1)) || index$$1 > this$1.maxIndex)); - }); - - }, - - events: ['load', 'resize'] - - }, - - events: { - - beforeitemshow: function(e) { - var this$1 = this; - - - if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) { - this.index = this.getValidIndex(); - } - - var diff = Math.abs( - this.index - - this.prevIndex - + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0) - ); - - if (!this.dragging && diff > 1) { - - for (var i = 0; i < diff; i++) { - this$1.stack.splice(1, 0, this$1.dir > 0 ? 'next' : 'previous'); - } - - e.preventDefault(); - return; - } - - this.duration = speedUp(this.avgWidth / this.velocity) - * (( - this.dir < 0 || !this.slides[this.prevIndex] - ? this.slides[this.index] - : this.slides[this.prevIndex] - ).offsetWidth / this.avgWidth); - - this.reorder(); - - }, - - itemshow: function() { - !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive); - }, - - itemshown: function() { - var this$1 = this; - - var actives = this._getTransitioner(this.index).getActives(); - this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActive, includes(actives, slide)); }); - (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); }); - } - - }, - - methods: { - - reorder: function() { - var this$1 = this; - - - css(this.slides, 'order', ''); - - if (this.finite) { - return; - } - - var index$$1 = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index; - - this.slides.forEach(function (slide, i) { return css(slide, 'order', this$1.dir > 0 && i < index$$1 - ? 1 - : this$1.dir < 0 && i >= this$1.index - ? -1 - : '' - ); } - ); - - if (!this.center) { - return; - } - - var next = this.slides[index$$1]; - var width$$1 = this.list.offsetWidth / 2 - next.offsetWidth / 2; - var j = 0; - - while (width$$1 > 0) { - var slideIndex = this$1.getIndex(--j + index$$1, index$$1); - var slide = this$1.slides[slideIndex]; - - css(slide, 'order', slideIndex > index$$1 ? -2 : -1); - width$$1 -= slide.offsetWidth; - } - - }, - - getValidIndex: function(index$$1, prevIndex) { - var this$1 = this; - if ( index$$1 === void 0 ) index$$1 = this.index; - if ( prevIndex === void 0 ) prevIndex = this.prevIndex; - - - index$$1 = this.getIndex(index$$1, prevIndex); - - if (!this.sets) { - return index$$1; - } - - var prev; - - do { - - if (includes(this$1.sets, index$$1)) { - return index$$1; - } - - prev = index$$1; - index$$1 = this$1.getIndex(index$$1 + this$1.dir, prevIndex); - - } while (index$$1 !== prev); - - return index$$1; - } - - } - - }; - - var SliderParallax = { - - mixins: [Parallax], - - data: { - selItem: '!li' - }, - - computed: { - - item: function(ref, $el) { - var selItem = ref.selItem; - - return query(selItem, $el); - } - - }, - - events: [ - - { - - name: 'itemshown', - - self: true, - - el: function() { - return this.item; - }, - - handler: function() { - css(this.$el, this.getCss(.5)); - } - - }, - - { - name: 'itemin itemout', - - self: true, - - el: function() { - return this.item; - }, - - handler: function(ref) { - var type = ref.type; - var ref_detail = ref.detail; - var percent = ref_detail.percent; - var duration = ref_detail.duration; - var timing = ref_detail.timing; - var dir = ref_detail.dir; - - - Transition.cancel(this.$el); - css(this.$el, this.getCss(getCurrent(type, dir, percent))); - - Transition.start(this.$el, this.getCss(isIn(type) - ? .5 - : dir > 0 - ? 1 - : 0 - ), duration, timing).catch(noop); - - } - }, - - { - name: 'transitioncanceled transitionend', - - self: true, - - el: function() { - return this.item; - }, - - handler: function() { - Transition.cancel(this.$el); - } - - }, - - { - name: 'itemtranslatein itemtranslateout', - - self: true, - - el: function() { - return this.item; - }, - - handler: function(ref) { - var type = ref.type; - var ref_detail = ref.detail; - var percent = ref_detail.percent; - var dir = ref_detail.dir; - - Transition.cancel(this.$el); - css(this.$el, this.getCss(getCurrent(type, dir, percent))); - } - } - - ] - - }; - - function isIn(type) { - return endsWith(type, 'in'); - } - - function getCurrent(type, dir, percent) { - - percent /= 2; - - return !isIn(type) - ? dir < 0 - ? percent - : 1 - percent - : dir < 0 - ? 1 - percent - : percent; - } - - var Animations$2 = assign({}, Animations, { - - fade: { - - show: function() { - return [ - {opacity: 0, zIndex: 0}, - {zIndex: -1} - ]; - }, - - percent: function(current) { - return 1 - css(current, 'opacity'); - }, - - translate: function(percent) { - return [ - {opacity: 1 - percent, zIndex: 0}, - {zIndex: -1} - ]; - } - - }, - - scale: { - - show: function() { - return [ - {opacity: 0, transform: scale3d(1 + .5), zIndex: 0}, - {zIndex: -1} - ]; - }, - - percent: function(current) { - return 1 - css(current, 'opacity'); - }, - - translate: function(percent) { - return [ - {opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0}, - {zIndex: -1} - ]; - } - - }, - - pull: { - - show: function(dir) { - return dir < 0 - ? [ - {transform: translate(30), zIndex: -1}, - {transform: translate(), zIndex: 0} ] - : [ - {transform: translate(-100), zIndex: 0}, - {transform: translate(), zIndex: -1} - ]; - }, - - percent: function(current, next, dir) { - return dir < 0 - ? 1 - translated(next) - : translated(current); - }, - - translate: function(percent, dir) { - return dir < 0 - ? [ - {transform: translate(30 * percent), zIndex: -1}, - {transform: translate(-100 * (1 - percent)), zIndex: 0} ] - : [ - {transform: translate(-percent * 100), zIndex: 0}, - {transform: translate(30 * (1 - percent)), zIndex: -1} - ]; - } - - }, - - push: { - - show: function(dir) { - return dir < 0 - ? [ - {transform: translate(100), zIndex: 0}, - {transform: translate(), zIndex: -1} ] - : [ - {transform: translate(-30), zIndex: -1}, - {transform: translate(), zIndex: 0} - ]; - }, - - percent: function(current, next, dir) { - return dir > 0 - ? 1 - translated(next) - : translated(current); - }, - - translate: function(percent, dir) { - return dir < 0 - ? [ - {transform: translate(percent * 100), zIndex: 0}, - {transform: translate(-30 * (1 - percent)), zIndex: -1} ] - : [ - {transform: translate(-30 * percent), zIndex: -1}, - {transform: translate(100 * (1 - percent)), zIndex: 0} - ]; - } - - } - - }); - - var Slideshow$1 = { - - mixins: [Class, Slideshow, SliderReactive], - - props: { - ratio: String, - minHeight: Boolean, - maxHeight: Boolean, - }, - - data: { - ratio: '16:9', - minHeight: false, - maxHeight: false, - selList: '.uk-slideshow-items', - attrItem: 'uk-slideshow-item', - selNav: '.uk-slideshow-nav', - Animations: Animations$2 - }, - - update: { - - read: function() { - - var ref = this.ratio.split(':').map(Number); - var width$$1 = ref[0]; - var height$$1 = ref[1]; - - height$$1 = height$$1 * this.$el.offsetWidth / width$$1; - - if (this.minHeight) { - height$$1 = Math.max(this.minHeight, height$$1); - } - - if (this.maxHeight) { - height$$1 = Math.min(this.maxHeight, height$$1); - } - - return {height: height$$1}; - }, - - write: function(ref) { - var hgt = ref.height; - - height(this.list, Math.floor(hgt)); - }, - - events: ['load', 'resize'] - - } - - }; - - var obj$1; - - var Sortable = { - - mixins: [Class, Animate], - - props: { - group: String, - threshold: Number, - clsItem: String, - clsPlaceholder: String, - clsDrag: String, - clsDragState: String, - clsBase: String, - clsNoDrag: String, - clsEmpty: String, - clsCustom: String, - handle: String - }, - - data: { - group: false, - 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() { - var this$1 = this; - - ['init', 'start', 'move', 'end'].forEach(function (key) { - var fn = this$1[key]; - this$1[key] = function (e) { - this$1.scrollY = window.pageYOffset; - var ref = getPos$1(e); - var x = ref.x; - var y = ref.y; - this$1.pos = {x: x, y: y}; - - fn(e); - }; - }); - }, - - events: ( obj$1 = {}, obj$1[pointerDown] = 'init', obj$1 ), - - update: { - - write: function() { - - if (this.clsEmpty) { - toggleClass(this.$el, this.clsEmpty, !this.$el.children.length); - } - - if (!this.drag) { - return; - } - - offset(this.drag, {top: this.pos.y + this.origin.top, left: this.pos.x + this.origin.left}); - - var ref = offset(this.drag); - var top = ref.top; - var bottom = top + this.drag.offsetHeight; - var scroll; - - if (top > 0 && top < this.scrollY) { - scroll = this.scrollY - 5; - } else if (bottom < height(document) && bottom > height(window) + this.scrollY) { - scroll = this.scrollY + 5; - } - - scroll && setTimeout(function () { return window.scroll(window.pageXOffset, scroll); }, 5); - } - - }, - - methods: { - - init: function(e) { - - var target = e.target; - var button = e.button; - var defaultPrevented = e.defaultPrevented; - var ref = toNodes(this.$el.children).filter(function (el) { return within(target, el); }); - var placeholder = ref[0]; - - if (!placeholder - || isInput(e.target) - || this.handle && !within(target, this.handle) - || button > 0 - || within(target, ("." + (this.clsNoDrag))) - || defaultPrevented - ) { - return; - } - - e.preventDefault(); - - this.touched = [this]; - this.placeholder = placeholder; - this.origin = assign({target: target, index: index(placeholder)}, this.pos); - - on(document, pointerMove, this.move); - on(document, pointerUp, this.end); - on(window, 'scroll', this.scroll); - - if (!this.threshold) { - this.start(e); - } - - }, - - start: function(e) { - - this.drag = append(this.$container, this.placeholder.outerHTML.replace(/^<li/i, '<div').replace(/li>$/i, 'div>')); - - css(this.drag, assign({ - boxSizing: 'border-box', - width: this.placeholder.offsetWidth, - height: this.placeholder.offsetHeight - }, css(this.placeholder, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom']))); - attr(this.drag, 'uk-no-boot', ''); - addClass(this.drag, this.clsDrag, this.clsCustom); - - height(this.drag.firstElementChild, height(this.placeholder.firstElementChild)); - - var ref = offset(this.placeholder); - var left = ref.left; - var top = ref.top; - assign(this.origin, {left: left - this.pos.x, top: top - this.pos.y}); - - addClass(this.placeholder, this.clsPlaceholder); - addClass(this.$el.children, this.clsItem); - addClass(document.documentElement, this.clsDragState); - - trigger(this.$el, 'start', [this, this.placeholder]); - - this.move(e); - }, - - move: function(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); - - var sortable = this.getSortable(target); - var previous = this.getSortable(this.placeholder); - var move = sortable !== previous; - - if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) { - return; - } - - target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function (element) { return within(target, element); })[0]; - - if (move) { - previous.remove(this.placeholder); - } else if (!target) { - return; - } - - sortable.insert(this.placeholder, target); - - if (!includes(this.touched, sortable)) { - this.touched.push(sortable); - } - - }, - - scroll: function() { - var scroll = window.pageYOffset; - if (scroll !== this.scrollY) { - this.pos.y += scroll - this.scrollY; - this.scrollY = scroll; - this.$emit(); - } - }, - - end: function(e) { - - off(document, pointerMove, this.move); - off(document, pointerUp, this.end); - off(window, 'scroll', this.scroll); - - if (!this.drag) { - - if (e.type !== 'mouseup' && within(e.target, 'a[href]')) { - location.href = closest(e.target, 'a[href]').href; - } - - return; - } - - preventClick(); - - var sortable = this.getSortable(this.placeholder); - - if (this === sortable) { - if (this.origin.index !== index(this.placeholder)) { - trigger(this.$el, 'moved', [this, this.placeholder]); - } - } else { - trigger(sortable.$el, 'added', [sortable, this.placeholder]); - trigger(this.$el, 'removed', [this, this.placeholder]); - } - - trigger(this.$el, 'stop', [this, this.placeholder]); - - remove(this.drag); - this.drag = null; - - var classes = this.touched.map(function (sortable) { return ((sortable.clsPlaceholder) + " " + (sortable.clsItem)); }).join(' '); - this.touched.forEach(function (sortable) { return removeClass(sortable.$el.children, classes); }); - - removeClass(document.documentElement, this.clsDragState); - - }, - - insert: function(element, target) { - var this$1 = this; - - - addClass(this.$el.children, this.clsItem); - - var insert = function () { - - if (target) { - - if (!within(element, this$1.$el) || isPredecessor(element, target)) { - before(target, element); - } else { - after(target, element); - } - - } else { - append(this$1.$el, element); - } - - }; - - if (this.animation) { - this.animate(insert); - } else { - insert(); - } - - }, - - remove: function(element) { - - if (!within(element, this.$el)) { - return; - } - - if (this.animation) { - this.animate(function () { return remove(element); }); - } else { - remove(element); - } - - }, - - getSortable: function(element) { - return element && (this.$getComponent(element, 'sortable') || this.getSortable(element.parentNode)); - } - - } - - }; - - function isPredecessor(element, target) { - return element.parentNode === target.parentNode && index(element) > index(target); - } - - var obj$2; - - var actives = []; - - var Tooltip = { - - attrs: true, - - args: 'title', - - mixins: [Container, Togglable, Position], - - props: { - delay: Number, - title: String - }, - - data: { - pos: 'top', - title: '', - delay: 0, - animation: ['uk-animation-scale-up'], - duration: 100, - cls: 'uk-active', - clsPos: 'uk-tooltip' - }, - - beforeConnect: function() { - this._hasTitle = hasAttr(this.$el, 'title'); - attr(this.$el, {title: '', 'aria-expanded': false}); - }, - - disconnected: function() { - this.hide(); - attr(this.$el, {title: this._hasTitle ? this.title : null, 'aria-expanded': null}); - }, - - methods: { - - show: function() { - var this$1 = this; - - - if (includes(actives, this)) { - return; - } - - actives.forEach(function (active) { return active.hide(); }); - actives.push(this); - - this._unbind = on(document, 'click', function (e) { return !within(e.target, this$1.$el) && this$1.hide(); }); - - clearTimeout(this.showTimer); - - this.tooltip = append(this.container, ("<div class=\"" + (this.clsPos) + "\" aria-hidden><div class=\"" + (this.clsPos) + "-inner\">" + (this.title) + "</div></div>")); - - attr(this.$el, '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 (!isVisible(this$1.$el)) { - this$1.hide(); - } - - }, 150); - - }, this.delay); - }, - - hide: function() { - - var index$$1 = actives.indexOf(this); - - if (!~index$$1 || matches(this.$el, 'input') && this.$el === document.activeElement) { - return; - } - - actives.splice(index$$1, 1); - - clearTimeout(this.showTimer); - clearInterval(this.hideTimer); - attr(this.$el, 'aria-expanded', false); - this.toggleElement(this.tooltip, false); - this.tooltip && remove(this.tooltip); - this.tooltip = false; - this._unbind(); - - } - - }, - - events: ( obj$2 = {}, obj$2[("focus " + pointerEnter + " " + pointerDown)] = function (e) { - if (e.type !== pointerDown || !isTouch(e)) { - this.show(); - } - }, obj$2.blur = 'hide', obj$2[pointerLeave] = function (e) { - if (!isTouch(e)) { - this.hide(); - } - }, obj$2 ) - - }; - - var Upload = { - - props: { - allow: String, - clsDragover: String, - concurrent: Number, - maxSize: Number, - method: String, - mime: String, - msgInvalidMime: String, - msgInvalidName: String, - msgInvalidSize: String, - multiple: Boolean, - name: String, - params: Object, - type: String, - url: String, - }, - - data: { - allow: false, - clsDragover: 'uk-dragover', - concurrent: 1, - maxSize: 0, - method: 'POST', - mime: false, - msgInvalidMime: 'Invalid File Type: %s', - msgInvalidName: 'Invalid File Name: %s', - msgInvalidSize: 'Invalid File Size: %s Kilobytes Max', - multiple: false, - name: 'files[]', - params: {}, - type: '', - url: '', - abort: noop, - beforeAll: noop, - beforeSend: noop, - complete: noop, - completeAll: noop, - error: noop, - fail: noop, - load: noop, - loadEnd: noop, - loadStart: noop, - progress: noop - }, - - events: { - - change: function(e) { - - if (!matches(e.target, 'input[type="file"]')) { - return; - } - - e.preventDefault(); - - if (e.target.files) { - this.upload(e.target.files); - } - - e.target.value = ''; - }, - - drop: function(e) { - stop(e); - - var transfer = e.dataTransfer; - - if (!transfer || !transfer.files) { - return; - } - - removeClass(this.$el, this.clsDragover); - - this.upload(transfer.files); - }, - - dragenter: function(e) { - stop(e); - }, - - dragover: function(e) { - stop(e); - addClass(this.$el, this.clsDragover); - }, - - dragleave: function(e) { - stop(e); - removeClass(this.$el, this.clsDragover); - } - - }, - - methods: { - - upload: function(files) { - var this$1 = this; - - - if (!files.length) { - return; - } - - trigger(this.$el, 'upload', [files]); - - for (var i = 0; i < files.length; i++) { - - if (this$1.maxSize && this$1.maxSize * 1000 < files[i].size) { - this$1.fail(this$1.msgInvalidSize.replace('%s', this$1.maxSize)); - return; - } - - if (this$1.allow && !match(this$1.allow, files[i].name)) { - this$1.fail(this$1.msgInvalidName.replace('%s', this$1.allow)); - return; - } - - if (this$1.mime && !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, files); - - var chunks = chunk(files, this.concurrent); - var upload = function (files) { - - var data$$1 = new FormData(); - - files.forEach(function (file) { return data$$1.append(this$1.name, file); }); - - for (var key in this$1.params) { - data$$1.append(key, this$1.params[key]); - } - - ajax(this$1.url, { - data: data$$1, - method: this$1.method, - responseType: this$1.type, - beforeSend: function (env) { - - var xhr = env.xhr; - xhr.upload && on(xhr.upload, 'progress', this$1.progress); - ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { return on(xhr, type.toLowerCase(), this$1[type]); } - ); - - this$1.beforeSend(env); - - } - }).then( - function (xhr) { - - this$1.complete(xhr); - - if (chunks.length) { - upload(chunks.shift()); - } else { - this$1.completeAll(xhr); - } - - }, - function (e) { return this$1.error(e.message); } - ); - - }; - - 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; - } - - function stop(e) { - e.preventDefault(); - e.stopPropagation(); - } - - UIkit.component('countdown', Countdown); - UIkit.component('filter', Filter); - UIkit.component('lightbox', Lightbox); - UIkit.component('lightboxPanel', LightboxPanel); - UIkit.component('notification', Notification); - UIkit.component('parallax', Parallax$1); - UIkit.component('slider', Slider$1); - UIkit.component('sliderParallax', SliderParallax); - UIkit.component('slideshow', Slideshow$1); - UIkit.component('slideshowParallax', SliderParallax); - UIkit.component('sortable', Sortable); - UIkit.component('tooltip', Tooltip); - UIkit.component('upload', Upload); - - { - boot(UIkit); - } - - return UIkit; - -}))); |