{"version":3,"file":"a987ea44-329bdf0031ec6a2ace2a.js","mappings":"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","sources":["webpack://hopster/./node_modules/uikit/dist/js/uikit.js"],"sourcesContent":["require(\"core-js/modules/esnext.global-this.js\");\n\n/*! UIkit 3.11.1 | https://www.getuikit.com | (c) 2014 - 2022 YOOtheme | MIT License */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define('uikit', factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.UIkit = factory());\n})(this, function () {\n 'use strict';\n\n var objPrototype = Object.prototype;\n var hasOwnProperty = objPrototype.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateRe = /\\B([A-Z])/g;\n var hyphenate = memoize(function (str) {\n return str.replace(hyphenateRe, '-$1').toLowerCase();\n });\n var camelizeRe = /-(\\w)/g;\n var camelize = memoize(function (str) {\n return str.replace(camelizeRe, toUpper);\n });\n var ucfirst = memoize(function (str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n });\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n var strPrototype = String.prototype;\n\n var startsWithFn = strPrototype.startsWith || function (search) {\n return this.lastIndexOf(search, 0) === 0;\n };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) {\n return this.substr(-search.length) === search;\n };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var arrPrototype = Array.prototype;\n\n var includesFn = function includesFn(search, i) {\n return !!~this.indexOf(search, i);\n };\n\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = arrPrototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var findIndexFn = arrPrototype.findIndex || function (predicate) {\n var arguments$1 = arguments;\n\n for (var i = 0; i < this.length; i++) {\n if (predicate.call(arguments$1[1], this[i], i, this)) {\n return i;\n }\n }\n\n return -1;\n };\n\n function findIndex(array, predicate) {\n return findIndexFn.call(array, predicate);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n var toString = objPrototype.toString;\n\n function isPlainObject(obj) {\n return toString.call(obj) === '[object Object]';\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return nodeType(obj) === 9;\n }\n\n function isNode(obj) {\n return nodeType(obj) >= 1;\n }\n\n function isElement(obj) {\n return nodeType(obj) === 1;\n }\n\n function nodeType(obj) {\n return !isWindow(obj) && isObject(obj) && obj.nodeType;\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false);\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value) ? value : value === 'true' || value === '1' || value === '' ? true : value === 'false' || value === '0' ? false : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return isNaN(number) ? false : number;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n var toArray = Array.from || function (value) {\n return arrPrototype.slice.call(value);\n };\n\n function toNode(element) {\n return toNodes(element)[0];\n }\n\n function toNodes(element) {\n return element && (isNode(element) ? [element] : toArray(element).filter(isNode)) || [];\n }\n\n function toWindow(element) {\n if (isWindow(element)) {\n return element;\n }\n\n element = toNode(element);\n return element ? (isDocument(element) ? element : element.ownerDocument).defaultView : window;\n }\n\n function toMs(time) {\n return !time ? 0 : endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000;\n }\n\n function isEqual(value, other) {\n return value === other || isObject(value) && isObject(other) && Object.keys(value).length === Object.keys(other).length && each(value, function (val, key) {\n return val === other[key];\n });\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp(a + \"|\" + b, 'g'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n args[len] = arguments[len + 1];\n }\n\n target = Object(target);\n\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n\n return target;\n };\n\n function last(array) {\n return array[array.length - 1];\n }\n\n function each(obj, cb) {\n for (var key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n\n return true;\n }\n\n function sortBy$1(array, prop) {\n return array.slice().sort(function (ref, ref$1) {\n var propA = ref[prop];\n if (propA === void 0) propA = 0;\n var propB = ref$1[prop];\n if (propB === void 0) propB = 0;\n return propA > propB ? 1 : propB > propA ? -1 : 0;\n });\n }\n\n function uniqueBy(array, prop) {\n var seen = new Set();\n return array.filter(function (ref) {\n var check = ref[prop];\n return seen.has(check) ? false : seen.add(check) || true;\n } // IE 11 does not return the Set object\n );\n }\n\n function clamp(number, min, max) {\n if (min === void 0) min = 0;\n if (max === void 0) max = 1;\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect() {\n var rects = [],\n len = arguments.length;\n\n while (len--) {\n rects[len] = arguments[len];\n }\n\n return [['bottom', 'top'], ['right', 'left']].every(function (ref) {\n var minProp = ref[0];\n var maxProp = ref[1];\n return Math.min.apply(Math, rects.map(function (ref) {\n var min = ref[minProp];\n return min;\n })) - Math.max.apply(Math, rects.map(function (ref) {\n var max = ref[maxProp];\n return max;\n })) > 0;\n });\n }\n\n function pointInRect(point, rect) {\n return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top;\n }\n\n var Dimensions = {\n ratio: function ratio(dimensions, prop, value) {\n var obj;\n var aProp = prop === 'width' ? 'height' : 'width';\n return obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj;\n },\n contain: function contain(dimensions, maxDimensions) {\n var this$1$1 = this;\n dimensions = assign({}, dimensions);\n each(dimensions, function (_, prop) {\n return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n });\n return dimensions;\n },\n cover: function cover(dimensions, maxDimensions) {\n var this$1$1 = this;\n dimensions = this.contain(dimensions, maxDimensions);\n each(dimensions, function (_, prop) {\n return dimensions = dimensions[prop] < maxDimensions[prop] ? this$1$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n });\n return dimensions;\n }\n };\n\n function _getIndex(i, elements, current, finite) {\n if (current === void 0) current = 0;\n if (finite === void 0) finite = false;\n elements = toNodes(elements);\n var length = elements.length;\n\n if (!length) {\n return -1;\n }\n\n i = isNumeric(i) ? toNumber(i) : i === 'next' ? current + 1 : i === 'previous' ? current - 1 : elements.indexOf(toNode(i));\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n return i < 0 ? i + length : i;\n }\n\n function memoize(fn) {\n var cache = Object.create(null);\n return function (key) {\n return cache[key] || (cache[key] = fn(key));\n };\n }\n\n function attr(element, name, value) {\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) {\n return element.hasAttribute(name);\n });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) {\n return element.forEach(function (element) {\n return element.hasAttribute(name) && element.removeAttribute(name);\n });\n });\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, \"data-\" + attribute]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n /* global DocumentTouch */\n\n\n var inBrowser = typeof window !== 'undefined';\n var isIE = inBrowser && /msie|trident/i.test(window.navigator.userAgent);\n var isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl';\n var hasTouchEvents = inBrowser && 'ontouchstart' in window;\n var hasPointerEvents = inBrowser && window.PointerEvent;\n var hasTouch = inBrowser && (hasTouchEvents || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints); // IE >=11\n\n var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';\n var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';\n var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';\n var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';\n var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';\n var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n\n function isVoidElement(element) {\n return toNodes(element).some(function (element) {\n return voidElements[element.tagName.toLowerCase()];\n });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) {\n return element.offsetWidth || element.offsetHeight || element.getClientRects().length;\n });\n }\n\n var selInput = 'input,select,textarea,button';\n\n function isInput(element) {\n return toNodes(element).some(function (element) {\n return matches(element, selInput);\n });\n }\n\n var selFocusable = selInput + \",a[href],[tabindex]\";\n\n function isFocusable(element) {\n return matches(element, selFocusable);\n }\n\n function parent(element) {\n element = toNode(element);\n return element && isElement(element.parentNode) && element.parentNode;\n }\n\n function filter$1(element, selector) {\n return toNodes(element).filter(function (element) {\n return matches(element, selector);\n });\n }\n\n var elProto = inBrowser ? Element.prototype : {};\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector || noop;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) {\n return matchesFn.call(element, selector);\n });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n } while (ancestor = parent(ancestor));\n };\n\n function closest(element, selector) {\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isElement(element) ? closestFn.call(element, selector) : toNodes(element).map(function (element) {\n return closest(element, selector);\n }).filter(Boolean);\n }\n\n function within(element, selector) {\n return !isString(selector) ? element === selector || (isDocument(selector) ? selector.documentElement : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || !!closest(element, selector);\n }\n\n function parents(element, selector) {\n var elements = [];\n\n while (element = parent(element)) {\n if (!selector || matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n\n function _children(element, selector) {\n element = toNode(element);\n var children = element ? toNodes(element.children) : [];\n return selector ? filter$1(children, selector) : children;\n }\n\n function index(element, ref) {\n return ref ? toNodes(element).indexOf(toNode(ref)) : _children(parent(element)).indexOf(element);\n }\n\n function query(selector, context) {\n return find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n return findAll(selector, getContext(selector, context));\n }\n\n function getContext(selector, context) {\n if (context === void 0) context = document;\n return isString(selector) && isContextSelector(selector) || isDocument(context) ? context : context.ownerDocument;\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if (context === void 0) context = document;\n\n if (!selector || !isString(selector)) {\n return selector;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n if (isContextSelector(selector)) {\n selector = splitSelector(selector).map(function (selector) {\n var ctx = context;\n\n if (selector[0] === '!') {\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(parent(context), selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n }\n\n if (selector[0] === '-') {\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n }\n\n if (!ctx) {\n return null;\n }\n\n return domPath(ctx) + \" \" + selector;\n }).filter(Boolean).join(',');\n context = document;\n }\n\n try {\n return context[queryFn](selector);\n } catch (e) {\n return null;\n }\n }\n\n var contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n var isContextSelector = memoize(function (selector) {\n return selector.match(contextSelectorRe);\n });\n var selectorRe = /.*?[^\\\\](?:,|$)/g;\n var splitSelector = memoize(function (selector) {\n return selector.match(selectorRe).map(function (selector) {\n return selector.replace(/,$/, '').trim();\n });\n });\n\n function domPath(element) {\n var names = [];\n\n while (element.parentNode) {\n var id = attr(element, 'id');\n\n if (id) {\n names.unshift(\"#\" + escape(id));\n break;\n } else {\n var tagName = element.tagName;\n\n if (tagName !== 'HTML') {\n tagName += \":nth-child(\" + (index(element) + 1) + \")\";\n }\n\n names.unshift(tagName);\n element = element.parentNode;\n }\n }\n\n return names.join(' > ');\n }\n\n var escapeFn = inBrowser && window.CSS && CSS.escape || function (css) {\n return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) {\n return \"\\\\\" + match;\n });\n };\n\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n function on() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var ref = getArgs(args);\n var targets = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n targets = toEventTargets(targets);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (useCapture && useCapture.self) {\n listener = selfFilter(listener);\n }\n\n if (selector) {\n listener = delegate(selector, listener);\n }\n\n useCapture = useCaptureFilter(useCapture);\n type.split(' ').forEach(function (type) {\n return targets.forEach(function (target) {\n return target.addEventListener(type, listener, useCapture);\n });\n });\n return function () {\n return off(targets, type, listener, useCapture);\n };\n }\n\n function off(targets, type, listener, useCapture) {\n if (useCapture === void 0) useCapture = false;\n useCapture = useCaptureFilter(useCapture);\n targets = toEventTargets(targets);\n type.split(' ').forEach(function (type) {\n return targets.forEach(function (target) {\n return target.removeEventListener(type, listener, useCapture);\n });\n });\n }\n\n function once() {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).reduce(function (notCanceled, target) {\n return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail));\n }, true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if (bubbles === void 0) bubbles = true;\n if (cancelable === void 0) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n\n return args;\n }\n\n function delegate(selector, listener) {\n var this$1$1 = this;\n return function (e) {\n var current = selector[0] === '>' ? findAll(selector, e.currentTarget).reverse().filter(function (element) {\n return within(e.target, element);\n })[0] : closest(e.target, selector);\n\n if (current) {\n e.current = current;\n listener.call(this$1$1, e);\n }\n };\n }\n\n function detail(listener) {\n return function (e) {\n return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e);\n };\n }\n\n function selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n\n function useCaptureFilter(options) {\n return options && isIE && !isBoolean(options) ? !!options.capture : options;\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target) ? target.map(toEventTarget).filter(Boolean) : isString(target) ? findAll(target) : isEventTarget(target) ? [target] : toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n }\n\n function getEventPos(e) {\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref.clientX;\n var y = ref.clientY;\n return {\n x: x,\n y: y\n };\n }\n /* global setImmediate */\n\n\n var Promise$1 = inBrowser && window.Promise || PromiseFn;\n\n var Deferred = function Deferred() {\n var this$1$1 = this;\n this.promise = new Promise$1(function (resolve, reject) {\n this$1$1.reject = reject;\n this$1$1.resolve = resolve;\n });\n };\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n var async = inBrowser && window.setImmediate || setTimeout;\n\n function PromiseFn(executor) {\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n var promise = this;\n\n try {\n executor(function (x) {\n promise.resolve(x);\n }, function (r) {\n promise.reject(r);\n });\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(x, function (x) {\n if (!called) {\n promise.resolve(x);\n }\n\n called = true;\n }, function (r) {\n if (!called) {\n promise.reject(r);\n }\n\n called = true;\n });\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1$1 = this;\n async(function () {\n if (this$1$1.state !== PENDING) {\n while (this$1$1.deferred.length) {\n var ref = this$1$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1$1.value));\n } else {\n resolve(this$1$1.value);\n }\n } else if (this$1$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1$1.value));\n } else {\n reject(this$1$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1$1 = this;\n return new PromiseFn(function (resolve, reject) {\n this$1$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n return Promise$1.resolve().then(function () {\n return env.beforeSend(env);\n }).then(function () {\n return send(url, env);\n });\n }\n\n function send(url, env) {\n return new Promise$1(function (resolve, reject) {\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n xhr[prop] = env[prop];\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n // IE 11 does not support responseType 'json'\n if (env.responseType === 'json' && isString(xhr.response)) {\n xhr = assign(copyXhr(xhr), {\n response: JSON.parse(xhr.response)\n });\n }\n\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n });\n on(xhr, 'error', function () {\n return reject(assign(Error('Network Error'), {\n xhr: xhr\n }));\n });\n on(xhr, 'timeout', function () {\n return reject(assign(Error('Network Timeout'), {\n xhr: xhr\n }));\n });\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n return new Promise$1(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = function (e) {\n return reject(e);\n };\n\n img.onload = function () {\n return resolve(img);\n };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n }\n\n function copyXhr(source) {\n var target = {};\n\n for (var key in source) {\n target[key] = source[key];\n }\n\n return target;\n }\n\n function ready(fn) {\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n once(document, 'DOMContentLoaded', fn);\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = $(parent);\n return isUndefined(html) ? parent.innerHTML : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n parent = $(parent);\n\n if (parent.hasChildNodes()) {\n return insertNodes(element, function (element) {\n return parent.insertBefore(element, parent.firstChild);\n });\n } else {\n return append(parent, element);\n }\n }\n\n function append(parent, element) {\n parent = $(parent);\n return insertNodes(element, function (element) {\n return parent.appendChild(element);\n });\n }\n\n function before(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) {\n return ref.parentNode.insertBefore(element, ref);\n });\n }\n\n function after(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) {\n return ref.nextSibling ? before(ref.nextSibling, element) : append(ref.parentNode, element);\n });\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element ? 'length' in element ? toNodes(element).map(fn) : fn(element) : null;\n }\n\n function remove$1(element) {\n toNodes(element).forEach(function (element) {\n return element.parentNode && element.parentNode.removeChild(element);\n });\n }\n\n function wrapAll(element, structure) {\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) {\n return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure);\n }));\n }\n\n function unwrap(element) {\n toNodes(element).map(parent).filter(function (value, index, self) {\n return self.indexOf(value) === index;\n }).forEach(function (parent) {\n before(parent, parent.childNodes);\n remove$1(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n var matches = singleTagRe.exec(html);\n\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n }\n\n function apply$1(node, fn) {\n if (!isElement(node)) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n\n while (node) {\n var next = node.nextElementSibling;\n apply$1(node, fn);\n node = next;\n }\n }\n\n function $(selector, context) {\n return isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n }\n\n function $$(selector, context) {\n return isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n }\n\n function isHtml(str) {\n return isString(str) && (str[0] === '<' || str.match(/^\\s* 0) {\n args[len] = arguments[len + 1];\n }\n\n apply(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n args[len] = arguments[len + 1];\n }\n\n apply(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', function (value) {\n return (value || '').replace(new RegExp(\"\\\\b\" + cls + \"\\\\b\", 'g'), '');\n });\n }\n\n function replaceClass(element) {\n var args = [],\n len = arguments.length - 1;\n\n while (len-- > 0) {\n args[len] = arguments[len + 1];\n }\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n var assign;\n assign = getClasses(cls), cls = assign[0];\n var nodes = toNodes(element);\n\n for (var n = 0; n < nodes.length; n++) {\n if (cls && nodes[n].classList.contains(cls)) {\n return true;\n }\n }\n\n return false;\n }\n\n function toggleClass(element, cls, force) {\n cls = getClasses(cls);\n var nodes = toNodes(element);\n\n for (var n = 0; n < nodes.length; n++) {\n var list = nodes[n].classList;\n\n for (var i = 0; i < cls.length; i++) {\n if (isUndefined(force)) {\n list.toggle(cls[i]);\n } else if (supports.Force) {\n list.toggle(cls[i], !!force);\n } else {\n list[force ? 'add' : 'remove'](cls[i]);\n }\n }\n }\n }\n\n function apply(element, args, fn) {\n var ref;\n args = args.reduce(function (args, arg) {\n return args.concat(getClasses(arg));\n }, []);\n var nodes = toNodes(element);\n\n var loop = function loop(n) {\n if (supports.Multiple) {\n (ref = nodes[n].classList)[fn].apply(ref, args);\n } else {\n args.forEach(function (cls) {\n return nodes[n].classList[fn](cls);\n });\n }\n };\n\n for (var n = 0; n < nodes.length; n++) {\n loop(n);\n }\n }\n\n function getClasses(str) {\n return String(str).split(/\\s|,/).filter(Boolean);\n } // IE 11\n\n\n var supports = {\n get Multiple() {\n return this.get('Multiple');\n },\n\n get Force() {\n return this.get('Force');\n },\n\n get: function get(key) {\n var ref = document.createElement('_');\n var classList = ref.classList;\n classList.add('a', 'b');\n classList.toggle('c', false);\n supports = {\n Multiple: classList.contains('b'),\n Force: !classList.contains('c')\n };\n return supports[key];\n }\n };\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value, priority) {\n if (priority === void 0) priority = '';\n return toNodes(element).map(function (element) {\n if (isString(property)) {\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && !isNumber(value)) {\n element.style.removeProperty(property);\n } else {\n element.style.setProperty(property, isNumeric(value) && !cssNumber[property] ? value + \"px\" : value, priority);\n }\n } else if (isArray(property)) {\n var styles = getStyles(element);\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n } else if (isObject(property)) {\n priority = value;\n each(property, function (value, property) {\n return css(element, property, value, priority);\n });\n }\n\n return element;\n })[0];\n }\n\n function getStyles(element, pseudoElt) {\n return toWindow(element).getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var parseCssVar = memoize(function (name) {\n /* usage in css: .uk-name:before { content:\"xyz\" } */\n var element = append(document.documentElement, fragment('
'));\n addClass(element, \"uk-\" + name);\n var value = getStyle(element, 'content', ':before');\n remove$1(element);\n return value;\n });\n var propertyRe = /^\\s*([\"'])?(.*?)\\1\\s*$/;\n\n function getCssVar(name) {\n return (isIE ? parseCssVar(name) : getStyles(document.documentElement).getPropertyValue(\"--uk-\" + name)).replace(propertyRe, '$2');\n } // https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-setproperty\n\n\n var propName = memoize(function (name) {\n return vendorPropName(name);\n });\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n\n function vendorPropName(name) {\n name = hyphenate(name);\n var ref = document.documentElement;\n var style = ref.style;\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length,\n prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + cssPrefixes[i] + \"-\" + name;\n\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if (duration === void 0) duration = 400;\n if (timing === void 0) timing = 'linear';\n return Promise$1.all(toNodes(element).map(function (element) {\n return new Promise$1(function (resolve, reject) {\n for (var name in props) {\n var value = css(element, name);\n\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () {\n return trigger(element, 'transitionend');\n }, duration);\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n transitionProperty: '',\n transitionDuration: '',\n transitionTimingFunction: ''\n });\n type === 'transitioncanceled' ? reject() : resolve(element);\n }, {\n self: true\n });\n addClass(element, 'uk-transition');\n css(element, assign({\n transitionProperty: Object.keys(props).map(propName).join(','),\n transitionDuration: duration + \"ms\",\n transitionTimingFunction: timing\n }, props));\n });\n }));\n }\n\n var Transition = {\n start: transition,\n stop: function stop(element) {\n trigger(element, 'transitionend');\n return Promise$1.resolve();\n },\n cancel: function cancel(element) {\n trigger(element, 'transitioncanceled');\n },\n inProgress: function inProgress(element) {\n return hasClass(element, 'uk-transition');\n }\n };\n var animationPrefix = 'uk-animation-';\n\n function animate$1(element, animation, duration, origin, out) {\n if (duration === void 0) duration = 200;\n return Promise$1.all(toNodes(element).map(function (element) {\n return new Promise$1(function (resolve, reject) {\n trigger(element, 'animationcanceled');\n var timer = setTimeout(function () {\n return trigger(element, 'animationend');\n }, duration);\n once(element, 'animationend animationcanceled', function (ref) {\n var type = ref.type;\n clearTimeout(timer);\n type === 'animationcanceled' ? reject() : resolve(element);\n css(element, 'animationDuration', '');\n removeClasses(element, animationPrefix + \"\\\\S*\");\n }, {\n self: true\n });\n css(element, 'animationDuration', duration + \"ms\");\n addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter'));\n\n if (startsWith(animation, animationPrefix)) {\n origin && addClass(element, \"uk-transform-origin-\" + origin);\n out && addClass(element, animationPrefix + \"reverse\");\n }\n });\n }));\n }\n\n var _inProgress = new RegExp(animationPrefix + \"(enter|leave)\");\n\n var Animation = {\n in: animate$1,\n out: function out(element, animation, duration, origin) {\n return animate$1(element, animation, duration, origin, true);\n },\n inProgress: function inProgress(element) {\n return _inProgress.test(attr(element, 'class'));\n },\n cancel: function cancel(element) {\n trigger(element, 'animationcanceled');\n }\n };\n var dirs$1 = {\n width: ['left', 'right'],\n height: ['top', 'bottom']\n };\n\n function dimensions(element) {\n var rect = isElement(element) ? toNode(element).getBoundingClientRect() : {\n height: height(element),\n width: width(element),\n top: 0,\n left: 0\n };\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top,\n left: rect.left,\n bottom: rect.top + rect.height,\n right: rect.left + rect.width\n };\n }\n\n function offset(element, coordinates) {\n var currentOffset = dimensions(element);\n\n if (element) {\n var ref = toWindow(element);\n var pageYOffset = ref.pageYOffset;\n var pageXOffset = ref.pageXOffset;\n var offsetBy = {\n height: pageYOffset,\n width: pageXOffset\n };\n\n for (var dir in dirs$1) {\n for (var i in dirs$1[dir]) {\n currentOffset[dirs$1[dir][i]] += offsetBy[dir];\n }\n }\n }\n\n if (!coordinates) {\n return currentOffset;\n }\n\n var pos = css(element, 'position');\n each(css(element, ['left', 'top']), function (value, prop) {\n return css(element, prop, coordinates[prop] - currentOffset[prop] + toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value));\n });\n }\n\n function position(element) {\n var ref = offset(element);\n var top = ref.top;\n var left = ref.left;\n var ref$1 = toNode(element);\n var ref$1_ownerDocument = ref$1.ownerDocument;\n var body = ref$1_ownerDocument.body;\n var documentElement = ref$1_ownerDocument.documentElement;\n var offsetParent = ref$1.offsetParent;\n var parent = offsetParent || documentElement;\n\n while (parent && (parent === body || parent === documentElement) && css(parent, 'position') === 'static') {\n parent = parent.parentNode;\n }\n\n if (isElement(parent)) {\n var parentOffset = offset(parent);\n top -= parentOffset.top + toFloat(css(parent, 'borderTopWidth'));\n left -= parentOffset.left + toFloat(css(parent, 'borderLeftWidth'));\n }\n\n return {\n top: top - toFloat(css(element, 'marginTop')),\n left: left - toFloat(css(element, 'marginLeft'))\n };\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n element = toNode(element);\n\n do {\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = toWindow(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n } while (element = element.offsetParent);\n\n return offset;\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName = ucfirst(prop);\n return function (element, value) {\n if (isUndefined(value)) {\n if (isWindow(element)) {\n return element[\"inner\" + propName];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[\"offset\" + propName], doc[\"scroll\" + propName]);\n }\n\n element = toNode(element);\n value = css(element, prop);\n value = value === 'auto' ? element[\"offset\" + propName] : toFloat(value) || 0;\n return value - boxModelAdjust(element, prop);\n } else {\n return css(element, prop, !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px');\n }\n };\n }\n\n function boxModelAdjust(element, prop, sizing) {\n if (sizing === void 0) sizing = 'border-box';\n return css(element, 'boxSizing') === sizing ? dirs$1[prop].map(ucfirst).reduce(function (value, prop) {\n return value + toFloat(css(element, \"padding\" + prop)) + toFloat(css(element, \"border\" + prop + \"Width\"));\n }, 0) : 0;\n }\n\n function flipPosition(pos) {\n for (var dir in dirs$1) {\n for (var i in dirs$1[dir]) {\n if (dirs$1[dir][i] === pos) {\n return dirs$1[dir][1 - i];\n }\n }\n }\n\n return pos;\n }\n\n function toPx(value, property, element, offsetDim) {\n if (property === void 0) property = 'width';\n if (element === void 0) element = window;\n if (offsetDim === void 0) offsetDim = false;\n return isNumeric(value) ? +value : endsWith(value, 'vh') ? percent(height(toWindow(element)), value) : endsWith(value, 'vw') ? percent(width(toWindow(element)), value) : endsWith(value, '%') ? percent(offsetDim ? element[\"offset\" + ucfirst(property)] : dimensions(element)[property], value) : toFloat(value);\n }\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n\n var fastdom = {\n reads: [],\n writes: [],\n read: function read(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n write: function write(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n clear: function clear(task) {\n remove(this.reads, task);\n remove(this.writes, task);\n },\n flush: flush\n };\n\n function flush(recursion) {\n if (recursion === void 0) recursion = 1;\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0));\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(recursion + 1);\n }\n }\n\n var RECURSION_LIMIT = 4;\n\n function scheduleFlush(recursion) {\n if (fastdom.scheduled) {\n return;\n }\n\n fastdom.scheduled = true;\n\n if (recursion && recursion < RECURSION_LIMIT) {\n Promise$1.resolve().then(function () {\n return flush(recursion);\n });\n } else {\n requestAnimationFrame(function () {\n return flush();\n });\n }\n }\n\n function runTasks(tasks) {\n var task;\n\n while (task = tasks.shift()) {\n try {\n task();\n } catch (e) {\n console.error(e);\n }\n }\n }\n\n function remove(array, item) {\n var index = array.indexOf(item);\n return ~index && array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n positions: [],\n init: function init() {\n var this$1$1 = this;\n this.positions = [];\n var position;\n this.unbind = on(document, 'mousemove', function (e) {\n return position = getEventPos(e);\n });\n this.interval = setInterval(function () {\n if (!position) {\n return;\n }\n\n this$1$1.positions.push(position);\n\n if (this$1$1.positions.length > 5) {\n this$1$1.positions.shift();\n }\n }, 50);\n },\n cancel: function cancel() {\n this.unbind && this.unbind();\n this.interval && clearInterval(this.interval);\n },\n movesTo: function movesTo(target) {\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = target.getBoundingClientRect();\n var left = p.left;\n var right = p.right;\n var top = p.top;\n var bottom = p.bottom;\n var ref = this.positions;\n var prevPosition = ref[0];\n var position = last(this.positions);\n var path = [prevPosition, position];\n\n if (pointInRect(position, p)) {\n return false;\n }\n\n var diagonals = [[{\n x: left,\n y: top\n }, {\n x: right,\n y: bottom\n }], [{\n x: left,\n y: bottom\n }, {\n x: right,\n y: top\n }]];\n return diagonals.some(function (diagonal) {\n var intersection = intersect(path, diagonal);\n return intersection && pointInRect(intersection, p);\n });\n }\n }; // Inspired by http://paulbourke.net/geometry/pointlineplane/\n\n function intersect(ref, ref$1) {\n var ref_0 = ref[0];\n var x1 = ref_0.x;\n var y1 = ref_0.y;\n var ref_1 = ref[1];\n var x2 = ref_1.x;\n var y2 = ref_1.y;\n var ref$1_0 = ref$1[0];\n var x3 = ref$1_0.x;\n var y3 = ref$1_0.y;\n var ref$1_1 = ref$1[1];\n var x4 = ref$1_1.x;\n var y4 = ref$1_1.y;\n var denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); // Lines are parallel\n\n if (denominator === 0) {\n return false;\n }\n\n var ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator;\n\n if (ua < 0) {\n return false;\n } // Return an object with the x and y coordinates of the intersection\n\n\n return {\n x: x1 + ua * (x2 - x1),\n y: y1 + ua * (y2 - y1)\n };\n }\n\n var strats = {};\n strats.events = strats.created = strats.beforeConnect = strats.connected = strats.beforeDisconnect = strats.disconnected = strats.destroy = concatStrat; // args strategy\n\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n }; // update strategy\n\n\n strats.update = function (parentVal, childVal) {\n return sortBy$1(concatStrat(parentVal, isFunction(childVal) ? {\n read: childVal\n } : childVal), 'order');\n }; // property strategy\n\n\n strats.props = function (parentVal, childVal) {\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n }; // extend strategy\n\n\n strats.computed = strats.methods = function (parentVal, childVal) {\n return childVal ? parentVal ? assign({}, parentVal, childVal) : childVal : parentVal;\n }; // data strategy\n\n\n strats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal, isFunction(childVal) ? childVal.call(vm, vm) : childVal);\n } // concat strategy\n\n\n function concatStrat(parentVal, childVal) {\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n } // default strategy\n\n\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n if (args === void 0) args = [];\n\n try {\n return !options ? {} : startsWith(options, '{') ? JSON.parse(options) : args.length && !includes(options, ':') ? (obj = {}, obj[args[0]] = options, obj) : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n\n return options;\n }, {});\n } catch (e) {\n return {};\n }\n }\n\n function play(el) {\n if (isIFrame(el)) {\n call(el, {\n func: 'playVideo',\n method: 'play'\n });\n }\n\n if (isHTML5(el)) {\n try {\n el.play().catch(noop);\n } catch (e) {}\n }\n }\n\n function pause(el) {\n if (isIFrame(el)) {\n call(el, {\n func: 'pauseVideo',\n method: 'pause'\n });\n }\n\n if (isHTML5(el)) {\n el.pause();\n }\n }\n\n function mute(el) {\n if (isIFrame(el)) {\n call(el, {\n func: 'mute',\n method: 'setVolume',\n value: 0\n });\n }\n\n if (isHTML5(el)) {\n el.muted = true;\n }\n }\n\n function isVideo(el) {\n return isHTML5(el) || isIFrame(el);\n }\n\n function isHTML5(el) {\n return el && el.tagName === 'VIDEO';\n }\n\n function isIFrame(el) {\n return el && el.tagName === 'IFRAME' && (isYoutube(el) || isVimeo(el));\n }\n\n function isYoutube(el) {\n return !!el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n }\n\n function isVimeo(el) {\n return !!el.src.match(/vimeo\\.com\\/video\\/.*/);\n }\n\n function call(el, cmd) {\n enableApi(el).then(function () {\n return post(el, cmd);\n });\n }\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({\n event: 'command'\n }, cmd)), '*');\n } catch (e) {}\n }\n\n var stateKey$1 = '_ukPlayer';\n var counter = 0;\n\n function enableApi(el) {\n if (el[stateKey$1]) {\n return el[stateKey$1];\n }\n\n var youtube = isYoutube(el);\n var vimeo = isVimeo(el);\n var id = ++counter;\n var poller;\n return el[stateKey$1] = new Promise$1(function (resolve) {\n youtube && once(el, 'load', function () {\n var listener = function listener() {\n return post(el, {\n event: 'listening',\n id: id\n });\n };\n\n poller = setInterval(listener, 100);\n listener();\n });\n once(window, 'message', resolve, false, function (ref) {\n var data = ref.data;\n\n try {\n data = JSON.parse(data);\n return data && (youtube && data.id === id && data.event === 'onReady' || vimeo && Number(data.player_id) === id);\n } catch (e) {}\n });\n el.src = \"\" + el.src + (includes(el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : \"api=1&player_id=\" + id);\n }).then(function () {\n return clearInterval(poller);\n });\n }\n\n function isInView(element, offsetTop, offsetLeft) {\n if (offsetTop === void 0) offsetTop = 0;\n if (offsetLeft === void 0) offsetLeft = 0;\n\n if (!isVisible(element)) {\n return false;\n }\n\n return intersectRect.apply(void 0, scrollParents(element).map(function (parent) {\n var ref = offset(getViewport$1(parent));\n var top = ref.top;\n var left = ref.left;\n var bottom = ref.bottom;\n var right = ref.right;\n return {\n top: top - offsetTop,\n left: left - offsetLeft,\n bottom: bottom + offsetTop,\n right: right + offsetLeft\n };\n }).concat(offset(element)));\n }\n\n function scrollTop(element, top) {\n if (isWindow(element) || isDocument(element)) {\n element = getScrollingElement(element);\n } else {\n element = toNode(element);\n }\n\n element.scrollTop = top;\n }\n\n function scrollIntoView(element, ref) {\n if (ref === void 0) ref = {};\n var offsetBy = ref.offset;\n if (offsetBy === void 0) offsetBy = 0;\n var parents = isVisible(element) ? scrollParents(element) : [];\n return parents.reduce(function (fn, scrollElement, i) {\n var scrollTop = scrollElement.scrollTop;\n var scrollHeight = scrollElement.scrollHeight;\n var offsetHeight = scrollElement.offsetHeight;\n var maxScroll = scrollHeight - getViewportClientHeight(scrollElement);\n var ref = offset(parents[i - 1] || element);\n var elHeight = ref.height;\n var elTop = ref.top;\n var top = Math.ceil(elTop - offset(getViewport$1(scrollElement)).top - offsetBy + scrollTop);\n\n if (offsetBy > 0 && offsetHeight < elHeight + offsetBy) {\n top += offsetBy;\n } else {\n offsetBy = 0;\n }\n\n if (top > maxScroll) {\n offsetBy -= top - maxScroll;\n top = maxScroll;\n } else if (top < 0) {\n offsetBy -= top;\n top = 0;\n }\n\n return function () {\n return scrollTo(scrollElement, top - scrollTop).then(fn);\n };\n }, function () {\n return Promise$1.resolve();\n })();\n\n function scrollTo(element, top) {\n return new Promise$1(function (resolve) {\n var scroll = element.scrollTop;\n var duration = getDuration(Math.abs(top));\n var start = Date.now();\n\n (function step() {\n var percent = ease(clamp((Date.now() - start) / duration));\n scrollTop(element, scroll + top * percent); // scroll more if we have not reached our destination\n\n if (percent === 1) {\n resolve();\n } else {\n requestAnimationFrame(step);\n }\n })();\n });\n }\n\n function getDuration(dist) {\n return 40 * Math.pow(dist, .375);\n }\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n }\n\n function scrolledOver(element, startOffset, endOffset) {\n if (startOffset === void 0) startOffset = 0;\n if (endOffset === void 0) endOffset = 0;\n\n if (!isVisible(element)) {\n return 0;\n }\n\n var ref = scrollParents(element, /auto|scroll/, true);\n var scrollElement = ref[0];\n var scrollHeight = scrollElement.scrollHeight;\n var scrollTop = scrollElement.scrollTop;\n var viewportHeight = getViewportClientHeight(scrollElement);\n var maxScroll = scrollHeight - viewportHeight;\n var elementOffsetTop = offsetPosition(element)[0] - offsetPosition(scrollElement)[0];\n var start = Math.max(0, elementOffsetTop - viewportHeight + startOffset);\n var end = Math.min(maxScroll, elementOffsetTop + element.offsetHeight - endOffset);\n return clamp((scrollTop - start) / (end - start));\n }\n\n function scrollParents(element, overflowRe, scrollable) {\n if (overflowRe === void 0) overflowRe = /auto|scroll|hidden/;\n if (scrollable === void 0) scrollable = false;\n var scrollEl = getScrollingElement(element);\n var ancestors = parents(element).reverse();\n ancestors = ancestors.slice(ancestors.indexOf(scrollEl) + 1);\n var fixedIndex = findIndex(ancestors, function (el) {\n return css(el, 'position') === 'fixed';\n });\n\n if (~fixedIndex) {\n ancestors = ancestors.slice(fixedIndex);\n }\n\n return [scrollEl].concat(ancestors.filter(function (parent) {\n return overflowRe.test(css(parent, 'overflow')) && (!scrollable || parent.scrollHeight > getViewportClientHeight(parent));\n })).reverse();\n }\n\n function getViewport$1(scrollElement) {\n return scrollElement === getScrollingElement(scrollElement) ? window : scrollElement;\n } // iOS 12 returns as scrollingElement\n\n\n function getViewportClientHeight(scrollElement) {\n return (scrollElement === getScrollingElement(scrollElement) ? document.documentElement : scrollElement).clientHeight;\n }\n\n function getScrollingElement(element) {\n var ref = toWindow(element);\n var document = ref.document;\n return document.scrollingElement || document.documentElement;\n }\n\n var dirs = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function _positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n var flipped = {\n element: elAttach,\n target: targetAttach\n };\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = offset(element);\n var targetDim = offset(target);\n var position = targetDim;\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n if (flip) {\n var boundaries = scrollParents(element).map(getViewport$1);\n\n if (boundary && !includes(boundaries, boundary)) {\n boundaries.unshift(boundary);\n }\n\n boundaries = boundaries.map(function (el) {\n return offset(el);\n });\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n boundaries.some(function (boundary) {\n var elemOffset = elAttach[dir] === align ? -dim[prop] : elAttach[dir] === alignFlip ? dim[prop] : 0;\n var targetOffset = targetAttach[dir] === align ? targetDim[prop] : targetAttach[dir] === alignFlip ? -targetDim[prop] : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n return elAttach[dir] === 'center' && (apply(centerOffset, centerTargetOffset) || apply(-centerOffset, -centerTargetOffset)) || apply(elemOffset, targetOffset);\n }\n\n function apply(elemOffset, targetOffset) {\n var newVal = toFloat((position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4));\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset ? flipped[el][dir] : flipped[el][dir] === dirs[prop][1] ? dirs[prop][2] : dirs[prop][1];\n });\n return true;\n }\n }\n });\n });\n }\n\n offset(element, position);\n return flipped;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0]) ? pos.concat('center') : y.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n var util = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate$1,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n dimensions: dimensions,\n offset: offset,\n position: position,\n offsetPosition: offsetPosition,\n height: height,\n width: width,\n boxModelAdjust: boxModelAdjust,\n flipPosition: flipPosition,\n toPx: toPx,\n ready: ready,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: remove$1,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply$1,\n $: $,\n $$: $$,\n inBrowser: inBrowser,\n isIE: isIE,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerCancel: pointerCancel,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n isTouch: isTouch,\n getEventPos: getEventPos,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n selFocusable: selFocusable,\n isFocusable: isFocusable,\n parent: parent,\n filter: filter$1,\n matches: matches,\n closest: closest,\n within: within,\n parents: parents,\n children: _children,\n index: index,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n findIndex: findIndex,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isNode: isNode,\n isElement: isElement,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isEmpty: isEmpty,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toArray: toArray,\n toNode: toNode,\n toNodes: toNodes,\n toWindow: toWindow,\n toMs: toMs,\n isEqual: isEqual,\n swap: swap,\n assign: assign,\n last: last,\n each: each,\n sortBy: sortBy$1,\n uniqueBy: uniqueBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n getIndex: _getIndex,\n memoize: memoize,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n play: play,\n pause: pause,\n mute: mute,\n isVideo: isVideo,\n positionAt: _positionAt,\n Promise: Promise$1,\n Deferred: Deferred,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n escape: escape,\n css: css,\n getCssVar: getCssVar,\n propName: propName,\n isInView: isInView,\n scrollTop: scrollTop,\n scrollIntoView: scrollIntoView,\n scrolledOver: scrolledOver,\n scrollParents: scrollParents,\n getViewport: getViewport$1,\n getViewportClientHeight: getViewportClientHeight\n });\n\n function globalAPI(UIkit) {\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n options = options || {};\n var Super = this;\n\n var Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n Sub.super = Super;\n Sub.extend = Super.extend;\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n element = element ? toNode(element) : document.body;\n parents(element).reverse().forEach(function (element) {\n return update(element[DATA], e);\n });\n apply$1(element, function (element) {\n return update(element[DATA], e);\n });\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n get: function get() {\n return container || document.body;\n },\n set: function set(element) {\n container = $(element);\n }\n });\n\n function update(data, e) {\n if (!data) {\n return;\n }\n\n for (var name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n }\n }\n\n function hooksAPI(UIkit) {\n UIkit.prototype._callHook = function (hook) {\n var this$1$1 = this;\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) {\n return handler.call(this$1$1);\n });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computeds = {};\n\n this._initProps();\n\n this._callHook('beforeConnect');\n\n this._connected = true;\n\n this._initEvents();\n\n this._initObservers();\n\n this._callHook('connected');\n\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n this._disconnectObservers();\n\n this._unbindEvents();\n\n this._callHook('disconnected');\n\n this._connected = false;\n delete this._watch;\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1$1 = this;\n if (e === void 0) e = 'update';\n\n if (!this._connected) {\n return;\n }\n\n if (e === 'update' || e === 'resize') {\n this._callWatches();\n }\n\n if (!this.$options.update) {\n return;\n }\n\n if (!this._updates) {\n this._updates = new Set();\n fastdom.read(function () {\n if (this$1$1._connected) {\n runUpdates.call(this$1$1, this$1$1._updates);\n }\n\n delete this$1$1._updates;\n });\n }\n\n this._updates.add(e.type || e);\n };\n\n UIkit.prototype._callWatches = function () {\n var this$1$1 = this;\n\n if (this._watch) {\n return;\n }\n\n var initial = !hasOwn(this, '_watch');\n this._watch = fastdom.read(function () {\n if (this$1$1._connected) {\n runWatches.call(this$1$1, initial);\n }\n\n this$1$1._watch = null;\n });\n };\n\n function runUpdates(types) {\n var this$1$1 = this;\n var updates = this.$options.update;\n\n var loop = function loop(i) {\n var ref = updates[i];\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n if (!types.has('update') && (!events || !events.some(function (type) {\n return types.has(type);\n }))) {\n return;\n }\n\n var result = void 0;\n\n if (read) {\n result = read.call(this$1$1, this$1$1._data, types);\n\n if (result && isPlainObject(result)) {\n assign(this$1$1._data, result);\n }\n }\n\n if (write && result !== false) {\n fastdom.write(function () {\n return write.call(this$1$1, this$1$1._data, types);\n });\n }\n };\n\n for (var i = 0; i < updates.length; i++) {\n loop(i);\n }\n }\n\n function runWatches(initial) {\n var ref = this;\n var computed = ref.$options.computed;\n var values = assign({}, this._computeds);\n this._computeds = {};\n\n for (var key in computed) {\n var ref$1 = computed[key];\n var watch = ref$1.watch;\n var immediate = ref$1.immediate;\n\n if (watch && (initial && immediate || hasOwn(values, key) && !isEqual(values[key], this[key]))) {\n watch.call(this, this[key], values[key]);\n }\n }\n }\n }\n\n function stateAPI(UIkit) {\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n this._uid = uid++;\n\n this._initData();\n\n this._initMethods();\n\n this._initComputeds();\n\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n var ref = this.$options;\n var data = ref.data;\n if (data === void 0) data = {};\n\n for (var key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this[key] = methods[key].bind(this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n var ref = this.$options;\n var computed = ref.computed;\n this._computeds = {};\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._initProps = function (props) {\n var key;\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1$1 = this;\n this._events = [];\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n events.forEach(function (event) {\n if (hasOwn(event, 'handler')) {\n registerEvent(this$1$1, event);\n } else {\n for (var key in event) {\n registerEvent(this$1$1, event[key], key);\n }\n }\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) {\n return unbind();\n });\n\n delete this._events;\n };\n\n UIkit.prototype._initObservers = function () {\n this._observers = [initChildListObserver(this), initPropsObserver(this)];\n };\n\n UIkit.prototype._disconnectObservers = function () {\n this._observers.forEach(function (observer) {\n return observer && observer.disconnect();\n });\n };\n\n function getProps(opts, name) {\n var data$1 = {};\n var args = opts.args;\n if (args === void 0) args = [];\n var props = opts.props;\n if (props === void 0) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n var value = data(el, prop);\n\n if (isUndefined(value)) {\n continue;\n }\n\n value = props[key] === Boolean && value === '' ? true : coerce(props[key], value);\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$1[key] = value;\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n\n if (props[prop$1] !== undefined) {\n data$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n enumerable: true,\n get: function get() {\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n set: function set(value) {\n var _computeds = component._computeds;\n _computeds[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computeds[key])) {\n delete _computeds[key];\n }\n }\n });\n }\n\n function registerEvent(component, event, key) {\n if (!isPlainObject(event)) {\n event = {\n name: key,\n handler: event\n };\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var passive = event.passive;\n var delegate = event.delegate;\n var filter = event.filter;\n var self = event.self;\n el = isFunction(el) ? el.call(component) : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) {\n return registerEvent(component, assign({}, event, {\n el: el\n }), key);\n });\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n component._events.push(on(el, name, !delegate ? null : isString(delegate) ? delegate : delegate.call(component), isString(handler) ? component[handler] : handler.bind(component), {\n passive: passive,\n capture: capture,\n self: self\n }));\n }\n\n function notIn(options, key) {\n return options.every(function (arr) {\n return !arr || !hasOwn(arr, key);\n });\n }\n\n function coerce(type, value) {\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function toList(value) {\n return isArray(value) ? value : isString(value) ? value.split(/,(?![^(]*\\))/).map(function (value) {\n return isNumeric(value) ? toNumber(value) : toBoolean(value.trim());\n }) : [value];\n }\n\n function normalizeData(ref, ref$1) {\n var data = ref.data;\n var args = ref$1.args;\n var props = ref$1.props;\n if (props === void 0) props = {};\n data = isArray(data) ? !isEmpty(args) ? data.slice(0, args.length).reduce(function (data, value, index) {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n\n return data;\n }, {}) : undefined : data;\n\n if (data) {\n for (var key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else {\n data[key] = props[key] ? coerce(props[key], data[key]) : data[key];\n }\n }\n }\n\n return data;\n }\n\n function initChildListObserver(component) {\n var ref = component.$options;\n var el = ref.el;\n var observer = new MutationObserver(function () {\n return component.$emit();\n });\n observer.observe(el, {\n childList: true,\n subtree: true\n });\n return observer;\n }\n\n function initPropsObserver(component) {\n var $name = component.$name;\n var $options = component.$options;\n var $props = component.$props;\n var attrs = $options.attrs;\n var props = $options.props;\n var el = $options.el;\n\n if (!props || attrs === false) {\n return;\n }\n\n var attributes = isArray(attrs) ? attrs : Object.keys(props);\n var filter = attributes.map(function (key) {\n return hyphenate(key);\n }).concat($name);\n var observer = new MutationObserver(function (records) {\n var data = getProps($options, $name);\n\n if (records.some(function (ref) {\n var attributeName = ref.attributeName;\n var prop = attributeName.replace('data-', '');\n return (prop === $name ? attributes : [camelize(prop), camelize(attributeName)]).some(function (prop) {\n return !isUndefined(data[prop]) && data[prop] !== $props[prop];\n });\n })) {\n component.$reset();\n }\n });\n observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map(function (key) {\n return \"data-\" + key;\n }))\n });\n return observer;\n }\n }\n\n function instanceAPI(UIkit) {\n var DATA = UIkit.data;\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$mount = function (el) {\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if (removeEl === void 0) removeEl = false;\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove$1(this.$el);\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$update = function (element, e) {\n if (element === void 0) element = this.$el;\n UIkit.update(element, e);\n };\n\n UIkit.prototype.$getComponent = UIkit.getComponent;\n var componentName = memoize(function (name) {\n return UIkit.prefix + hyphenate(name);\n });\n Object.defineProperties(UIkit.prototype, {\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n $name: {\n get: function get() {\n return componentName(this.$options.name);\n }\n }\n });\n }\n\n function componentAPI(UIkit) {\n var DATA = UIkit.data;\n var components = {};\n\n UIkit.component = function (name, options) {\n var id = hyphenate(name);\n name = camelize(id);\n\n if (!options) {\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n }\n\n UIkit[name] = function (element, data) {\n var i = arguments.length,\n argsArray = Array(i);\n\n while (i--) {\n argsArray[i] = arguments[i];\n }\n\n var component = UIkit.component(name);\n return component.options.functional ? new component({\n data: isPlainObject(element) ? element : [].concat(argsArray)\n }) : !element ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (data) {\n instance.$destroy();\n } else {\n return instance;\n }\n }\n\n return new component({\n el: element,\n data: data\n });\n }\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n fastdom.read(function () {\n return UIkit[name](\"[uk-\" + id + \"],[data-uk-\" + id + \"]\");\n });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) {\n return element && element[DATA] || {};\n };\n\n UIkit.getComponent = function (element, name) {\n return UIkit.getComponents(element)[name];\n };\n\n UIkit.connect = function (node) {\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n }\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n }\n\n var getComponentName = memoize(function (attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-') ? camelize(attribute.replace('data-uk-', '').replace('uk-', '')) : false;\n });\n\n var UIkit = function UIkit(options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n UIkit.version = '3.11.1';\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n function Core(UIkit) {\n if (!inBrowser) {\n return;\n } // throttle 'resize'\n\n\n var pendingResize;\n\n var handleResize = function handleResize() {\n if (pendingResize) {\n return;\n }\n\n pendingResize = true;\n fastdom.write(function () {\n return pendingResize = false;\n });\n UIkit.update(null, 'resize');\n };\n\n on(window, 'load resize', handleResize);\n on(document, 'loadedmetadata load', handleResize, true);\n\n if ('ResizeObserver' in window) {\n new ResizeObserver(handleResize).observe(document.documentElement);\n } // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)\n\n\n var pending;\n on(window, 'scroll', function (e) {\n if (pending) {\n return;\n }\n\n pending = true;\n fastdom.write(function () {\n return pending = false;\n });\n UIkit.update(null, e.type);\n }, {\n passive: true,\n capture: true\n });\n var started = 0;\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n started++;\n css(document.documentElement, 'overflowX', 'hidden');\n setTimeout(function () {\n if (! --started) {\n css(document.documentElement, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n on(document, pointerDown, function (e) {\n if (!isTouch(e)) {\n return;\n } // Handle Swipe Gesture\n\n\n var pos = getEventPos(e);\n var target = 'tagName' in e.target ? e.target : parent(e.target);\n once(document, pointerUp + \" \" + pointerCancel + \" scroll\", function (e) {\n var ref = getEventPos(e);\n var x = ref.x;\n var y = ref.y; // swipe\n\n if (e.type !== 'scroll' && target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n setTimeout(function () {\n trigger(target, 'swipe');\n trigger(target, \"swipe\" + swipeDirection(pos.x, pos.y, x, y));\n });\n }\n });\n }, {\n passive: true\n });\n }\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? 'Left' : 'Right' : y1 - y2 > 0 ? 'Up' : 'Down';\n }\n\n function boot(UIkit) {\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!inBrowser || !window.MutationObserver) {\n return;\n }\n\n fastdom.read(function () {\n if (document.body) {\n apply$1(document.body, connect);\n }\n\n new MutationObserver(function (records) {\n return records.forEach(applyChildListMutation);\n }).observe(document, {\n childList: true,\n subtree: true\n });\n new MutationObserver(function (records) {\n return records.forEach(applyAttributeMutation);\n }).observe(document, {\n attributes: true,\n subtree: true\n });\n UIkit._initialized = true;\n });\n\n function applyChildListMutation(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply$1(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply$1(removedNodes[i$1], disconnect);\n }\n }\n\n function applyAttributeMutation(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n }\n }\n }\n\n var Class = {\n connected: function connected() {\n !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);\n }\n };\n var Togglable = {\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String\n },\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n clsEnter: 'uk-togglabe-enter',\n clsLeave: 'uk-togglabe-leave',\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n },\n computed: {\n hasAnimation: function hasAnimation(ref) {\n var animation = ref.animation;\n return !!animation[0];\n },\n hasTransition: function hasTransition(ref) {\n var animation = ref.animation;\n return this.hasAnimation && animation[0] === true;\n }\n },\n methods: {\n toggleElement: function toggleElement(targets, toggle, animate) {\n var this$1$1 = this;\n return new Promise$1(function (resolve) {\n return Promise$1.all(toNodes(targets).map(function (el) {\n var show = isBoolean(toggle) ? toggle : !this$1$1.isToggled(el);\n\n if (!trigger(el, \"before\" + (show ? 'show' : 'hide'), [this$1$1])) {\n return Promise$1.reject();\n }\n\n var promise = (isFunction(animate) ? animate : animate === false || !this$1$1.hasAnimation ? this$1$1._toggle : this$1$1.hasTransition ? toggleHeight(this$1$1) : toggleAnimation(this$1$1))(el, show);\n var cls = show ? this$1$1.clsEnter : this$1$1.clsLeave;\n addClass(el, cls);\n trigger(el, show ? 'show' : 'hide', [this$1$1]);\n\n var done = function done() {\n removeClass(el, cls);\n trigger(el, show ? 'shown' : 'hidden', [this$1$1]);\n this$1$1.$update(el);\n };\n\n return promise ? promise.then(done, function () {\n removeClass(el, cls);\n return Promise$1.reject();\n }) : done();\n })).then(resolve, noop);\n });\n },\n isToggled: function isToggled(el) {\n var assign;\n if (el === void 0) el = this.$el;\n assign = toNodes(el), el = assign[0];\n return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(' ')[0]) : isVisible(el);\n },\n _toggle: function _toggle(el, toggled) {\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n var changed;\n\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === el.hidden;\n changed && (el.hidden = !toggled);\n }\n\n $$('[autofocus]', el).some(function (el) {\n return isVisible(el) ? el.focus() || true : el.blur();\n });\n\n if (changed) {\n trigger(el, 'toggled', [toggled, this]);\n this.$update(el);\n }\n }\n }\n };\n\n function toggleHeight(ref) {\n var isToggled = ref.isToggled;\n var duration = ref.duration;\n var initProps = ref.initProps;\n var hideProps = ref.hideProps;\n var transition = ref.transition;\n var _toggle = ref._toggle;\n return function (el, show) {\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n Transition.cancel(el);\n\n if (!isToggled(el)) {\n _toggle(el, true);\n }\n\n height(el, ''); // Update child components first\n\n fastdom.flush();\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n return (show ? Transition.start(el, assign({}, initProps, {\n overflow: 'hidden',\n height: endHeight\n }), Math.round(duration * (1 - currentHeight / endHeight)), transition) : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () {\n return _toggle(el, false);\n })).then(function () {\n return css(el, initProps);\n });\n };\n }\n\n function toggleAnimation(cmp) {\n return function (el, show) {\n Animation.cancel(el);\n var animation = cmp.animation;\n var duration = cmp.duration;\n var _toggle = cmp._toggle;\n\n if (show) {\n _toggle(el, true);\n\n return Animation.in(el, animation[0], duration, cmp.origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(function () {\n return _toggle(el, false);\n });\n };\n }\n\n var Accordion = {\n mixins: [Class, Togglable],\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String,\n offset: Number\n },\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease',\n offset: 0\n },\n computed: {\n items: {\n get: function get(ref, $el) {\n var targets = ref.targets;\n return $$(targets, $el);\n },\n watch: function watch(items, prev) {\n var this$1$1 = this;\n items.forEach(function (el) {\n return hide($(this$1$1.content, el), !hasClass(el, this$1$1.clsOpen));\n });\n\n if (prev || hasClass(items, this.clsOpen)) {\n return;\n }\n\n var active = this.active !== false && items[Number(this.active)] || !this.collapsible && items[0];\n\n if (active) {\n this.toggle(active, false);\n }\n },\n immediate: true\n },\n toggles: function toggles(ref) {\n var toggle = ref.toggle;\n return this.items.map(function (item) {\n return $(toggle, item);\n });\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.targets + \" \" + this.$props.toggle;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.toggle(index(this.toggles, e.current));\n }\n }],\n methods: {\n toggle: function toggle(item, animate) {\n var this$1$1 = this;\n var items = [this.items[_getIndex(item, this.items)]];\n var activeItems = filter$1(this.items, \".\" + this.clsOpen);\n\n if (!this.multiple && !includes(activeItems, items[0])) {\n items = items.concat(activeItems);\n }\n\n if (!this.collapsible && activeItems.length < 2 && !filter$1(items, \":not(.\" + this.clsOpen + \")\").length) {\n return;\n }\n\n items.forEach(function (el) {\n return this$1$1.toggleElement(el, !hasClass(el, this$1$1.clsOpen), function (el, show) {\n toggleClass(el, this$1$1.clsOpen, show);\n attr($(this$1$1.$props.toggle, el), 'aria-expanded', show);\n var content = $(\"\" + (el._wrapper ? '> * ' : '') + this$1$1.content, el);\n\n if (animate === false || !this$1$1.hasTransition) {\n hide(content, !show);\n return;\n }\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, \"\");\n }\n\n hide(content, false);\n return toggleHeight(this$1$1)(el._wrapper, show).then(function () {\n hide(content, !show);\n delete el._wrapper;\n unwrap(content);\n\n if (show) {\n var toggle = $(this$1$1.$props.toggle, el);\n\n if (!isInView(toggle)) {\n scrollIntoView(toggle, {\n offset: this$1$1.offset\n });\n }\n }\n });\n });\n });\n }\n }\n };\n\n function hide(el, hide) {\n el && (el.hidden = hide);\n }\n\n var alert = {\n mixins: [Class, Togglable],\n args: 'animation',\n props: {\n close: String\n },\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({\n opacity: 0\n }, Togglable.data.hideProps)\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.selClose;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.close();\n }\n }],\n methods: {\n close: function close() {\n var this$1$1 = this;\n this.toggleElement(this.$el).then(function () {\n return this$1$1.$destroy(true);\n });\n }\n }\n };\n var Video = {\n args: 'autoplay',\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n data: {\n automute: false,\n autoplay: true\n },\n computed: {\n inView: function inView(ref) {\n var autoplay = ref.autoplay;\n return autoplay === 'inview';\n }\n },\n connected: function connected() {\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n if (this.automute) {\n mute(this.$el);\n }\n },\n update: {\n read: function read() {\n if (!isVideo(this.$el)) {\n return false;\n }\n\n return {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n write: function write(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n if (!visible || this.inView && !inView) {\n pause(this.$el);\n } else if (this.autoplay === true || this.inView && inView) {\n play(this.$el);\n }\n },\n events: ['resize', 'scroll']\n }\n };\n var cover = {\n mixins: [Video],\n props: {\n width: Number,\n height: Number\n },\n data: {\n automute: true\n },\n update: {\n read: function read() {\n var el = this.$el;\n var ref = getPositionedParent(el) || parent(el);\n var height = ref.offsetHeight;\n var width = ref.offsetWidth;\n var dim = Dimensions.cover({\n width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,\n height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight\n }, {\n width: width + (width % 2 ? 1 : 0),\n height: height + (height % 2 ? 1 : 0)\n });\n\n if (!dim.width || !dim.height) {\n return false;\n }\n\n return dim;\n },\n write: function write(ref) {\n var height = ref.height;\n var width = ref.width;\n css(this.$el, {\n height: height,\n width: width\n });\n },\n events: ['resize']\n }\n };\n\n function getPositionedParent(el) {\n while (el = parent(el)) {\n if (css(el, 'position') !== 'static') {\n return el;\n }\n }\n }\n\n var Container = {\n props: {\n container: Boolean\n },\n data: {\n container: true\n },\n computed: {\n container: function container(ref) {\n var container = ref.container;\n return container === true && this.$container || container && $(container);\n }\n }\n };\n var Position = {\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n data: {\n pos: \"bottom-\" + (isRtl ? 'right' : 'left'),\n flip: true,\n offset: false,\n clsPos: ''\n },\n computed: {\n pos: function pos(ref) {\n var pos = ref.pos;\n return pos.split('-').concat('center').slice(0, 2);\n },\n dir: function dir() {\n return this.pos[0];\n },\n align: function align() {\n return this.pos[1];\n }\n },\n methods: {\n positionAt: function positionAt(element, target, boundary) {\n removeClasses(element, this.clsPos + \"-(top|bottom|left|right)(-[a-z]+)?\");\n var ref = this;\n var offset$1 = ref.offset;\n var axis = this.getAxis();\n\n if (!isNumeric(offset$1)) {\n var node = $(offset$1);\n offset$1 = node ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom'] : 0;\n }\n\n 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;\n\n var x = ref$1.x;\n var y = ref$1.y;\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n toggleClass(element, this.clsPos + \"-\" + this.dir + \"-\" + this.align, this.offset === false);\n },\n getAxis: function getAxis() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n }\n };\n var active$1;\n var drop = {\n mixins: [Container, Position, Togglable],\n args: 'pos',\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: true,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n animation: ['uk-animation-fade'],\n cls: 'uk-open',\n container: false\n },\n computed: {\n boundary: function boundary(ref, $el) {\n var boundary = ref.boundary;\n return boundary === true ? window : query(boundary, $el);\n },\n clsDrop: function clsDrop(ref) {\n var clsDrop = ref.clsDrop;\n return clsDrop || \"uk-\" + this.$options.name;\n },\n clsPos: function clsPos() {\n return this.clsDrop;\n }\n },\n created: function created() {\n this.tracker = new MouseTracker();\n },\n connected: function connected() {\n addClass(this.$el, this.clsDrop);\n\n if (this.toggle && !this.target) {\n this.target = this.$create('toggle', query(this.toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n }).$el;\n attr(this.target, 'aria-haspopup', true);\n }\n },\n disconnected: function disconnected() {\n if (this.isActive()) {\n active$1 = null;\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return \".\" + this.clsDrop + \"-close\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.hide(false);\n }\n }, {\n name: 'click',\n delegate: function delegate() {\n return 'a[href^=\"#\"]';\n },\n handler: function handler(ref) {\n var defaultPrevented = ref.defaultPrevented;\n var hash = ref.current.hash;\n\n if (!defaultPrevented && hash && !within(hash, this.$el)) {\n this.hide(false);\n }\n }\n }, {\n name: 'beforescroll',\n handler: function handler() {\n this.hide(false);\n }\n }, {\n name: 'toggle',\n self: true,\n handler: function handler(e, toggle) {\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle.$el, false);\n }\n }\n }, {\n name: 'toggleshow',\n self: true,\n handler: function handler(e, toggle) {\n e.preventDefault();\n this.show(toggle.$el);\n }\n }, {\n name: 'togglehide',\n self: true,\n handler: function handler(e) {\n e.preventDefault();\n\n if (!matches(this.$el, ':focus,:hover')) {\n this.hide();\n }\n }\n }, {\n name: pointerEnter + \" focusin\",\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (!isTouch(e)) {\n this.clearTimers();\n }\n }\n }, {\n name: pointerLeave + \" focusout\",\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (!isTouch(e) && e.relatedTarget) {\n this.hide();\n }\n }\n }, {\n name: 'toggled',\n self: true,\n handler: function handler(e, toggled) {\n if (!toggled) {\n return;\n }\n\n this.clearTimers();\n this.position();\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n var this$1$1 = this;\n active$1 = this;\n this.tracker.init();\n once(this.$el, 'hide', on(document, pointerDown, function (ref) {\n var target = ref.target;\n return !within(target, this$1$1.$el) && once(document, pointerUp + \" \" + pointerCancel + \" scroll\", function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var type = ref.type;\n var newTarget = ref.target;\n\n if (!defaultPrevented && type === pointerUp && target === newTarget && !(this$1$1.target && within(target, this$1$1.target))) {\n this$1$1.hide(false);\n }\n }, true);\n }), {\n self: true\n });\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n if (e.keyCode === 27) {\n this$1$1.hide(false);\n }\n }), {\n self: true\n });\n }\n }, {\n name: 'beforehide',\n self: true,\n handler: function handler() {\n this.clearTimers();\n }\n }, {\n name: 'hide',\n handler: function handler(ref) {\n var target = ref.target;\n\n if (this.$el !== target) {\n active$1 = active$1 === null && within(target, this.$el) && this.isToggled() ? this : active$1;\n return;\n }\n\n active$1 = this.isActive() ? null : active$1;\n this.tracker.cancel();\n }\n }],\n update: {\n write: function write() {\n if (this.isToggled() && !hasClass(this.$el, this.clsEnter)) {\n this.position();\n }\n },\n events: ['resize']\n },\n methods: {\n show: function show(target, delay) {\n var this$1$1 = this;\n if (target === void 0) target = this.target;\n if (delay === void 0) delay = true;\n\n if (this.isToggled() && target && this.target && target !== this.target) {\n this.hide(false);\n }\n\n this.target = target;\n this.clearTimers();\n\n if (this.isActive()) {\n return;\n }\n\n if (active$1) {\n if (delay && active$1.isDelaying) {\n this.showTimer = setTimeout(this.show, 10);\n return;\n }\n\n var prev;\n\n while (active$1 && prev !== active$1 && !within(this.$el, active$1.$el)) {\n prev = active$1;\n active$1.hide(false);\n }\n }\n\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n }\n\n this.showTimer = setTimeout(function () {\n return this$1$1.toggleElement(this$1$1.$el, true);\n }, delay && this.delayShow || 0);\n },\n hide: function hide(delay) {\n var this$1$1 = this;\n if (delay === void 0) delay = true;\n\n var hide = function hide() {\n return this$1$1.toggleElement(this$1$1.$el, false, false);\n };\n\n this.clearTimers();\n this.isDelaying = getPositionedElements(this.$el).some(function (el) {\n return this$1$1.tracker.movesTo(el);\n });\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, 50);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n clearTimers: function clearTimers() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n isActive: function isActive() {\n return active$1 === this;\n },\n position: function position() {\n removeClass(this.$el, this.clsDrop + \"-stack\");\n toggleClass(this.$el, this.clsDrop + \"-boundary\", this.boundaryAlign);\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.target);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.boundary && this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, this.clsDrop + \"-stack\");\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.target, this.boundary);\n }\n }\n };\n\n function getPositionedElements(el) {\n var result = [];\n apply$1(el, function (el) {\n return css(el, 'position') !== 'static' && result.push(el);\n });\n return result;\n }\n\n var formCustom = {\n mixins: [Class],\n args: 'target',\n props: {\n target: Boolean\n },\n data: {\n target: false\n },\n computed: {\n input: function input(_, $el) {\n return $(selInput, $el);\n },\n state: function state() {\n return this.input.nextElementSibling;\n },\n target: function target(ref, $el) {\n var target = ref.target;\n return target && (target === true && parent(this.input) === $el && this.input.nextElementSibling || query(target, $el));\n }\n },\n update: function update() {\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0] ? input.files[0].name : matches(input, 'select') && (option = $$('option', input).filter(function (el) {\n return el.selected;\n })[0]) // eslint-disable-line prefer-destructuring\n ? option.textContent : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n },\n events: [{\n name: 'change',\n handler: function handler() {\n this.$update();\n }\n }, {\n name: 'reset',\n el: function el() {\n return closest(this.$el, 'form');\n },\n handler: function handler() {\n this.$update();\n }\n }]\n }; // Deprecated\n\n var gif = {\n update: {\n read: function read(data) {\n var inview = isInView(this.$el);\n\n if (!inview || data.isInView === inview) {\n return false;\n }\n\n data.isInView = inview;\n },\n write: function write() {\n this.$el.src = '' + this.$el.src; // force self-assign\n },\n events: ['scroll', 'resize']\n }\n };\n var Margin = {\n props: {\n margin: String,\n firstColumn: Boolean\n },\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n update: {\n read: function read() {\n var rows = getRows(this.$el.children);\n return {\n rows: rows,\n columns: getColumns(rows)\n };\n },\n write: function write(ref) {\n var columns = ref.columns;\n var rows = ref.rows;\n\n for (var i = 0; i < rows.length; i++) {\n for (var j = 0; j < rows[i].length; j++) {\n toggleClass(rows[i][j], this.margin, i !== 0);\n toggleClass(rows[i][j], this.firstColumn, !!~columns[0].indexOf(rows[i][j]));\n }\n }\n },\n events: ['resize']\n }\n };\n\n function getRows(items) {\n return sortBy(items, 'top', 'bottom');\n }\n\n function getColumns(rows) {\n var columns = [];\n\n for (var i = 0; i < rows.length; i++) {\n var sorted = sortBy(rows[i], 'left', 'right');\n\n for (var j = 0; j < sorted.length; j++) {\n columns[j] = !columns[j] ? sorted[j] : columns[j].concat(sorted[j]);\n }\n }\n\n return isRtl ? columns.reverse() : columns;\n }\n\n function sortBy(items, startProp, endProp) {\n var sorted = [[]];\n\n for (var i = 0; i < items.length; i++) {\n var el = items[i];\n\n if (!isVisible(el)) {\n continue;\n }\n\n var dim = getOffset(el);\n\n for (var j = sorted.length - 1; j >= 0; j--) {\n var current = sorted[j];\n\n if (!current[0]) {\n current.push(el);\n break;\n }\n\n var startDim = void 0;\n\n if (current[0].offsetParent === el.offsetParent) {\n startDim = getOffset(current[0]);\n } else {\n dim = getOffset(el, true);\n startDim = getOffset(current[0], true);\n }\n\n if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) {\n sorted.push([el]);\n break;\n }\n\n if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) {\n current.push(el);\n break;\n }\n\n if (j === 0) {\n sorted.unshift([el]);\n break;\n }\n }\n }\n\n return sorted;\n }\n\n function getOffset(element, offset) {\n var assign;\n if (offset === void 0) offset = false;\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n var offsetWidth = element.offsetWidth;\n\n if (offset) {\n assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1];\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n bottom: offsetTop + offsetHeight,\n right: offsetLeft + offsetWidth\n };\n }\n\n var grid = {\n extends: Margin,\n mixins: [Class],\n name: 'grid',\n props: {\n masonry: Boolean,\n parallax: Number\n },\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n connected: function connected() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n update: [{\n write: function write(ref) {\n var columns = ref.columns;\n toggleClass(this.$el, this.clsStack, columns.length < 2);\n },\n events: ['resize']\n }, {\n read: function read(data) {\n var columns = data.columns;\n var rows = data.rows; // Filter component makes elements positioned absolute\n\n if (!columns.length || !this.masonry && !this.parallax || positionedAbsolute(this.$el)) {\n data.translates = false;\n return false;\n }\n\n var translates = false;\n\n var nodes = _children(this.$el);\n\n var columnHeights = getColumnHeights(columns);\n var margin = getMarginTop(nodes, this.margin) * (rows.length - 1);\n var elHeight = Math.max.apply(Math, columnHeights) + margin;\n\n if (this.masonry) {\n columns = columns.map(function (column) {\n return sortBy$1(column, 'offsetTop');\n });\n translates = getTranslates(rows, columns);\n }\n\n var padding = Math.abs(this.parallax);\n\n if (padding) {\n padding = columnHeights.reduce(function (newPadding, hgt, i) {\n return Math.max(newPadding, hgt + margin + (i % 2 ? padding : padding / 8) - elHeight);\n }, 0);\n }\n\n return {\n padding: padding,\n columns: columns,\n translates: translates,\n height: translates ? elHeight : ''\n };\n },\n write: function write(ref) {\n var height = ref.height;\n var padding = ref.padding;\n css(this.$el, 'paddingBottom', padding || '');\n height !== false && css(this.$el, 'height', height);\n },\n events: ['resize']\n }, {\n read: function read(ref) {\n ref.height;\n\n if (positionedAbsolute(this.$el)) {\n return false;\n }\n\n return {\n scrolled: this.parallax ? scrolledOver(this.$el) * Math.abs(this.parallax) : false\n };\n },\n write: function write(ref) {\n var columns = ref.columns;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n if (scrolled === false && !translates) {\n return;\n }\n\n columns.forEach(function (column, i) {\n return column.forEach(function (el, j) {\n return css(el, 'transform', !scrolled && !translates ? '' : \"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\");\n });\n });\n },\n events: ['scroll', 'resize']\n }]\n };\n\n function positionedAbsolute(el) {\n return _children(el).some(function (el) {\n return css(el, 'position') === 'absolute';\n });\n }\n\n function getTranslates(rows, columns) {\n var rowHeights = rows.map(function (row) {\n return Math.max.apply(Math, row.map(function (el) {\n return el.offsetHeight;\n }));\n });\n return columns.map(function (elements) {\n var prev = 0;\n return elements.map(function (element, row) {\n return prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0;\n });\n });\n }\n\n function getMarginTop(nodes, cls) {\n var ref = nodes.filter(function (el) {\n return hasClass(el, cls);\n });\n var node = ref[0];\n return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft'));\n }\n\n function getColumnHeights(columns) {\n return columns.map(function (column) {\n return column.reduce(function (sum, el) {\n return sum + el.offsetHeight;\n }, 0);\n });\n } // IE 11 fix (min-height on a flex container won't apply to its flex items)\n\n\n var FlexBug = isIE ? {\n props: {\n selMinHeight: String\n },\n data: {\n selMinHeight: false,\n forceHeight: false\n },\n computed: {\n elements: function elements(ref, $el) {\n var selMinHeight = ref.selMinHeight;\n return selMinHeight ? $$(selMinHeight, $el) : [$el];\n }\n },\n update: [{\n read: function read() {\n css(this.elements, 'height', '');\n },\n order: -5,\n events: ['resize']\n }, {\n write: function write() {\n var this$1$1 = this;\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n\n if (height && (this$1$1.forceHeight || Math.round(height + boxModelAdjust(el, 'height', 'content-box')) >= el.offsetHeight)) {\n css(el, 'height', height);\n }\n });\n },\n order: 5,\n events: ['resize']\n }]\n } : {};\n var heightMatch = {\n mixins: [FlexBug],\n args: 'target',\n props: {\n target: String,\n row: Boolean\n },\n data: {\n target: '> *',\n row: true,\n forceHeight: true\n },\n computed: {\n elements: function elements(ref, $el) {\n var target = ref.target;\n return $$(target, $el);\n }\n },\n update: {\n read: function read() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match$1)\n };\n },\n write: function write(ref) {\n var rows = ref.rows;\n rows.forEach(function (ref) {\n var heights = ref.heights;\n var elements = ref.elements;\n return elements.forEach(function (el, i) {\n return css(el, 'minHeight', heights[i]);\n });\n });\n },\n events: ['resize']\n }\n };\n\n function match$1(elements) {\n if (elements.length < 2) {\n return {\n heights: [''],\n elements: elements\n };\n }\n\n var heights = elements.map(getHeight);\n var max = Math.max.apply(Math, heights);\n var hasMinHeight = elements.some(function (el) {\n return el.style.minHeight;\n });\n var hasShrunk = elements.some(function (el, i) {\n return !el.style.minHeight && heights[i] < max;\n });\n\n if (hasMinHeight && hasShrunk) {\n css(elements, 'minHeight', '');\n heights = elements.map(getHeight);\n max = Math.max.apply(Math, heights);\n }\n\n heights = elements.map(function (el, i) {\n return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max;\n });\n return {\n heights: heights,\n elements: elements\n };\n }\n\n function getHeight(element) {\n var style = false;\n\n if (!isVisible(element)) {\n style = element.style.display;\n css(element, 'display', 'block', 'important');\n }\n\n var height = dimensions(element).height - boxModelAdjust(element, 'height', 'content-box');\n\n if (style !== false) {\n css(element, 'display', style);\n }\n\n return height;\n }\n\n var heightViewport = {\n mixins: [FlexBug],\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n update: {\n read: function read(ref) {\n var prev = ref.minHeight;\n\n if (!isVisible(this.$el)) {\n return false;\n }\n\n var minHeight = '';\n var box = boxModelAdjust(this.$el, 'height', 'content-box');\n\n if (this.expand) {\n minHeight = height(window) - (dimensions(document.documentElement).height - dimensions(this.$el).height) - box || '';\n } else {\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = 'calc(100vh';\n\n if (this.offsetTop) {\n var ref$1 = offset(this.$el);\n var top = ref$1.top;\n minHeight += top > 0 && top < height(window) / 2 ? \" - \" + top + \"px\" : '';\n }\n\n if (this.offsetBottom === true) {\n minHeight += \" - \" + dimensions(this.$el.nextElementSibling).height + \"px\";\n } else if (isNumeric(this.offsetBottom)) {\n minHeight += \" - \" + this.offsetBottom + \"vh\";\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n minHeight += \" - \" + toFloat(this.offsetBottom) + \"px\";\n } else if (isString(this.offsetBottom)) {\n minHeight += \" - \" + dimensions(query(this.offsetBottom, this.$el)).height + \"px\";\n }\n\n minHeight += (box ? \" - \" + box + \"px\" : '') + \")\";\n }\n\n return {\n minHeight: minHeight,\n prev: prev\n };\n },\n write: function write(ref) {\n var minHeight = ref.minHeight;\n var prev = ref.prev;\n css(this.$el, {\n minHeight: minHeight\n });\n\n if (minHeight !== prev) {\n this.$update(this.$el, 'resize');\n }\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n },\n events: ['resize']\n }\n };\n var SVG = {\n args: 'src',\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n focusable: Boolean,\n // IE 11\n attributes: 'list'\n },\n data: {\n ratio: 1,\n include: ['style', 'class', 'focusable'],\n class: '',\n strokeAnimation: false\n },\n beforeConnect: function beforeConnect() {\n this.class += ' uk-svg';\n },\n connected: function connected() {\n var this$1$1 = this;\n var assign;\n\n if (!this.icon && includes(this.src, '#')) {\n assign = this.src.split('#'), this.src = assign[0], this.icon = assign[1];\n }\n\n this.svg = this.getSvg().then(function (el) {\n if (this$1$1._connected) {\n var svg = insertSVG(el, this$1$1.$el);\n\n if (this$1$1.svgEl && svg !== this$1$1.svgEl) {\n remove$1(this$1$1.svgEl);\n }\n\n this$1$1.applyAttributes(svg, el);\n this$1$1.$emit();\n return this$1$1.svgEl = svg;\n }\n }, noop);\n },\n disconnected: function disconnected() {\n var this$1$1 = this;\n this.svg.then(function (svg) {\n if (this$1$1._connected) {\n return;\n }\n\n if (isVoidElement(this$1$1.$el)) {\n this$1$1.$el.hidden = false;\n }\n\n remove$1(svg);\n this$1$1.svgEl = null;\n });\n this.svg = null;\n },\n update: {\n read: function read() {\n return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));\n },\n write: function write() {\n applyAnimation(this.svgEl);\n },\n type: ['resize']\n },\n methods: {\n getSvg: function getSvg() {\n var this$1$1 = this;\n return loadSVG(this.src).then(function (svg) {\n return parseSVG(svg, this$1$1.icon) || Promise$1.reject('SVG not found.');\n });\n },\n applyAttributes: function applyAttributes(el, ref) {\n var this$1$1 = this;\n\n for (var prop in this.$options.props) {\n if (includes(this.include, prop) && prop in this) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (var attribute in this.attributes) {\n var ref$1 = this.attributes[attribute].split(':', 2);\n var prop$1 = ref$1[0];\n var value = ref$1[1];\n attr(el, prop$1, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n var props = ['width', 'height'];\n var dimensions = props.map(function (prop) {\n return this$1$1[prop];\n });\n\n if (!dimensions.some(function (val) {\n return val;\n })) {\n dimensions = props.map(function (prop) {\n return attr(ref, prop);\n });\n }\n\n var viewBox = attr(ref, 'viewBox');\n\n if (viewBox && !dimensions.some(function (val) {\n return val;\n })) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach(function (val, i) {\n return attr(el, props[i], toFloat(val) * this$1$1.ratio || null);\n });\n }\n }\n };\n var loadSVG = memoize(function (src) {\n return new Promise$1(function (resolve, reject) {\n if (!src) {\n reject();\n return;\n }\n\n if (startsWith(src, 'data:')) {\n resolve(decodeURIComponent(src.split(',')[1]));\n } else {\n ajax(src).then(function (xhr) {\n return resolve(xhr.response);\n }, function () {\n return reject('SVG not found.');\n });\n }\n });\n });\n\n function parseSVG(svg, icon) {\n if (icon && includes(svg, '/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n if (!symbols[svg]) {\n symbols[svg] = {};\n symbolRe.lastIndex = 0;\n var match;\n\n while (match = symbolRe.exec(svg)) {\n symbols[svg][match[3]] = \"\";\n }\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n var length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(Math.max.apply(Math, [0].concat($$('[stroke]', el).map(function (stroke) {\n try {\n return stroke.getTotalLength();\n } catch (e) {\n return 0;\n }\n }))));\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n root.hidden = true;\n var next = root.nextElementSibling;\n return equals(el, next) ? next : after(root, el);\n }\n\n var last = root.lastElementChild;\n return equals(el, last) ? last : append(root, el);\n }\n\n function equals(el, other) {\n return isSVG(el) && isSVG(other) && innerHTML(el) === innerHTML(other);\n }\n\n function isSVG(el) {\n return el && el.tagName === 'svg';\n }\n\n function innerHTML(el) {\n return (el.innerHTML || new XMLSerializer().serializeToString(el).replace(/(.*?)<\\/svg>/g, '$1')).replace(/\\s/g, '');\n }\n\n var closeIcon = \"\";\n var closeLarge = \"\";\n var marker = \"\";\n var navbarToggleIcon = \"\";\n var overlayIcon = \"\";\n var paginationNext = \"\";\n var paginationPrevious = \"\";\n var searchIcon = \"\";\n var searchLarge = \"\";\n var searchNavbar = \"\";\n var slidenavNext = \"\";\n var slidenavNextLarge = \"\";\n var slidenavPrevious = \"\";\n var slidenavPreviousLarge = \"\";\n var spinner = \"\";\n var totop = \"\";\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n var Icon = {\n install: install$3,\n extends: SVG,\n args: 'icon',\n props: ['icon'],\n data: {\n include: ['focusable']\n },\n isIcon: true,\n beforeConnect: function beforeConnect() {\n addClass(this.$el, 'uk-icon');\n },\n methods: {\n getSvg: function getSvg() {\n var icon = getIcon(this.icon);\n\n if (!icon) {\n return Promise$1.reject('Icon not found.');\n }\n\n return Promise$1.resolve(icon);\n }\n }\n };\n var IconComponent = {\n args: false,\n extends: Icon,\n data: function data(vm) {\n return {\n icon: hyphenate(vm.constructor.options.name)\n };\n },\n beforeConnect: function beforeConnect() {\n addClass(this.$el, this.$name);\n }\n };\n var Slidenav = {\n extends: IconComponent,\n beforeConnect: function beforeConnect() {\n addClass(this.$el, 'uk-slidenav');\n },\n computed: {\n icon: function icon(ref, $el) {\n var icon = ref.icon;\n return hasClass($el, 'uk-slidenav-large') ? icon + \"-large\" : icon;\n }\n }\n };\n var Search = {\n extends: IconComponent,\n computed: {\n icon: function icon(ref, $el) {\n var icon = ref.icon;\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length ? 'search-large' : parents($el, '.uk-search-navbar').length ? 'search-navbar' : icon;\n }\n }\n };\n var Close = {\n extends: IconComponent,\n computed: {\n icon: function icon() {\n return \"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon');\n }\n }\n };\n var Spinner = {\n extends: IconComponent,\n connected: function connected() {\n var this$1$1 = this;\n this.svg.then(function (svg) {\n return svg && this$1$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1$1.ratio);\n });\n }\n };\n var parsed = {};\n\n function install$3(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n var added = isString(name) ? (obj = {}, obj[name] = svg, obj) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply$1(document.body, function (el) {\n return each(UIkit.getComponents(el), function (cmp) {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n });\n });\n }\n };\n }\n\n function getIcon(icon) {\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $((icons[applyRtl(icon)] || icons[icon]).trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var img = {\n args: 'dataSrc',\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n data: {\n dataSrc: '',\n dataSrcset: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: '50vw',\n target: false\n },\n computed: {\n cacheKey: function cacheKey(ref) {\n var dataSrc = ref.dataSrc;\n return this.$name + \".\" + dataSrc;\n },\n width: function width(ref) {\n var width = ref.width;\n var dataWidth = ref.dataWidth;\n return width || dataWidth;\n },\n height: function height(ref) {\n var height = ref.height;\n var dataHeight = ref.dataHeight;\n return height || dataHeight;\n },\n sizes: function sizes(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n return sizes || dataSizes;\n },\n isImg: function isImg(_, $el) {\n return _isImg($el);\n },\n target: {\n get: function get(ref) {\n var target = ref.target;\n return [this.$el].concat(queryAll(target, this.$el));\n },\n watch: function watch() {\n this.observe();\n }\n },\n offsetTop: function offsetTop(ref) {\n var offsetTop = ref.offsetTop;\n return toPx(offsetTop, 'height');\n },\n offsetLeft: function offsetLeft(ref) {\n var offsetLeft = ref.offsetLeft;\n return toPx(offsetLeft, 'width');\n }\n },\n connected: function connected() {\n if (!window.IntersectionObserver) {\n setSrcAttrs(this.$el, this.dataSrc, this.dataSrcset, this.sizes);\n return;\n }\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n this.observer = new IntersectionObserver(this.load, {\n rootMargin: this.offsetTop + \"px \" + this.offsetLeft + \"px\"\n });\n requestAnimationFrame(this.observe);\n },\n disconnected: function disconnected() {\n this.observer && this.observer.disconnect();\n },\n update: {\n read: function read(ref) {\n var this$1$1 = this;\n var image = ref.image;\n\n if (!this.observer) {\n return false;\n }\n\n if (!image && document.readyState === 'complete') {\n this.load(this.observer.takeRecords());\n }\n\n if (this.isImg) {\n return false;\n }\n\n image && image.then(function (img) {\n return img && img.currentSrc !== '' && setSrcAttrs(this$1$1.$el, currentSrc(img));\n });\n },\n write: function write(data) {\n if (this.dataSrcset && window.devicePixelRatio !== 1) {\n var bgSize = css(this.$el, 'backgroundSize');\n\n if (bgSize.match(/^(auto\\s?)+$/) || toFloat(bgSize) === data.bgSize) {\n data.bgSize = getSourceSize(this.dataSrcset, this.sizes);\n css(this.$el, 'backgroundSize', data.bgSize + \"px\");\n }\n }\n },\n events: ['resize']\n },\n methods: {\n load: function load(entries) {\n var this$1$1 = this; // Old chromium based browsers (UC Browser) did not implement `isIntersecting`\n\n if (!entries.some(function (entry) {\n return isUndefined(entry.isIntersecting) || entry.isIntersecting;\n })) {\n return;\n }\n\n this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n setSrcAttrs(this$1$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1$1.cacheKey] = currentSrc(img);\n return img;\n }, function (e) {\n return trigger(this$1$1.$el, new e.constructor(e.type, e));\n });\n this.observer.disconnect();\n },\n observe: function observe() {\n var this$1$1 = this;\n\n if (this._connected && !this._data.image) {\n this.target.forEach(function (el) {\n return this$1$1.observer.observe(el);\n });\n }\n }\n }\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n if (_isImg(el)) {\n var set = function set(prop, val) {\n return val && val !== el[prop] && (el[prop] = val);\n };\n\n set('sizes', sizes);\n set('srcset', srcset);\n set('src', src);\n } else if (src) {\n var change = !includes(el.style.backgroundImage, src);\n\n if (change) {\n css(el, 'backgroundImage', \"url(\" + escape(src) + \")\");\n trigger(el, createEvent('load', false));\n }\n }\n }\n\n function getPlaceholderImage(width, height, sizes) {\n var assign;\n\n if (sizes) {\n assign = Dimensions.ratio({\n width: width,\n height: height\n }, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height;\n }\n\n return \"data:image/svg+xml;utf8,\";\n }\n\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n\n function sizesToPixel(sizes) {\n var matches;\n sizesRe.lastIndex = 0;\n\n while (matches = sizesRe.exec(sizes)) {\n if (!matches[1] || window.matchMedia(matches[1]).matches) {\n matches = evaluateSize(matches[2]);\n break;\n }\n }\n\n return matches || '100vw';\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n\n function evaluateSize(size) {\n return startsWith(size, 'calc') ? size.slice(5, -1).replace(sizeRe, function (size) {\n return toPx(size);\n }).replace(/ /g, '').match(additionRe).reduce(function (a, b) {\n return a + +b;\n }, 0) : size;\n }\n\n var srcSetRe = /\\s+\\d+w\\s*(?:,|$)/g;\n\n function getSourceSize(srcset, sizes) {\n var srcSize = toPx(sizesToPixel(sizes));\n var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) {\n return a - b;\n });\n return descriptors.filter(function (size) {\n return size >= srcSize;\n })[0] || descriptors.pop() || '';\n }\n\n function _isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage; // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Media = {\n props: {\n media: Boolean\n },\n data: {\n media: false\n },\n computed: {\n matchMedia: function matchMedia() {\n var media = toMedia(this.media);\n return !media || window.matchMedia(media).matches;\n }\n }\n };\n\n function toMedia(value) {\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"breakpoint-\" + value.substr(1);\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? \"(min-width: \" + value + \"px)\" : false;\n }\n\n var leader = {\n mixins: [Class, Media],\n props: {\n fill: String\n },\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n computed: {\n fill: function fill(ref) {\n var fill = ref.fill;\n return fill || getCssVar('leader-fill-content');\n }\n },\n connected: function connected() {\n var assign;\n assign = wrapInner(this.$el, \"\"), this.wrapper = assign[0];\n },\n disconnected: function disconnected() {\n unwrap(this.wrapper.childNodes);\n },\n update: {\n read: function read(ref) {\n var changed = ref.changed;\n var width = ref.width;\n var prev = width;\n width = Math.floor(this.$el.offsetWidth / 2);\n return {\n width: width,\n fill: this.fill,\n changed: changed || prev !== width,\n hide: !this.matchMedia\n };\n },\n write: function write(data) {\n toggleClass(this.wrapper, this.clsHide, data.hide);\n\n if (data.changed) {\n data.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));\n }\n },\n events: ['resize']\n }\n };\n var active = [];\n var Modal = {\n mixins: [Class, Container, Togglable],\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n computed: {\n panel: function panel(ref, $el) {\n var selPanel = ref.selPanel;\n return $(selPanel, $el);\n },\n transitionElement: function transitionElement() {\n return this.panel;\n },\n bgClose: function bgClose(ref) {\n var bgClose = ref.bgClose;\n return bgClose && this.panel;\n }\n },\n beforeDisconnect: function beforeDisconnect() {\n if (includes(active, this)) {\n this.toggleElement(this.$el, false, false);\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.selClose;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.hide();\n }\n }, {\n name: 'toggle',\n self: true,\n handler: function handler(e, toggle) {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n\n if (this.isToggled() === includes(active, this)) {\n this.toggle();\n }\n }\n }, {\n name: 'beforeshow',\n self: true,\n handler: function handler(e) {\n if (includes(active, this)) {\n return false;\n }\n\n if (!this.stack && active.length) {\n Promise$1.all(active.map(function (modal) {\n return modal.hide();\n })).then(this.show);\n e.preventDefault();\n } else {\n active.push(this);\n }\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n var this$1$1 = this;\n var docEl = document.documentElement;\n\n if (width(window) > docEl.clientWidth && this.overlay) {\n css(document.body, 'overflowY', 'scroll');\n }\n\n if (this.stack) {\n css(this.$el, 'zIndex', toFloat(css(this.$el, 'zIndex')) + active.length);\n }\n\n addClass(docEl, this.clsPage);\n\n if (this.bgClose) {\n once(this.$el, 'hide', on(document, pointerDown, function (ref) {\n var target = ref.target;\n\n if (last(active) !== this$1$1 || this$1$1.overlay && !within(target, this$1$1.$el) || within(target, this$1$1.panel)) {\n return;\n }\n\n once(document, pointerUp + \" \" + pointerCancel + \" scroll\", function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var type = ref.type;\n var newTarget = ref.target;\n\n if (!defaultPrevented && type === pointerUp && target === newTarget) {\n this$1$1.hide();\n }\n }, true);\n }), {\n self: true\n });\n }\n\n if (this.escClose) {\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n if (e.keyCode === 27 && last(active) === this$1$1) {\n this$1$1.hide();\n }\n }), {\n self: true\n });\n }\n }\n }, {\n name: 'shown',\n self: true,\n handler: function handler() {\n if (!isFocusable(this.$el)) {\n attr(this.$el, 'tabindex', '-1');\n }\n\n if (!$(':focus', this.$el)) {\n this.$el.focus();\n }\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n var this$1$1 = this;\n\n if (includes(active, this)) {\n active.splice(active.indexOf(this), 1);\n }\n\n if (!active.length) {\n css(document.body, 'overflowY', '');\n }\n\n css(this.$el, 'zIndex', '');\n\n if (!active.some(function (modal) {\n return modal.clsPage === this$1$1.clsPage;\n })) {\n removeClass(document.documentElement, this.clsPage);\n }\n }\n }],\n methods: {\n toggle: function toggle() {\n return this.isToggled() ? this.hide() : this.show();\n },\n show: function show() {\n var this$1$1 = this;\n\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n return new Promise$1(function (resolve) {\n return requestAnimationFrame(function () {\n return this$1$1.show().then(resolve);\n });\n });\n }\n\n return this.toggleElement(this.$el, true, animate(this));\n },\n hide: function hide() {\n return this.toggleElement(this.$el, false, animate(this));\n }\n }\n };\n\n function animate(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n return function (el, show) {\n return new Promise$1(function (resolve, reject) {\n return once(el, 'show hide', function () {\n el._reject && el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n var off = once(transitionElement, 'transitionstart', function () {\n once(transitionElement, 'transitionend transitioncancel', resolve, {\n self: true\n });\n clearTimeout(timer);\n }, {\n self: true\n });\n var timer = setTimeout(function () {\n off();\n resolve();\n }, toMs(css(transitionElement, 'transitionDuration')));\n });\n }).then(function () {\n return delete el._reject;\n });\n };\n }\n\n var modal = {\n install: install$2,\n mixins: [Modal],\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n events: [{\n name: 'show',\n self: true,\n handler: function handler() {\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n }\n }]\n };\n\n function install$2(ref) {\n var modal = ref.modal;\n\n modal.dialog = function (content, options) {\n var dialog = modal(\"
\" + content + \"
\", options);\n dialog.show();\n on(dialog.$el, 'hidden', function () {\n return Promise$1.resolve().then(function () {\n return dialog.$destroy(true);\n });\n }, {\n self: true\n });\n return dialog;\n };\n\n modal.alert = function (message, options) {\n return openDialog(function (ref) {\n var labels = ref.labels;\n return \"
\" + (isString(message) ? message : html(message)) + \"
\";\n }, options, function (deferred) {\n return deferred.resolve();\n });\n };\n\n modal.confirm = function (message, options) {\n return openDialog(function (ref) {\n var labels = ref.labels;\n return \"
\" + (isString(message) ? message : html(message)) + \"
\";\n }, options, function (deferred) {\n return deferred.reject();\n });\n };\n\n modal.prompt = function (message, value, options) {\n return openDialog(function (ref) {\n var labels = ref.labels;\n return \"
\";\n }, options, function (deferred) {\n return deferred.resolve(null);\n }, function (dialog) {\n return $('input', dialog.$el).value;\n });\n };\n\n modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n function openDialog(tmpl, options, hideFn, submitFn) {\n options = assign({\n bgClose: false,\n escClose: true,\n labels: modal.labels\n }, options);\n var dialog = modal.dialog(tmpl(options), options);\n var deferred = new Deferred();\n var resolved = false;\n on(dialog.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n deferred.resolve(submitFn && submitFn(dialog));\n resolved = true;\n dialog.hide();\n });\n on(dialog.$el, 'hide', function () {\n return !resolved && hideFn(deferred);\n });\n deferred.promise.dialog = dialog;\n return deferred.promise;\n }\n }\n\n var nav = {\n extends: Accordion,\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n };\n var navItem = '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle';\n var navbar = {\n mixins: [Class, Container, FlexBug],\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n data: {\n dropdown: navItem,\n align: isRtl ? 'right' : 'left',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n forceHeight: true,\n selMinHeight: navItem,\n container: false\n },\n computed: {\n boundary: function boundary(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n return boundary === true || boundaryAlign ? $el : boundary;\n },\n dropbarAnchor: function dropbarAnchor(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n return query(dropbarAnchor, $el);\n },\n pos: function pos(ref) {\n var align = ref.align;\n return \"bottom-\" + align;\n },\n dropbar: {\n get: function get(ref) {\n var dropbar = ref.dropbar;\n\n if (!dropbar) {\n return null;\n }\n\n dropbar = this._dropbar || query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el);\n return dropbar ? dropbar : this._dropbar = $('
');\n },\n watch: function watch(dropbar) {\n addClass(dropbar, 'uk-navbar-dropbar');\n },\n immediate: true\n },\n dropContainer: function dropContainer(_, $el) {\n return this.container || $el;\n },\n dropdowns: {\n get: function get(ref, $el) {\n var this$1$1 = this;\n var clsDrop = ref.clsDrop;\n var dropdowns = $$(\".\" + clsDrop, $el);\n\n if (this.dropContainer !== $el) {\n $$(\".\" + clsDrop, this.dropContainer).forEach(function (el) {\n var dropdown = this$1$1.getDropdown(el);\n\n if (!includes(dropdowns, el) && dropdown && dropdown.target && within(dropdown.target, this$1$1.$el)) {\n dropdowns.push(el);\n }\n });\n }\n\n return dropdowns;\n },\n watch: function watch(dropdowns) {\n var this$1$1 = this;\n this.$create('drop', dropdowns.filter(function (el) {\n return !this$1$1.getDropdown(el);\n }), assign({}, this.$props, {\n boundary: this.boundary,\n pos: this.pos,\n offset: this.dropbar || this.offset\n }));\n },\n immediate: true\n },\n toggles: function toggles(ref, $el) {\n var dropdown = ref.dropdown;\n return $$(dropdown, $el);\n }\n },\n disconnected: function disconnected() {\n this.dropbar && remove$1(this.dropbar);\n delete this._dropbar;\n },\n events: [{\n name: 'mouseover focusin',\n delegate: function delegate() {\n return this.dropdown;\n },\n handler: function handler(ref) {\n var current = ref.current;\n var active = this.getActive();\n\n if (active && includes(active.mode, 'hover') && active.target && !within(active.target, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n }, {\n name: 'keydown',\n delegate: function delegate() {\n return this.dropdown;\n },\n handler: function handler(e) {\n var current = e.current;\n var keyCode = e.keyCode;\n var active = this.getActive();\n\n if (keyCode === keyMap.DOWN && hasAttr(current, 'aria-expanded')) {\n e.preventDefault();\n\n if (!active || active.target !== current) {\n current.click();\n once(this.dropContainer, 'show', function (ref) {\n var target = ref.target;\n return focusFirstFocusableElement(target);\n });\n } else {\n focusFirstFocusableElement(active.$el);\n }\n }\n\n handleNavItemNavigation(e, this.toggles, active);\n }\n }, {\n name: 'keydown',\n el: function el() {\n return this.dropContainer;\n },\n delegate: function delegate() {\n return \".\" + this.clsDrop;\n },\n handler: function handler(e) {\n var current = e.current;\n var keyCode = e.keyCode;\n\n if (!includes(this.dropdowns, current)) {\n return;\n }\n\n var active = this.getActive();\n var elements = $$(selFocusable, current);\n var i = findIndex(elements, function (el) {\n return matches(el, ':focus');\n });\n\n if (keyCode === keyMap.UP) {\n e.preventDefault();\n\n if (i > 0) {\n elements[i - 1].focus();\n }\n }\n\n if (keyCode === keyMap.DOWN) {\n e.preventDefault();\n\n if (i < elements.length - 1) {\n elements[i + 1].focus();\n }\n }\n\n if (keyCode === keyMap.ESC) {\n active && active.target && active.target.focus();\n }\n\n handleNavItemNavigation(e, this.toggles, active);\n }\n }, {\n name: 'mouseleave',\n el: function el() {\n return this.dropbar;\n },\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler() {\n var active = this.getActive();\n\n if (active && includes(active.mode, 'hover') && !this.dropdowns.some(function (el) {\n return matches(el, ':hover');\n })) {\n active.hide();\n }\n }\n }, {\n name: 'beforeshow',\n el: function el() {\n return this.dropContainer;\n },\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler() {\n if (!parent(this.dropbar)) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n }\n }, {\n name: 'show',\n el: function el() {\n return this.dropContainer;\n },\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler(_, ref) {\n var $el = ref.$el;\n var dir = ref.dir;\n\n if (!hasClass($el, this.clsDrop)) {\n return;\n }\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n\n this.clsDrop && addClass($el, this.clsDrop + \"-dropbar\");\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n }, {\n name: 'beforehide',\n el: function el() {\n return this.dropContainer;\n },\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler(e, ref) {\n var $el = ref.$el;\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n }, {\n name: 'hide',\n el: function el() {\n return this.dropContainer;\n },\n filter: function filter() {\n return this.dropbar;\n },\n handler: function handler(_, ref) {\n var $el = ref.$el;\n\n if (!hasClass($el, this.clsDrop)) {\n return;\n }\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }],\n methods: {\n getActive: function getActive() {\n return active$1 && within(active$1.target, this.$el) && active$1;\n },\n transitionTo: function transitionTo(newHeight, el) {\n var this$1$1 = this;\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n el = oldHeight < newHeight && el;\n css(el, 'clip', \"rect(0,\" + el.offsetWidth + \"px,\" + oldHeight + \"px,0)\");\n height(dropbar, oldHeight);\n Transition.cancel([el, dropbar]);\n return Promise$1.all([Transition.start(dropbar, {\n height: newHeight\n }, this.duration), Transition.start(el, {\n clip: \"rect(0,\" + el.offsetWidth + \"px,\" + newHeight + \"px,0)\"\n }, this.duration)]).catch(noop).then(function () {\n css(el, {\n clip: ''\n });\n this$1$1.$update(dropbar);\n });\n },\n getDropdown: function getDropdown(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n }\n };\n\n function handleNavItemNavigation(e, toggles, active) {\n var current = e.current;\n var keyCode = e.keyCode;\n var target = active && active.target || current;\n var i = toggles.indexOf(target); // Left\n\n if (keyCode === keyMap.LEFT && i > 0) {\n active && active.hide(false);\n toggles[i - 1].focus();\n } // Right\n\n\n if (keyCode === keyMap.RIGHT && i < toggles.length - 1) {\n active && active.hide(false);\n toggles[i + 1].focus();\n }\n\n if (keyCode === keyMap.TAB) {\n target.focus();\n active && active.hide(false);\n }\n }\n\n function focusFirstFocusableElement(el) {\n if (!$(':focus', el)) {\n var focusEl = $(selFocusable, el);\n\n if (focusEl) {\n focusEl.focus();\n }\n }\n }\n\n var keyMap = {\n TAB: 9,\n ESC: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n };\n var offcanvas = {\n mixins: [Modal],\n args: 'mode',\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close',\n container: false\n },\n computed: {\n clsFlip: function clsFlip(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n return flip ? clsFlip : '';\n },\n clsOverlay: function clsOverlay(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n return overlay ? clsOverlay : '';\n },\n clsMode: function clsMode(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n return clsMode + \"-\" + mode;\n },\n clsSidebarAnimation: function clsSidebarAnimation(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n clsContainerAnimation: function clsContainerAnimation(ref) {\n var mode = ref.mode;\n var clsContainerAnimation = ref.clsContainerAnimation;\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n transitionElement: function transitionElement(ref) {\n var mode = ref.mode;\n return mode === 'reveal' ? parent(this.panel) : this.panel;\n }\n },\n update: {\n read: function read() {\n if (this.isToggled() && !isVisible(this.$el)) {\n this.hide();\n }\n },\n events: ['resize']\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return 'a[href^=\"#\"]';\n },\n handler: function handler(ref) {\n var hash = ref.current.hash;\n var defaultPrevented = ref.defaultPrevented;\n\n if (!defaultPrevented && hash && $(hash, document.body)) {\n this.hide();\n }\n }\n }, {\n name: 'touchstart',\n passive: true,\n el: function el() {\n return this.panel;\n },\n handler: function handler(ref) {\n var targetTouches = ref.targetTouches;\n\n if (targetTouches.length === 1) {\n this.clientY = targetTouches[0].clientY;\n }\n }\n }, {\n name: 'touchmove',\n self: true,\n passive: false,\n filter: function filter() {\n return this.overlay;\n },\n handler: function handler(e) {\n e.cancelable && e.preventDefault();\n }\n }, {\n name: 'touchmove',\n passive: false,\n el: function el() {\n return this.panel;\n },\n handler: function handler(e) {\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n var clientY = e.targetTouches[0].clientY - this.clientY;\n var ref = this.panel;\n var scrollTop = ref.scrollTop;\n var scrollHeight = ref.scrollHeight;\n var clientHeight = ref.clientHeight;\n\n if (clientHeight >= scrollHeight || scrollTop === 0 && clientY > 0 || scrollHeight - scrollTop <= clientHeight && clientY < 0) {\n e.cancelable && e.preventDefault();\n }\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n if (this.mode === 'reveal' && !hasClass(parent(this.panel), this.clsMode)) {\n wrapAll(this.panel, '
');\n addClass(parent(this.panel), this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');\n addClass(document.body, this.clsContainer, this.clsFlip);\n css(document.body, 'touch-action', 'pan-y pinch-zoom');\n css(this.$el, 'display', 'block');\n addClass(this.$el, this.clsOverlay);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n height(document.body); // force reflow\n\n addClass(document.body, this.clsContainerAnimation);\n this.clsContainerAnimation && suppressUserScale();\n }\n }, {\n name: 'hide',\n self: true,\n handler: function handler() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, 'touch-action', '');\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n css(document.documentElement, 'overflowY', '');\n }\n }, {\n name: 'swipeLeft swipeRight',\n handler: function handler(e) {\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n }\n }]\n }; // Chrome in responsive mode zooms page upon opening offcanvas\n\n function suppressUserScale() {\n getViewport().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '');\n }\n\n var overflowAuto = {\n mixins: [Class],\n props: {\n selContainer: String,\n selContent: String,\n minHeight: Number\n },\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog',\n minHeight: 150\n },\n computed: {\n container: function container(ref, $el) {\n var selContainer = ref.selContainer;\n return closest($el, selContainer);\n },\n content: function content(ref, $el) {\n var selContent = ref.selContent;\n return closest($el, selContent);\n }\n },\n connected: function connected() {\n css(this.$el, 'minHeight', this.minHeight);\n },\n update: {\n read: function read() {\n if (!this.content || !this.container || !isVisible(this.$el)) {\n return false;\n }\n\n return {\n current: toFloat(css(this.$el, 'maxHeight')),\n max: Math.max(this.minHeight, height(this.container) - (dimensions(this.content).height - height(this.$el)))\n };\n },\n write: function write(ref) {\n var current = ref.current;\n var max = ref.max;\n css(this.$el, 'maxHeight', max);\n\n if (Math.round(current) !== Math.round(max)) {\n trigger(this.$el, 'resize');\n }\n },\n events: ['resize']\n }\n };\n var responsive = {\n props: ['width', 'height'],\n connected: function connected() {\n addClass(this.$el, 'uk-responsive-width');\n },\n update: {\n read: function read() {\n return isVisible(this.$el) && this.width && this.height ? {\n width: width(parent(this.$el)),\n height: this.height\n } : false;\n },\n write: function write(dim) {\n height(this.$el, Dimensions.contain({\n height: this.height,\n width: this.width\n }, dim).height);\n },\n events: ['resize']\n }\n };\n var scroll = {\n props: {\n offset: Number\n },\n data: {\n offset: 0\n },\n methods: {\n scrollTo: function scrollTo(el) {\n var this$1$1 = this;\n el = el && $(el) || document.body;\n\n if (trigger(this.$el, 'beforescroll', [this, el])) {\n scrollIntoView(el, {\n offset: this.offset\n }).then(function () {\n return trigger(this$1$1.$el, 'scrolled', [this$1$1, el]);\n });\n }\n }\n },\n events: {\n click: function click(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(\"#\" + escape(decodeURIComponent((this.$el.hash || '').substr(1))));\n }\n }\n };\n var stateKey = '_ukScrollspy';\n var scrollspy = {\n args: 'cls',\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n data: function data() {\n return {\n cls: '',\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n };\n },\n computed: {\n elements: {\n get: function get(ref, $el) {\n var target = ref.target;\n return target ? $$(target, $el) : [$el];\n },\n watch: function watch(elements) {\n if (this.hidden) {\n css(filter$1(elements, \":not(.\" + this.inViewClass + \")\"), 'visibility', 'hidden');\n }\n },\n immediate: true\n }\n },\n disconnected: function disconnected() {\n var this$1$1 = this;\n this.elements.forEach(function (el) {\n removeClass(el, this$1$1.inViewClass, el[stateKey] ? el[stateKey].cls : '');\n delete el[stateKey];\n });\n },\n update: [{\n read: function read(data$1) {\n var this$1$1 = this; // Let child components be applied at least once first\n\n if (!data$1.update) {\n Promise$1.resolve().then(function () {\n this$1$1.$emit();\n data$1.update = true;\n });\n return false;\n }\n\n this.elements.forEach(function (el) {\n if (!el[stateKey]) {\n el[stateKey] = {\n cls: data(el, 'uk-scrollspy-class') || this$1$1.cls\n };\n }\n\n el[stateKey].show = isInView(el, this$1$1.offsetTop, this$1$1.offsetLeft);\n });\n },\n write: function write(data) {\n var this$1$1 = this;\n this.elements.forEach(function (el) {\n var state = el[stateKey];\n\n if (state.show && !state.inview && !state.queued) {\n state.queued = true;\n data.promise = (data.promise || Promise$1.resolve()).then(function () {\n return new Promise$1(function (resolve) {\n return setTimeout(resolve, this$1$1.delay);\n });\n }).then(function () {\n this$1$1.toggle(el, true);\n setTimeout(function () {\n state.queued = false;\n this$1$1.$emit();\n }, 300);\n });\n } else if (!state.show && state.inview && !state.queued && this$1$1.repeat) {\n this$1$1.toggle(el, false);\n }\n });\n },\n events: ['scroll', 'resize']\n }],\n methods: {\n toggle: function toggle(el, inview) {\n var state = el[stateKey];\n state.off && state.off();\n css(el, 'visibility', !inview && this.hidden ? 'hidden' : '');\n toggleClass(el, this.inViewClass, inview);\n toggleClass(el, state.cls);\n\n if (/\\buk-animation-/.test(state.cls)) {\n state.off = once(el, 'animationcancel animationend', function () {\n return removeClasses(el, 'uk-animation-[\\\\w-]+');\n });\n }\n\n trigger(el, inview ? 'inview' : 'outview');\n state.inview = inview;\n this.$update(el);\n }\n }\n };\n var scrollspyNav = {\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n computed: {\n links: {\n get: function get(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) {\n return el.hash;\n });\n },\n watch: function watch(links) {\n if (this.scroll) {\n this.$create('scroll', links, {\n offset: this.offset || 0\n });\n }\n },\n immediate: true\n },\n targets: function targets() {\n return $$(this.links.map(function (el) {\n return escape(el.hash).substr(1);\n }).join(','));\n },\n elements: function elements(ref) {\n var selector = ref.closest;\n return closest(this.links, selector || '*');\n }\n },\n update: [{\n read: function read() {\n var this$1$1 = this;\n var ref = this.targets;\n var length = ref.length;\n\n if (!length || !isVisible(this.$el)) {\n return false;\n }\n\n var ref$1 = scrollParents(this.targets, /auto|scroll/, true);\n var scrollElement = ref$1[0];\n var scrollTop = scrollElement.scrollTop;\n var scrollHeight = scrollElement.scrollHeight;\n var max = scrollHeight - getViewportClientHeight(scrollElement);\n var active = false;\n\n if (scrollTop === max) {\n active = length - 1;\n } else {\n this.targets.every(function (el, i) {\n if (offset(el).top - offset(getViewport$1(scrollElement)).top - this$1$1.offset <= 0) {\n active = i;\n return true;\n }\n });\n\n if (active === false && this.overflow) {\n active = 0;\n }\n }\n\n return {\n active: active\n };\n },\n write: function write(ref) {\n var active = ref.active;\n var changed = active !== false && !hasClass(this.elements[active], this.cls);\n this.links.forEach(function (el) {\n return el.blur();\n });\n removeClass(this.elements, this.cls);\n addClass(this.elements[active], this.cls);\n\n if (changed) {\n trigger(this.$el, 'active', [active, this.elements[active]]);\n }\n },\n events: ['scroll', 'resize']\n }]\n };\n var sticky = {\n mixins: [Class, Media],\n props: {\n top: null,\n bottom: Boolean,\n offset: String,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n targetOffset: Number\n },\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n targetOffset: false\n },\n computed: {\n offset: function offset(ref) {\n var offset = ref.offset;\n return toPx(offset);\n },\n selTarget: function selTarget(ref, $el) {\n var selTarget = ref.selTarget;\n return selTarget && $(selTarget, $el) || $el;\n },\n widthElement: function widthElement(ref, $el) {\n var widthElement = ref.widthElement;\n return query(widthElement, $el) || this.placeholder;\n },\n isActive: {\n get: function get() {\n return hasClass(this.selTarget, this.clsActive);\n },\n set: function set(value) {\n if (value && !this.isActive) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n trigger(this.$el, 'active');\n } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n trigger(this.$el, 'inactive');\n }\n }\n }\n },\n connected: function connected() {\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('
');\n this.isFixed = false;\n this.isActive = false;\n },\n disconnected: function disconnected() {\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n remove$1(this.placeholder);\n this.placeholder = null;\n this.widthElement = null;\n },\n events: [{\n name: 'load hashchange popstate',\n el: function el() {\n return window;\n },\n handler: function handler() {\n var this$1$1 = this;\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1$1.$el).top;\n var elHeight = this$1$1.$el.offsetHeight;\n\n if (this$1$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1$1.targetOffset) ? this$1$1.targetOffset : 0) - this$1$1.offset);\n }\n });\n }\n }\n }],\n update: [{\n read: function read(ref, types) {\n var height$1 = ref.height;\n this.inactive = !this.matchMedia || !isVisible(this.$el);\n\n if (this.inactive) {\n return false;\n }\n\n if (this.isActive && types.has('resize')) {\n this.hide();\n height$1 = this.$el.offsetHeight;\n this.show();\n }\n\n height$1 = this.isActive ? height$1 : this.$el.offsetHeight;\n\n if (height$1 + this.offset > height(window)) {\n this.inactive = true;\n return false;\n }\n\n var referenceElement = this.isFixed ? this.placeholder : this.$el;\n this.topOffset = offset(referenceElement).top;\n this.bottomOffset = this.topOffset + height$1;\n this.offsetParentTop = offset(referenceElement.offsetParent).top;\n var bottom = parseProp('bottom', this);\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - this.$el.offsetHeight;\n this.width = dimensions(isVisible(this.widthElement) ? this.widthElement : this.$el).width;\n return {\n height: height$1,\n top: offsetPosition(this.placeholder)[0],\n margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n };\n },\n write: function write(ref) {\n var height = ref.height;\n var margins = ref.margins;\n var ref$1 = this;\n var placeholder = ref$1.placeholder;\n css(placeholder, assign({\n height: height\n }, margins));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n placeholder.hidden = true;\n }\n\n this.isActive = !!this.isActive; // force self-assign\n },\n events: ['resize']\n }, {\n read: function read(ref) {\n var scroll = ref.scroll;\n if (scroll === void 0) scroll = 0;\n this.scroll = window.pageYOffset;\n return {\n dir: scroll <= this.scroll ? 'down' : 'up',\n scroll: this.scroll\n };\n },\n write: function write(data, types) {\n var this$1$1 = this;\n var now = Date.now();\n var isScrollUpdate = types.has('scroll');\n var initTimestamp = data.initTimestamp;\n if (initTimestamp === void 0) initTimestamp = 0;\n var dir = data.dir;\n var lastDir = data.lastDir;\n var lastScroll = data.lastScroll;\n var scroll = data.scroll;\n var top = data.top;\n data.lastScroll = scroll;\n\n if (scroll < 0 || scroll === lastScroll && isScrollUpdate || this.showOnUp && !isScrollUpdate && !this.isFixed) {\n return;\n }\n\n if (now - initTimestamp > 300 || dir !== lastDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n data.lastDir = dir;\n\n if (this.showOnUp && !this.isFixed && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {\n return;\n }\n\n if (this.inactive || scroll < this.top || this.showOnUp && (scroll <= this.top || dir === 'down' && isScrollUpdate || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)) {\n if (!this.isFixed) {\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n this.isFixed = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () {\n return this$1$1.hide();\n }, noop);\n } else {\n this.hide();\n }\n } else if (this.isFixed) {\n this.update();\n } else if (this.animation) {\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n } else {\n this.show();\n }\n },\n events: ['resize', 'scroll']\n }],\n methods: {\n show: function show() {\n this.isFixed = true;\n this.update();\n this.placeholder.hidden = false;\n },\n hide: function hide() {\n this.isActive = false;\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {\n position: '',\n top: '',\n width: ''\n });\n this.placeholder.hidden = true;\n },\n update: function update() {\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n var position = 'fixed';\n\n if (isNumeric(this.bottom) && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.offsetParentTop;\n position = 'absolute';\n }\n\n css(this.$el, {\n position: position,\n top: top + \"px\",\n width: this.width\n });\n this.isActive = active;\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n }\n }\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[prop + \"Offset\"];\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isString(value) && value.match(/^-?\\d/)) {\n return propOffset + toPx(value);\n } else {\n return offset(value === true ? parent($el) : query(value, $el)).bottom;\n }\n }\n\n var Switcher = {\n mixins: [Togglable],\n args: 'connect',\n props: {\n connect: String,\n toggle: String,\n itemNav: String,\n active: Number,\n swiping: Boolean\n },\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n itemNav: false,\n active: 0,\n swiping: true,\n cls: 'uk-active',\n attrItem: 'uk-switcher-item'\n },\n computed: {\n connects: {\n get: function get(ref, $el) {\n var connect = ref.connect;\n return queryAll(connect, $el);\n },\n watch: function watch(connects) {\n var this$1$1 = this;\n\n if (this.swiping) {\n css(connects, 'touch-action', 'pan-y pinch-zoom');\n }\n\n var index = this.index();\n this.connects.forEach(function (el) {\n return _children(el).forEach(function (child, i) {\n return toggleClass(child, this$1$1.cls, i === index);\n });\n });\n },\n immediate: true\n },\n toggles: {\n get: function get(ref, $el) {\n var toggle = ref.toggle;\n return $$(toggle, $el).filter(function (el) {\n return !matches(el, '.uk-disabled *, .uk-disabled, [disabled]');\n });\n },\n watch: function watch(toggles) {\n var active = this.index();\n this.show(~active ? active : toggles[this.active] || toggles[0]);\n },\n immediate: true\n },\n children: function children() {\n var this$1$1 = this;\n return _children(this.$el).filter(function (child) {\n return this$1$1.toggles.some(function (toggle) {\n return within(toggle, child);\n });\n });\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.toggle;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(e.current);\n }\n }, {\n name: 'click',\n el: function el() {\n return this.connects.concat(this.itemNav ? queryAll(this.itemNav, this.$el) : []);\n },\n delegate: function delegate() {\n return \"[\" + this.attrItem + \"],[data-\" + this.attrItem + \"]\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }, {\n name: 'swipeRight swipeLeft',\n filter: function filter() {\n return this.swiping;\n },\n el: function el() {\n return this.connects;\n },\n handler: function handler(ref) {\n var type = ref.type;\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }],\n methods: {\n index: function index() {\n var this$1$1 = this;\n return findIndex(this.children, function (el) {\n return hasClass(el, this$1$1.cls);\n });\n },\n show: function show(item) {\n var this$1$1 = this;\n var prev = this.index();\n\n var next = _getIndex(this.children[_getIndex(item, this.toggles, prev)], _children(this.$el));\n\n if (prev === next) {\n return;\n }\n\n this.children.forEach(function (child, i) {\n toggleClass(child, this$1$1.cls, next === i);\n attr(this$1$1.toggles[i], 'aria-expanded', next === i);\n });\n this.connects.forEach(function (ref) {\n var children = ref.children;\n return this$1$1.toggleElement(toNodes(children).filter(function (child) {\n return hasClass(child, this$1$1.cls);\n }), false, prev >= 0).then(function () {\n return this$1$1.toggleElement(children[next], true, prev >= 0);\n });\n });\n }\n }\n };\n var tab = {\n mixins: [Class],\n extends: Switcher,\n props: {\n media: Boolean\n },\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n connected: function connected() {\n var cls = hasClass(this.$el, 'uk-tab-left') ? 'uk-tab-left' : hasClass(this.$el, 'uk-tab-right') ? 'uk-tab-right' : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {\n cls: cls,\n mode: 'media',\n media: this.media\n });\n }\n }\n };\n var KEY_SPACE = 32;\n var toggle = {\n mixins: [Media, Togglable],\n args: 'target',\n props: {\n href: String,\n target: null,\n mode: 'list',\n queued: Boolean\n },\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n connected: function connected() {\n if (!includes(this.mode, 'media') && !isFocusable(this.$el)) {\n attr(this.$el, 'tabindex', '0');\n }\n },\n computed: {\n target: {\n get: function get(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n },\n watch: function watch() {\n this.updateAria();\n },\n immediate: true\n }\n },\n events: [{\n name: pointerDown,\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n var this$1$1 = this;\n\n if (!isTouch(e) || this._showState) {\n return;\n } // Clicking a button does not give it focus on all browsers and platforms\n // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#clicking_and_focus\n\n\n trigger(this.$el, 'focus');\n once(document, pointerDown, function () {\n return trigger(this$1$1.$el, 'blur');\n }, true, function (e) {\n return !within(e.target, this$1$1.$el);\n }); // Prevent initial click to prevent double toggle through focus + click\n\n if (includes(this.mode, 'click')) {\n this._preventClick = true;\n }\n }\n }, {\n name: pointerEnter + \" \" + pointerLeave + \" focus blur\",\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (isTouch(e)) {\n return;\n }\n\n var show = includes([pointerEnter, 'focus'], e.type);\n var expanded = attr(this.$el, 'aria-expanded'); // Skip hide if still hovered or focused\n\n if (!show && (e.type === pointerLeave && matches(this.$el, ':focus') || e.type === 'blur' && matches(this.$el, ':hover'))) {\n return;\n } // Skip if state does not change e.g. hover + focus received\n\n\n if (this._showState && show === (expanded !== this._showState)) {\n // Ensure reset if state has changed through click\n if (!show) {\n this._showState = null;\n }\n\n return;\n }\n\n this._showState = show ? expanded : null;\n this.toggle(\"toggle\" + (show ? 'show' : 'hide'));\n }\n }, {\n name: 'keydown',\n filter: function filter() {\n return includes(this.mode, 'click') && this.$el.tagName !== 'INPUT';\n },\n handler: function handler(e) {\n if (e.keyCode === KEY_SPACE) {\n e.preventDefault();\n this.$el.click();\n }\n }\n }, {\n name: 'click',\n filter: function filter() {\n return includes(this.mode, 'click');\n },\n handler: function handler(e) {\n if (this._preventClick) {\n return this._preventClick = null;\n }\n\n var link;\n\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]') || (link = closest(e.target, 'a[href]')) && (attr(this.$el, 'aria-expanded') !== 'true' || link.hash && matches(this.target, link.hash))) {\n e.preventDefault();\n }\n\n this.toggle();\n }\n }, {\n name: 'toggled',\n self: true,\n el: function el() {\n return this.target;\n },\n handler: function handler(e, toggled) {\n if (e.target === this.target[0]) {\n this.updateAria(toggled);\n }\n }\n }],\n update: {\n read: function read() {\n return includes(this.mode, 'media') && this.media ? {\n match: this.matchMedia\n } : false;\n },\n write: function write(ref) {\n var match = ref.match;\n var toggled = this.isToggled(this.target);\n\n if (match ? !toggled : toggled) {\n this.toggle();\n }\n },\n events: ['resize']\n },\n methods: {\n toggle: function toggle(type) {\n var this$1$1 = this;\n\n if (!trigger(this.target, type || 'toggle', [this])) {\n return;\n }\n\n if (!this.queued) {\n return this.toggleElement(this.target);\n }\n\n var leaving = this.target.filter(function (el) {\n return hasClass(el, this$1$1.clsLeave);\n });\n\n if (leaving.length) {\n this.target.forEach(function (el) {\n var isLeaving = includes(leaving, el);\n this$1$1.toggleElement(el, isLeaving, isLeaving);\n });\n return;\n }\n\n var toggled = this.target.filter(this.isToggled);\n this.toggleElement(toggled, false).then(function () {\n return this$1$1.toggleElement(this$1$1.target.filter(function (el) {\n return !includes(toggled, el);\n }), true);\n });\n },\n updateAria: function updateAria(toggled) {\n if (includes(this.mode, 'media')) {\n return;\n }\n\n attr(this.$el, 'aria-expanded', isBoolean(toggled) ? toggled : this.isToggled(this.target));\n }\n }\n };\n var components$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Accordion: Accordion,\n Alert: alert,\n Cover: cover,\n Drop: drop,\n Dropdown: drop,\n FormCustom: formCustom,\n Gif: gif,\n Grid: grid,\n HeightMatch: heightMatch,\n HeightViewport: heightViewport,\n Icon: Icon,\n Img: img,\n Leader: leader,\n Margin: Margin,\n Modal: modal,\n Nav: nav,\n Navbar: navbar,\n Offcanvas: offcanvas,\n OverflowAuto: overflowAuto,\n Responsive: responsive,\n Scroll: scroll,\n Scrollspy: scrollspy,\n ScrollspyNav: scrollspyNav,\n Sticky: sticky,\n Svg: SVG,\n Switcher: Switcher,\n Tab: tab,\n Toggle: toggle,\n Video: Video,\n Close: Close,\n Spinner: Spinner,\n SlidenavNext: Slidenav,\n SlidenavPrevious: Slidenav,\n SearchIcon: Search,\n Marker: IconComponent,\n NavbarToggleIcon: IconComponent,\n OverlayIcon: IconComponent,\n PaginationNext: IconComponent,\n PaginationPrevious: IconComponent,\n Totop: IconComponent\n }); // register components\n\n each(components$1, function (component, name) {\n return UIkit.component(name, component);\n }); // core functionality\n\n UIkit.use(Core);\n boot(UIkit);\n var countdown = {\n mixins: [Class],\n props: {\n date: String,\n clsWrapper: String\n },\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n computed: {\n date: function date(ref) {\n var date = ref.date;\n return Date.parse(date);\n },\n days: function days(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n hours: function hours(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n minutes: function minutes(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n seconds: function seconds(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n units: function units() {\n var this$1$1 = this;\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) {\n return this$1$1[unit];\n });\n }\n },\n connected: function connected() {\n this.start();\n },\n disconnected: function disconnected() {\n var this$1$1 = this;\n this.stop();\n this.units.forEach(function (unit) {\n return empty(this$1$1[unit]);\n });\n },\n events: [{\n name: 'visibilitychange',\n el: function el() {\n return document;\n },\n handler: function handler() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n }],\n update: {\n write: function write() {\n var this$1$1 = this;\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n this.stop();\n timespan.days = timespan.hours = timespan.minutes = timespan.seconds = 0;\n }\n\n this.units.forEach(function (unit) {\n var digits = String(Math.floor(timespan[unit]));\n digits = digits.length < 2 ? \"0\" + digits : digits;\n var el = this$1$1[unit];\n\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () {\n return '';\n }).join(''));\n }\n\n digits.forEach(function (digit, i) {\n return el.children[i].textContent = digit;\n });\n }\n });\n }\n },\n methods: {\n start: function start() {\n this.stop();\n\n if (this.date && this.units.length) {\n this.$update();\n this.timer = setInterval(this.$update, 1000);\n }\n },\n stop: function stop() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n }\n };\n\n function getTimeSpan(date) {\n var total = date - Date.now();\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var clsLeave = 'uk-transition-leave';\n var clsEnter = 'uk-transition-enter';\n\n function fade(action, target, duration, stagger) {\n if (stagger === void 0) stagger = 0;\n var index = transitionIndex(target, true);\n var propsIn = {\n opacity: 1\n };\n var propsOut = {\n opacity: 0\n };\n\n var wrapIndexFn = function wrapIndexFn(fn) {\n return function () {\n return index === transitionIndex(target) ? fn() : Promise$1.reject();\n };\n };\n\n var leaveFn = wrapIndexFn(function () {\n addClass(target, clsLeave);\n return Promise$1.all(getTransitionNodes(target).map(function (child, i) {\n return new Promise$1(function (resolve) {\n return setTimeout(function () {\n return Transition.start(child, propsOut, duration / 2, 'ease').then(resolve);\n }, i * stagger);\n });\n })).then(function () {\n return removeClass(target, clsLeave);\n });\n });\n var enterFn = wrapIndexFn(function () {\n var oldHeight = height(target);\n addClass(target, clsEnter);\n action();\n css(_children(target), {\n opacity: 0\n }); // Ensure UIkit updates have propagated\n\n return new Promise$1(function (resolve) {\n return requestAnimationFrame(function () {\n var nodes = _children(target);\n\n var newHeight = height(target); // Ensure Grid cells do not stretch when height is applied\n\n css(target, 'alignContent', 'flex-start');\n height(target, oldHeight);\n var transitionNodes = getTransitionNodes(target);\n css(nodes, propsOut);\n var transitions = transitionNodes.map(function (child, i) {\n return new Promise$1(function (resolve) {\n return setTimeout(function () {\n return Transition.start(child, propsIn, duration / 2, 'ease').then(resolve);\n }, i * stagger);\n });\n });\n\n if (oldHeight !== newHeight) {\n transitions.push(Transition.start(target, {\n height: newHeight\n }, duration / 2 + transitionNodes.length * stagger, 'ease'));\n }\n\n Promise$1.all(transitions).then(function () {\n removeClass(target, clsEnter);\n\n if (index === transitionIndex(target)) {\n css(target, {\n height: '',\n alignContent: ''\n });\n css(nodes, {\n opacity: ''\n });\n delete target.dataset.transition;\n }\n\n resolve();\n });\n });\n });\n });\n return hasClass(target, clsLeave) ? waitTransitionend(target).then(enterFn) : hasClass(target, clsEnter) ? waitTransitionend(target).then(leaveFn).then(enterFn) : leaveFn().then(enterFn);\n }\n\n function transitionIndex(target, next) {\n if (next) {\n target.dataset.transition = 1 + transitionIndex(target);\n }\n\n return toNumber(target.dataset.transition) || 0;\n }\n\n function waitTransitionend(target) {\n return Promise$1.all(_children(target).filter(Transition.inProgress).map(function (el) {\n return new Promise$1(function (resolve) {\n return once(el, 'transitionend transitioncanceled', resolve);\n });\n }));\n }\n\n function getTransitionNodes(target) {\n return getRows(_children(target)).reduce(function (nodes, row) {\n return nodes.concat(sortBy$1(row.filter(function (el) {\n return isInView(el);\n }), 'offsetLeft'));\n }, []);\n }\n\n function slide(action, target, duration) {\n return new Promise$1(function (resolve) {\n return requestAnimationFrame(function () {\n var nodes = _children(target); // Get current state\n\n\n var currentProps = nodes.map(function (el) {\n return getProps(el, true);\n });\n var targetProps = css(target, ['height', 'padding']); // Cancel previous animations\n\n Transition.cancel(target);\n nodes.forEach(Transition.cancel);\n reset(target); // Adding, sorting, removing nodes\n\n action(); // Find new nodes\n\n nodes = nodes.concat(_children(target).filter(function (el) {\n return !includes(nodes, el);\n })); // Wait for update to propagate\n\n Promise$1.resolve().then(function () {\n // Force update\n fastdom.flush(); // Get new state\n\n var targetPropsTo = css(target, ['height', 'padding']);\n var ref = getTransitionProps(target, nodes, currentProps);\n var propsTo = ref[0];\n var propsFrom = ref[1]; // Reset to previous state\n\n nodes.forEach(function (el, i) {\n return propsFrom[i] && css(el, propsFrom[i]);\n });\n css(target, assign({\n display: 'block'\n }, targetProps)); // Start transitions on next frame\n\n requestAnimationFrame(function () {\n var transitions = nodes.map(function (el, i) {\n return parent(el) === target && Transition.start(el, propsTo[i], duration, 'ease');\n }).concat(Transition.start(target, targetPropsTo, duration, 'ease'));\n Promise$1.all(transitions).then(function () {\n nodes.forEach(function (el, i) {\n return parent(el) === target && css(el, 'display', propsTo[i].opacity === 0 ? 'none' : '');\n });\n reset(target);\n }, noop).then(resolve);\n });\n });\n });\n });\n }\n\n function getProps(el, opacity) {\n var zIndex = css(el, 'zIndex');\n return isVisible(el) ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el)) : false;\n }\n\n function getTransitionProps(target, nodes, currentProps) {\n var propsTo = nodes.map(function (el, i) {\n return parent(el) && i in currentProps ? currentProps[i] ? isVisible(el) ? getPositionWithMargin(el) : {\n opacity: 0\n } : {\n opacity: isVisible(el) ? 1 : 0\n } : false;\n });\n var propsFrom = propsTo.map(function (props, i) {\n var from = parent(nodes[i]) === target && (currentProps[i] || getProps(nodes[i]));\n\n if (!from) {\n return false;\n }\n\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n\n return from;\n });\n return [propsTo, propsFrom];\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n marginTop: '',\n marginLeft: '',\n transform: '',\n width: '',\n zIndex: ''\n });\n css(el, {\n height: '',\n display: '',\n padding: ''\n });\n }\n\n function getPositionWithMargin(el) {\n var ref = offset(el);\n var height = ref.height;\n var width = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n var ref$2 = css(el, ['marginTop', 'marginLeft']);\n var marginLeft = ref$2.marginLeft;\n var marginTop = ref$2.marginTop;\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n marginLeft: marginLeft,\n marginTop: marginTop,\n transform: ''\n };\n }\n\n var Animate = {\n props: {\n duration: Number,\n animation: Boolean\n },\n data: {\n duration: 150,\n animation: 'slide'\n },\n methods: {\n animate: function animate(action, target) {\n var this$1$1 = this;\n if (target === void 0) target = this.$el;\n var name = this.animation;\n var animationFn = name === 'fade' ? fade : name === 'delayed-fade' ? function () {\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n return fade.apply(void 0, args.concat([40]));\n } : name ? slide : function () {\n action();\n return Promise$1.resolve();\n };\n return animationFn(action, target, this.duration).then(function () {\n return this$1$1.$update(target, 'resize');\n }, noop);\n }\n }\n };\n var filter = {\n mixins: [Animate],\n args: 'target',\n props: {\n target: Boolean,\n selActive: Boolean\n },\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n duration: 250\n },\n computed: {\n toggles: {\n get: function get(ref, $el) {\n var attrItem = ref.attrItem;\n return $$(\"[\" + attrItem + \"],[data-\" + attrItem + \"]\", $el);\n },\n watch: function watch() {\n var this$1$1 = this;\n this.updateState();\n\n if (this.selActive !== false) {\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) {\n return toggleClass(el, this$1$1.cls, includes(actives, el));\n });\n }\n },\n immediate: true\n },\n children: {\n get: function get(ref, $el) {\n var target = ref.target;\n return $$(target + \" > *\", $el);\n },\n watch: function watch(list, old) {\n if (old && !isEqualList(list, old)) {\n this.updateState();\n }\n },\n immediate: true\n }\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return \"[\" + this.attrItem + \"],[data-\" + this.attrItem + \"]\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.apply(e.current);\n }\n }],\n methods: {\n apply: function apply(el) {\n var prevState = this.getState();\n var newState = mergeState(el, this.attrItem, this.getState());\n\n if (!isEqualState(prevState, newState)) {\n this.setState(newState);\n }\n },\n getState: function getState() {\n var this$1$1 = this;\n return this.toggles.filter(function (item) {\n return hasClass(item, this$1$1.cls);\n }).reduce(function (state, el) {\n return mergeState(el, this$1$1.attrItem, state);\n }, {\n filter: {\n '': ''\n },\n sort: []\n });\n },\n setState: function setState(state, animate) {\n var this$1$1 = this;\n if (animate === void 0) animate = true;\n state = assign({\n filter: {\n '': ''\n },\n sort: []\n }, state);\n trigger(this.$el, 'beforeFilter', [this, state]);\n this.toggles.forEach(function (el) {\n return toggleClass(el, this$1$1.cls, !!matchFilter(el, this$1$1.attrItem, state));\n });\n Promise$1.all($$(this.target, this.$el).map(function (target) {\n var filterFn = function filterFn() {\n applyState(state, target, _children(target));\n this$1$1.$update(this$1$1.$el);\n };\n\n return animate ? this$1$1.animate(filterFn, target) : filterFn();\n })).then(function () {\n return trigger(this$1$1.$el, 'afterFilter', [this$1$1]);\n });\n },\n updateState: function updateState() {\n var this$1$1 = this;\n fastdom.write(function () {\n return this$1$1.setState(this$1$1.getState(), false);\n });\n }\n }\n };\n\n function getFilter(el, attr) {\n return parseOptions(data(el, attr), ['filter']);\n }\n\n function isEqualState(stateA, stateB) {\n return ['filter', 'sort'].every(function (prop) {\n return isEqual(stateA[prop], stateB[prop]);\n });\n }\n\n function applyState(state, target, children) {\n var selector = getSelector(state);\n children.forEach(function (el) {\n return css(el, 'display', selector && !matches(el, selector) ? 'none' : '');\n });\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n\n if (!isEqual(sorted, children)) {\n append(target, sorted);\n }\n }\n }\n\n function mergeState(el, attr, state) {\n var filterBy = getFilter(el, attr);\n var filter = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order;\n if (order === void 0) order = 'asc';\n\n if (filter || isUndefined(sort)) {\n if (group) {\n if (filter) {\n delete state.filter[''];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n\n if (isEmpty(state.filter) || '' in state.filter) {\n state.filter = {\n '': filter || ''\n };\n }\n }\n } else {\n state.filter = {\n '': filter || ''\n };\n }\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n\n return state;\n }\n\n function matchFilter(el, attr, ref) {\n var stateFilter = ref.filter;\n if (stateFilter === void 0) stateFilter = {\n '': ''\n };\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n var ref$1 = getFilter(el, attr);\n var filter = ref$1.filter;\n if (filter === void 0) filter = '';\n var group = ref$1.group;\n if (group === void 0) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order;\n if (order === void 0) order = 'asc';\n return isUndefined(sort) ? group in stateFilter && filter === stateFilter[group] || !filter && group && !(group in stateFilter) && !stateFilter[''] : stateSort === sort && stateOrder === order;\n }\n\n function isEqualList(listA, listB) {\n return listA.length === listB.length && listA.every(function (el) {\n return ~listB.indexOf(el);\n });\n }\n\n function getSelector(ref) {\n var filter = ref.filter;\n var selector = '';\n each(filter, function (value) {\n return selector += value || '';\n });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return assign([], nodes).sort(function (a, b) {\n return data(a, sort).localeCompare(data(b, sort), undefined, {\n numeric: true\n }) * (order === 'asc' || -1);\n });\n }\n\n var Animations$2 = {\n slide: {\n show: function show(dir) {\n return [{\n transform: _translate(dir * -100)\n }, {\n transform: _translate()\n }];\n },\n percent: function percent(current) {\n return translated(current);\n },\n translate: function translate(percent, dir) {\n return [{\n transform: _translate(dir * -100 * percent)\n }, {\n transform: _translate(dir * 100 * (1 - percent))\n }];\n }\n }\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function _translate(value, unit) {\n if (value === void 0) value = 0;\n if (unit === void 0) unit = '%';\n value += value ? unit : '';\n return isIE ? \"translateX(\" + value + \")\" : \"translate3d(\" + value + \", 0, 0)\"; // currently, not translate3d in IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return \"scale3d(\" + value + \", \" + value + \", 1)\";\n }\n\n var Animations$1 = assign({}, Animations$2, {\n fade: {\n show: function show() {\n return [{\n opacity: 0\n }, {\n opacity: 1\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent\n }, {\n opacity: percent\n }];\n }\n },\n scale: {\n show: function show() {\n return [{\n opacity: 0,\n transform: scale3d(1 - .2)\n }, {\n opacity: 1,\n transform: scale3d(1)\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent,\n transform: scale3d(1 - .2 * percent)\n }, {\n opacity: percent,\n transform: scale3d(1 - .2 + .2 * percent)\n }];\n }\n }\n });\n\n function Transitioner$1(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n var _percent = animation.percent;\n var _translate2 = animation.translate;\n var show = animation.show;\n if (show === void 0) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n return {\n dir: dir,\n show: function show(duration, percent, linear) {\n var this$1$1 = this;\n if (percent === void 0) percent = 0;\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n this.translate(percent);\n triggerUpdate$1(next, 'itemin', {\n percent: percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n triggerUpdate$1(prev, 'itemout', {\n percent: 1 - percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n Promise$1.all([Transition.start(next, props[1], duration, timing), Transition.start(prev, props[0], duration, timing)]).then(function () {\n this$1$1.reset();\n deferred.resolve();\n }, noop);\n return deferred.promise;\n },\n cancel: function cancel() {\n Transition.cancel([next, prev]);\n },\n reset: function reset() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n forward: function forward(duration, percent) {\n if (percent === void 0) percent = this.percent();\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n },\n translate: function translate(percent) {\n this.reset();\n\n var props = _translate2(percent, dir);\n\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate$1(next, 'itemtranslatein', {\n percent: percent,\n dir: dir\n });\n triggerUpdate$1(prev, 'itemtranslateout', {\n percent: 1 - percent,\n dir: dir\n });\n },\n percent: function percent() {\n return _percent(prev || next, next, dir);\n },\n getDistance: function getDistance() {\n return prev && prev.offsetWidth;\n }\n };\n }\n\n function triggerUpdate$1(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var SliderAutoplay = {\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n connected: function connected() {\n this.autoplay && this.startAutoplay();\n },\n disconnected: function disconnected() {\n this.stopAutoplay();\n },\n update: function update() {\n attr(this.slides, 'tabindex', '-1');\n },\n events: [{\n name: 'visibilitychange',\n el: function el() {\n return document;\n },\n filter: function filter() {\n return this.autoplay;\n },\n handler: function handler() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n }],\n methods: {\n startAutoplay: function startAutoplay() {\n var this$1$1 = this;\n this.stopAutoplay();\n this.interval = setInterval(function () {\n return (!this$1$1.draggable || !$(':focus', this$1$1.$el)) && (!this$1$1.pauseOnHover || !matches(this$1$1.$el, ':hover')) && !this$1$1.stack.length && this$1$1.show('next');\n }, this.autoplayInterval);\n },\n stopAutoplay: function stopAutoplay() {\n this.interval && clearInterval(this.interval);\n }\n }\n };\n var SliderDrag = {\n props: {\n draggable: Boolean\n },\n data: {\n draggable: true,\n threshold: 10\n },\n created: function created() {\n var this$1$1 = this;\n ['start', 'move', 'end'].forEach(function (key) {\n var fn = this$1$1[key];\n\n this$1$1[key] = function (e) {\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n this$1$1.prevPos = pos !== this$1$1.pos ? this$1$1.pos : this$1$1.prevPos;\n this$1$1.pos = pos;\n fn(e);\n };\n });\n },\n events: [{\n name: pointerDown,\n delegate: function delegate() {\n return this.selSlides;\n },\n handler: function handler(e) {\n if (!this.draggable || !isTouch(e) && hasTextNodesOnly(e.target) || closest(e.target, selInput) || e.button > 0 || this.length < 2) {\n return;\n }\n\n this.start(e);\n }\n }, {\n name: 'dragstart',\n handler: function handler(e) {\n e.preventDefault();\n }\n }],\n methods: {\n start: function start() {\n this.drag = this.pos;\n\n if (this._transitioner) {\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n this.stack = [];\n } else {\n this.prevIndex = this.index;\n }\n\n on(document, pointerMove, this.move, {\n passive: false\n }); // 'input' event is triggered by video controls\n\n on(document, pointerUp + \" \" + pointerCancel + \" input\", this.end, true);\n css(this.list, 'userSelect', 'none');\n },\n move: function move(e) {\n var this$1$1 = this;\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n } // prevent click event\n\n\n css(this.list, 'pointerEvents', 'none');\n e.cancelable && e.preventDefault();\n this.dragging = true;\n this.dir = distance < 0 ? 1 : -1;\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n this.drag -= width * this.dir;\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n }\n\n this.percent = dis / width;\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n var itemShown;\n [this.index, this.prevIndex].filter(function (i) {\n return !includes([nextIndex, prevIndex], i);\n }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1$1]);\n\n if (edge) {\n itemShown = true;\n this$1$1.prevIndex = prevIndex;\n }\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n },\n end: function end() {\n off(document, pointerMove, this.move, {\n passive: false\n });\n off(document, pointerUp + \" \" + pointerCancel + \" input\", this.end, true);\n\n if (this.dragging) {\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n\n this._show(false, this.index, true);\n\n this._transitioner = null;\n } else {\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n }\n\n css(this.list, {\n userSelect: '',\n pointerEvents: ''\n });\n this.drag = this.percent = null;\n }\n }\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n data: {\n selNav: false\n },\n computed: {\n nav: function nav(ref, $el) {\n var selNav = ref.selNav;\n return $(selNav, $el);\n },\n selNavItem: function selNavItem(ref) {\n var attrItem = ref.attrItem;\n return \"[\" + attrItem + \"],[data-\" + attrItem + \"]\";\n },\n navItems: function navItems(_, $el) {\n return $$(this.selNavItem, $el);\n }\n },\n update: {\n write: function write() {\n var this$1$1 = this;\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) {\n return \"
  • \";\n }).join(''));\n }\n\n this.navItems.concat(this.nav).forEach(function (el) {\n return el && (el.hidden = !this$1$1.maxIndex);\n });\n this.updateNav();\n },\n events: ['resize']\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.selNavItem;\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n }, {\n name: 'itemshow',\n handler: 'updateNav'\n }],\n methods: {\n updateNav: function updateNav() {\n var this$1$1 = this;\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n var cmd = data(el, this$1$1.attrItem);\n toggleClass(el, this$1$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1$1.maxIndex));\n });\n }\n }\n };\n var Slider = {\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number,\n selSlides: String\n },\n data: function data() {\n return {\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n };\n },\n connected: function connected() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.$props.index);\n this.stack = [];\n },\n disconnected: function disconnected() {\n removeClass(this.slides, this.clsActive);\n },\n computed: {\n duration: function duration(ref, $el) {\n var velocity = ref.velocity;\n return speedUp($el.offsetWidth / velocity);\n },\n list: function list(ref, $el) {\n var selList = ref.selList;\n return $(selList, $el);\n },\n maxIndex: function maxIndex() {\n return this.length - 1;\n },\n selSlides: function selSlides(ref) {\n var selList = ref.selList;\n var selSlides = ref.selSlides;\n return selList + \" \" + (selSlides || '> *');\n },\n slides: {\n get: function get() {\n return $$(this.selSlides, this.$el);\n },\n watch: function watch() {\n this.$reset();\n }\n },\n length: function length() {\n return this.slides.length;\n }\n },\n events: {\n itemshown: function itemshown() {\n this.$update(this.list);\n }\n },\n methods: {\n show: function show(index, force) {\n var this$1$1 = this;\n if (force === void 0) force = false;\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n\n var reset = function reset() {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.getIndex(this.index);\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n if (prev && !trigger(prev, 'beforeitemhide', [this]) || !trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n prev && trigger(prev, 'itemhidden', [this$1$1]);\n trigger(next, 'itemshown', [this$1$1]);\n return new Promise$1(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n\n if (stack.length) {\n this$1$1.show(stack.shift(), true);\n } else {\n this$1$1._transitioner = null;\n }\n\n resolve();\n });\n });\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n return promise;\n },\n getIndex: function getIndex(index, prev) {\n if (index === void 0) index = this.index;\n if (prev === void 0) prev = this.index;\n return clamp(_getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n getValidIndex: function getValidIndex(index, prevIndex) {\n if (index === void 0) index = this.index;\n if (prevIndex === void 0) prevIndex = this.prevIndex;\n return this.getIndex(index, prevIndex);\n },\n _show: function _show(prev, next, force) {\n this._transitioner = this._getTransitioner(prev, next, this.dir, assign({\n easing: force ? next.offsetWidth < 600 ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)'\n /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)'\n /* easeOutQuart */\n : this.easing\n }, this.transitionOptions));\n\n if (!force && !prev) {\n this._translate(1);\n\n return Promise$1.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n },\n _getDistance: function _getDistance(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n _translate: function _translate(percent, prev, next) {\n if (prev === void 0) prev = this.prevIndex;\n if (next === void 0) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n\n transitioner.translate(percent);\n return transitioner;\n },\n _getTransitioner: function _getTransitioner(prev, next, dir, options) {\n if (prev === void 0) prev = this.prevIndex;\n if (next === void 0) next = this.index;\n if (dir === void 0) dir = this.dir || 1;\n if (options === void 0) options = this.transitionOptions;\n return new this.Transitioner(isNumber(prev) ? this.slides[prev] : prev, isNumber(next) ? this.slides[next] : next, dir * (isRtl ? -1 : 1), options);\n }\n }\n };\n\n function getDirection(index, prevIndex) {\n return index === 'next' ? 1 : index === 'previous' ? -1 : index < prevIndex ? -1 : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n mixins: [Slider],\n props: {\n animation: String\n },\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations$2,\n Transitioner: Transitioner$1\n },\n computed: {\n animation: function animation(ref) {\n var animation = ref.animation;\n var Animations = ref.Animations;\n return assign(Animations[animation] || Animations.slide, {\n name: animation\n });\n },\n transitionOptions: function transitionOptions() {\n return {\n animation: this.animation\n };\n }\n },\n events: {\n 'itemshow itemhide itemshown itemhidden': function itemshowItemhideItemshownItemhidden(ref) {\n var target = ref.target;\n this.$update(target);\n },\n beforeitemshow: function beforeitemshow(ref) {\n var target = ref.target;\n addClass(target, this.clsActive);\n },\n itemshown: function itemshown(ref) {\n var target = ref.target;\n addClass(target, this.clsActivated);\n },\n itemhidden: function itemhidden(ref) {\n var target = ref.target;\n removeClass(target, this.clsActive, this.clsActivated);\n }\n }\n };\n var LightboxPanel = {\n mixins: [Container, Modal, Togglable, Slideshow],\n functional: true,\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n data: function data() {\n return {\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n selCaption: '.uk-lightbox-caption',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"
      \"\n };\n },\n created: function created() {\n var $el = $(this.template);\n var list = $(this.selList, $el);\n this.items.forEach(function () {\n return append(list, '
    • ');\n });\n this.$mount(append(this.container, $el));\n },\n computed: {\n caption: function caption(ref, $el) {\n var selCaption = ref.selCaption;\n return $(selCaption, $el);\n }\n },\n events: [{\n name: pointerMove + \" \" + pointerDown + \" keydown\",\n handler: 'showControls'\n }, {\n name: 'click',\n self: true,\n delegate: function delegate() {\n return this.selSlides;\n },\n handler: function handler(e) {\n if (e.defaultPrevented) {\n return;\n }\n\n this.hide();\n }\n }, {\n name: 'shown',\n self: true,\n handler: function handler() {\n this.showControls();\n }\n }, {\n name: 'hide',\n self: true,\n handler: function handler() {\n this.hideControls();\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n this.$destroy(true);\n }\n }, {\n name: 'keyup',\n el: function el() {\n return document;\n },\n handler: function handler(e) {\n if (!this.isToggled(this.$el) || !this.draggable) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n\n case 39:\n this.show('next');\n break;\n }\n }\n }, {\n name: 'beforeitemshow',\n handler: function handler(e) {\n if (this.isToggled()) {\n return;\n }\n\n this.draggable = false;\n e.preventDefault();\n this.toggleElement(this.$el, true, false);\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n }\n }, {\n name: 'itemshow',\n handler: function handler() {\n html(this.caption, this.getItem().caption || '');\n\n for (var j = -this.preload; j <= this.preload; j++) {\n this.loadItem(this.index + j);\n }\n }\n }, {\n name: 'itemshown',\n handler: function handler() {\n this.draggable = this.$props.draggable;\n }\n }, {\n name: 'itemload',\n handler: function handler(_, item) {\n var this$1$1 = this;\n var src = item.source;\n var type = item.type;\n var alt = item.alt;\n if (alt === void 0) alt = '';\n var poster = item.poster;\n var attrs = item.attrs;\n if (attrs === void 0) attrs = {};\n this.setItem(item, '');\n\n if (!src) {\n return;\n }\n\n var matches;\n var iframeAttrs = {\n frameborder: '0',\n allow: 'autoplay',\n allowfullscreen: '',\n style: 'max-width: 100%; box-sizing: border-box;',\n 'uk-responsive': '',\n 'uk-video': \"\" + this.videoAutoplay\n }; // Image\n\n if (type === 'image' || src.match(/\\.(avif|jpe?g|a?png|gif|svg|webp)($|\\?)/i)) {\n getImage(src, attrs.srcset, attrs.size).then(function (ref) {\n var width = ref.width;\n var height = ref.height;\n return this$1$1.setItem(item, createEl('img', assign({\n src: src,\n width: width,\n height: height,\n alt: alt\n }, attrs)));\n }, function () {\n return this$1$1.setError(item);\n }); // Video\n } else if (type === 'video' || src.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n var video = createEl('video', assign({\n src: src,\n poster: poster,\n controls: '',\n playsinline: '',\n 'uk-video': \"\" + this.videoAutoplay\n }, attrs));\n on(video, 'loadedmetadata', function () {\n attr(video, {\n width: video.videoWidth,\n height: video.videoHeight\n });\n this$1$1.setItem(item, video);\n });\n on(video, 'error', function () {\n return this$1$1.setError(item);\n }); // Iframe\n } else if (type === 'iframe' || src.match(/\\.(html|php)($|\\?)/i)) {\n this.setItem(item, createEl('iframe', assign({\n src: src,\n frameborder: '0',\n allowfullscreen: '',\n class: 'uk-lightbox-iframe'\n }, attrs))); // YouTube\n } else if (matches = src.match(/\\/\\/(?:.*?youtube(-nocookie)?\\..*?[?&]v=|youtu\\.be\\/)([\\w-]{11})[&?]?(.*)?/)) {\n this.setItem(item, createEl('iframe', assign({\n src: \"https://www.youtube\" + (matches[1] || '') + \".com/embed/\" + matches[2] + (matches[3] ? \"?\" + matches[3] : ''),\n width: 1920,\n height: 1080\n }, iframeAttrs, attrs))); // Vimeo\n } else if (matches = src.match(/\\/\\/.*?vimeo\\.[a-z]+\\/(\\d+)[&?]?(.*)?/)) {\n ajax(\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + encodeURI(src), {\n responseType: 'json',\n withCredentials: false\n }).then(function (ref) {\n var ref_response = ref.response;\n var height = ref_response.height;\n var width = ref_response.width;\n return this$1$1.setItem(item, createEl('iframe', assign({\n src: \"https://player.vimeo.com/video/\" + matches[1] + (matches[2] ? \"?\" + matches[2] : ''),\n width: width,\n height: height\n }, iframeAttrs, attrs)));\n }, function () {\n return this$1$1.setError(item);\n });\n }\n }\n }],\n methods: {\n loadItem: function loadItem(index) {\n if (index === void 0) index = this.index;\n var item = this.getItem(index);\n\n if (!this.getSlide(item).childElementCount) {\n trigger(this.$el, 'itemload', [item]);\n }\n },\n getItem: function getItem(index) {\n if (index === void 0) index = this.index;\n return this.items[_getIndex(index, this.slides)];\n },\n setItem: function setItem(item, content) {\n trigger(this.$el, 'itemloaded', [this, html(this.getSlide(item), content)]);\n },\n getSlide: function getSlide(item) {\n return this.slides[this.items.indexOf(item)];\n },\n setError: function setError(item) {\n this.setItem(item, '');\n },\n showControls: function showControls() {\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n },\n hideControls: function hideControls() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n }\n };\n\n function createEl(tag, attrs) {\n var el = fragment(\"<\" + tag + \">\");\n attr(el, attrs);\n return el;\n }\n\n var lightbox = {\n install: install$1,\n props: {\n toggle: String\n },\n data: {\n toggle: 'a'\n },\n computed: {\n toggles: {\n get: function get(ref, $el) {\n var toggle = ref.toggle;\n return $$(toggle, $el);\n },\n watch: function watch() {\n this.hide();\n }\n }\n },\n disconnected: function disconnected() {\n this.hide();\n },\n events: [{\n name: 'click',\n delegate: function delegate() {\n return this.toggle + \":not(.uk-disabled)\";\n },\n handler: function handler(e) {\n e.preventDefault();\n this.show(e.current);\n }\n }],\n methods: {\n show: function show(index) {\n var this$1$1 = this;\n var items = uniqueBy(this.toggles.map(toItem), 'source');\n\n if (isElement(index)) {\n var ref = toItem(index);\n var source = ref.source;\n index = findIndex(items, function (ref) {\n var src = ref.source;\n return source === src;\n });\n }\n\n this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {\n items: items\n }));\n on(this.panel.$el, 'hidden', function () {\n return this$1$1.panel = false;\n });\n return this.panel.show(index);\n },\n hide: function hide() {\n return this.panel && this.panel.hide();\n }\n }\n };\n\n function install$1(UIkit, Lightbox) {\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', LightboxPanel);\n }\n\n assign(Lightbox.props, UIkit.component('lightboxPanel').options.props);\n }\n\n function toItem(el) {\n var item = {};\n ['href', 'caption', 'type', 'poster', 'alt', 'attrs'].forEach(function (attr) {\n item[attr === 'href' ? 'source' : attr] = data(el, attr);\n });\n item.attrs = parseOptions(item.attrs);\n return item;\n }\n\n var obj$1;\n var notification = {\n mixins: [Container],\n functional: true,\n args: ['message', 'status'],\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsContainer: 'uk-notification',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n install: install,\n computed: {\n marginProp: function marginProp(ref) {\n var pos = ref.pos;\n return \"margin\" + (startsWith(pos, 'top') ? 'Top' : 'Bottom');\n },\n startProps: function startProps() {\n var obj;\n return obj = {\n opacity: 0\n }, obj[this.marginProp] = -this.$el.offsetHeight, obj;\n }\n },\n created: function created() {\n var container = $(\".\" + this.clsContainer + \"-\" + this.pos, this.container) || append(this.container, \"
      \");\n this.$mount(append(container, \"
      \" + this.message + \"
      \"));\n },\n connected: function connected() {\n var this$1$1 = this;\n var obj;\n var margin = toFloat(css(this.$el, this.marginProp));\n Transition.start(css(this.$el, this.startProps), (obj = {\n opacity: 1\n }, obj[this.marginProp] = margin, obj)).then(function () {\n if (this$1$1.timeout) {\n this$1$1.timer = setTimeout(this$1$1.close, this$1$1.timeout);\n }\n });\n },\n events: (obj$1 = {\n click: function click(e) {\n if (closest(e.target, 'a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n\n this.close();\n }\n }, obj$1[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj$1[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj$1),\n methods: {\n close: function close(immediate) {\n var this$1$1 = this;\n\n var removeFn = function removeFn(el) {\n var container = parent(el);\n trigger(el, 'close', [this$1$1]);\n remove$1(el);\n\n if (container && !container.hasChildNodes()) {\n remove$1(container);\n }\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn(this.$el);\n } else {\n Transition.start(this.$el, this.startProps).then(removeFn);\n }\n }\n }\n };\n\n function install(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply$1(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var _props = {\n x: transformFn,\n y: transformFn,\n rotate: transformFn,\n scale: transformFn,\n color: colorFn,\n backgroundColor: colorFn,\n borderColor: colorFn,\n blur: filterFn,\n hue: filterFn,\n fopacity: filterFn,\n grayscale: filterFn,\n invert: filterFn,\n saturate: filterFn,\n sepia: filterFn,\n opacity: cssPropFn,\n stroke: strokeFn,\n bgx: backgroundFn,\n bgy: backgroundFn\n };\n var keys = Object.keys;\n var Parallax = {\n mixins: [Media],\n props: fillObject(keys(_props), 'list'),\n data: fillObject(keys(_props), undefined),\n computed: {\n props: function props(properties, $el) {\n var this$1$1 = this;\n return keys(_props).reduce(function (result, prop) {\n if (!isUndefined(properties[prop])) {\n result[prop] = _props[prop].call(this$1$1, prop, $el, properties[prop].slice());\n }\n\n return result;\n }, {});\n }\n },\n methods: {\n reset: function reset() {\n var this$1$1 = this;\n each(this.getCss(0), function (_, prop) {\n return css(this$1$1.$el, prop, '');\n });\n },\n getCss: function getCss(percent) {\n var this$1$1 = this;\n return keys(this.props).reduce(function (css, prop) {\n this$1$1.props[prop](css, percent);\n return css;\n }, {\n transform: '',\n filter: ''\n });\n }\n }\n };\n\n function transformFn(prop, el, steps) {\n var unit = getUnit(steps) || {\n x: 'px',\n y: 'px',\n rotate: 'deg'\n }[prop] || '';\n\n if (prop === 'x' || prop === 'y') {\n prop = \"translate\" + ucfirst(prop);\n }\n\n steps = steps.map(toFloat);\n\n if (steps.length === 1) {\n steps.unshift(prop === 'scale' ? 1 : 0);\n }\n\n return function (css, percent) {\n var value = getValue(steps, percent);\n\n if (startsWith(prop, 'translate')) {\n value = toFloat(value).toFixed(unit === 'px' ? 0 : 6);\n }\n\n css.transform += \" \" + prop + \"(\" + value + unit + \")\";\n };\n }\n\n function colorFn(prop, el, steps) {\n if (steps.length === 1) {\n steps.unshift(getCssValue(el, prop, ''));\n }\n\n steps = steps.map(function (step) {\n return parseColor(el, step);\n });\n return function (css, percent) {\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n var value = start.map(function (value, i) {\n value += p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',');\n css[prop] = \"rgba(\" + value + \")\";\n };\n }\n\n function parseColor(el, color) {\n return getCssValue(el, 'color', color).split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);\n }\n\n function filterFn(prop, el, steps) {\n if (steps.length === 1) {\n steps.unshift(0);\n }\n\n var unit = getUnit(steps) || {\n blur: 'px',\n hue: 'deg'\n }[prop] || '%';\n prop = {\n fopacity: 'opacity',\n hue: 'hue-rotate'\n }[prop] || prop;\n steps = steps.map(toFloat);\n return function (css, percent) {\n var value = getValue(steps, percent);\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n };\n }\n\n function cssPropFn(prop, el, steps) {\n if (steps.length === 1) {\n steps.unshift(getCssValue(el, prop, ''));\n }\n\n steps = steps.map(toFloat);\n return function (css, percent) {\n css[prop] = getValue(steps, percent);\n };\n }\n\n function strokeFn(prop, el, steps) {\n if (steps.length === 1) {\n steps.unshift(0);\n }\n\n var unit = getUnit(steps);\n steps = steps.map(toFloat);\n\n if (!steps.some(function (step) {\n return step;\n })) {\n return noop;\n }\n\n var length = getMaxPathLength(el);\n css(el, 'strokeDasharray', length);\n\n if (unit === '%') {\n steps = steps.map(function (step) {\n return step * length / 100;\n });\n }\n\n steps = steps.reverse();\n return function (css, percent) {\n css.strokeDashoffset = getValue(steps, percent);\n };\n }\n\n function backgroundFn(prop, el, steps) {\n if (steps.length === 1) {\n steps.unshift(0);\n }\n\n prop = prop.substr(-1);\n var attr = prop === 'y' ? 'height' : 'width';\n steps = steps.map(function (step) {\n return toPx(step, attr, el);\n });\n css(el, \"background-position-\" + prop, '');\n var bgPos = css(el, 'backgroundPosition').split(' ')[prop === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n return getCssValue(el, 'backgroundSize', '') === 'cover' ? backgroundCoverFn.call(this, prop, el, steps, bgPos, attr) : setBackgroundPosFn(prop, steps, bgPos);\n }\n\n function backgroundCoverFn(prop, el, steps, bgPos, attr) {\n var image = getBackgroundImage.call(this, el);\n\n if (!image.naturalWidth) {\n return noop;\n }\n\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n var diff = max - min;\n var pos = (down ? -diff : 0) - (down ? min : max);\n var dimEl = {\n width: el.offsetWidth,\n height: el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n var baseDim = Dimensions.cover(dimImage, dimEl);\n var span = baseDim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = baseDim[attr] + diff - span;\n } else if (span > diff) {\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, el, true);\n\n if (posPercentage) {\n pos -= (span - diff) / posPercentage;\n }\n }\n\n var dim = Dimensions.cover(dimImage, dimEl);\n var fn = setBackgroundPosFn(prop, steps, pos + \"px\");\n return function (css, percent) {\n fn(css, percent);\n css.backgroundSize = dim.width + \"px \" + dim.height + \"px\";\n css.backgroundRepeat = 'no-repeat';\n };\n }\n\n function setBackgroundPosFn(prop, steps, pos) {\n return function (css, percent) {\n css[\"background-position-\" + prop] = \"calc(\" + pos + \" + \" + getValue(steps, percent) + \"px)\";\n };\n }\n\n function getBackgroundImage(el) {\n var this$1$1 = this;\n var src = css(el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n var data = this._data;\n\n if (data[src]) {\n return data[src];\n }\n\n if (src) {\n var img = new Image();\n img.src = src;\n\n if (!img.naturalWidth) {\n img.onload = function () {\n return this$1$1.$update();\n };\n }\n\n return data[src] = img;\n }\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index = Math.min(Math.floor(count * percent), count - 1);\n return steps.slice(index, index + 2).concat(percent === 1 ? 1 : percent % (1 / count) * count);\n }\n\n function getValue(steps, percent) {\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end;\n }\n\n function getUnit(steps, defaultUnit) {\n return steps.reduce(function (unit, step) {\n return unit || isString(step) && step.replace(/[\\d-]/g, '').trim();\n }, '') || defaultUnit;\n }\n\n function getCssValue(el, prop, value) {\n var prev = el.style[prop];\n var val = css(css(el, prop, value), prop);\n el.style[prop] = prev;\n return val;\n }\n\n function fillObject(keys, value) {\n return keys.reduce(function (data, prop) {\n data[prop] = value;\n return data;\n }, {});\n }\n\n var parallax = {\n mixins: [Parallax],\n props: {\n target: String,\n viewport: Number,\n // Deprecated\n easing: Number,\n start: String,\n end: String\n },\n data: {\n target: false,\n viewport: 1,\n easing: 1,\n start: 0,\n end: 0\n },\n computed: {\n target: function target(ref, $el) {\n var target = ref.target;\n return getOffsetElement(target && query(target, $el) || $el);\n },\n start: function start(ref) {\n var start = ref.start;\n return parseCalc(start, this.target);\n },\n end: function end(ref) {\n var end = ref.end;\n var viewport = ref.viewport;\n return parseCalc(end || (viewport = (1 - viewport) * 100) && viewport + \"vh+\" + viewport + \"%\", this.target);\n }\n },\n update: {\n read: function read(ref, types) {\n var percent = ref.percent;\n\n if (!types.has('scroll')) {\n percent = false;\n }\n\n if (!this.matchMedia) {\n return;\n }\n\n var prev = percent;\n percent = ease(scrolledOver(this.target, this.start, this.end), this.easing);\n return {\n percent: percent,\n style: prev === percent ? false : this.getCss(percent)\n };\n },\n write: function write(ref) {\n var style = ref.style;\n\n if (!this.matchMedia) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n },\n events: ['scroll', 'resize']\n }\n };\n var calcRe = /-?\\d+(?:\\.\\d+)?(?:v[wh]|%|px)?/g;\n\n function parseCalc(calc, el) {\n var match;\n var result = 0;\n calc = calc.toString().replace(/\\s/g, '');\n calcRe.lastIndex = 0;\n\n while ((match = calcRe.exec(calc)) !== null) {\n result += toPx(match[0], 'height', el, true);\n }\n\n return result;\n }\n\n function ease(percent, easing) {\n return easing >= 0 ? Math.pow(percent, easing + 1) : 1 - Math.pow(1 - percent, -easing + 1);\n } // SVG elements do not inherit from HTMLElement\n\n\n function getOffsetElement(el) {\n return el ? 'offsetTop' in el ? el : getOffsetElement(parent(el)) : document.documentElement;\n }\n\n var SliderReactive = {\n update: {\n write: function write() {\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index = this.getValidIndex(this.index);\n\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n }\n },\n events: ['resize']\n }\n };\n\n function Transitioner(prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n var deferred = new Deferred();\n var from = prev ? getLeft(prev, list, center) : getLeft(next, list, center) + dimensions(next).width * dir;\n var to = next ? getLeft(next, list, center) : from + dimensions(prev).width * dir * (isRtl ? -1 : 1);\n return {\n dir: dir,\n show: function show(duration, percent, linear) {\n if (percent === void 0) percent = 0;\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n this.translate(percent);\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate(this.getItemIn(), 'itemin', {\n percent: percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n prev && triggerUpdate(this.getItemIn(true), 'itemout', {\n percent: 1 - percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n Transition.start(list, {\n transform: _translate(-to * (isRtl ? -1 : 1), 'px')\n }, duration, timing).then(deferred.resolve, noop);\n return deferred.promise;\n },\n cancel: function cancel() {\n Transition.cancel(list);\n },\n reset: function reset() {\n css(list, 'transform', '');\n },\n forward: function forward(duration, percent) {\n if (percent === void 0) percent = this.percent();\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n translate: function translate(percent) {\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n css(list, 'transform', _translate(clamp(-to + (distance - distance * percent), -getWidth(list), dimensions(list).width) * (isRtl ? -1 : 1), 'px'));\n var actives = this.getActives();\n var itemIn = this.getItemIn();\n var itemOut = this.getItemIn(true);\n percent = prev ? clamp(percent, -1, 1) : 0;\n\n _children(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n var isIn = slide === itemIn;\n var isOut = slide === itemOut;\n var translateIn = isIn || !isOut && (isActive || dir * (isRtl ? -1 : 1) === -1 ^ getElLeft(slide, list) > getElLeft(prev || next));\n triggerUpdate(slide, \"itemtranslate\" + (translateIn ? 'in' : 'out'), {\n dir: dir,\n percent: isOut ? 1 - percent : isIn ? percent : isActive ? 1 : 0\n });\n });\n },\n percent: function percent() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n getDistance: function getDistance() {\n return Math.abs(to - from);\n },\n getItemIn: function getItemIn(out) {\n if (out === void 0) out = false;\n var actives = this.getActives();\n var nextActives = inView(list, getLeft(next || prev, list, center));\n\n if (out) {\n var temp = actives;\n actives = nextActives;\n nextActives = temp;\n }\n\n return nextActives[findIndex(nextActives, function (el) {\n return !includes(actives, el);\n })];\n },\n getActives: function getActives() {\n return inView(list, getLeft(prev || next, list, center));\n }\n };\n }\n\n function getLeft(el, list, center) {\n var left = getElLeft(el, list);\n return center ? left - centerEl(el, list) : Math.min(left, getMax(list));\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - dimensions(list).width);\n }\n\n function getWidth(list) {\n return _children(list).reduce(function (right, el) {\n return dimensions(el).width + right;\n }, 0);\n }\n\n function centerEl(el, list) {\n return dimensions(list).width / 2 - dimensions(el).width / 2;\n }\n\n function getElLeft(el, list) {\n return el && (position(el).left + (isRtl ? dimensions(el).width - dimensions(list).width : 0)) * (isRtl ? -1 : 1) || 0;\n }\n\n function inView(list, listLeft) {\n listLeft -= 1;\n var listWidth = dimensions(list).width;\n var listRight = listLeft + listWidth + 2;\n return _children(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n var slideRight = slideLeft + Math.min(dimensions(slide).width, listWidth);\n return slideLeft >= listLeft && slideRight <= listRight;\n });\n }\n\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var slider = {\n mixins: [Class, Slider, SliderReactive],\n props: {\n center: Boolean,\n sets: Boolean\n },\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner\n },\n computed: {\n avgWidth: function avgWidth() {\n return getWidth(this.list) / this.length;\n },\n finite: function finite(ref) {\n var finite = ref.finite;\n return finite || Math.ceil(getWidth(this.list)) < dimensions(this.list).width + getMaxElWidth(this.list) + this.center;\n },\n maxIndex: function maxIndex() {\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return last(this.sets);\n }\n\n var lft = 0;\n var max = getMax(this.list);\n var index = findIndex(this.slides, function (el) {\n if (lft >= max) {\n return true;\n }\n\n lft += dimensions(el).width;\n });\n return ~index ? index : this.length - 1;\n },\n sets: function sets(ref) {\n var this$1$1 = this;\n var sets = ref.sets;\n\n if (!sets) {\n return;\n }\n\n var width = dimensions(this.list).width / (this.center ? 2 : 1);\n var left = 0;\n var leftCenter = width;\n var slideLeft = 0;\n sets = sortBy$1(this.slides, 'offsetLeft').reduce(function (sets, slide, i) {\n var slideWidth = dimensions(slide).width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n if (!this$1$1.center && i > this$1$1.maxIndex) {\n i = this$1$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n var cmp = this$1$1.slides[i + 1];\n\n if (this$1$1.center && cmp && slideWidth < leftCenter - dimensions(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width;\n sets.push(i);\n left = slideLeft + width + (this$1$1.center ? slideWidth / 2 : 0);\n }\n }\n }\n\n slideLeft += slideWidth;\n return sets;\n }, []);\n return !isEmpty(sets) && sets;\n },\n transitionOptions: function transitionOptions() {\n return {\n center: this.center,\n list: this.list\n };\n }\n },\n connected: function connected() {\n toggleClass(this.$el, this.clsContainer, !$(\".\" + this.clsContainer, this.$el));\n },\n update: {\n write: function write() {\n var this$1$1 = this;\n this.navItems.forEach(function (el) {\n var index = toNumber(data(el, this$1$1.attrItem));\n\n if (index !== false) {\n el.hidden = !this$1$1.maxIndex || index > this$1$1.maxIndex || this$1$1.sets && !includes(this$1$1.sets, index);\n }\n });\n\n if (this.length && !this.dragging && !this.stack.length) {\n this.reorder();\n\n this._translate(1);\n }\n\n var actives = this._getTransitioner(this.index).getActives();\n\n this.slides.forEach(function (slide) {\n return toggleClass(slide, this$1$1.clsActive, includes(actives, slide));\n });\n\n if (this.clsActivated && (!this.sets || includes(this.sets, toFloat(this.index)))) {\n this.slides.forEach(function (slide) {\n return toggleClass(slide, this$1$1.clsActivated || '', includes(actives, slide));\n });\n }\n },\n events: ['resize']\n },\n events: {\n beforeitemshow: function beforeitemshow(e) {\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n 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));\n\n if (!this.dragging && diff > 1) {\n for (var i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n var index = this.dir < 0 || !this.slides[this.prevIndex] ? this.index : this.prevIndex;\n this.duration = speedUp(this.avgWidth / this.velocity) * (dimensions(this.slides[index]).width / this.avgWidth);\n this.reorder();\n },\n itemshow: function itemshow() {\n if (~this.prevIndex) {\n addClass(this._getTransitioner().getItemIn(), this.clsActive);\n }\n }\n },\n methods: {\n reorder: function reorder() {\n var this$1$1 = this;\n\n if (this.finite) {\n css(this.slides, 'order', '');\n return;\n }\n\n var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n this.slides.forEach(function (slide, i) {\n return css(slide, 'order', this$1$1.dir > 0 && i < index ? 1 : this$1$1.dir < 0 && i >= this$1$1.index ? -1 : '');\n });\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index];\n var width = dimensions(this.list).width / 2 - dimensions(next).width / 2;\n var j = 0;\n\n while (width > 0) {\n var slideIndex = this.getIndex(--j + index, index);\n var slide = this.slides[slideIndex];\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= dimensions(slide).width;\n }\n },\n getValidIndex: function getValidIndex(index, prevIndex) {\n if (index === void 0) index = this.index;\n if (prevIndex === void 0) prevIndex = this.prevIndex;\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n var prev;\n\n do {\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n } while (index !== prev);\n\n return index;\n }\n }\n };\n\n function getMaxElWidth(list) {\n return Math.max.apply(Math, [0].concat(_children(list).map(function (el) {\n return dimensions(el).width;\n })));\n }\n\n var sliderParallax = {\n mixins: [Parallax],\n data: {\n selItem: '!li'\n },\n computed: {\n item: function item(ref, $el) {\n var selItem = ref.selItem;\n return query(selItem, $el);\n }\n },\n events: [{\n name: 'itemin itemout',\n self: true,\n el: function el() {\n return this.item;\n },\n handler: function handler(ref) {\n var this$1$1 = this;\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n fastdom.read(function () {\n var propsFrom = this$1$1.getCss(getCurrentPercent(type, dir, percent));\n var propsTo = this$1$1.getCss(isIn(type) ? .5 : dir > 0 ? 1 : 0);\n fastdom.write(function () {\n css(this$1$1.$el, propsFrom);\n Transition.start(this$1$1.$el, propsTo, duration, timing).catch(noop);\n });\n });\n }\n }, {\n name: 'transitioncanceled transitionend',\n self: true,\n el: function el() {\n return this.item;\n },\n handler: function handler() {\n Transition.cancel(this.$el);\n }\n }, {\n name: 'itemtranslatein itemtranslateout',\n self: true,\n el: function el() {\n return this.item;\n },\n handler: function handler(ref) {\n var this$1$1 = this;\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n fastdom.read(function () {\n var props = this$1$1.getCss(getCurrentPercent(type, dir, percent));\n fastdom.write(function () {\n return css(this$1$1.$el, props);\n });\n });\n }\n }]\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrentPercent(type, dir, percent) {\n percent /= 2;\n return isIn(type) ^ dir < 0 ? percent : 1 - percent;\n }\n\n var Animations = assign({}, Animations$2, {\n fade: {\n show: function show() {\n return [{\n opacity: 0,\n zIndex: 0\n }, {\n zIndex: -1\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent,\n zIndex: 0\n }, {\n zIndex: -1\n }];\n }\n },\n scale: {\n show: function show() {\n return [{\n opacity: 0,\n transform: scale3d(1 + .5),\n zIndex: 0\n }, {\n zIndex: -1\n }];\n },\n percent: function percent(current) {\n return 1 - css(current, 'opacity');\n },\n translate: function translate(percent) {\n return [{\n opacity: 1 - percent,\n transform: scale3d(1 + .5 * percent),\n zIndex: 0\n }, {\n zIndex: -1\n }];\n }\n },\n pull: {\n show: function show(dir) {\n return dir < 0 ? [{\n transform: _translate(30),\n zIndex: -1\n }, {\n transform: _translate(),\n zIndex: 0\n }] : [{\n transform: _translate(-100),\n zIndex: 0\n }, {\n transform: _translate(),\n zIndex: -1\n }];\n },\n percent: function percent(current, next, dir) {\n return dir < 0 ? 1 - translated(next) : translated(current);\n },\n translate: function translate(percent, dir) {\n return dir < 0 ? [{\n transform: _translate(30 * percent),\n zIndex: -1\n }, {\n transform: _translate(-100 * (1 - percent)),\n zIndex: 0\n }] : [{\n transform: _translate(-percent * 100),\n zIndex: 0\n }, {\n transform: _translate(30 * (1 - percent)),\n zIndex: -1\n }];\n }\n },\n push: {\n show: function show(dir) {\n return dir < 0 ? [{\n transform: _translate(100),\n zIndex: 0\n }, {\n transform: _translate(),\n zIndex: -1\n }] : [{\n transform: _translate(-30),\n zIndex: -1\n }, {\n transform: _translate(),\n zIndex: 0\n }];\n },\n percent: function percent(current, next, dir) {\n return dir > 0 ? 1 - translated(next) : translated(current);\n },\n translate: function translate(percent, dir) {\n return dir < 0 ? [{\n transform: _translate(percent * 100),\n zIndex: 0\n }, {\n transform: _translate(-30 * (1 - percent)),\n zIndex: -1\n }] : [{\n transform: _translate(-30 * percent),\n zIndex: -1\n }, {\n transform: _translate(100 * (1 - percent)),\n zIndex: 0\n }];\n }\n }\n });\n var slideshow = {\n mixins: [Class, Slideshow, SliderReactive],\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number\n },\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations\n },\n update: {\n read: function read() {\n if (!this.list) {\n return false;\n }\n\n var ref = this.ratio.split(':').map(Number);\n var width = ref[0];\n var height = ref[1];\n height = height * this.list.offsetWidth / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return {\n height: height - boxModelAdjust(this.list, 'height', 'content-box')\n };\n },\n write: function write(ref) {\n var height = ref.height;\n height > 0 && css(this.list, 'minHeight', height);\n },\n events: ['resize']\n }\n };\n var sortable = {\n mixins: [Class, Animate],\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false,\n pos: {}\n },\n created: function created() {\n var this$1$1 = this;\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1$1[key];\n\n this$1$1[key] = function (e) {\n assign(this$1$1.pos, getEventPos(e));\n fn(e);\n };\n });\n },\n events: {\n name: pointerDown,\n passive: false,\n handler: 'init'\n },\n computed: {\n target: function target() {\n return (this.$el.tBodies || [this.$el])[0];\n },\n items: function items() {\n return _children(this.target);\n },\n isEmpty: {\n get: function get() {\n return isEmpty(this.items);\n },\n watch: function watch(empty) {\n toggleClass(this.target, this.clsEmpty, empty);\n },\n immediate: true\n },\n handles: {\n get: function get(ref, el) {\n var handle = ref.handle;\n return handle ? $$(handle, el) : this.items;\n },\n watch: function watch(handles, prev) {\n css(prev, {\n touchAction: '',\n userSelect: ''\n });\n css(handles, {\n touchAction: hasTouch ? 'none' : '',\n userSelect: 'none'\n }); // touchAction set to 'none' causes a performance drop in Chrome 80\n },\n immediate: true\n }\n },\n update: {\n write: function write(data) {\n if (!this.drag || !parent(this.placeholder)) {\n return;\n }\n\n var ref = this;\n var ref_pos = ref.pos;\n var x = ref_pos.x;\n var y = ref_pos.y;\n var ref_origin = ref.origin;\n var offsetTop = ref_origin.offsetTop;\n var offsetLeft = ref_origin.offsetLeft;\n var placeholder = ref.placeholder;\n css(this.drag, {\n top: y - offsetTop,\n left: x - offsetLeft\n });\n var sortable = this.getSortable(document.elementFromPoint(x, y));\n\n if (!sortable) {\n return;\n }\n\n var items = sortable.items;\n\n if (items.some(Transition.inProgress)) {\n return;\n }\n\n var target = findTarget(items, {\n x: x,\n y: y\n });\n\n if (items.length && (!target || target === placeholder)) {\n return;\n }\n\n var previous = this.getSortable(placeholder);\n var insertTarget = findInsertTarget(sortable.target, target, placeholder, x, y, sortable === previous && data.moved !== target);\n\n if (insertTarget === false) {\n return;\n }\n\n if (insertTarget && placeholder === insertTarget) {\n return;\n }\n\n if (sortable !== previous) {\n previous.remove(placeholder);\n data.moved = target;\n } else {\n delete data.moved;\n }\n\n sortable.insert(placeholder, insertTarget);\n this.touched.add(sortable);\n },\n events: ['move']\n },\n methods: {\n init: function init(e) {\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = this.items.filter(function (el) {\n return within(target, el);\n });\n var placeholder = ref[0];\n\n if (!placeholder || defaultPrevented || button > 0 || isInput(target) || within(target, \".\" + this.clsNoDrag) || this.handle && !within(target, this.handle)) {\n return;\n }\n\n e.preventDefault();\n this.touched = new Set([this]);\n this.placeholder = placeholder;\n this.origin = assign({\n target: target,\n index: index(placeholder)\n }, this.pos);\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n\n if (!this.threshold) {\n this.start(e);\n }\n },\n start: function start(e) {\n this.drag = appendDrag(this.$container, this.placeholder);\n var ref = this.placeholder.getBoundingClientRect();\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {\n offsetLeft: this.pos.x - left,\n offsetTop: this.pos.y - top\n });\n addClass(this.drag, this.clsDrag, this.clsCustom);\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.items, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n trigger(this.$el, 'start', [this, this.placeholder]);\n trackScroll(this.pos);\n this.move(e);\n },\n move: function move(e) {\n if (this.drag) {\n this.$emit('move');\n } else if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n },\n end: function end() {\n var this$1$1 = this;\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n return;\n }\n\n untrackScroll();\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n remove$1(this.drag);\n this.drag = null;\n this.touched.forEach(function (ref) {\n var clsPlaceholder = ref.clsPlaceholder;\n var clsItem = ref.clsItem;\n return this$1$1.touched.forEach(function (sortable) {\n return removeClass(sortable.items, clsPlaceholder, clsItem);\n });\n });\n this.touched = null;\n removeClass(document.documentElement, this.clsDragState);\n },\n insert: function insert(element, target) {\n var this$1$1 = this;\n addClass(this.items, this.clsItem);\n\n var insert = function insert() {\n return target ? before(target, element) : append(this$1$1.target, element);\n };\n\n this.animate(insert);\n },\n remove: function remove(element) {\n if (!within(element, this.target)) {\n return;\n }\n\n this.animate(function () {\n return remove$1(element);\n });\n },\n getSortable: function getSortable(element) {\n do {\n var sortable = this.$getComponent(element, 'sortable');\n\n if (sortable && (sortable === this || this.group !== false && sortable.group === this.group)) {\n return sortable;\n }\n } while (element = parent(element));\n }\n }\n };\n var trackTimer;\n\n function trackScroll(pos) {\n var last = Date.now();\n trackTimer = setInterval(function () {\n var x = pos.x;\n var y = pos.y;\n y += window.pageYOffset;\n var dist = (Date.now() - last) * .3;\n last = Date.now();\n scrollParents(document.elementFromPoint(x, pos.y), /auto|scroll/).reverse().some(function (scrollEl) {\n var scroll = scrollEl.scrollTop;\n var scrollHeight = scrollEl.scrollHeight;\n var ref = offset(getViewport$1(scrollEl));\n var top = ref.top;\n var bottom = ref.bottom;\n var height = ref.height;\n\n if (top < y && top + 35 > y) {\n scroll -= dist;\n } else if (bottom > y && bottom - 35 < y) {\n scroll += dist;\n } else {\n return;\n }\n\n if (scroll > 0 && scroll < scrollHeight - height) {\n scrollTop(scrollEl, scroll);\n return true;\n }\n });\n }, 15);\n }\n\n function untrackScroll() {\n clearInterval(trackTimer);\n }\n\n function appendDrag(container, element) {\n var clone = append(container, element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\\/>$)/g, '$1div$2'));\n css(clone, 'margin', '0', 'important');\n css(clone, assign({\n boxSizing: 'border-box',\n width: element.offsetWidth,\n height: element.offsetHeight\n }, css(element, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n height(clone.firstElementChild, height(element.firstElementChild));\n return clone;\n }\n\n function findTarget(items, point) {\n return items[findIndex(items, function (item) {\n return pointInRect(point, item.getBoundingClientRect());\n })];\n }\n\n function findInsertTarget(list, target, placeholder, x, y, sameList) {\n if (!_children(list).length) {\n return;\n }\n\n var rect = target.getBoundingClientRect();\n\n if (!sameList) {\n if (!isHorizontal(list, placeholder)) {\n return y < rect.top + rect.height / 2 ? target : target.nextElementSibling;\n }\n\n return target;\n }\n\n var placeholderRect = placeholder.getBoundingClientRect();\n var sameRow = linesIntersect([rect.top, rect.bottom], [placeholderRect.top, placeholderRect.bottom]);\n var pointerPos = sameRow ? x : y;\n var lengthProp = sameRow ? 'width' : 'height';\n var startProp = sameRow ? 'left' : 'top';\n var endProp = sameRow ? 'right' : 'bottom';\n var diff = placeholderRect[lengthProp] < rect[lengthProp] ? rect[lengthProp] - placeholderRect[lengthProp] : 0;\n\n if (placeholderRect[startProp] < rect[startProp]) {\n if (diff && pointerPos < rect[startProp] + diff) {\n return false;\n }\n\n return target.nextElementSibling;\n }\n\n if (diff && pointerPos > rect[endProp] - diff) {\n return false;\n }\n\n return target;\n }\n\n function isHorizontal(list, placeholder) {\n var single = _children(list).length === 1;\n\n if (single) {\n append(list, placeholder);\n }\n\n var items = _children(list);\n\n var isHorizontal = items.some(function (el, i) {\n var rectA = el.getBoundingClientRect();\n return items.slice(i + 1).some(function (el) {\n var rectB = el.getBoundingClientRect();\n return !linesIntersect([rectA.left, rectA.right], [rectB.left, rectB.right]);\n });\n });\n\n if (single) {\n remove$1(placeholder);\n }\n\n return isHorizontal;\n }\n\n function linesIntersect(lineA, lineB) {\n return lineA[1] > lineB[0] && lineB[1] > lineA[0];\n }\n\n var obj;\n var tooltip = {\n mixins: [Container, Togglable, Position],\n args: 'title',\n props: {\n delay: Number,\n title: String\n },\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n beforeConnect: function beforeConnect() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, 'title', '');\n this.updateAria(false);\n makeFocusable(this.$el);\n },\n disconnected: function disconnected() {\n this.hide();\n attr(this.$el, 'title', this._hasTitle ? this.title : null);\n },\n methods: {\n show: function show() {\n var this$1$1 = this;\n\n if (this.isToggled(this.tooltip || null) || !this.title) {\n return;\n }\n\n this._unbind = once(document, \"show keydown \" + pointerDown, this.hide, false, function (e) {\n return e.type === pointerDown && !within(e.target, this$1$1.$el) || e.type === 'keydown' && e.keyCode === 27 || e.type === 'show' && e.detail[0] !== this$1$1 && e.detail[0].$name === this$1$1.$name;\n });\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(this._show, this.delay);\n },\n hide: function hide() {\n var this$1$1 = this;\n\n if (matches(this.$el, 'input:focus')) {\n return;\n }\n\n clearTimeout(this.showTimer);\n\n if (!this.isToggled(this.tooltip || null)) {\n return;\n }\n\n this.toggleElement(this.tooltip, false, false).then(function () {\n remove$1(this$1$1.tooltip);\n this$1$1.tooltip = null;\n\n this$1$1._unbind();\n });\n },\n _show: function _show() {\n var this$1$1 = this;\n this.tooltip = append(this.container, \"
      \" + this.title + \"
      \");\n on(this.tooltip, 'toggled', function (e, toggled) {\n this$1$1.updateAria(toggled);\n\n if (!toggled) {\n return;\n }\n\n this$1$1.positionAt(this$1$1.tooltip, this$1$1.$el);\n this$1$1.origin = this$1$1.getAxis() === 'y' ? flipPosition(this$1$1.dir) + \"-\" + this$1$1.align : this$1$1.align + \"-\" + flipPosition(this$1$1.dir);\n });\n this.toggleElement(this.tooltip, true);\n },\n updateAria: function updateAria(toggled) {\n attr(this.$el, 'aria-expanded', toggled);\n }\n },\n events: (obj = {\n focus: 'show',\n blur: 'hide'\n }, obj[pointerEnter + \" \" + pointerLeave] = function (e) {\n if (!isTouch(e)) {\n this[e.type === pointerEnter ? 'show' : 'hide']();\n }\n }, obj[pointerDown] = function (e) {\n if (isTouch(e)) {\n this.show();\n }\n }, obj)\n };\n\n function makeFocusable(el) {\n if (!isFocusable(el)) {\n attr(el, 'tabindex', '0');\n }\n }\n\n var upload = {\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n events: {\n change: function change(e) {\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n drop: function drop(e) {\n stop(e);\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n this.upload(transfer.files);\n },\n dragenter: function dragenter(e) {\n stop(e);\n },\n dragover: function dragover(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n dragleave: function dragleave(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n },\n methods: {\n upload: function upload(files) {\n var this$1$1 = this;\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n if (this.maxSize && this.maxSize * 1000 < files[i].size) {\n this.fail(this.msgInvalidSize.replace('%s', this.maxSize));\n return;\n }\n\n if (this.allow && !match(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match(this.mime, files[i].type)) {\n this.fail(this.msgInvalidMime.replace('%s', this.mime));\n return;\n }\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n var chunks = chunk(files, this.concurrent);\n\n var upload = function upload(files) {\n var data = new FormData();\n files.forEach(function (file) {\n return data.append(this$1$1.name, file);\n });\n\n for (var key in this$1$1.params) {\n data.append(key, this$1$1.params[key]);\n }\n\n ajax(this$1$1.url, {\n data: data,\n method: this$1$1.method,\n responseType: this$1$1.type,\n beforeSend: function beforeSend(env) {\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) {\n return on(xhr, type.toLowerCase(), this$1$1[type]);\n });\n return this$1$1.beforeSend(env);\n }\n }).then(function (xhr) {\n this$1$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1$1.completeAll(xhr);\n }\n }, function (e) {\n return this$1$1.error(e);\n });\n };\n\n upload(chunks.shift());\n }\n }\n };\n\n function match(pattern, path) {\n return path.match(new RegExp(\"^\" + pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.') + \"$\", 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n\n chunks.push(chunk);\n }\n\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n var components = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Countdown: countdown,\n Filter: filter,\n Lightbox: lightbox,\n LightboxPanel: LightboxPanel,\n Notification: notification,\n Parallax: parallax,\n Slider: slider,\n SliderParallax: sliderParallax,\n Slideshow: slideshow,\n SlideshowParallax: sliderParallax,\n Sortable: sortable,\n Tooltip: tooltip,\n Upload: upload\n });\n each(components, function (component, name) {\n return UIkit.component(name, component);\n });\n return UIkit;\n});"],"names":["module","exports","objPrototype","Object","prototype","hasOwnProperty","hasOwn","obj","key","call","hyphenateRe","hyphenate","memoize","str","replace","toLowerCase","camelizeRe","camelize","toUpper","ucfirst","length","charAt","slice","_","c","toUpperCase","strPrototype","String","startsWithFn","startsWith","search","this","lastIndexOf","endsWithFn","endsWith","substr","arrPrototype","Array","includesFn","i","indexOf","includesStr","includes","includesArray","isString","findIndexFn","findIndex","predicate","arguments$1","arguments","array","isArray","isFunction","isObject","toString","isPlainObject","isWindow","window","isDocument","nodeType","isNode","isElement","isBoolean","value","isNumber","isNumeric","isNaN","parseFloat","isEmpty","keys","isUndefined","toBoolean","toNumber","number","Number","toFloat","toArray","from","toNode","element","toNodes","filter","toWindow","ownerDocument","defaultView","toMs","time","isEqual","other","each","val","swap","a","b","RegExp","match","assign","target","args","len","source","last","cb","sortBy$1","prop","sort","ref","ref$1","propA","propB","uniqueBy","seen","Set","check","has","add","clamp","min","max","Math","noop","intersectRect","rects","every","minProp","maxProp","apply","map","pointInRect","point","rect","x","right","left","y","bottom","top","Dimensions","ratio","dimensions","aProp","round","contain","maxDimensions","this$1$1","cover","_getIndex","elements","current","finite","fn","cache","create","attr","name","getAttribute","forEach","removeAttr","setAttribute","hasAttr","some","hasAttribute","split","removeAttribute","data","attribute","attrs","inBrowser","isIE","test","navigator","userAgent","isRtl","document","documentElement","hasTouchEvents","hasPointerEvents","PointerEvent","hasTouch","DocumentTouch","maxTouchPoints","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","pointerCancel","voidElements","area","base","br","col","embed","hr","img","input","keygen","link","menuitem","meta","param","track","wbr","isVoidElement","tagName","isVisible","offsetWidth","offsetHeight","getClientRects","selInput","isInput","matches","selFocusable","isFocusable","parent","parentNode","filter$1","selector","elProto","Element","matchesFn","webkitMatchesSelector","msMatchesSelector","closestFn","closest","ancestor","Boolean","within","contains","parents","push","_children","children","index","query","context","find","getContext","queryAll","findAll","isContextSelector","_query","queryFn","contextSanitizeRe","splitSelector","ctx","selectors","trim","join","selectors$1","prev","previousElementSibling","domPath","e","contextSelectorRe","selectorRe","names","id","unshift","escape","escapeFn","CSS","css","on","getArgs","targets","type","listener","useCapture","toEventTargets","detail","self","selfFilter","delegate","useCaptureFilter","addEventListener","off","removeEventListener","once","condition","result","trigger","event","reduce","notCanceled","dispatchEvent","createEvent","bubbles","cancelable","initCustomEvent","splice","currentTarget","reverse","concat","options","capture","isEventTarget","toEventTarget","isTouch","pointerType","touches","getEventPos","changedTouches","clientX","clientY","Promise$1","Promise","PromiseFn","Deferred","promise","resolve","reject","RESOLVED","REJECTED","PENDING","async","setImmediate","setTimeout","executor","state","undefined","deferred","r","all","iterable","count","resolver","then","race","p","ajax","url","env","method","headers","xhr","XMLHttpRequest","beforeSend","responseType","send","header","open","setRequestHeader","status","response","copyXhr","JSON","parse","Error","statusText","getImage","src","srcset","sizes","Image","onerror","onload","ready","readyState","empty","$","innerHTML","html","append","hasChildNodes","prepend","insertNodes","insertBefore","firstChild","appendChild","before","after","nextSibling","fragment","remove$1","removeChild","wrapAll","structure","wrapInner","childNodes","unwrap","TypeError","called","notify","reason","shift","onResolved","onRejected","catch","fragmentRe","singleTagRe","exec","createElement","container","insertAdjacentHTML","textContent","apply$1","node","firstElementChild","next","nextElementSibling","isHtml","$$","addClass","removeClass","removeClasses","cls","replaceClass","hasClass","getClasses","nodes","n","classList","toggleClass","force","list","toggle","supports","Force","arg","loop","Multiple","get","cssNumber","property","priority","propName","getStyle","style","setProperty","removeProperty","styles","getStyles","props","pseudoElt","getComputedStyle","parseCssVar","propertyRe","getCssVar","getPropertyValue","vendorPropName","cssPrefixes","prefixedName","transition","duration","timing","timer","clearTimeout","transitionProperty","transitionDuration","transitionTimingFunction","Transition","start","stop","cancel","inProgress","animationPrefix","animate$1","animation","origin","out","_inProgress","Animation","in","dirs$1","width","height","getBoundingClientRect","offset","coordinates","currentOffset","offsetBy","pageYOffset","pageXOffset","dir","pos","position","ref$1_ownerDocument","body","offsetParent","parentOffset","offsetPosition","offsetTop","offsetLeft","win","dimension","doc","boxModelAdjust","sizing","flipPosition","toPx","offsetDim","percent","fastdom","reads","writes","read","task","scheduleFlush","write","clear","remove","flush","recursion","runTasks","scheduled","RECURSION_LIMIT","requestAnimationFrame","tasks","console","error","item","MouseTracker","intersect","ref_0","x1","y1","ref_1","x2","y2","ref$1_0","x3","y3","ref$1_1","x4","y4","denominator","ua","positions","init","unbind","interval","setInterval","clearInterval","movesTo","prevPosition","path","diagonal","intersection","strats","mergeFnData","parentVal","childVal","vm","computed","concatStrat","defaultStrat","mergeOptions","child","extends","mixins","l","mergeKey","key$1","parseOptions","option","play","el","isIFrame","func","isHTML5","pause","mute","muted","isVideo","isYoutube","isVimeo","cmd","enableApi","post","contentWindow","postMessage","stringify","events","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","update","methods","stateKey$1","counter","poller","youtube","vimeo","player_id","isInView","scrollParents","getViewport$1","scrollTop","getScrollingElement","scrollIntoView","scrollElement","scrollHeight","maxScroll","getViewportClientHeight","elHeight","elTop","ceil","scrollTo","scroll","getDuration","abs","Date","now","step","ease","dist","pow","k","cos","PI","scrolledOver","startOffset","endOffset","viewportHeight","elementOffsetTop","overflowRe","scrollable","scrollEl","ancestors","fixedIndex","clientHeight","scrollingElement","dirs","_positionAt","elAttach","targetAttach","elOffset","targetOffset","flip","boundary","getPos","flipped","dim","targetDim","moveTo","getOffsets","boundaries","align","alignFlip","elemOffset","centerOffset","centerTargetOffset","newVal","toFixed","attach","factor","offsets","util","freeze","__proto__","animate","sortBy","getIndex","positionAt","getViewport","globalAPI","UIkit","DATA","_connected","_callUpdate","use","plugin","installed","mixin","component","extend","Super","Sub","_init","constructor","super","defineProperty","set","hooksAPI","runUpdates","types","updates","$options","_data","runWatches","initial","values","_computeds","watch","immediate","_callHook","hook","handlers","handler","_callConnected","_initProps","_initEvents","_initObservers","_callDisconnected","_disconnectObservers","_unbindEvents","_watch","_callWatches","_updates","stateAPI","uid","getProps","opts","data$1","coerce","prop$1","registerComputed","enumerable","$props","$el","registerEvent","passive","_events","bind","notIn","arr","toList","normalizeData","initChildListObserver","observer","MutationObserver","$emit","observe","childList","subtree","initPropsObserver","$name","attributes","records","attributeName","$reset","attributeFilter","_uid","_initData","_initMethods","_initComputeds","$mount","exclude","_observers","disconnect","instanceAPI","$create","$destroy","removeEl","$update","$getComponent","getComponent","componentName","prefix","defineProperties","$container","getOwnPropertyDescriptor","componentAPI","components","argsArray","functional","instance","opt","install","_initialized","getComponents","connect","name$1","getComponentName","Core","pendingResize","pending","handleResize","ResizeObserver","started","swipeDirection","boot","applyChildListMutation","addedNodes","removedNodes","i$1","applyAttributeMutation","version","Class","Togglable","clsEnter","clsLeave","initProps","overflow","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","show","isToggled","toggleHeight","toggleAnimation","_toggle","done","toggled","changed","hidden","focus","blur","inner","lastElementChild","currentHeight","endHeight","cmp","Accordion","active","collapsible","multiple","content","clsOpen","items","hide","toggles","preventDefault","activeItems","_wrapper","alert","close","selClose","opacity","Video","automute","autoplay","inView","preload","visible","getPositionedParent","naturalWidth","videoWidth","clientWidth","naturalHeight","videoHeight","active$1","Container","Position","clsPos","offset$1","axis","getAxis","drop","mode","boundaryAlign","delayShow","delayHide","clsDrop","tracker","isActive","defaultPrevented","hash","clearTimers","relatedTarget","newTarget","keyCode","delay","isDelaying","showTimer","getPositionedElements","hideTimer","alignTo","formCustom","files","selected","gif","inview","Margin","margin","firstColumn","rows","getRows","columns","getColumns","j","sorted","startProp","endProp","getOffset","startDim","grid","masonry","parallax","clsStack","positionedAbsolute","translates","columnHeights","getColumnHeights","getMarginTop","getTranslates","column","padding","newPadding","hgt","scrolled","rowHeights","row","sum","FlexBug","selMinHeight","forceHeight","order","heightMatch","match$1","heights","getHeight","hasMinHeight","minHeight","hasShrunk","display","heightViewport","expand","offsetBottom","box","SVG","icon","class","strokeAnimation","focusable","include","svg","getSvg","insertSVG","svgEl","applyAttributes","applyAnimation","loadSVG","parseSVG","viewBox","decodeURIComponent","parseSymbols","symbolRe","symbols","lastIndex","getMaxPathLength","stroke","getTotalLength","root","equals","isSVG","XMLSerializer","serializeToString","icons","spinner","totop","marker","Icon","install$3","isIcon","getIcon","IconComponent","Slidenav","Search","Close","Spinner","parsed","added","applyRtl","cloneNode","dataSrc","dataSrcset","cacheKey","dataWidth","dataHeight","dataSizes","isImg","_isImg","IntersectionObserver","storage","setSrcAttrs","getPlaceholderImage","load","rootMargin","image","takeRecords","currentSrc","devicePixelRatio","bgSize","getSourceSize","entries","entry","isIntersecting","backgroundImage","sizesToPixel","sizesRe","matchMedia","evaluateSize","sizeRe","additionRe","size","srcSetRe","srcSize","descriptors","pop","sessionStorage","Media","media","toMedia","leader","fill","clsWrapper","clsHide","attrFill","wrapper","floor","Modal","selPanel","escClose","bgClose","stack","overlay","panel","transitionElement","modal","docEl","clsPage","_reject","install$2","openDialog","tmpl","hideFn","submitFn","labels","dialog","resolved","message","ok","confirm","prompt","nav","navItem","navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","_dropbar","dropContainer","dropdowns","getDropdown","getActive","keyMap","DOWN","focusFirstFocusableElement","click","handleNavItemNavigation","UP","ESC","transitionTo","newHeight","oldHeight","clip","LEFT","RIGHT","TAB","focusEl","offcanvas","clsContainer","clsFlip","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","targetTouches","suppressUserScale","resumeUserScale","viewport","head","overflowAuto","selContainer","selContent","responsive","stateKey","scrollspy","repeat","inViewClass","queued","scrollspyNav","links","sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","placeholder","isFixed","location","height$1","inactive","referenceElement","topOffset","bottomOffset","offsetParentTop","parseProp","margins","isScrollUpdate","initTimestamp","lastDir","lastScroll","initScroll","propOffset","Switcher","itemNav","swiping","attrItem","connects","tab","KEY_SPACE","href","updateAria","_showState","_preventClick","expanded","leaving","isLeaving","Alert","Cover","Drop","Dropdown","FormCustom","Gif","Grid","HeightMatch","HeightViewport","Img","Leader","Nav","Navbar","Offcanvas","OverflowAuto","Responsive","Scroll","Scrollspy","ScrollspyNav","Sticky","Svg","Tab","Toggle","SlidenavNext","SlidenavPrevious","SearchIcon","Marker","NavbarToggleIcon","OverlayIcon","PaginationNext","PaginationPrevious","Totop","countdown","date","days","hours","minutes","seconds","units","unit","timespan","getTimeSpan","total","digits","digit","fade","action","stagger","transitionIndex","propsIn","propsOut","wrapIndexFn","leaveFn","getTransitionNodes","enterFn","transitionNodes","transitions","alignContent","dataset","waitTransitionend","slide","currentProps","targetProps","reset","targetPropsTo","getTransitionProps","propsTo","propsFrom","zIndex","pointerEvents","getPositionWithMargin","marginLeft","transform","ref$2","Animate","animationFn","selActive","updateState","actives","old","isEqualList","prevState","getState","newState","mergeState","isEqualState","setState","matchFilter","filterFn","applyState","getFilter","stateA","stateB","getSelector","sortItems","filterBy","group","stateFilter","ref_sort","stateSort","stateOrder","listA","listB","localeCompare","numeric","Animations$2","_translate","translated","translate","scale3d","Animations$1","scale","Transitioner$1","easing","_percent","_translate2","linear","triggerUpdate$1","forward","getDistance","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","draggable","SliderDrag","threshold","prevPos","selSlides","hasTextNodesOnly","button","drag","_transitioner","dragging","prevIndex","move","end","distance","dis","nextIndex","_getDistance","itemShown","edge","_show","dirChange","userSelect","Slider","selNav","selNavItem","navItems","maxIndex","updateNav","getValidIndex","clsActivated","velocity","Transitioner","transitionOptions","speedUp","selList","itemshown","queueIndex","getDirection","_getTransitioner","transitioner","Slideshow","Animations","beforeitemshow","itemhidden","LightboxPanel","delayControls","videoAutoplay","template","selCaption","caption","showControls","hideControls","getItem","loadItem","alt","poster","setItem","iframeAttrs","frameborder","allow","allowfullscreen","createEl","setError","video","controls","playsinline","encodeURI","withCredentials","ref_response","getSlide","childElementCount","controlsTimer","tag","obj$1","lightbox","install$1","toItem","Lightbox","lightboxPanel","notification","timeout","clsClose","clsMsg","marginProp","startProps","removeFn","closeAll","_props","transformFn","rotate","color","colorFn","backgroundColor","borderColor","hue","fopacity","grayscale","invert","saturate","sepia","cssPropFn","strokeFn","bgx","backgroundFn","bgy","Parallax","fillObject","properties","getCss","steps","getUnit","getValue","getCssValue","parseColor","getStep","parseInt","strokeDashoffset","bgPos","backgroundCoverFn","setBackgroundPosFn","getBackgroundImage","down","diff","dimEl","dimImage","baseDim","span","posPercentage","backgroundSize","backgroundRepeat","defaultUnit","getOffsetElement","parseCalc","calcRe","calc","SliderReactive","center","getLeft","to","triggerUpdate","getItemIn","getWidth","getActives","itemIn","itemOut","isIn","isOut","getElLeft","nextActives","temp","centerEl","getMax","listLeft","listWidth","listRight","slideLeft","slideRight","slider","sets","avgWidth","getMaxElWidth","lft","leftCenter","slideWidth","reorder","itemshow","slideIndex","sliderParallax","selItem","ref_detail","getCurrentPercent","trackTimer","pull","slideshow","maxHeight","sortable","clsItem","clsPlaceholder","clsDrag","clsDragState","clsBase","clsNoDrag","clsEmpty","clsCustom","handle","tBodies","handles","touchAction","ref_pos","ref_origin","getSortable","elementFromPoint","findTarget","previous","insertTarget","findInsertTarget","moved","insert","touched","appendDrag","trackScroll","untrackScroll","clone","outerHTML","boxSizing","sameList","isHorizontal","placeholderRect","sameRow","linesIntersect","pointerPos","lengthProp","single","rectA","rectB","lineA","lineB","tooltip","title","_hasTitle","makeFocusable","_unbind","upload","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","params","abort","beforeAll","complete","completeAll","fail","loadEnd","loadStart","progress","change","transfer","dataTransfer","dragenter","dragover","dragleave","chunks","chunk","FormData","file","pattern","stopPropagation","Countdown","Filter","Notification","SliderParallax","SlideshowParallax","Sortable","Tooltip","Upload","factory"],"sourceRoot":""}