{"version":3,"sources":["webpack:///./node_modules/uikit/dist/js/uikit.js"],"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","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","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","parent","parentNode","selector","elProto","Element","matchesFn","webkitMatchesSelector","msMatchesSelector","closestFn","closest","ancestor","Boolean","within","contains","parents","push","_children","children","index","query","context","find","getContext","queryAll","nodes","findAll","isContextSelector","_query","queryFn","contextSanitizeRe","splitSelector","ctx","selectors","trim","join","selectors$1","prev","previousElementSibling","names","id","unshift","escape","domPath","e","contextSelectorRe","selectorRe","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","PromiseFn","Deferred","promise","resolve","reject","async","setImmediate","setTimeout","executor","state","undefined","deferred","r","all","iterable","count","resolver","then","race","p","ajax","url","env","method","headers","xhr","XMLHttpRequest","beforeSend","responseType","header","open","setRequestHeader","status","response","copyXhr","JSON","parse","Error","statusText","send","getImage","src","srcset","sizes","Image","onerror","onload","empty","$","innerHTML","html","append","hasChildNodes","insertNodes","appendChild","before","insertBefore","after","nextSibling","fragment","_remove","removeChild","wrapAll","structure","firstChild","wrapInner","childNodes","unwrap","TypeError","called","notify","reason","shift","onResolved","onRejected","catch","fragmentRe","singleTagRe","exec","createElement","container","insertAdjacentHTML","textContent","node","firstElementChild","next","nextElementSibling","isHtml","$$","addClass","apply$1","removeClass","removeClasses","cls","replaceClass","hasClass","getClasses","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","getCssVar","getPropertyValue","prefixedName","cssPrefixes","vendorPropName","transition","duration","timing","timer","clearTimeout","transitionProperty","transitionDuration","transitionTimingFunction","Transition","start","stop","cancel","inProgress","animate","animation","origin","out","animationPrefix","_inProgress","Animation","in","dirs","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","percent","fastdom","reads","writes","read","task","scheduleFlush","write","clear","remove$1","flush","recursion","runTasks","scheduled","requestAnimationFrame","tasks","console","error","item","MouseTracker","positions","init","unbind","interval","setInterval","clearInterval","movesTo","prevPosition","path","diagonal","intersection","ref_0","x1","y1","ref_1","x2","y2","ref$1_0","x3","y3","ref$1_1","x4","y4","denominator","ua","intersect","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","isYoutube","isVimeo","cmd","poller","youtube","vimeo","counter","post","player_id","enableApi","contentWindow","postMessage","stringify","events","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","update","methods","isInView","scrollParents","getViewport","scrollTop","getScrollingElement","scrollIntoView","diff","scrollElement","maxScroll","scrollHeight","getViewportClientHeight","ceil","scrollTo","dist","scroll","abs","pow","Date","now","step","k","cos","PI","scrolledOver","heightOffset","clientHeight","viewportTop","viewportDist","overflowRe","scrollable","scrollEl","ancestors","fixedIndex","scrollingElement","dirs$1","_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__","ready","readyState","prepend","remove","getIndex","positionAt","getComponentName","UIkit","_init","prefix","version","DATA","_connected","_callUpdate","use","plugin","installed","mixin","component","extend","Sub","constructor","super","defineProperty","set","globalAPI","runUpdates","types","updates","$options","_data","_callHook","hook","handlers","handler","_callConnected","_computeds","_initProps","_initEvents","_initObservers","_callDisconnected","_disconnectObservers","_unbindEvents","_watch","_callWatches","_updates","initital","hasPrev","watch","immediate","hooksAPI","uid","getProps","opts","data$1","coerce","prop$1","registerComputed","enumerable","$props","$el","registerEvent","passive","_events","bind","notIn","arr","toList","initPropsObserver","$name","attributes","observer","MutationObserver","records","attributeName","$reset","observe","attributeFilter","normalizeData","_uid","_initData","_initMethods","_initComputeds","$mount","exclude","_observers","$emit","childList","subtree","disconnect","stateAPI","components","argsArray","functional","instance","getComponent","$destroy","opt","install","_initialized","getComponents","connect","name$1","componentAPI","$create","removeEl","$update","$getComponent","componentName","defineProperties","$container","getOwnPropertyDescriptor","instanceAPI","Class","Togglable","clsEnter","clsLeave","initProps","overflow","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","show","isToggled","cmp","toggleHeight","_toggle","done","toggled","changed","hidden","focus","blur","inner","lastElementChild","currentHeight","endHeight","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","Position","clsPos","offset$1","axis","getAxis","drop","mode","boundaryAlign","delayShow","delayHide","clsDrop","tracker","isActive","defaultPrevented","hash","clearTimers","relatedTarget","newTarget","keyCode","delay","isDelaying","showTimer","hideTimer","alignTo","formCustom","files","selected","gif","inview","Margin","margin","firstColumn","rows","getRows","columns","getColumns","j","sortBy$1","sorted","startProp","endProp","getOffset","startDim","grid","masonry","parallax","clsStack","positionedAbsolute","translates","columnHeights","column","sum","getColumnHeights","getMarginTop","elHeight","rowHeights","row","getTranslates","padding","newPadding","hgt","height$1","scrolled","FlexBug","selMinHeight","forceHeight","order","heightMatch","heights","getHeight","hasMinHeight","minHeight","hasShrunk","display","heightViewport","expand","offsetBottom","box","SVG","icon","class","strokeAnimation","focusable","include","svg","getSvg","root","equals","insertSVG","svgEl","applyAttributes","getMaxPathLength","loadSVG","symbols","symbolRe","lastIndex","parseSymbols","parseSVG","viewBox","decodeURIComponent","stroke","getTotalLength","isSVG","XMLSerializer","serializeToString","icons","spinner","totop","marker","Icon","added","parsed","isIcon","applyRtl","cloneNode","getIcon","IconComponent","Slidenav","Search","Close","Spinner","dataSrc","dataSrcset","cacheKey","dataWidth","dataHeight","dataSizes","isImg","_isImg","IntersectionObserver","storage","setSrcAttrs","sizesToPixel","getPlaceholderImage","load","rootMargin","image","takeRecords","currentSrc","devicePixelRatio","bgSize","srcSize","descriptors","srcSetRe","size","pop","entries","entry","isIntersecting","backgroundImage","sizesRe","matchMedia","sizeRe","additionRe","sessionStorage","Media","media","toMedia","leader","fill","clsWrapper","clsHide","attrFill","wrapper","floor","Container","active$1","Modal","selPanel","escClose","bgClose","stack","overlay","panel","transitionElement","modal","docEl","clsPage","animate$1","_reject","openDialog","tmpl","hideFn","submitFn","labels","dialog","resolved","message","ok","confirm","prompt","nav","navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","_dropbar","dropdowns","getDropdown","getActive","transitionTo","newHeight","oldHeight","clip","offcanvas","clsContainer","clsFlip","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","targetTouches","getViewport$1","viewport","head","overflowAuto","selContainer","selContent","responsive","click","stateKey$1","scrollspy","repeat","inViewClass","queued","scrollspyNav","links","sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","placeholder","isFixed","location","elTop","inactive","topOffset","bottomOffset","parseProp","margins","isScrollUpdate","initTimestamp","lastDir","lastScroll","initScroll","propOffset","Switcher","swiping","attrItem","connects","tab","href","updateAria","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","pendingResize","pending","handleResize","ResizeObserver","started","applyChildListMutation","addedNodes","removedNodes","i$1","applyAttributeMutation","boot","countdown","date","days","hours","minutes","seconds","units","unit","total","timespan","digits","digit","fade","action","stagger","transitionIndex","propsIn","propsOut","wrapIndexFn","leaveFn","getTransitionNodes","enterFn","transitionNodes","transitions","alignContent","dataset","waitTransitionend","slide","currentProps","targetProps","reset","targetPropsTo","propsTo","getPositionWithMargin","propsFrom","getTransitionProps","zIndex","pointerEvents","marginLeft","transform","ref$2","Animate","filter$1","selActive","updateState","actives","old","listA","listB","stateA","stateB","prevState","getState","newState","mergeState","setState","stateFilter","ref_sort","stateSort","stateOrder","getFilter","group","matchFilter","filterFn","getSelector","localeCompare","numeric","sortItems","applyState","filterBy","Animations","_translate","translated","translate","scale3d","Animations$1","scale","triggerUpdate","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","draggable","SliderDrag","threshold","prevPos","selSlides","button","drag","_transitioner","getDistance","dragging","prevIndex","move","end","distance","dis","nextIndex","_getDistance","itemShown","edge","_show","dirChange","userSelect","Slider","selNav","selNavItem","navItems","maxIndex","updateNav","getValidIndex","clsActivated","easing","velocity","Transitioner","transitionOptions","speedUp","selList","itemshown","queueIndex","forward","getDirection","_getTransitioner","transitioner","Slideshow","_percent","_translate2","linear","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","lightbox","Lightbox","lightboxPanel","toItem","notification","timeout","clsClose","clsMsg","closeAll","marginProp","startProps","removeFn","_props","Parallax","properties","bgPos","isColor","isCssProp","steps","getUnit","color","parseColor","covers","down","bgProps","bg","backgroundSize","_covers","_image","dimEl","dimImage","span","posPercentage","backgroundRepeat","getCss","getStep","getValue","parseInt","getOffsetElement","ease","SliderReactive","getLeft","center","getElLeft","centerEl","getMax","getWidth","triggerUpdate$1","slider","sets","to","updateTranslates","getItemIn","getActives","slideLeft","avgWidth","lft","leftCenter","slideWidth","reorder","itemshow","slideIndex","sliderParallax","selItem","ref_detail","getCurrentPercent","isIn","trackTimer","obj$1","Animations$2","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","sameList","single","isHorizontal","rectA","rectB","linesIntersect","placeholderRect","sameRow","pointerPos","lengthProp","findInsertTarget","moved","insert","touched","clone","outerHTML","boxSizing","trackScroll","lineA","lineB","tooltip","title","_hasTitle","isFocusable","_unbind","upload","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","params","abort","beforeAll","complete","completeAll","fail","loadEnd","loadStart","progress","change","transfer","dataTransfer","dragenter","dragover","dragleave","match$1","chunks","chunk","FormData","file","pattern","stopPropagation","Countdown","Filter","Notification","SliderParallax","SlideshowParallax","Sortable","Tooltip","Upload","factory"],"mappings":"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,MAAOA,GACPM,SAAUA,GACVG,YAAaA,GACbC,YAAaA,GACbC,UAAWA,GACXC,aAAcA,GACdC,aAAcA,GACdC,cAAeA,GACf2E,GAAIA,GACJa,IAAKA,GACLE,KAAMA,GACNG,QAASA,GACTK,YAAaA,GACbjB,eAAgBA,GAChB6B,QAASA,GACTG,YAAaA,GACbsL,QAASA,GACTtR,cAAeA,GACfE,UAAWA,GACXI,SAAUA,GACVC,QAASA,GACTE,OAAQA,GACRnI,OAAQA,GACRkI,QAASA,GACTU,QAASA,GACTG,OAAQA,GACRE,QAASA,GACTG,SAAUD,GACVE,MAAOA,GACPhO,OAAQA,EACRK,UAAWA,EACXM,SAAUA,EACVE,QAASA,EACTU,WAAYA,EACZK,SAAUA,EACVQ,SAAUA,EACVI,UAAWA,EACXK,QAASA,EACTC,WAAYA,EACZC,SAAUA,EACVE,cAAeA,EACfC,SAAUA,EACVE,WAAYA,EACZE,OAAQA,EACRC,UAAWA,EACXC,UAAWA,EACXlB,SAAUA,EACVoB,SAAUA,EACVC,UAAWA,EACXG,QAASA,EACTE,YAAaA,EACbC,UAAWA,EACXC,SAAUA,EACVG,QAASA,EACTC,QAASA,EACTE,OAAQA,EACRE,QAASA,EACTE,SAAUA,EACVG,KAAMA,EACNE,QAASA,EACTI,KAAMA,EACNK,OAAQA,EACRK,KAAMA,EACNZ,KAAMA,EACNc,OAAQA,EACRO,SAAUA,EACVM,MAAOA,EACPI,KAAMA,EACNC,cAAeA,GACfO,YAAaA,GACbS,WAAYA,GACZsf,SAAU7e,GACVtI,QAASA,GACTue,aAAcA,GACdmC,aAAcA,GACdO,aAAcA,GACdE,KAAMA,GACNK,MAAOA,GACPC,KAAMA,GACN2F,WAAYhC,GACZjT,QAASA,GACTE,SAAUA,GACV1E,MAAOA,GACPI,SAAUA,GACVF,KAAMA,GACNI,QAASA,GACTgB,OAAQA,GACRO,IAAKA,GACLuK,UAAWA,GACXX,SAAUA,GACV6J,SAAUA,GACVG,UAAWA,GACXE,eAAgBA,GAChBkB,aAAcA,GACdtB,cAAeA,GACfC,YAAaA,GACbQ,wBAAyBA,KA6sBvB0D,G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","file":"a987ea44-22497fdbbb31a5e9cfe9.js","sourcesContent":["require(\"core-js/modules/es.array.reduce.js\");\n\n/*! UIkit 3.6.18 | https://www.getuikit.com | (c) 2014 - 2021 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) ? number : false;\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(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 = this;\n dimensions = assign({}, dimensions);\n each(dimensions, function (_, prop) {\n return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions;\n });\n return dimensions;\n },\n cover: function cover(dimensions, maxDimensions) {\n var this$1 = this;\n dimensions = this.contain(dimensions, maxDimensions);\n each(dimensions, function (_, prop) {\n return dimensions = dimensions[prop] < maxDimensions[prop] ? this$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 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 function parent(element) {\n element = toNode(element);\n return element && isElement(element.parentNode) && element.parentNode;\n }\n\n function filter(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(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 toNode(selector) || find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || 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 null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n if (isContextSelector(selector)) {\n selector = splitSelector(selector).map(function (selector, i) {\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 if (element.id) {\n names.unshift(\"#\" + escape(element.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 = 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, 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 = inBrowser && window.Promise || PromiseFn;\n\n var Deferred = function Deferred() {\n var this$1 = this;\n this.promise = new Promise(function (resolve, reject) {\n this$1.reject = reject;\n this$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 = this;\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$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.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$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 = this;\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$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.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(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(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 var unbind = on(document, 'DOMContentLoaded', function () {\n unbind();\n fn();\n });\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 append(parent, element);\n } else {\n return insertNodes(element, function (element) {\n return parent.insertBefore(element, parent.firstChild);\n });\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(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\n _remove(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(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(node, fn);\n node = next;\n }\n }\n\n function $(selector, context) {\n return !isString(selector) ? toNode(selector) : isHtml(selector) ? toNode(fragment(selector)) : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector) ? toNodes(selector) : isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s* 0) {\n args[len] = arguments[len + 1];\n }\n\n apply$1(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$1(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$1(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 str = String(str);\n return (~str.indexOf(' ') ? str.split(' ') : [str]).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, document.createElement('div'));\n addClass(element, \"uk-\" + name);\n name = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n\n _remove(element);\n\n return name;\n });\n\n function getCssVar(name) {\n return !isIE ? getStyles(document.documentElement).getPropertyValue(\"--uk-\" + name) : parseCssVar(name);\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.all(toNodes(element).map(function (element) {\n return new Promise(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.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(element, animation, duration, origin, out) {\n if (duration === void 0) duration = 200;\n return Promise.all(toNodes(element).map(function (element) {\n return new Promise(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,\n out: function out(element, animation, duration, origin) {\n return animate(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 = {\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 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) {\n for (var i in dirs[dir]) {\n currentOffset[dirs[dir][i]] += offsetBy[dir];\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[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) {\n for (var i in dirs[dir]) {\n if (dirs[dir][i] === pos) {\n return dirs[dir][1 - i];\n }\n }\n }\n\n return pos;\n }\n\n function toPx(value, property, element) {\n if (property === void 0) property = 'width';\n if (element === void 0) element = window;\n return isNumeric(value) ? +value : endsWith(value, 'vh') ? percent(height(toWindow(element)), value) : endsWith(value, 'vw') ? percent(width(toWindow(element)), value) : endsWith(value, '%') ? percent(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$1(this.reads, task);\n remove$1(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.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$1(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 = 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.positions.push(position);\n\n if (this$1.positions.length > 5) {\n this$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(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 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 = '_ukPlayer';\n var counter = 0;\n\n function enableApi(el) {\n if (el[stateKey]) {\n return el[stateKey];\n }\n\n var youtube = isYoutube(el);\n var vimeo = isVimeo(el);\n var id = ++counter;\n var poller;\n return el[stateKey] = new Promise(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(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\n if (!isVisible(element)) {\n return;\n }\n\n var parents = scrollParents(element);\n var diff = 0;\n return parents.reduce(function (fn, scrollElement, i) {\n var scrollTop = scrollElement.scrollTop;\n var scrollHeight = scrollElement.scrollHeight;\n var maxScroll = scrollHeight - getViewportClientHeight(scrollElement);\n var top = Math.ceil(offset(parents[i - 1] || element).top - offset(getViewport(scrollElement)).top - offsetBy + diff + scrollTop);\n\n if (top > maxScroll) {\n diff = top - maxScroll;\n top = maxScroll;\n } else {\n diff = 0;\n }\n\n return function () {\n return scrollTo(scrollElement, top - scrollTop).then(fn);\n };\n }, function () {\n return Promise.resolve();\n })();\n\n function scrollTo(element, top) {\n return new Promise(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 requestAnimationFrame(step);\n } else {\n resolve();\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, heightOffset) {\n if (heightOffset === void 0) heightOffset = 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 clientHeight = getViewportClientHeight(scrollElement);\n var viewportTop = offsetPosition(element)[0] - scrollTop - offsetPosition(scrollElement)[0];\n var viewportDist = Math.min(clientHeight, viewportTop + scrollTop);\n var top = viewportTop - viewportDist;\n var dist = Math.min(element.offsetHeight + heightOffset + viewportDist, scrollHeight - (viewportTop + scrollTop), scrollHeight - clientHeight);\n return clamp(-1 * top / dist);\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(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$1 = {\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);\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$1, 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$1[prop][1] ? dirs$1[prop][2] : dirs$1[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$1, 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,\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,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\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 parent: parent,\n filter: filter,\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,\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 positionAt: _positionAt,\n Promise: Promise,\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,\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(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 = this;\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) {\n return handler.call(this$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 = 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 runUpdates.call(this$1, this$1._updates);\n delete this$1._updates;\n });\n }\n\n this._updates.add(e.type || e);\n };\n\n UIkit.prototype._callWatches = function () {\n var this$1 = this;\n\n if (this._watch) {\n return;\n }\n\n var initital = !hasOwn(this, '_watch');\n this._watch = fastdom.read(function () {\n var ref = this$1;\n var computed = ref.$options.computed;\n var _computeds = ref._computeds;\n\n for (var key in computed) {\n var hasPrev = hasOwn(_computeds, key);\n var prev = _computeds[key];\n delete _computeds[key];\n var ref$1 = computed[key];\n var watch = ref$1.watch;\n var immediate = ref$1.immediate;\n\n if (watch && (initital && immediate || hasPrev && !isEqual(prev, this$1[key]))) {\n watch.call(this$1, this$1[key], prev);\n }\n }\n\n this$1._watch = null;\n });\n };\n\n function runUpdates(types) {\n var this$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, this$1._data, types);\n\n if (result && isPlainObject(result)) {\n assign(this$1._data, result);\n }\n }\n\n if (write && result !== false) {\n fastdom.write(function () {\n return write.call(this$1, this$1._data, types);\n });\n }\n };\n\n for (var i = 0; i < updates.length; i++) {\n loop(i);\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 = 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 for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\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(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 return instance;\n } else {\n instance.$destroy();\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.6.18';\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(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(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply(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 = this;\n return new Promise(function (resolve) {\n return Promise.all(toNodes(targets).map(function (el) {\n var show = isBoolean(toggle) ? toggle : !this$1.isToggled(el);\n\n if (!trigger(el, \"before\" + (show ? 'show' : 'hide'), [this$1])) {\n return Promise.reject();\n }\n\n var promise = (isFunction(animate) ? animate : animate === false || !this$1.hasAnimation ? this$1._toggle : this$1.hasTransition ? toggleHeight(this$1) : toggleAnimation(this$1))(el, show);\n var cls = show ? this$1.clsEnter : this$1.clsLeave;\n addClass(el, cls);\n trigger(el, show ? 'show' : 'hide', [this$1]);\n\n var done = function done() {\n removeClass(el, cls);\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n };\n\n return promise ? promise.then(done, function () {\n removeClass(el, cls);\n return Promise.reject();\n }) : done();\n })).then(resolve, noop);\n });\n },\n isToggled: function isToggled(el) {\n if (el === void 0) el = this.$el;\n return hasClass(el, this.clsEnter) ? true : hasClass(el, this.clsLeave) ? false : this.cls ? hasClass(el, this.cls.split(' ')[0]) : !hasAttr(el, 'hidden');\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 = this;\n items.forEach(function (el) {\n return hide($(this$1.content, el), !hasClass(el, this$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 = this;\n var items = [this.items[_getIndex(item, this.items)]];\n var activeItems = filter(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(items, \":not(.\" + this.clsOpen + \")\").length) {\n return;\n }\n\n items.forEach(function (el) {\n return this$1.toggleElement(el, !hasClass(el, this$1.clsOpen), function (el, show) {\n toggleClass(el, this$1.clsOpen, show);\n attr($(this$1.$props.toggle, el), 'aria-expanded', show);\n var content = $(\"\" + (el._wrapper ? '> * ' : '') + this$1.content, el);\n\n if (animate === false || !this$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)(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.$props.toggle, el);\n\n if (!isInView(toggle)) {\n scrollIntoView(toggle, {\n offset: this$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 = this;\n this.toggleElement(this.$el).then(function () {\n return this$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 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: [Class, 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 Position = {\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n data: {\n pos: \"bottom-\" + (!isRtl ? 'left' : 'right'),\n flip: true,\n offset: false,\n clsPos: ''\n },\n computed: {\n pos: function pos(ref) {\n var pos = ref.pos;\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\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;\n var drop = {\n mixins: [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 },\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 var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n },\n disconnected: function disconnected() {\n if (this.isActive()) {\n active = 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, false);\n }\n }\n }, {\n name: 'toggleshow',\n self: true,\n handler: function handler(e, toggle) {\n e.preventDefault();\n this.show(toggle);\n }\n }, {\n name: 'togglehide',\n self: true,\n handler: function handler(e) {\n e.preventDefault();\n this.hide();\n }\n }, {\n name: pointerEnter,\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,\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 = this;\n active = 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.$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.toggle && within(target, this$1.toggle.$el))) {\n this$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.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 = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\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(toggle, delay) {\n var this$1 = this;\n if (toggle === void 0) toggle = this.toggle;\n if (delay === void 0) delay = true;\n\n if (this.isToggled() && toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n this.hide(false);\n }\n\n this.toggle = toggle;\n this.clearTimers();\n\n if (this.isActive()) {\n return;\n }\n\n if (active) {\n if (delay && active.isDelaying) {\n this.showTimer = setTimeout(this.show, 10);\n return;\n }\n\n var prev;\n\n while (active && prev !== active && !within(this.$el, active.$el)) {\n prev = active;\n active.hide(false);\n }\n }\n\n this.showTimer = setTimeout(function () {\n return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true);\n }, delay && this.delayShow || 0);\n },\n hide: function hide(delay) {\n var this$1 = this;\n if (delay === void 0) delay = true;\n\n var hide = function hide() {\n return this$1.toggleElement(this$1.$el, false, false);\n };\n\n this.clearTimers();\n this.isDelaying = getPositionedElements(this.$el).some(function (el) {\n return this$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 === 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.toggle.$el);\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.toggle.$el, this.boundary);\n }\n }\n };\n\n function getPositionedElements(el) {\n var result = [];\n apply(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$1(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$1(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$1(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(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 var height$1 = ref.height;\n\n if (positionedAbsolute(this.$el)) {\n return false;\n }\n\n return {\n scrolled: this.parallax ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * 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 = this;\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n\n if (height && (this$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)\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(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 = 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._connected) {\n var svg = insertSVG(el, this$1.$el);\n\n if (this$1.svgEl && svg !== this$1.svgEl) {\n _remove(this$1.svgEl);\n }\n\n this$1.applyAttributes(svg, el);\n this$1.$emit();\n return this$1.svgEl = svg;\n }\n }, noop);\n },\n disconnected: function disconnected() {\n var this$1 = this;\n this.svg.then(function (svg) {\n if (!this$1._connected) {\n if (isVoidElement(this$1.$el)) {\n this$1.$el.hidden = false;\n }\n\n _remove(svg);\n\n this$1.svgEl = null;\n }\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 = this;\n return loadSVG(this.src).then(function (svg) {\n return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.');\n });\n },\n applyAttributes: function applyAttributes(el, ref) {\n var this$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[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.ratio || null);\n });\n }\n }\n };\n var loadSVG = memoize(function (src) {\n return new Promise(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,\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.reject('Icon not found.');\n }\n\n return Promise.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 = this;\n this.svg.then(function (svg) {\n return svg && this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio);\n });\n }\n };\n var parsed = {};\n\n function install(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(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 = 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.$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 = 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.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n }, function (e) {\n return trigger(this$1.$el, new e.constructor(e.type, e));\n });\n this.observer.disconnect();\n },\n observe: function observe() {\n var this$1 = this;\n\n if (this._connected && !this._data.image) {\n this.target.forEach(function (el) {\n return this$1.observer.observe(el);\n });\n }\n }\n }\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n if (_isImg(el)) {\n sizes && (el.sizes = sizes);\n srcset && (el.srcset = srcset);\n src && (el.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 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 active$1 = [];\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 (this.isToggled()) {\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) {\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n\n if (this.isToggled() === includes(active$1, this)) {\n this.toggle();\n }\n }\n }, {\n name: 'beforeshow',\n self: true,\n handler: function handler(e) {\n if (includes(active$1, this)) {\n return false;\n }\n\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map(function (modal) {\n return modal.hide();\n })).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n }, {\n name: 'show',\n self: true,\n handler: function handler() {\n var this$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$1.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$1) !== this$1 || this$1.overlay && !within(target, this$1.$el) || within(target, this$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.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$1) === this$1) {\n this$1.hide();\n }\n }), {\n self: true\n });\n }\n }\n }, {\n name: 'hidden',\n self: true,\n handler: function handler() {\n var this$1 = this;\n\n if (includes(active$1, this)) {\n active$1.splice(active$1.indexOf(this), 1);\n }\n\n if (!active$1.length) {\n css(document.body, 'overflowY', '');\n }\n\n css(this.$el, 'zIndex', '');\n\n if (!active$1.some(function (modal) {\n return modal.clsPage === this$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 = this;\n\n if (this.container && parent(this.$el) !== this.container) {\n append(this.container, this.$el);\n return new Promise(function (resolve) {\n return requestAnimationFrame(function () {\n return this$1.show().then(resolve);\n });\n });\n }\n\n return this.toggleElement(this.$el, true, animate$1(this));\n },\n hide: function hide() {\n return this.toggleElement(this.$el, false, animate$1(this));\n }\n }\n };\n\n function animate$1(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n return function (el, show) {\n return new Promise(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$1,\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$1(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.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 navbar = {\n mixins: [Class, 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: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\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: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'\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 dropdowns: {\n get: function get(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n return $$(dropdown + \" .\" + clsDrop, $el);\n },\n watch: function watch(dropdowns) {\n var this$1 = this;\n this.$create('drop', dropdowns.filter(function (el) {\n return !this$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 },\n disconnected: function disconnected() {\n this.dropbar && _remove(this.dropbar);\n delete this._dropbar;\n },\n events: [{\n name: 'mouseover',\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 && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n }, {\n name: 'mouseleave',\n el: function el() {\n return this.dropbar;\n },\n handler: function handler() {\n var active = this.getActive();\n\n if (active && !this.dropdowns.some(function (el) {\n return matches(el, ':hover');\n })) {\n active.hide();\n }\n }\n }, {\n name: 'beforeshow',\n capture: true,\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 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 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 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 var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) {\n return drop && drop.isActive();\n });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n transitionTo: function transitionTo(newHeight, el) {\n var this$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.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.$update(dropbar);\n });\n },\n getDropdown: function getDropdown(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n }\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 = event.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$1().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport$1();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport$1() {\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 },\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog'\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', 150);\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(150, 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 = 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.$el, 'scrolled', [this$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$1 = '_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: false,\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(elements, \":not(.\" + this.inViewClass + \")\"), 'visibility', 'hidden');\n }\n },\n immediate: true\n }\n },\n disconnected: function disconnected() {\n var this$1 = this;\n this.elements.forEach(function (el) {\n removeClass(el, this$1.inViewClass, el[stateKey$1] ? el[stateKey$1].cls : '');\n delete el[stateKey$1];\n });\n },\n update: [{\n read: function read(ref) {\n var this$1 = this;\n var update = ref.update;\n\n if (!update) {\n return;\n }\n\n this.elements.forEach(function (el) {\n if (!el[stateKey$1]) {\n el[stateKey$1] = {\n cls: data(el, 'uk-scrollspy-class') || this$1.cls\n };\n }\n\n el[stateKey$1].show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n });\n },\n write: function write(data) {\n var this$1 = this; // Let child components be applied at least once first\n\n if (!data.update) {\n this.$emit();\n return data.update = true;\n }\n\n this.elements.forEach(function (el) {\n var state = el[stateKey$1];\n\n var toggle = function toggle(inview) {\n css(el, 'visibility', !inview && this$1.hidden ? 'hidden' : '');\n toggleClass(el, this$1.inViewClass, inview);\n toggleClass(el, state.cls);\n trigger(el, inview ? 'inview' : 'outview');\n state.inview = inview;\n this$1.$update(el);\n };\n\n if (state.show && !state.inview && !state.queued) {\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(function () {\n return new Promise(function (resolve) {\n return setTimeout(resolve, this$1.delay);\n });\n }).then(function () {\n toggle(true);\n setTimeout(function () {\n state.queued = false;\n this$1.$emit();\n }, 300);\n });\n } else if (!state.show && state.inview && !state.queued && this$1.repeat) {\n toggle(false);\n }\n });\n },\n events: ['scroll', 'resize']\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 = 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(scrollElement)).top - this$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 this.links.forEach(function (el) {\n return el.blur();\n });\n removeClass(this.elements, this.cls);\n\n if (active !== false) {\n trigger(this.$el, 'active', [active, addClass(this.elements[active], this.cls)]);\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(this.placeholder);\n\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 = 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.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n });\n }\n }\n }],\n update: [{\n read: function read(ref, types) {\n var height = 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 = this.$el.offsetHeight;\n this.show();\n }\n\n height = !this.isActive ? this.$el.offsetHeight : height;\n this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + height;\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,\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 = 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.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\n if (isNumeric(this.bottom) && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\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 active: Number,\n swiping: Boolean\n },\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\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 = 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.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 = this;\n return _children(this.$el).filter(function (child) {\n return this$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;\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 = this;\n return findIndex(this.children, function (el) {\n return hasClass(el, this$1.cls);\n });\n },\n show: function show(item) {\n var this$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.cls, next === i);\n attr(this$1.toggles[i], 'aria-expanded', next === i);\n });\n this.connects.forEach(function (ref) {\n var children = ref.children;\n return this$1.toggleElement(toNodes(children).filter(function (child) {\n return hasClass(child, this$1.cls);\n }), false, prev >= 0).then(function () {\n return this$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 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 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: pointerEnter + \" \" + pointerLeave,\n filter: function filter() {\n return includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n if (!isTouch(e)) {\n this.toggle(\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide'));\n }\n }\n }, {\n name: 'click',\n filter: function filter() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n handler: function handler(e) {\n var link;\n\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]') || (link = closest(e.target, 'a[href]')) && (!isToggled(this.target, this.cls) || 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 this.updateAria(toggled);\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 = 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.clsLeave);\n });\n\n if (leaving.length) {\n this.target.forEach(function (el) {\n var isLeaving = includes(leaving, el);\n this$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.toggleElement(this$1.target.filter(function (el) {\n return !includes(toggled, el);\n }), true);\n });\n },\n updateAria: function updateAria(toggled) {\n attr(this.$el, 'aria-expanded', isBoolean(toggled) ? toggled : isToggled(this.target, this.cls));\n }\n }\n }; // TODO improve isToggled handling\n\n function isToggled(target, cls) {\n return cls ? hasClass(target, cls.split(' ')[0]) : isVisible(target);\n }\n\n var components = /*#__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, 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 = this;\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) {\n return this$1[unit];\n });\n }\n },\n connected: function connected() {\n this.start();\n },\n disconnected: function disconnected() {\n var this$1 = this;\n this.stop();\n this.units.forEach(function (unit) {\n return empty(this$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 = 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[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.reject();\n };\n };\n\n var leaveFn = wrapIndexFn(function () {\n addClass(target, clsLeave);\n return Promise.all(getTransitionNodes(target).map(function (child, i) {\n return new Promise(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(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(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.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.all(_children(target).filter(Transition.inProgress).map(function (el) {\n return new Promise(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(row.filter(function (el) {\n return isInView(el);\n }), 'offsetLeft'));\n }, []);\n }\n\n function slide(action, target, duration) {\n return new Promise(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.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.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: String\n },\n data: {\n duration: 150,\n animation: 'slide'\n },\n methods: {\n animate: function animate(action, target) {\n var this$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 } : slide;\n return animationFn(action, target, this.duration).then(function () {\n return this$1.$update(target, 'resize');\n }, noop);\n }\n }\n };\n var filter$1 = {\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 = 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.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 = this;\n return this.toggles.filter(function (item) {\n return hasClass(item, this$1.cls);\n }).reduce(function (state, el) {\n return mergeState(el, this$1.attrItem, state);\n }, {\n filter: {\n '': ''\n },\n sort: []\n });\n },\n setState: function setState(state, animate) {\n var this$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.cls, !!matchFilter(el, this$1.attrItem, state));\n });\n Promise.all($$(this.target, this.$el).map(function (target) {\n var filterFn = function filterFn() {\n applyState(state, target, _children(target));\n this$1.$update(this$1.$el);\n };\n\n return animate ? this$1.animate(filterFn, target) : filterFn();\n })).then(function () {\n return trigger(this$1.$el, 'afterFilter', [this$1]);\n });\n },\n updateState: function updateState() {\n var this$1 = this;\n fastdom.write(function () {\n return this$1.setState(this$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 = {\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, {\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(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 = 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(next, 'itemin', {\n percent: percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n triggerUpdate(prev, 'itemout', {\n percent: 1 - percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n Promise.all([Transition.start(next, props[1], duration, timing), Transition.start(prev, props[0], duration, timing)]).then(function () {\n this$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(next, 'itemtranslatein', {\n percent: percent,\n dir: dir\n });\n triggerUpdate(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(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 = this;\n this.stopAutoplay();\n this.interval = setInterval(function () {\n return (!this$1.draggable || !$(':focus', this$1.$el)) && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover')) && !this$1.stack.length && this$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 = this;\n ['start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n\n this$1[key] = function (e) {\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$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 = 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]);\n\n if (edge) {\n itemShown = true;\n this$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 = 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.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 = this;\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n var cmd = data(el, this$1.attrItem);\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$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 = 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.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]);\n trigger(next, 'itemshown', [this$1]);\n return new Promise(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$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.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,\n Transitioner: Transitioner\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 = 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.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.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.setItem(item, video);\n });\n on(video, 'error', function () {\n return this$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.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.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$2,\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 = 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.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$2(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;\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$3,\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 = 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.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n },\n events: (obj = {\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[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj),\n methods: {\n close: function close(immediate) {\n var this$1 = this;\n\n var removeFn = function removeFn(el) {\n var container = parent(el);\n trigger(el, 'close', [this$1]);\n\n _remove(el);\n\n if (container && !container.hasChildNodes()) {\n _remove(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$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(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 = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];\n var Parallax = {\n mixins: [Media],\n props: _props.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {}),\n data: _props.reduce(function (data, prop) {\n data[prop] = undefined;\n return data;\n }, {}),\n computed: {\n props: function props(properties, $el) {\n var this$1 = this;\n return _props.reduce(function (props, prop) {\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n var pos, bgPos, diff;\n var steps = properties[prop].slice();\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale' ? 1 : isCssProp ? css($el, prop) : 0) || 0);\n }\n\n var unit = getUnit(steps);\n\n if (isColor) {\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) {\n return parseColor($el, step);\n });\n $el.style.color = color;\n } else if (startsWith(prop, 'bg')) {\n var attr = prop === 'bgy' ? 'height' : 'width';\n steps = steps.map(function (step) {\n return toPx(step, attr, this$1.$el);\n });\n css($el, \"background-position-\" + prop[2], '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\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 diff = max - min;\n steps = steps.map(function (step) {\n return step - (down ? min : max);\n });\n pos = (down ? -diff : 0) + \"px\";\n } else {\n pos = bgPos;\n }\n } else {\n steps = steps.map(toFloat);\n }\n\n if (prop === 'stroke') {\n if (!steps.some(function (step) {\n return step;\n })) {\n return props;\n }\n\n var length = getMaxPathLength(this$1.$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 prop = 'strokeDashoffset';\n }\n\n props[prop] = {\n steps: steps,\n unit: unit,\n pos: pos,\n bgPos: bgPos,\n diff: diff\n };\n return props;\n }, {});\n },\n bgProps: function bgProps() {\n var this$1 = this;\n return ['bgx', 'bgy'].filter(function (bg) {\n return bg in this$1.props;\n });\n },\n covers: function covers(_, $el) {\n return _covers($el);\n }\n },\n disconnected: function disconnected() {\n delete this._image;\n },\n update: {\n read: function read(data) {\n var this$1 = this;\n\n if (!this.matchMedia) {\n return;\n }\n\n if (!data.image && this.covers && this.bgProps.length) {\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (src) {\n var img = new Image();\n img.src = src;\n data.image = img;\n\n if (!img.naturalWidth) {\n img.onload = function () {\n return this$1.$update();\n };\n }\n }\n }\n\n var image = data.image;\n\n if (!image || !image.naturalWidth) {\n return;\n }\n\n var dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n var dim = Dimensions.cover(dimImage, dimEl);\n this.bgProps.forEach(function (prop) {\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = dim[attr] + diff - span;\n } else if (span > diff) {\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);\n\n if (posPercentage) {\n this$1.props[prop].steps = steps.map(function (step) {\n return step - (span - diff) / posPercentage;\n });\n }\n }\n\n dim = Dimensions.cover(dimImage, dimEl);\n });\n data.dim = dim;\n },\n write: function write(ref) {\n var dim = ref.dim;\n\n if (!this.matchMedia) {\n css(this.$el, {\n backgroundSize: '',\n backgroundRepeat: ''\n });\n return;\n }\n\n dim && css(this.$el, {\n backgroundSize: dim.width + \"px \" + dim.height + \"px\",\n backgroundRepeat: 'no-repeat'\n });\n },\n events: ['resize']\n },\n methods: {\n reset: function reset() {\n var this$1 = this;\n each(this.getCss(0), function (_, prop) {\n return css(this$1.$el, prop, '');\n });\n },\n getCss: function getCss(percent) {\n var ref = this;\n var props = ref.props;\n return Object.keys(props).reduce(function (css, prop) {\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n // transforms\n case 'x':\n case 'y':\n {\n unit = unit || 'px';\n css.transform += \" translate\" + ucfirst(prop) + \"(\" + toFloat(value).toFixed(unit === 'px' ? 0 : 2) + unit + \")\";\n break;\n }\n\n case 'rotate':\n unit = unit || 'deg';\n css.transform += \" rotate(\" + (value + unit) + \")\";\n break;\n\n case 'scale':\n css.transform += \" scale(\" + value + \")\";\n break;\n // bg image\n\n case 'bgy':\n case 'bgx':\n css[\"background-position-\" + prop[2]] = \"calc(\" + pos + \" + \" + value + \"px)\";\n break;\n // color\n\n case 'color':\n case 'backgroundColor':\n case 'borderColor':\n {\n var ref$1 = getStep(steps, percent);\n var start = ref$1[0];\n var end = ref$1[1];\n var p = ref$1[2];\n css[prop] = \"rgba(\" + start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',') + \")\";\n break;\n }\n // CSS Filter\n\n case 'blur':\n unit = unit || 'px';\n css.filter += \" blur(\" + (value + unit) + \")\";\n break;\n\n case 'hue':\n unit = unit || 'deg';\n css.filter += \" hue-rotate(\" + (value + unit) + \")\";\n break;\n\n case 'fopacity':\n unit = unit || '%';\n css.filter += \" opacity(\" + (value + unit) + \")\";\n break;\n\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n unit = unit || '%';\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n break;\n\n default:\n css[prop] = value;\n }\n\n return css;\n }, {\n transform: '',\n filter: ''\n });\n }\n }\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color').split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat);\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 var step = steps.slice(index, index + 2);\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n return step;\n }\n\n function getValue(steps, percent, digits) {\n if (digits === void 0) digits = 2;\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).toFixed(digits);\n }\n\n function getUnit(steps) {\n return steps.reduce(function (unit, step) {\n return isString(step) && step.replace(/-|\\d/g, '').trim() || unit;\n }, '');\n }\n\n function _covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var parallax = {\n mixins: [Parallax],\n props: {\n target: String,\n viewport: Number,\n easing: Number\n },\n data: {\n target: false,\n viewport: 1,\n easing: 1\n },\n computed: {\n target: function target(ref, $el) {\n var target = ref.target;\n return getOffsetElement(target && query(target, $el) || $el);\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.viewport || 1), this.easing);\n return {\n percent: percent,\n style: prev !== percent ? this.getCss(percent) : false\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\n function ease(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\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.body;\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$1(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 prev && this.updateTranslates();\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {\n percent: percent,\n duration: duration,\n timing: timing,\n dir: dir\n });\n prev && triggerUpdate$1(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 this.updateTranslates();\n\n if (prev) {\n percent = clamp(percent, -1, 1);\n triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {\n percent: percent,\n dir: dir\n });\n triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {\n percent: 1 - percent,\n dir: dir\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 = sortBy(this.getActives(), 'offsetLeft');\n var all = sortBy(_children(list), 'offsetLeft');\n var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);\n return ~i && all[i + (prev && !out ? dir : 0)];\n },\n getActives: function getActives() {\n return [prev || next].concat(_children(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n return slideLeft > from && slideLeft + dimensions(slide).width <= dimensions(list).width + from;\n }));\n },\n updateTranslates: function updateTranslates() {\n var actives = this.getActives();\n\n _children(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n triggerUpdate$1(slide, \"itemtranslate\" + (isActive ? 'in' : 'out'), {\n percent: isActive ? 1 : 0,\n dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1\n });\n });\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 triggerUpdate$1(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$1\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 = 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(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.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n var cmp = this$1.slides[i + 1];\n\n if (this$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.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 = this;\n this.navItems.forEach(function (el) {\n var index = toNumber(data(el, this$1.attrItem));\n\n if (index !== false) {\n el.hidden = !this$1.maxIndex || index > this$1.maxIndex || this$1.sets && !includes(this$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.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.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 ~this.prevIndex && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n }\n },\n methods: {\n reorder: function reorder() {\n var this$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.dir > 0 && i < index ? 1 : this$1.dir < 0 && i >= this$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 = 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.getCss(getCurrentPercent(type, dir, percent));\n var propsTo = this$1.getCss(isIn(type) ? .5 : dir > 0 ? 1 : 0);\n fastdom.write(function () {\n css(this$1.$el, propsFrom);\n Transition.start(this$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 = 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.getCss(getCurrentPercent(type, dir, percent));\n fastdom.write(function () {\n return css(this$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 : dir < 0 ? 1 - percent : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\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$2\n },\n update: {\n read: function read() {\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 = this;\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n\n this$1[key] = function (e) {\n assign(this$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 = 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\n _remove(this.drag);\n\n this.drag = null;\n this.touched.forEach(function (ref) {\n var clsPlaceholder = ref.clsPlaceholder;\n var clsItem = ref.clsItem;\n return this$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 = this;\n addClass(this.items, this.clsItem);\n\n var insert = function insert() {\n return target ? before(target, element) : append(this$1.target, element);\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n },\n remove: function remove(element) {\n if (!within(element, this.target)) {\n return;\n }\n\n if (this.animation) {\n this.animate(function () {\n return _remove(element);\n });\n } else {\n _remove(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)).reverse().some(function (scrollEl) {\n var scroll = scrollEl.scrollTop;\n var scrollHeight = scrollEl.scrollHeight;\n var ref = offset(getViewport(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(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$1;\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 = this;\n\n if (this.isToggled(this.tooltip) || !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.$el) || e.type === 'keydown' && e.keyCode === 27 || e.type === 'show' && e.detail[0] !== this$1 && e.detail[0].$name === this$1.$name;\n });\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(this._show, this.delay);\n },\n hide: function hide() {\n var this$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)) {\n return;\n }\n\n this.toggleElement(this.tooltip, false, false).then(function () {\n this$1.tooltip = _remove(this$1.tooltip);\n\n this$1._unbind();\n });\n },\n _show: function _show() {\n var this$1 = this;\n this.tooltip = append(this.container, \"
      \" + this.title + \"
      \");\n on(this.tooltip, 'toggled', function (e, toggled) {\n this$1.updateAria(toggled);\n\n if (!toggled) {\n return;\n }\n\n this$1.positionAt(this$1.tooltip, this$1.$el);\n this$1.origin = this$1.getAxis() === 'y' ? flipPosition(this$1.dir) + \"-\" + this$1.align : this$1.align + \"-\" + flipPosition(this$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$1 = {\n focus: 'show',\n blur: 'hide'\n }, obj$1[pointerEnter + \" \" + pointerLeave] = function (e) {\n if (!isTouch(e)) {\n this[e.type === pointerEnter ? 'show' : 'hide']();\n }\n }, obj$1[pointerDown] = function (e) {\n if (isTouch(e)) {\n this.show();\n }\n }, obj$1)\n };\n\n function makeFocusable(el) {\n if (!isFocusable(el)) {\n attr(el, 'tabindex', '0');\n }\n }\n\n function isFocusable(el) {\n return isInput(el) || matches(el, 'a,button') || hasAttr(el, 'tabindex');\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 = 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$1(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match$1(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.name, file);\n });\n\n for (var key in this$1.params) {\n data.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function beforeSend(env) {\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) {\n return on(xhr, type.toLowerCase(), this$1[type]);\n });\n return this$1.beforeSend(env);\n }\n }).then(function (xhr) {\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n }, function (e) {\n return this$1.error(e);\n });\n };\n\n upload(chunks.shift());\n }\n }\n };\n\n function match$1(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$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Countdown: countdown,\n Filter: filter$1,\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$1, function (component, name) {\n return UIkit.component(name, component);\n });\n return UIkit;\n});"],"sourceRoot":""}