1(function () { 2'use strict'; 3 4var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 5 6 7 8 9 10function createCommonjsModule(fn, module) { 11 return module = { exports: {} }, fn(module, module.exports), module.exports; 12} 13 14var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { 15 return typeof obj; 16} : function (obj) { 17 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 18}; 19 20 21 22 23 24var asyncGenerator = function () { 25 function AwaitValue(value) { 26 this.value = value; 27 } 28 29 function AsyncGenerator(gen) { 30 var front, back; 31 32 function send(key, arg) { 33 return new Promise(function (resolve, reject) { 34 var request = { 35 key: key, 36 arg: arg, 37 resolve: resolve, 38 reject: reject, 39 next: null 40 }; 41 42 if (back) { 43 back = back.next = request; 44 } else { 45 front = back = request; 46 resume(key, arg); 47 } 48 }); 49 } 50 51 function resume(key, arg) { 52 try { 53 var result = gen[key](arg); 54 var value = result.value; 55 56 if (value instanceof AwaitValue) { 57 Promise.resolve(value.value).then(function (arg) { 58 resume("next", arg); 59 }, function (arg) { 60 resume("throw", arg); 61 }); 62 } else { 63 settle(result.done ? "return" : "normal", result.value); 64 } 65 } catch (err) { 66 settle("throw", err); 67 } 68 } 69 70 function settle(type, value) { 71 switch (type) { 72 case "return": 73 front.resolve({ 74 value: value, 75 done: true 76 }); 77 break; 78 79 case "throw": 80 front.reject(value); 81 break; 82 83 default: 84 front.resolve({ 85 value: value, 86 done: false 87 }); 88 break; 89 } 90 91 front = front.next; 92 93 if (front) { 94 resume(front.key, front.arg); 95 } else { 96 back = null; 97 } 98 } 99 100 this._invoke = send; 101 102 if (typeof gen.return !== "function") { 103 this.return = undefined; 104 } 105 } 106 107 if (typeof Symbol === "function" && Symbol.asyncIterator) { 108 AsyncGenerator.prototype[Symbol.asyncIterator] = function () { 109 return this; 110 }; 111 } 112 113 AsyncGenerator.prototype.next = function (arg) { 114 return this._invoke("next", arg); 115 }; 116 117 AsyncGenerator.prototype.throw = function (arg) { 118 return this._invoke("throw", arg); 119 }; 120 121 AsyncGenerator.prototype.return = function (arg) { 122 return this._invoke("return", arg); 123 }; 124 125 return { 126 wrap: function (fn) { 127 return function () { 128 return new AsyncGenerator(fn.apply(this, arguments)); 129 }; 130 }, 131 await: function (value) { 132 return new AwaitValue(value); 133 } 134 }; 135}(); 136 137var uikit = createCommonjsModule(function (module, exports) { 138 /*! UIkit 3.5.7 | https://www.getuikit.com | (c) 2014 - 2020 YOOtheme | MIT License */ 139 140 (function (global, factory) { 141 module.exports = factory(); 142 })(commonjsGlobal, function () { 143 'use strict'; 144 145 var objPrototype = Object.prototype; 146 var hasOwnProperty = objPrototype.hasOwnProperty; 147 148 function hasOwn(obj, key) { 149 return hasOwnProperty.call(obj, key); 150 } 151 152 var hyphenateCache = {}; 153 var hyphenateRe = /([a-z\d])([A-Z])/g; 154 155 function hyphenate(str) { 156 157 if (!(str in hyphenateCache)) { 158 hyphenateCache[str] = str.replace(hyphenateRe, '$1-$2').toLowerCase(); 159 } 160 161 return hyphenateCache[str]; 162 } 163 164 var camelizeRe = /-(\w)/g; 165 166 function camelize(str) { 167 return str.replace(camelizeRe, toUpper); 168 } 169 170 function toUpper(_, c) { 171 return c ? c.toUpperCase() : ''; 172 } 173 174 function ucfirst(str) { 175 return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : ''; 176 } 177 178 var strPrototype = String.prototype; 179 var startsWithFn = strPrototype.startsWith || function (search) { 180 return this.lastIndexOf(search, 0) === 0; 181 }; 182 183 function startsWith(str, search) { 184 return startsWithFn.call(str, search); 185 } 186 187 var endsWithFn = strPrototype.endsWith || function (search) { 188 return this.substr(-search.length) === search; 189 }; 190 191 function endsWith(str, search) { 192 return endsWithFn.call(str, search); 193 } 194 195 var arrPrototype = Array.prototype; 196 197 var includesFn = function includesFn(search, i) { 198 return !!~this.indexOf(search, i); 199 }; 200 var includesStr = strPrototype.includes || includesFn; 201 var includesArray = arrPrototype.includes || includesFn; 202 203 function includes(obj, search) { 204 return obj && (isString(obj) ? includesStr : includesArray).call(obj, search); 205 } 206 207 var findIndexFn = arrPrototype.findIndex || function (predicate) { 208 var arguments$1 = arguments; 209 210 for (var i = 0; i < this.length; i++) { 211 if (predicate.call(arguments$1[1], this[i], i, this)) { 212 return i; 213 } 214 } 215 return -1; 216 }; 217 218 function findIndex(array, predicate) { 219 return findIndexFn.call(array, predicate); 220 } 221 222 var isArray = Array.isArray; 223 224 function isFunction(obj) { 225 return typeof obj === 'function'; 226 } 227 228 function isObject(obj) { 229 return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object'; 230 } 231 232 var toString = objPrototype.toString; 233 function isPlainObject(obj) { 234 return toString.call(obj) === '[object Object]'; 235 } 236 237 function isWindow(obj) { 238 return isObject(obj) && obj === obj.window; 239 } 240 241 function isDocument(obj) { 242 return isObject(obj) && obj.nodeType === 9; 243 } 244 245 function isJQuery(obj) { 246 return isObject(obj) && !!obj.jquery; 247 } 248 249 function isNode(obj) { 250 return isObject(obj) && obj.nodeType >= 1; 251 } 252 253 function isElement(obj) { 254 return isObject(obj) && obj.nodeType === 1; 255 } 256 257 function isNodeCollection(obj) { 258 return toString.call(obj).match(/^\[object (NodeList|HTMLCollection)\]$/); 259 } 260 261 function isBoolean(value) { 262 return typeof value === 'boolean'; 263 } 264 265 function isString(value) { 266 return typeof value === 'string'; 267 } 268 269 function isNumber(value) { 270 return typeof value === 'number'; 271 } 272 273 function isNumeric(value) { 274 return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value)); 275 } 276 277 function isEmpty(obj) { 278 return !(isArray(obj) ? obj.length : isObject(obj) ? Object.keys(obj).length : false); 279 } 280 281 function isUndefined(value) { 282 return value === void 0; 283 } 284 285 function toBoolean(value) { 286 return isBoolean(value) ? value : value === 'true' || value === '1' || value === '' ? true : value === 'false' || value === '0' ? false : value; 287 } 288 289 function toNumber(value) { 290 var number = Number(value); 291 return !isNaN(number) ? number : false;
292 } 293 294 function toFloat(value) { 295 return parseFloat(value) || 0; 296 } 297 298 function toNode(element) { 299 return isNode(element) ? element : isNodeCollection(element) || isJQuery(element) ? element[0] : isArray(element) ? toNode(element[0]) : null; 300 } 301 302 function toNodes(element) { 303 return isNode(element) ? [element] : isNodeCollection(element) ? arrPrototype.slice.call(element) : isArray(element) ? element.map(toNode).filter(Boolean) : isJQuery(element) ? element.toArray() : []; 304 } 305 306 function toWindow(element) { 307 if (isWindow(element)) { 308 return element; 309 } 310 311 element = toNode(element); 312 313 return element ? (isDocument(element) ? element : element.ownerDocument).defaultView : window; 314 } 315 316 function toList(value) { 317 return isArray(value) ? value : isString(value) ? value.split(/,(?![^(]*\))/).map(function (value) { 318 return isNumeric(value) ? toNumber(value) : toBoolean(value.trim()); 319 }) : [value]; 320 } 321 322 function toMs(time) { 323 return !time ? 0 : endsWith(time, 'ms') ? toFloat(time) : toFloat(time) * 1000; 324 } 325 326 function isEqual(value, other) { 327 return value === other || isObject(value) && isObject(other) && Object.keys(value).length === Object.keys(other).length && each(value, function (val, key) { 328 return val === other[key]; 329 }); 330 } 331 332 function swap(value, a, b) { 333 return value.replace(new RegExp(a + "|" + b, 'g'), function (match) { 334 return match === a ? b : a; 335 }); 336 } 337 338 var assign = Object.assign || function (target) { 339 var args = [], 340 len = arguments.length - 1; 341 while (len-- > 0) { 342 args[len] = arguments[len + 1]; 343 }target = Object(target); 344 for (var i = 0; i < args.length; i++) { 345 var source = args[i]; 346 if (source !== null) { 347 for (var key in source) { 348 if (hasOwn(source, key)) { 349 target[key] = source[key]; 350 } 351 } 352 } 353 } 354 return target; 355 }; 356 357 function last(array) { 358 return array[array.length - 1]; 359 } 360 361 function each(obj, cb) { 362 for (var key in obj) { 363 if (false === cb(obj[key], key)) { 364 return false; 365 } 366 } 367 return true; 368 } 369 370 function sortBy(array, prop) { 371 return array.sort(function (ref, ref$1) { 372 var propA = ref[prop];if (propA === void 0) propA = 0; 373 var propB = ref$1[prop];if (propB === void 0) propB = 0; 374 375 return propA > propB ? 1 : propB > propA ? -1 : 0; 376 }); 377 } 378 379 function uniqueBy(array, prop) { 380 var seen = new Set(); 381 return array.filter(function (ref) { 382 var check = ref[prop]; 383 384 return seen.has(check) ? false : seen.add(check) || true; 385 } // IE 11 does not return the Set object 386 ); 387 } 388 389 function clamp(number, min, max) { 390 if (min === void 0) min = 0; 391 if (max === void 0) max = 1; 392 393 return Math.min(Math.max(toNumber(number) || 0, min), max); 394 } 395 396 function noop() {} 397 398 function intersectRect(r1, r2) { 399 return r1.left < r2.right && r1.right > r2.left && r1.top < r2.bottom && r1.bottom > r2.top; 400 } 401 402 function pointInRect(point, rect) { 403 return point.x <= rect.right && point.x >= rect.left && point.y <= rect.bottom && point.y >= rect.top; 404 } 405 406 var Dimensions = { 407 408 ratio: function ratio(dimensions, prop, value) { 409 var obj; 410 411 var aProp = prop === 'width' ? 'height' : 'width'; 412 413 return obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj; 414 }, 415 416 contain: function contain(dimensions, maxDimensions) { 417 var this$1 = this; 418 419 dimensions = assign({}, dimensions); 420 421 each(dimensions, function (_, prop) { 422 return dimensions = dimensions[prop] > maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions; 423 }); 424 425 return dimensions; 426 }, 427 428 cover: function cover(dimensions, maxDimensions) { 429 var this$1 = this; 430 431 dimensions = this.contain(dimensions, maxDimensions); 432 433 each(dimensions, function (_, prop) { 434 return dimensions = dimensions[prop] < maxDimensions[prop] ? this$1.ratio(dimensions, prop, maxDimensions[prop]) : dimensions; 435 }); 436 437 return dimensions; 438 } 439 440 }; 441 442 function attr(element, name, value) { 443 444 if (isObject(name)) { 445 for (var key in name) { 446 attr(element, key, name[key]); 447 } 448 return; 449 } 450 451 if (isUndefined(value)) { 452 element = toNode(element); 453 return element && element.getAttribute(name); 454 } else { 455 toNodes(element).forEach(function (element) { 456 457 if (isFunction(value)) { 458 value = value.call(element, attr(element, name)); 459 } 460 461 if (value === null) { 462 removeAttr(element, name); 463 } else { 464 element.setAttribute(name, value); 465 } 466 }); 467 } 468 } 469 470 function hasAttr(element, name) { 471 return toNodes(element).some(function (element) { 472 return element.hasAttribute(name); 473 }); 474 } 475 476 function removeAttr(element, name) { 477 element = toNodes(element); 478 name.split(' ').forEach(function (name) { 479 return element.forEach(function (element) { 480 return element.hasAttribute(name) && element.removeAttribute(name); 481 }); 482 }); 483 } 484 485 function data(element, attribute) { 486 for (var i = 0, attrs = [attribute, "data-" + attribute]; i < attrs.length; i++) { 487 if (hasAttr(element, attrs[i])) { 488 return attr(element, attrs[i]); 489 } 490 } 491 } 492 493 /* global DocumentTouch */ 494 495 var inBrowser = typeof window !== 'undefined'; 496 var isIE = inBrowser && /msie|trident/i.test(window.navigator.userAgent); 497 var isRtl = inBrowser && attr(document.documentElement, 'dir') === 'rtl'; 498 499 var hasTouchEvents = inBrowser && 'ontouchstart' in window; 500 var hasPointerEvents = inBrowser && window.PointerEvent; 501 var hasTouch = inBrowser && (hasTouchEvents || window.DocumentTouch && document instanceof DocumentTouch || navigator.maxTouchPoints); // IE >=11 502 503 var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown'; 504 var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove'; 505 var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup'; 506 var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter'; 507 var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave'; 508 var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel'; 509 510 function query(selector, context) { 511 return toNode(selector) || find(selector, getContext(selector, context)); 512 } 513 514 function queryAll(selector, context) { 515 var nodes = toNodes(selector); 516 return nodes.length && nodes || findAll(selector, getContext(selector, context)); 517 } 518 519 function getContext(selector, context) { 520 if (context === void 0) context = document; 521 522 return isContextSelector(selector) || isDocument(context) ? context : context.ownerDocument; 523 } 524 525 function find(selector, context) { 526 return toNode(_query(selector, context, 'querySelector')); 527 } 528 529 function findAll(selector, context) { 530 return toNodes(_query(selector, context, 'querySelectorAll')); 531 } 532 533 function _query(selector, context, queryFn) { 534 if (context === void 0) context = document; 535 536 if (!selector || !isString(selector)) { 537 return null; 538 } 539 540 selector = selector.replace(contextSanitizeRe, '$1 *'); 541 542 var removes; 543 544 if (isContextSelector(selector)) { 545 546 removes = []; 547 548 selector = splitSelector(selector).map(function (selector, i) { 549 550 var ctx = context; 551 552 if (selector[0] === '!') { 553 554 var selectors = selector.substr(1).trim().split(' '); 555 ctx = closest(parent(context), selectors[0]); 556 selector = selectors.slice(1).join(' ').trim(); 557 } 558 559 if (selector[0] === '-') { 560 561 var selectors$1 = selector.substr(1).trim().split(' '); 562 var prev = (ctx || context).previousElementSibling; 563 ctx = matches(prev, selector.substr(1)) ? prev : null; 564 selector = selectors$1.slice(1).join(' '); 565 } 566 567 if (!ctx) { 568 return null; 569 } 570 571 if (!ctx.id) { 572 ctx.id = "uk-" + Date.now() + i; 573 removes.push(function () { 574 return removeAttr(ctx, 'id'); 575 }); 576 } 577 578 return "#" + escape(ctx.id) + " " + selector; 579 }
579).filter(Boolean).join(','); 580 581 context = document; 582 } 583 584 try { 585 586 return context[queryFn](selector); 587 } catch (e) { 588 589 return null; 590 } finally { 591 592 removes && removes.forEach(function (remove) { 593 return remove(); 594 }); 595 } 596 } 597 598 var contextSelectorRe = /(^|[^\\],)\s*[!>+~-]/; 599 var contextSanitizeRe = /([!>+~-])(?=\s+[!>+~-]|\s*$)/g; 600 601 function isContextSelector(selector) { 602 return isString(selector) && selector.match(contextSelectorRe); 603 } 604 605 var selectorRe = /.*?[^\\](?:,|$)/g; 606 607 function splitSelector(selector) { 608 return selector.match(selectorRe).map(function (selector) { 609 return selector.replace(/,$/, '').trim(); 610 }); 611 } 612 613 var elProto = inBrowser ? Element.prototype : {}; 614 var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector || noop; 615 616 function matches(element, selector) { 617 return toNodes(element).some(function (element) { 618 return matchesFn.call(element, selector); 619 }); 620 } 621 622 var closestFn = elProto.closest || function (selector) { 623 var ancestor = this; 624 625 do { 626 627 if (matches(ancestor, selector)) { 628 return ancestor; 629 } 630 } while (ancestor = parent(ancestor)); 631 }; 632 633 function closest(element, selector) { 634 635 if (startsWith(selector, '>')) { 636 selector = selector.slice(1); 637 } 638 639 return isElement(element) ? closestFn.call(element, selector) : toNodes(element).map(function (element) { 640 return closest(element, selector); 641 }).filter(Boolean); 642 } 643 644 function parent(element) { 645 element = toNode(element); 646 return element && isElement(element.parentNode) && element.parentNode; 647 } 648 649 var escapeFn = inBrowser && window.CSS && CSS.escape || function (css) { 650 return css.replace(/([^\x7f-\uFFFF\w-])/g, function (match) { 651 return "\\" + match; 652 }); 653 }; 654 function escape(css) { 655 return isString(css) ? escapeFn.call(null, css) : ''; 656 } 657 658 var voidElements = { 659 area: true, 660 base: true, 661 br: true, 662 col: true, 663 embed: true, 664 hr: true, 665 img: true, 666 input: true, 667 keygen: true, 668 link: true, 669 menuitem: true, 670 meta: true, 671 param: true, 672 source: true, 673 track: true, 674 wbr: true 675 }; 676 function isVoidElement(element) { 677 return toNodes(element).some(function (element) { 678 return voidElements[element.tagName.toLowerCase()]; 679 }); 680 } 681 682 function isVisible(element) { 683 return toNodes(element).some(function (element) { 684 return element.offsetWidth || element.offsetHeight || element.getClientRects().length; 685 }); 686 } 687 688 var selInput = 'input,select,textarea,button'; 689 function isInput(element) { 690 return toNodes(element).some(function (element) { 691 return matches(element, selInput); 692 }); 693 } 694 695 function filter(element, selector) { 696 return toNodes(element).filter(function (element) { 697 return matches(element, selector); 698 }); 699 } 700 701 function within(element, selector) { 702 return !isString(selector) ? element === selector || (isDocument(selector) ? selector.documentElement : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains
703 : matches(element, selector) || !!closest(element, selector); 704 } 705 706 function parents(element, selector) { 707 var elements = []; 708 709 while (element = parent(element)) { 710 if (!selector || matches(element, selector)) { 711 elements.push(element); 712 } 713 } 714 715 return elements; 716 } 717 718 function _children(element, selector) { 719 element = toNode(element); 720 var children = element ? toNodes(element.children) : []; 721 return selector ? filter(children, selector) : children; 722 } 723 724 function on() { 725 var args = [], 726 len = arguments.length; 727 while (len--) { 728 args[len] = arguments[len]; 729 }var ref = getArgs(args); 730 var targets = ref[0]; 731 var type = ref[1]; 732 var selector = ref[2]; 733 var listener = ref[3]; 734 var useCapture = ref[4]; 735 736 targets = toEventTargets(targets); 737 738 if (listener.length > 1) { 739 listener = detail(listener); 740 } 741 742 if (useCapture && useCapture.self) { 743 listener = selfFilter(listener); 744 } 745 746 if (selector) { 747 listener = delegate(targets, selector, listener); 748 } 749 750 useCapture = useCaptureFilter(useCapture); 751 752 type.split(' ').forEach(function (type) { 753 return targets.forEach(function (target) { 754 return target.addEventListener(type, listener, useCapture); 755 }); 756 }); 757 return function () { 758 return off(targets, type, listener, useCapture); 759 }; 760 } 761 762 function off(targets, type, listener, useCapture) { 763 if (useCapture === void 0) useCapture = false; 764 765 useCapture = useCaptureFilter(useCapture); 766 targets = toEventTargets(targets); 767 type.split(' ').forEach(function (type) { 768 return targets.forEach(function (target) { 769 return target.removeEventListener(type, listener, useCapture); 770 }); 771 }); 772 } 773 774 function once() { 775 var args = [], 776 len = arguments.length; 777 while (len--) { 778 args[len] = arguments[len]; 779 }var ref = getArgs(args); 780 var element = ref[0]; 781 var type = ref[1]; 782 var selector = ref[2]; 783 var listener = ref[3]; 784 var useCapture = ref[4]; 785 var condition = ref[5]; 786 var off = on(element, type, selector, function (e) { 787 var result = !condition || condition(e); 788 if (result) { 789 off(); 790 listener(e, result); 791 } 792 }, useCapture); 793 794 return off; 795 } 796 797 function trigger(targets, event, detail) { 798 return toEventTargets(targets).reduce(function (notCanceled, target) { 799 return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); 800 }, true); 801 } 802 803 function createEvent(e, bubbles, cancelable, detail) { 804 if (bubbles === void 0) bubbles = true; 805 if (cancelable === void 0) cancelable = false; 806 807 if (isString(e)) { 808 var event = document.createEvent('CustomEvent'); // IE 11 809 event.initCustomEvent(e, bubbles, cancelable, detail); 810 e = event; 811 } 812 813 return e; 814 } 815 816 function getArgs(args) { 817 if (isFunction(args[2])) { 818 args.splice(2, 0, false); 819 } 820 return args; 821 } 822 823 function delegate(delegates, selector, listener) { 824 var this$1 = this; 825 826 return function (e) { 827
828 delegates.forEach(function (delegate) { 829 830 var current = selector[0] === '>' ? findAll(selector, delegate).reverse().filter(function (element) { 831 return within(e.target, element); 832 })[0] : closest(e.target, selector); 833 834 if (current) { 835 e.delegate = delegate; 836 e.current = current; 837 838 listener.call(this$1, e); 839 } 840 }); 841 }; 842 } 843 844 function detail(listener) { 845 return function (e) { 846 return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); 847 }; 848 } 849 850 function selfFilter(listener) { 851 return function (e) { 852 if (e.target === e.currentTarget || e.target === e.current) { 853 return listener.call(null, e); 854 } 855 }; 856 } 857 858 function useCaptureFilter(options) { 859 return options && isIE && !isBoolean(options) ? !!options.capture : options; 860 } 861 862 function isEventTarget(target) { 863 return target && 'addEventListener' in target; 864 } 865 866 function toEventTarget(target) { 867 return isEventTarget(target) ? target : toNode(target); 868 } 869 870 function toEventTargets(target) { 871 return isArray(target) ? target.map(toEventTarget).filter(Boolean) : isString(target) ? findAll(target) : isEventTarget(target) ? [target] : toNodes(target); 872 } 873 874 function isTouch(e) { 875 return e.pointerType === 'touch' || !!e.touches; 876 } 877 878 function getEventPos(e) { 879 var touches = e.touches; 880 var changedTouches = e.changedTouches; 881 var ref = touches && touches[0] || changedTouches && changedTouches[0] || e; 882 var x = ref.clientX; 883 var y = ref.clientY; 884 885 return { x: x, y: y }; 886 } 887 888 /* global setImmediate */ 889 890 var Promise = inBrowser && window.Promise || PromiseFn; 891 892 var Deferred = function Deferred() { 893 var this$1 = this; 894 895 this.promise = new Promise(function (resolve, reject) { 896 this$1.reject = reject; 897 this$1.resolve = resolve; 898 }); 899 }; 900 901 /** 902 * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis) 903 */ 904 905 var RESOLVED = 0; 906 var REJECTED = 1; 907 var PENDING = 2; 908 909 var async = inBrowser && window.setImmediate || setTimeout; 910 911 function PromiseFn(executor) { 912 913 this.state = PENDING; 914 this.value = undefined; 915 this.deferred = []; 916 917 var promise = this; 918 919 try { 920 executor(function (x) { 921 promise.resolve(x); 922 }, function (r) { 923 promise.reject(r); 924 }); 925 } catch (e) { 926 promise.reject(e); 927 } 928 } 929 930 PromiseFn.reject = function (r) { 931 return new PromiseFn(function (resolve, reject) { 932 reject(r); 933 }); 934 }; 935 936 PromiseFn.resolve = function (x) { 937 return new PromiseFn(function (resolve, reject) { 938 resolve(x); 939 }); 940 }; 941 942 PromiseFn.all = function all(iterable) { 943 return new PromiseFn(function (resolve, reject) { 944 var result = []; 945 var count = 0; 946 947 if (iterable.length === 0) { 948 resolve(result); 949 } 950 951 function resolver(i) { 952 return function (x) { 953 result[i] = x; 954 count += 1; 955 956 if (count === iterable.length) { 957 resolve(result); 958 } 959 }; 960 } 961 962 for (var i = 0; i < iterable.length; i += 1) { 963 PromiseFn.resolve(iterable[i]).then(resolver(i), reject); 964 } 965 }); 966 }; 967 968 PromiseFn.race = function race(iterable) { 969 return new PromiseFn(function (resolve, reject) { 970 for (var i = 0; i < iterable.length; i += 1) { 971 PromiseFn.resolve(iterable[i]).then(resolve, reject); 972 } 973 }); 974 }; 975 976 var p = PromiseFn.prototype; 977 978 p.resolve = function resolve(x) { 979 var promise = this; 980 981 if (promise.state === PENDING) { 982 if (x === promise) { 983 throw new TypeError('Promise settled with itself.'); 984 } 985 986 var called = false; 987 988 try { 989 var then = x && x.then; 990 991 if (x !== null && isObject(x) && isFunction(then)) { 992 then.call(x, function (x) { 993 if (!called) { 994 promise.resolve(x); 995 } 996 called = true; 997 }, function (r) { 998 if (!called) { 999 promise.reject(r); 1000 } 1001 called = true; 1002 }); 1003 return; 1004 } 1005 } catch (e) { 1006 if (!called) { 1007 promise.reject(e); 1008 } 1009 return; 1010 } 1011 1012 promise.state = RESOLVED; 1013 promise.value = x; 1014 promise.notify(); 1015 } 1016 }; 1017 1018 p.reject = function reject(reason) { 1019 var promise = this; 1020 1021 if (promise.state === PENDING) { 1022 if (reason === promise) { 1023 throw new TypeError('Promise settled with itself.'); 1024 } 1025 1026 promise.state = REJECTED; 1027 promise.value = reason; 1028 promise.notify(); 1029 } 1030 }; 1031 1032 p.notify = function notify() { 1033 var this$1 = this; 1034 1035 async(function () { 1036 if (this$1.state !== PENDING) { 1037 while (this$1.deferred.length) { 1038 var ref = this$1.deferred.shift();
1039 var onResolved = ref[0]; 1040 var onRejected = ref[1]; 1041 var resolve = ref[2]; 1042 var reject = ref[3]; 1043 1044 try { 1045 if (this$1.state === RESOLVED) { 1046 if (isFunction(onResolved)) { 1047 resolve(onResolved.call(undefined, this$1.value)); 1048 } else { 1049 resolve(this$1.value); 1050 } 1051 } else if (this$1.state === REJECTED) { 1052 if (isFunction(onRejected)) { 1053 resolve(onRejected.call(undefined, this$1.value)); 1054 } else { 1055 reject(this$1.value); 1056 } 1057 } 1058 } catch (e) { 1059 reject(e); 1060 } 1061 } 1062 } 1063 }); 1064 }; 1065 1066 p.then = function then(onResolved, onRejected) { 1067 var this$1 = this; 1068 1069 return new PromiseFn(function (resolve, reject) { 1070 this$1.deferred.push([onResolved, onRejected, resolve, reject]); 1071 this$1.notify(); 1072 }); 1073 }; 1074 1075 p.catch = function (onRejected) { 1076 return this.then(undefined, onRejected); 1077 }; 1078 1079 function ajax(url, options) { 1080 return new Promise(function (resolve, reject) { 1081 1082 var env = assign({ 1083 data: null, 1084 method: 'GET', 1085 headers: {}, 1086 xhr: new XMLHttpRequest(), 1087 beforeSend: noop, 1088 responseType: '' 1089 }, options); 1090 1091 env.beforeSend(env); 1092 1093 var xhr = env.xhr; 1094 1095 for (var prop in env) { 1096 if (prop in xhr) { 1097 try { 1098 1099 xhr[prop] = env[prop]; 1100 } catch (e) {} 1101 } 1102 } 1103 1104 xhr.open(env.method.toUpperCase(), url); 1105 1106 for (var header in env.headers) { 1107 xhr.setRequestHeader(header, env.headers[header]); 1108 } 1109 1110 on(xhr, 'load', function () { 1111 1112 if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) { 1113 1114 // IE 11 does not support responseType 'json' 1115 if (env.responseType === 'json' && isString(xhr.response)) { 1116 xhr = assign(copyXhr(xhr), { response: JSON.parse(xhr.response) }); 1117 } 1118 1119 resolve(xhr); 1120 } else { 1121 reject(assign(Error(xhr.statusText), { 1122 xhr: xhr, 1123 status: xhr.status 1124 })); 1125 } 1126 }); 1127 1128 on(xhr, 'error', function () { 1129 return reject(assign(Error('Network Error'), { xhr: xhr })); 1130 }); 1131 on(xhr, 'timeout', function () { 1132 return reject(assign(Error('Network Timeout'), { xhr: xhr })); 1133 }); 1134 1135 xhr.send(env.data); 1136 }); 1137 } 1138 1139 function getImage(src, srcset, sizes) { 1140 1141 return new Promise(function (resolve, reject) { 1142 var img = new Image(); 1143 1144 img.onerror = function (e) { 1145 return reject(e); 1146 }; 1147 img.onload = function () { 1148 return resolve(img); 1149 }; 1150 1151 sizes && (img.sizes = sizes); 1152 srcset && (img.srcset = srcset); 1153 img.src = src; 1154 }); 1155 } 1156 1157 function copyXhr(source) { 1158 var target = {}; 1159 for (var key in source) { 1160 target[key] = source[key]; 1161 } 1162 return target; 1163 } 1164 1165 function ready(fn) { 1166 1167 if (document.readyState !== 'loading') { 1168 fn(); 1169 return; 1170 } 1171 1172 var unbind = on(document, 'DOMContentLoaded', function () { 1173 unbind(); 1174 fn(); 1175 }); 1176 } 1177 1178 function index(element, ref) { 1179 return ref ? toNodes(element).indexOf(toNode(ref)) : _children(parent(element)).indexOf(element); 1180 } 1181 1182 function _getIndex(i, elements, current, finite) { 1183 if (current === void 0) current = 0; 1184 if (finite === void 0) finite = false; 1185 1186 elements = toNodes(elements); 1187 1188 var length = elements.length; 1189 1190 i = isNumeric(i) ? toNumber(i) : i === 'next' ? current + 1 : i === 'previous' ? current - 1 : index(elements, i); 1191 1192 if (finite) { 1193 return clamp(i, 0, length - 1); 1194 } 1195 1196 i %= length; 1197 1198 return i < 0 ? i + length : i; 1199 } 1200 1201 function empty(element) { 1202 element = $(element); 1203 element.innerHTML = ''; 1204 return element; 1205 } 1206 1207 function html(parent, html) { 1208 parent = $(parent); 1209 return isUndefined(html) ? parent.innerHTML : append(parent.hasChildNodes() ? empty(parent) : parent, html); 1210 } 1211 1212 function prepend(parent, element) { 1213 1214 parent = $(parent); 1215 1216 if (!parent.hasChildNodes()) { 1217 return append(parent, element); 1218 } else {
1219 return insertNodes(element, function (element) { 1220 return parent.insertBefore(element, parent.firstChild); 1221 }); 1222 } 1223 } 1224 1225 function append(parent, element) { 1226 parent = $(parent); 1227 return insertNodes(element, function (element) { 1228 return parent.appendChild(element); 1229 }); 1230 } 1231 1232 function before(ref, element) { 1233 ref = $(ref); 1234 return insertNodes(element, function (element) { 1235 return ref.parentNode.insertBefore(element, ref); 1236 }); 1237 } 1238 1239 function after(ref, element) { 1240 ref = $(ref); 1241 return insertNodes(element, function (element) { 1242 return ref.nextSibling ? before(ref.nextSibling, element) : append(ref.parentNode, element); 1243 }); 1244 } 1245 1246 function insertNodes(element, fn) { 1247 element = isString(element) ? fragment(element) : element; 1248 return element ? 'length' in element ? toNodes(element).map(fn) : fn(element) : null; 1249 } 1250 1251 function _remove(element) { 1252 toNodes(element).map(function (element) { 1253 return element.parentNode && element.parentNode.removeChild(element); 1254 }); 1255 } 1256 1257 function wrapAll(element, structure) { 1258 1259 structure = toNode(before(element, structure)); 1260 1261 while (structure.firstChild) { 1262 structure = structure.firstChild; 1263 } 1264 1265 append(structure, element); 1266 1267 return structure; 1268 } 1269 1270 function wrapInner(element, structure) { 1271 return toNodes(toNodes(element).map(function (element) { 1272 return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); 1273 })); 1274 } 1275 1276 function unwrap(element) { 1277 toNodes(element).map(parent).filter(function (value, index, self) { 1278 return self.indexOf(value) === index; 1279 }
1279).forEach(function (parent) { 1280 before(parent, parent.childNodes); 1281 _remove(parent); 1282 }); 1283 } 1284 1285 var fragmentRe = /^\s*<(\w+|!)[^>]*>/; 1286 var singleTagRe = /^<(\w+)\s*\/?>(?:<\/\1>)?$/; 1287 1288 function fragment(html) { 1289 1290 var matches = singleTagRe.exec(html); 1291 if (matches) { 1292 return document.createElement(matches[1]); 1293 } 1294 1295 var container = document.createElement('div'); 1296 if (fragmentRe.test(html)) { 1297 container.insertAdjacentHTML('beforeend', html.trim()); 1298 } else { 1299 container.textContent = html; 1300 } 1301 1302 return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild; 1303 } 1304 1305 function apply(node, fn) { 1306 1307 if (!isElement(node)) { 1308 return; 1309 } 1310 1311 fn(node); 1312 node = node.firstElementChild; 1313 while (node) { 1314 var next = node.nextElementSibling; 1315 apply(node, fn); 1316 node = next; 1317 } 1318 } 1319 1320 function $(selector, context) { 1321 return !isString(selector) ? toNode(selector) : isHtml(selector) ? toNode(fragment(selector)) : find(selector, context); 1322 } 1323 1324 function $$(selector, context) { 1325 return !isString(selector) ? toNodes(selector) : isHtml(selector) ? toNodes(fragment(selector)) : findAll(selector, context); 1326 } 1327 1328 function isHtml(str) { 1329 return str[0] === '<' || str.match(/^\s*</); 1330 } 1331 1332 function addClass(element) { 1333 var args = [], 1334 len = arguments.length - 1; 1335 while (len-- > 0) { 1336 args[len] = arguments[len + 1]; 1337 }apply$1(element, args, 'add'); 1338 } 1339 1340 function removeClass(element) { 1341 var args = [], 1342 len = arguments.length - 1; 1343 while (len-- > 0) { 1344 args[len] = arguments[len + 1]; 1345 }apply$1(element, args, 'remove'); 1346 } 1347 1348 function removeClasses(element, cls) { 1349 attr(element, 'class', function (value) { 1350 return (value || '').replace(new RegExp("\\b" + cls + "\\b", 'g'), ''); 1351 }); 1352 } 1353 1354 function replaceClass(element) { 1355 var args = [], 1356 len = arguments.length - 1; 1357 while (len-- > 0) { 1358 args[len] = arguments[len + 1]; 1359 }args[0] && removeClass(element, args[0]); 1360 args[1] && addClass(element, args[1]); 1361 } 1362 1363 function hasClass(element, cls) { 1364 return cls && toNodes(element).some(function (element) { 1365 return element.classList.contains(cls.split(' ')[0]); 1366 }); 1367 } 1368 1369 function toggleClass(element) { 1370 var args = [], 1371 len = arguments.length - 1; 1372 while (len-- > 0) { 1373 args[len] = arguments[len + 1]; 1374 }if (!args.length) { 1375 return; 1376 } 1377 1378 args = getArgs$1(args); 1379 1380 var force = !isString(last(args)) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false 1381 1382 args = args.filter(Boolean); 1383 1384 toNodes(element).forEach(function (ref) { 1385 var classList = ref.classList; 1386 1387 for (var i = 0; i < args.length; i++) { 1388 supports.Force ? classList.toggle.apply(classList, [args[i]].concat(force)) : classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]); 1389 } 1390 }); 1391 } 1392 1393 function apply$1(element, args, fn) { 1394 args = getArgs$1(args).filter(Boolean); 1395 1396 args.length && toNodes(element).forEach(function (ref) { 1397 var classList = ref.classList; 1398 1399 supports.Multiple ? classList[fn].apply(classList, args) : args.forEach(function (cls) { 1400 return classList[fn](cls); 1401 }); 1402 }); 1403 } 1404 1405 function getArgs$1(args) { 1406 return args.reduce(function (args, arg) { 1407 return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); 1408 }, []); 1409 } 1410 1411 // IE 11 1412 var supports = { 1413 1414 get Multiple() { 1415 return this.get('_multiple'); 1416 }, 1417 1418 get Force() { 1419 return this.get('_force'); 1420 }, 1421 1422 get: function get$$1(key) { 1423 1424 if (!hasOwn(this, key)) { 1425 var ref = document.createElement('_'); 1426 var classList = ref.classList; 1427 classList.add('a', 'b'); 1428 classList.toggle('c', false); 1429 this._multiple = classList.contains('b'); 1430 this._force = !classList.contains('c'); 1431 } 1432 1433 return this[key]; 1434 } 1435 1436 }; 1437 1438 var cssNumber = { 1439 'animation-iteration-count': true, 1440 'column-count': true, 1441 'fill-opacity': true, 1442 'flex-grow': true, 1443 'flex-shrink': true, 1444 'font-weight': true, 1445 'line-height': true, 1446 'opacity': true, 1447 'order': true, 1448 'orphans': true, 1449 'stroke-dasharray': true, 1450 'stroke-dashoffset': true, 1451 'widows': true, 1452 'z-index': true, 1453 'zoom': true 1454 }; 1455 1456 function css(element, property, value) { 1457 1458 return toNodes(element).map(function (element) { 1459 1460 if (isString(property)) { 1461 1462 property = propName(property); 1463 1464 if (isUndefined(value)) { 1465 return getStyle(element, property); 1466 } else if (!value && !isNumber(value)) { 1467 element.style.removeProperty(property); 1468 } else { 1469 element.style[property] = isNumeric(value) && !cssNumber[property] ? value + "px" : value; 1470 } 1471 } else if (isArray(property)) { 1472 1473 var styles = getStyles(element); 1474 1475 return property.reduce(function (props, property) { 1476 props[property] = styles[propName(property)]; 1477 return props; 1478 }, {}); 1479 } else if (isObject(property)) { 1480 each(property, function (value, property) { 1481 return css(element, property, value); 1482 }); 1483 } 1484 1485 return element; 1486 })[0]; 1487 } 1488 1489 function getStyles(element, pseudoElt) { 1490 element = toNode(element); 1491 return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt); 1492 } 1493 1494 function getStyle(element, property, pseudoElt) { 1495 return getStyles(element, pseudoElt)[property]; 1496 } 1497 1498 var vars = {}; 1499 1500 function getCssVar(name) { 1501 1502 var docEl = document.documentElement; 1503 1504 if (!isIE) { 1505 return getStyles(docEl).getPropertyValue("--uk-" + name); 1506 } 1507 1508 if (!(name in vars)) { 1509 1510 /* usage in css: .uk-name:before { content:"xyz" } */ 1511 1512 var element = append(docEl, document.createElement('div')); 1513 1514 addClass(element, "uk-" + name); 1515 1516 vars[name] = getStyle(element, 'content', ':before').replace(/^["'](.*)["']$/, '$1'); 1517 1518 _remove(element); 1519 } 1520 1521 return vars[name]; 1522 } 1523 1524 var cssProps = {}; 1525 1526 function propName(name) { 1527 1528 var ret = cssProps[name]; 1529 if (!ret) { 1530 ret = cssProps[name] = vendorPropName(name) || name; 1531 } 1532 return ret; 1533 } 1534 1535 var cssPrefixes = ['webkit', 'moz', 'ms']; 1536 1537 function vendorPropName(name) { 1538 1539 name = hyphenate(name); 1540 1541 var ref = document.documentElement; 1542 var style = ref.style; 1543 1544 if (name in style) { 1545 return name; 1546 } 1547 1548 var i = cssPrefixes.length, 1549 prefixedName; 1550 1551 while (i--) { 1552 prefixedName = "-" + cssPrefixes[i] + "-" + name; 1553 if (prefixedName in style) { 1554 return prefixedName; 1555 } 1556 } 1557 } 1558 1559 function transition(element, props, duration, timing) { 1560 if (duration === void 0) duration = 400; 1561 if (timing === void 0) timing = 'linear'; 1562 1563 return Promise.all(toNodes(element).map(function (element) { 1564 return new Promise(function (resolve, reject) { 1565 1566 for (var name in props) { 1567 var value = css(element, name); 1568 if (value === '') { 1569 css(element, name, value); 1570 } 1571 } 1572 1573 var timer = setTimeout(function () { 1574 return trigger(element, 'transitionend'); 1575 }, duration); 1576 1577 once(element, 'transitionend transitioncanceled', function (ref) { 1578 var type = ref.type; 1579 1580 clearTimeout(timer); 1581 removeClass(element, 'uk-transition'); 1582 css(element, { 1583 transitionProperty: '', 1584 transitionDuration: '', 1585 transitionTimingFunction: '' 1586 }); 1587 type === 'transitioncanceled' ? reject() : resolve(); 1588 }, { self: true }); 1589 1590 addClass(element, 'uk-transition'); 1591 css(element, assign({ 1592 transitionProperty: Object.keys(props).map(propName).join(','), 1593 transitionDuration: duration + "ms", 1594 transitionTimingFunction: timing 1595 }, props)); 1596 }); 1597 })); 1598 } 1599 1600 var Transition = { 1601 1602 start: transition, 1603 1604 stop: function stop(element) { 1605 trigger(element, 'transitionend'); 1606 return Promise.resolve(); 1607 }, 1608 1609 cancel: function cancel(element) { 1610 trigger(element, 'transitioncanceled'); 1611 }, 1612 1613 inProgress: function inProgress(element) { 1614 return hasClass(element, 'uk-transition'); 1615 } 1616 1617 }; 1618 1619 var animationPrefix = 'uk-animation-'; 1620 1621 function animate(element, animation, duration, origin, out) { 1622 if (duration === void 0) duration = 200; 1623 1624 return Promise.all(toNodes(element).map(function (element) { 1625 return new Promise(function (resolve, reject) { 1626 1627 trigger(element, 'animationcanceled'); 1628 var timer = setTimeout(function () { 1629 return trigger(element, 'animationend'); 1630 }, duration); 1631 1632 once(element, 'animationend animationcanceled', function (ref) { 1633 var type = ref.type; 1634 1635 clearTimeout(timer); 1636 1637 type === 'animationcanceled' ? reject() : resolve(); 1638 1639 css(element, 'animationDuration', ''); 1640 removeClasses(element, animationPrefix + "\\S*"); 1641 }, { self: true }); 1642 1643 css(element, 'animationDuration', duration + "ms"); 1644 addClass(element, animation, animationPrefix + (out ? 'leave' : 'enter')); 1645 1646 if (startsWith(animation, animationPrefix)) { 1647 addClass(element, origin && "uk-transform-origin-" + origin, out && animationPrefix + "reverse"); 1648 } 1649 }); 1650 })); 1651 } 1652 1653 var _inProgress = new RegExp(animationPrefix + "(enter|leave)"); 1654 var Animation = { 1655 1656 in: animate, 1657 1658 out: function out(element, animation, duration, origin) { 1659 return animate(element, animation, duration, origin, true); 1660 }, 1661 1662 inProgress: function inProgress(element) { 1663 return _inProgress.test(attr(element, 'class')); 1664 }, 1665 1666 cancel: function cancel(element) { 1667 trigger(element, 'animationcanceled'); 1668 } 1669 1670 }; 1671 1672 var dirs = { 1673 width: ['x', 'left', 'right'], 1674 height: ['y', 'top', 'bottom'] 1675 }; 1676 1677 function _positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) { 1678 1679 elAttach = getPos(elAttach); 1680 targetAttach = getPos(targetAttach); 1681 1682 var flipped = { element: elAttach, target: targetAttach }; 1683 1684 if (!element || !target) { 1685 return flipped; 1686 } 1687 1688 var dim = getDimensions(element); 1689 var targetDim = getDimensions(target); 1690 var position = targetDim; 1691 1692 moveTo(position, elAttach, dim, -1); 1693 moveTo(position, targetAttach, targetDim, 1); 1694 1695 elOffset = getOffsets(elOffset, dim.width, dim.height); 1696 targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height); 1697 1698 elOffset['x'] += targetOffset['x']; 1699 elOffset['y'] += targetOffset['y']; 1700 1701 position.left += elOffset['x']; 1702 position.top += elOffset['y']; 1703 1704 if (flip) { 1705 1706 var boundaries = [getDimensions(toWindow(element))]; 1707 1708 if (boundary) { 1709 boundaries.unshift(getDimensions(boundary)); 1710 } 1711 1712 each(dirs, function (ref, prop) { 1713 var dir = ref[0]; 1714 var align = ref[1]; 1715 var alignFlip = ref[2]; 1716 1717 if (!(flip === true || includes(flip, dir))) { 1718 return; 1719 } 1720 1721 boundaries.some(function (boundary) { 1722 1723 var elemOffset = elAttach[dir] === align ? -dim[prop] : elAttach[dir] === alignFlip ? dim[prop] : 0; 1724 1725 var targetOffset = targetAttach[dir] === align ? targetDim[prop] : targetAttach[dir] === alignFlip ? -targetDim[prop] : 0; 1726 1727 if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) { 1728 1729 var centerOffset = dim[prop] / 2; 1730 var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0; 1731 1732 return elAttach[dir] === 'center' && (apply(centerOffset, centerTargetOffset) || apply(-centerOffset, -centerTargetOffset)) || apply(elemOffset, targetOffset); 1733 } 1734 1735 function apply(elemOffset, targetOffset) { 1736 1737 var newVal = toFloat((position[align] + elemOffset + targetOffset - elOffset[dir] * 2).toFixed(4)); 1738 1739 if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) { 1740 position[align] = newVal; 1741 1742 ['element', 'target'].forEach(function (el) { 1743 flipped[el][dir] = !elemOffset ? flipped[el][dir] : flipped[el][dir] === dirs[prop][1] ? dirs[prop][2] : dirs[prop][1]; 1744 }); 1745 1746 return true; 1747 } 1748 } 1749 }); 1750 }); 1751 } 1752 1753 offset(element, position); 1754 1755 return flipped; 1756 } 1757 1758 function offset(element, coordinates) { 1759 1760 if (!coordinates) { 1761 return getDimensions(element); 1762 } 1763 1764 var currentOffset = getDimensions(element); 1765 var pos = css(element, 'position'); 1766 1767 ['left', 'top'].forEach(function (prop) { 1768 if (prop in coordinates) { 1769 var value = css(element, prop); 1770 css(element, prop, coordinates[prop] - currentOffset[prop] + toFloat(pos === 'absolute' && value === 'auto' ? position(element)[prop] : value)); 1771 } 1772 }); 1773 } 1774 1775 function getDimensions(element) { 1776 1777 if (!element) { 1778 return {}; 1779 } 1780 1781 var ref = toWindow(element); 1782 var top = ref.pageYOffset; 1783 var left = ref.pageXOffset; 1784 1785 if (isWindow(element)) { 1786
1787 var height = element.innerHeight; 1788 var width = element.innerWidth; 1789 1790 return { 1791 top: top, 1792 left: left, 1793 height: height, 1794 width: width, 1795 bottom: top + height, 1796 right: left + width 1797 }; 1798 } 1799 1800 var style, hidden; 1801 1802 if (!isVisible(element) && css(element, 'display') === 'none') { 1803 1804 style = attr(element, 'style'); 1805 hidden = attr(element, 'hidden'); 1806 1807 attr(element, { 1808 style: (style || '') + ";display:block !important;", 1809 hidden: null 1810 }); 1811 } 1812 1813 element = toNode(element); 1814 1815 var rect = element.getBoundingClientRect(); 1816 1817 if (!isUndefined(style)) { 1818 attr(element, { style: style, hidden: hidden }); 1819 } 1820 1821 return { 1822 height: rect.height, 1823 width: rect.width, 1824 top: rect.top + top, 1825 left: rect.left + left, 1826 bottom: rect.bottom + top, 1827 right: rect.right + left 1828 }; 1829 } 1830 1831 function position(element, parent) { 1832 1833 parent = parent || (toNode(element) || {}).offsetParent || toWindow(element).document.documentElement; 1834 1835 var elementOffset = offset(element); 1836 var parentOffset = offset(parent); 1837 1838 return { 1839 top: elementOffset.top - parentOffset.top - toFloat(css(parent, 'borderTopWidth')), 1840 left: elementOffset.left - parentOffset.left - toFloat(css(parent, 'borderLeftWidth')) 1841 }; 1842 } 1843 1844 function offsetPosition(element) { 1845 var offset = [0, 0]; 1846 1847 element = toNode(element); 1848 1849 do { 1850 1851 offset[0] += element.offsetTop; 1852 offset[1] += element.offsetLeft; 1853 1854 if (css(element, 'position') === 'fixed') { 1855 var win = toWindow(element); 1856 offset[0] += win.pageYOffset; 1857 offset[1] += win.pageXOffset; 1858 return offset; 1859 } 1860 } while (element = element.offsetParent); 1861 1862 return offset; 1863 } 1864 1865 var height = dimension('height'); 1866 var width = dimension('width'); 1867 1868 function dimension(prop) { 1869 var propName = ucfirst(prop); 1870 return function (element, value) { 1871 1872 if (isUndefined(value)) { 1873 1874 if (isWindow(element)) { 1875 return element["inner" + propName]; 1876 } 1877 1878 if (isDocument(element)) { 1879 var doc = element.documentElement; 1880 return Math.max(doc["offset" + propName], doc["scroll" + propName]); 1881 } 1882 1883 element = toNode(element); 1884 1885 value = css(element, prop); 1886 value = value === 'auto' ? element["offset" + propName] : toFloat(value) || 0; 1887 1888 return value - boxModelAdjust(element, prop); 1889 } else { 1890 1891 css(element, prop, !value && value !== 0 ? '' : +value + boxModelAdjust(element, prop) + 'px'); 1892 } 1893 }; 1894 } 1895 1896 function boxModelAdjust(element, prop, sizing) { 1897 if (sizing === void 0) sizing = 'border-box'; 1898 1899 return css(element, 'boxSizing') === sizing ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { 1900 return value + toFloat(css(element, "padding" + prop)) + toFloat(css(element, "border" + prop + "Width")); 1901 }, 0) : 0; 1902 } 1903 1904 function moveTo(position, attach, dim, factor) { 1905 each(dirs, function (ref, prop) { 1906 var dir = ref[0]; 1907 var align = ref[1]; 1908 var alignFlip = ref[2]; 1909 1910 if (attach[dir] === alignFlip) { 1911 position[align] += dim[prop] * factor; 1912 } else if (attach[dir] === 'center') { 1913 position[align] += dim[prop] * factor / 2; 1914 } 1915 }); 1916 } 1917 1918 function getPos(pos) { 1919 1920 var x = /left|center|right/; 1921 var y = /top|center|bottom/; 1922 1923 pos = (pos || '').split(' '); 1924 1925 if (pos.length === 1) { 1926 pos = x.test(pos[0]) ? pos.concat('center') : y.test(pos[0]) ? ['center'].concat(pos) : ['center', 'center']; 1927 } 1928 1929 return { 1930 x: x.test(pos[0]) ? pos[0] : 'center', 1931 y: y.test(pos[1]) ? pos[1] : 'center' 1932 }; 1933 } 1934 1935 function getOffsets(offsets, width, height) { 1936 1937 var ref = (offsets || '').split(' '); 1938 var x = ref[0]; 1939 var y = ref[1]; 1940 1941 return {
1942 x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0, 1943 y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0 1944 }; 1945 } 1946 1947 function flipPosition(pos) { 1948 switch (pos) { 1949 case 'left': 1950 return 'right'; 1951 case 'right': 1952 return 'left'; 1953 case 'top': 1954 return 'bottom'; 1955 case 'bottom': 1956 return 'top'; 1957 default: 1958 return pos; 1959 } 1960 } 1961 1962 function toPx(value, property, element) { 1963 if (property === void 0) property = 'width'; 1964 if (element === void 0) element = window; 1965 1966 return isNumeric(value) ? +value : endsWith(value, 'vh') ? percent(height(toWindow(element)), value) : endsWith(value, 'vw') ? percent(width(toWindow(element)), value) : endsWith(value, '%') ? percent(getDimensions(element)[property], value) : toFloat(value); 1967 } 1968 1969 function percent(base, value) { 1970 return base * toFloat(value) / 100; 1971 } 1972 1973 /* 1974 Based on: 1975 Copyright (c) 2016 Wilson Page [email protected] 1976 https://github.com/wilsonpage/fastdom 1977 */ 1978 1979 var fastdom = { 1980 1981 reads: [], 1982 writes: [], 1983 1984 read: function read(task) { 1985 this.reads.push(task); 1986 scheduleFlush(); 1987 return task; 1988 }, 1989 1990 write: function write(task) { 1991 this.writes.push(task); 1992 scheduleFlush(); 1993 return task; 1994 }, 1995 1996 clear: function clear(task) { 1997 return remove$1(this.reads, task) || remove$1(this.writes, task); 1998 }, 1999 2000 flush: flush 2001 2002 }; 2003 2004 function flush(recursion) { 2005 if (recursion === void 0) recursion = 1; 2006 2007 runTasks(fastdom.reads); 2008 runTasks(fastdom.writes.splice(0, fastdom.writes.length)); 2009 2010 fastdom.scheduled = false; 2011 2012 if (fastdom.reads.length || fastdom.writes.length) { 2013 scheduleFlush(recursion + 1); 2014 } 2015 } 2016 2017 var RECURSION_LIMIT = 4; 2018 function scheduleFlush(recursion) { 2019 2020 if (fastdom.scheduled) { 2021 return; 2022 } 2023 2024 fastdom.scheduled = true; 2025 if (recursion && recursion < RECURSION_LIMIT) { 2026 Promise.resolve().then(function () { 2027 return flush(recursion); 2028 }); 2029 } else { 2030 requestAnimationFrame(function () { 2031 return flush(); 2032 }); 2033 } 2034 } 2035 2036 function runTasks(tasks) { 2037 var task; 2038 while (task = tasks.shift()) { 2039 task(); 2040 } 2041 } 2042 2043 function remove$1(array, item) { 2044 var index = array.indexOf(item); 2045 return !!~index && !!array.splice(index, 1); 2046 } 2047 2048 function MouseTracker() {} 2049 2050 MouseTracker.prototype = { 2051 2052 positions: [], 2053 2054 init: function init() { 2055 var this$1 = this; 2056 2057 this.positions = []; 2058 2059 var position; 2060 this.unbind = on(document, 'mousemove', function (e) { 2061 return position = getEventPos(e); 2062 }); 2063 this.interval = setInterval(function () { 2064 2065 if (!position) { 2066 return; 2067 } 2068 2069 this$1.positions.push(position); 2070 2071 if (this$1.positions.length > 5) { 2072 this$1.positions.shift(); 2073 } 2074 }, 50); 2075 }, 2076 2077 cancel: function cancel() { 2078 this.unbind && this.unbind(); 2079 this.interval && clearInterval(this.interval); 2080 }, 2081 2082 movesTo: function movesTo(target) { 2083 2084 if (this.positions.length < 2) { 2085 return false; 2086 } 2087 2088 var p = target.getBoundingClientRect(); 2089 var left = p.left; 2090 var right = p.right; 2091 var top = p.top; 2092 var bottom = p.bottom; 2093 2094 var ref = this.positions; 2095 var prevPosition = ref[0]; 2096 var position = last(this.positions); 2097 var path = [prevPosition, position]; 2098 2099 if (pointInRect(position, p)) { 2100 return false; 2101 } 2102 2103 var diagonals = [[{ x: left, y: top }, { x: right, y: bottom }], [{ x: left, y: bottom }, { x: right, y: top }]]; 2104 2105 return diagonals.some(function (diagonal) { 2106 var intersection = intersect(path, diagonal); 2107 return intersection && pointInRect(intersection, p); 2108 }); 2109 } 2110 2111 }; 2112 2113 // Inspired by http://paulbourke.net/geometry/pointlineplane/ 2114 function intersect(ref, ref$1) { 2115 var ref_0 = ref[0]; 2116 var x1 = ref_0.x; 2117 var y1 = ref_0.y;
2118 var ref_1 = ref[1]; 2119 var x2 = ref_1.x; 2120 var y2 = ref_1.y; 2121 var ref$1_0 = ref$1[0]; 2122 var x3 = ref$1_0.x; 2123 var y3 = ref$1_0.y; 2124 var ref$1_1 = ref$1[1]; 2125 var x4 = ref$1_1.x; 2126 var y4 = ref$1_1.y; 2127 2128 var denominator = (y4 - y3) * (x2 - x1) - (x4 - x3) * (y2 - y1); 2129 2130 // Lines are parallel 2131 if (denominator === 0) { 2132 return false; 2133 } 2134 2135 var ua = ((x4 - x3) * (y1 - y3) - (y4 - y3) * (x1 - x3)) / denominator; 2136 2137 if (ua < 0) { 2138 return false; 2139 } 2140 2141 // Return an object with the x and y coordinates of the intersection 2142 return { x: x1 + ua * (x2 - x1), y: y1 + ua * (y2 - y1) }; 2143 } 2144 2145 var strats = {}; 2146 2147 strats.events = strats.created = strats.beforeConnect = strats.connected = strats.beforeDisconnect = strats.disconnected = strats.destroy = concatStrat; 2148 2149 // args strategy 2150 strats.args = function (parentVal, childVal) { 2151 return childVal !== false && concatStrat(childVal || parentVal); 2152 }; 2153 2154 // update strategy 2155 strats.update = function (parentVal, childVal) { 2156 return sortBy(concatStrat(parentVal, isFunction(childVal) ? { read: childVal } : childVal), 'order'); 2157 }; 2158 2159 // property strategy 2160 strats.props = function (parentVal, childVal) { 2161 2162 if (isArray(childVal)) { 2163 childVal = childVal.reduce(function (value, key) { 2164 value[key] = String; 2165 return value; 2166 }, {}); 2167 } 2168 2169 return strats.methods(parentVal, childVal); 2170 }; 2171 2172 // extend strategy 2173 strats.computed = strats.methods = function (parentVal, childVal) { 2174 return childVal ? parentVal ? assign({}, parentVal, childVal) : childVal : parentVal; 2175 }; 2176 2177 // data strategy 2178 strats.data = function (parentVal, childVal, vm) { 2179 2180 if (!vm) { 2181 2182 if (!childVal) { 2183 return parentVal; 2184 } 2185 2186 if (!parentVal) { 2187 return childVal; 2188 } 2189 2190 return function (vm) { 2191 return mergeFnData(parentVal, childVal, vm); 2192 }; 2193 } 2194 2195 return mergeFnData(parentVal, childVal, vm); 2196 }; 2197 2198 function mergeFnData(parentVal, childVal, vm) { 2199 return strats.computed(isFunction(parentVal) ? parentVal.call(vm, vm) : parentVal, isFunction(childVal) ? childVal.call(vm, vm) : childVal); 2200 } 2201 2202 // concat strategy 2203 function concatStrat(parentVal, childVal) { 2204 2205 parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal; 2206 2207 return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal; 2208 } 2209 2210 // default strategy 2211 function defaultStrat(parentVal, childVal) { 2212 return isUndefined(childVal) ? parentVal : childVal; 2213 } 2214 2215 function mergeOptions(parent, child, vm) { 2216 2217 var options = {}; 2218 2219 if (isFunction(child)) { 2220 child = child.options; 2221 } 2222 2223 if (child.extends) { 2224 parent = mergeOptions(parent, child.extends, vm); 2225 } 2226 2227 if (child.mixins) { 2228 for (var i = 0, l = child.mixins.length; i < l; i++) { 2229 parent = mergeOptions(parent, child.mixins[i], vm); 2230 } 2231 } 2232 2233 for (var key in parent) { 2234 mergeKey(key); 2235 } 2236 2237 for (var key$1 in child) { 2238 if (!hasOwn(parent, key$1)) { 2239 mergeKey(key$1); 2240 } 2241 } 2242 2243 function mergeKey(key) { 2244 options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm); 2245 } 2246 2247 return options; 2248 } 2249 2250 function parseOptions(options, args) { 2251 var obj; 2252 2253 if (args === void 0) args = []; 2254 2255 try { 2256 2257 return !options ? {} : startsWith(options, '{') ? JSON.parse(options) : args.length && !includes(options, ':') ? (obj = {}, obj[args[0]] = options, obj) : options.split(';').reduce(function (options, option) { 2258 var ref = option.split(/:(.*)/); 2259 var key = ref[0]; 2260 var value = ref[1]; 2261 if (key && !isUndefined(value)) { 2262 options[key.trim()] = value.trim(); 2263 } 2264 return options; 2265 }, {}); 2266 } catch (e) { 2267 return {}; 2268 } 2269 } 2270 2271 function play(el) { 2272 2273 if (isIFrame(el)) { 2274 call(el, { func: 'playVideo', method: 'play' }); 2275 } 2276 2277 if (isHTML5(el)) { 2278 try { 2279 el.play().catch(noop); 2280 } catch (e) {} 2281 } 2282 } 2283 2284 function pause(el) { 2285 2286 if (isIFrame(el)) { 2287 call(el, { func: 'pauseVideo', method: 'pause' }); 2288 } 2289 2290 if (isHTML5(el)) { 2291 el.pause(); 2292 } 2293 } 2294 2295 function mute(el) { 2296 2297 if (isIFrame(el)) { 2298 call(el, { func: 'mute', method: 'setVolume', value: 0 }); 2299 } 2300 2301 if (isHTML5(el)) { 2302 el.muted = true; 2303 attr(el, 'muted', ''); 2304 } 2305 } 2306 2307 function isHTML5(el) { 2308 return el && el.tagName === 'VIDEO'; 2309 } 2310 2311 function isIFrame(el) { 2312 return el && el.tagName === 'IFRAME' && (isYoutube(el) || isVimeo(el)); 2313 } 2314 2315 function isYoutube(el) { 2316 return !!el.src.match(/\/\/.*?youtube(-nocookie)?\.[a-z]+\/(watch\?v=[^&\s]+|embed)|youtu\.be\/.*/); 2317 } 2318 2319 function isVimeo(el) { 2320 return !!el.src.match(/vimeo\.com\/video\/.*/); 2321 } 2322 2323 function call(el, cmd) { 2324 enableApi(el).then(function () { 2325 return post(el, cmd); 2326 }); 2327 } 2328 2329 function post(el, cmd) {
2330 try { 2331 el.contentWindow.postMessage(JSON.stringify(assign({ event: 'command' }, cmd)), '*'); 2332 } catch (e) {} 2333 } 2334 2335 var stateKey = '_ukPlayer'; 2336 var counter = 0; 2337 function enableApi(el) { 2338 2339 if (el[stateKey]) { 2340 return el[stateKey]; 2341 } 2342 2343 var youtube = isYoutube(el); 2344 var vimeo = isVimeo(el); 2345 2346 var id = ++counter; 2347 var poller; 2348 2349 return el[stateKey] = new Promise(function (resolve) { 2350 2351 youtube && once(el, 'load', function () { 2352 var listener = function listener() { 2353 return post(el, { event: 'listening', id: id }); 2354 }; 2355 poller = setInterval(listener, 100); 2356 listener(); 2357 }); 2358 2359 once(window, 'message', resolve, false, function (ref) { 2360 var data = ref.data; 2361 2362 try { 2363 data = JSON.parse(data); 2364 return data && (youtube && data.id === id && data.event === 'onReady' || vimeo && Number(data.player_id) === id); 2365 } catch (e) {} 2366 }); 2367 2368 attr(el, 'src', "" + el.src + (includes(el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : "api=1&player_id=" + id)); 2369 }).then(function () { 2370 return clearInterval(poller); 2371 }); 2372 } 2373 2374 function isInView(element, offsetTop, offsetLeft) { 2375 if (offsetTop === void 0) offsetTop = 0; 2376 if (offsetLeft === void 0) offsetLeft = 0; 2377 2378 if (!isVisible(element)) { 2379 return false; 2380 } 2381 2382 var parents = overflowParents(element); 2383 2384 return parents.every(function (parent, i) { 2385 2386 var client = offset(parents[i + 1] || element); 2387 var ref = offset(getViewport(parent)); 2388 var top = ref.top; 2389 var left = ref.left; 2390 var bottom = ref.bottom; 2391 var right = ref.right; 2392 2393 return intersectRect(client, { 2394 top: top - offsetTop, 2395 left: left - offsetLeft, 2396 bottom: bottom + offsetTop, 2397 right: right + offsetLeft 2398 }); 2399 }); 2400 } 2401 2402 function scrollTop(element, top) { 2403 2404 if (isWindow(element) || isDocument(element)) { 2405 element = getScrollingElement(element); 2406 } else { 2407 element = toNode(element); 2408 } 2409 2410 element.scrollTop = top; 2411 } 2412 2413 function scrollIntoView(element, ref) { 2414 if (ref === void 0) ref = {}; 2415 var offsetBy = ref.offset;if (offsetBy === void 0) offsetBy = 0; 2416 2417 if (!isVisible(element)) { 2418 return; 2419 } 2420 2421 var parents = overflowParents(element).concat(element); 2422 2423 var promise = Promise.resolve(); 2424 var loop = function loop(i) { 2425 promise = promise.then(function () { 2426 return new Promise(function (resolve) { 2427 2428 var scrollElement = parents[i]; 2429 var element = parents[i + 1]; 2430 2431 var scroll = scrollElement.scrollTop; 2432 var top = Math.ceil(position(element, getViewport(scrollElement)).top - offsetBy); 2433 var duration = getDuration(Math.abs(top)); 2434 2435 var start = Date.now(); 2436 var step = function step() { 2437 2438 var percent = ease(clamp((Date.now() - start) / duration)); 2439 2440 scrollTop(scrollElement, scroll + top * percent); 2441 2442 // scroll more if we have not reached our destination 2443 if (percent !== 1) { 2444 requestAnimationFrame(step); 2445 } else { 2446 resolve(); 2447 } 2448 }; 2449 2450 step(); 2451 }); 2452 }); 2453 }; 2454 2455 for (var i = 0; i < parents.length - 1; i++) { 2456 loop(i); 2457 }return promise; 2458 2459 function getDuration(dist) { 2460 return 40 * Math.pow(dist, .375); 2461 } 2462 2463 function ease(k) { 2464 return 0.5 * (1 - Math.cos(Math.PI * k)); 2465 } 2466 } 2467 2468 function scrolledOver(element, heightOffset) { 2469 if (heightOffset === void 0) heightOffset = 0; 2470 2471 if (!isVisible(element)) { 2472 return 0; 2473 } 2474 2475 var scrollElement = last(scrollParents(element)); 2476 var scrollHeight = scrollElement.scrollHeight; 2477 var scrollTop = scrollElement.scrollTop; 2478 var viewport = getViewport(scrollElement);
2479 var viewportHeight = offset(viewport).height; 2480 var viewportTop = offsetPosition(element)[0] - scrollTop - offsetPosition(scrollElement)[0]; 2481 var viewportDist = Math.min(viewportHeight, viewportTop + scrollTop); 2482 2483 var top = viewportTop - viewportDist; 2484 var dist = Math.min(offset(element).height + heightOffset + viewportDist, scrollHeight - (viewportTop + scrollTop), scrollHeight - viewportHeight); 2485 2486 return clamp(-1 * top / dist); 2487 } 2488 2489 function scrollParents(element, overflowRe) { 2490 if (overflowRe === void 0) overflowRe = /auto|scroll/; 2491 2492 var scrollEl = getScrollingElement(element); 2493 var scrollParents = parents(element).filter(function (parent) { 2494 return parent === scrollEl || overflowRe.test(css(parent, 'overflow')) && parent.scrollHeight > Math.round(offset(parent).height); 2495 }).reverse(); 2496 return scrollParents.length ? scrollParents : [scrollEl]; 2497 } 2498 2499 function getViewport(scrollElement) { 2500 return scrollElement === getScrollingElement(scrollElement) ? window : scrollElement; 2501 } 2502 2503 function overflowParents(element) { 2504 return scrollParents(element, /auto|scroll|hidden/); 2505 } 2506 2507 function getScrollingElement(element) { 2508 var ref = toWindow(element); 2509 var document = ref.document; 2510 return document.scrollingElement || document.documentElement; 2511 } 2512 2513 var IntersectionObserver = inBrowser && window.IntersectionObserver || /*@__PURE__*/function () { 2514 function IntersectionObserverClass(callback, ref) { 2515 var this$1 = this; 2516 if (ref === void 0) ref = {}; 2517 var rootMargin = ref.rootMargin;if (rootMargin === void 0) rootMargin = '0 0'; 2518 2519 this.targets = []; 2520 2521 var ref$1 = (rootMargin || '0 0').split(' ').map(toFloat); 2522 var offsetTop = ref$1[0]; 2523 var offsetLeft = ref$1[1]; 2524 2525 this.offsetTop = offsetTop; 2526 this.offsetLeft = offsetLeft; 2527 2528 var pending; 2529 this.apply = function () { 2530 2531 if (pending) { 2532 return; 2533 } 2534 2535 pending = requestAnimationFrame(function () { 2536 return setTimeout(function () { 2537 var records = this$1.takeRecords(); 2538 2539 if (records.length) { 2540 callback(records, this$1); 2541 } 2542 2543 pending = false; 2544 }); 2545 }); 2546 }; 2547 2548 this.off = on(window, 'scroll resize load', this.apply, { passive: true, capture: true }); 2549 } 2550 2551 IntersectionObserverClass.prototype.takeRecords = function () { 2552 var this$1 = this; 2553 2554 return this.targets.filter(function (entry) { 2555 2556 var inView = isInView(entry.target, this$1.offsetTop, this$1.offsetLeft); 2557 2558 if (entry.isIntersecting === null || inView ^ entry.isIntersecting) { 2559 entry.isIntersecting = inView; 2560 return true; 2561 } 2562 }); 2563 }; 2564 2565 IntersectionObserverClass.prototype.observe = function (target) { 2566 this.targets.push({ 2567 target: target, 2568 isIntersecting: null 2569 }); 2570 this.apply(); 2571 }; 2572 2573 IntersectionObserverClass.prototype.disconnect = function () { 2574 this.targets = []; 2575 this.off(); 2576 }; 2577 2578 return IntersectionObserverClass; 2579 }(); 2580 2581 var util = /*#__PURE__*/Object.freeze({ 2582 __proto__: null, 2583 ajax: ajax, 2584 getImage: getImage, 2585 transition: transition, 2586 Transition: Transition, 2587 animate: animate, 2588 Animation: Animation, 2589 attr: attr, 2590 hasAttr: hasAttr, 2591 removeAttr: removeAttr, 2592 data: data, 2593 addClass: addClass, 2594 removeClass: removeClass, 2595 removeClasses: removeClasses, 2596 replaceClass: replaceClass, 2597 hasClass: hasClass, 2598 toggleClass: toggleClass, 2599 positionAt: _positionAt, 2600 offset: offset, 2601 position: position, 2602 offsetPosition: offsetPosition, 2603 height: height, 2604 width: width, 2605 boxModelAdjust: boxModelAdjust, 2606 flipPosition: flipPosition, 2607 toPx: toPx, 2608 ready: ready, 2609 index: index, 2610 getIndex: _getIndex, 2611 empty: empty, 2612 html: html, 2613 prepend: prepend, 2614 append: append, 2615 before: before, 2616 after: after, 2617 remove: _remove, 2618 wrapAll: wrapAll, 2619 wrapInner: wrapInner, 2620 unwrap: unwrap, 2621 fragment: fragment, 2622 apply: apply, 2623 $: $, 2624 $$: $$, 2625 inBrowser: inBrowser, 2626 isIE: isIE, 2627 isRtl: isRtl, 2628 hasTouch: hasTouch, 2629 pointerDown: pointerDown, 2630 pointerMove: pointerMove, 2631 pointerUp: pointerUp, 2632 pointerEnter: pointerEnter, 2633 pointerLeave: pointerLeave, 2634 pointerCancel: pointerCancel, 2635 on: on, 2636 off: off, 2637 once: once, 2638 trigger: trigger, 2639 createEvent: createEvent, 2640 toEventTargets: toEventTargets, 2641 isTouch: isTouch, 2642 getEventPos: getEventPos, 2643 fastdom: fastdom, 2644 isVoidElement: isVoidElement, 2645 isVisible: isVisible, 2646 selInput: selInput,
2647 isInput: isInput, 2648 filter: filter, 2649 within: within, 2650 parents: parents, 2651 children: _children, 2652 hasOwn: hasOwn, 2653 hyphenate: hyphenate, 2654 camelize: camelize, 2655 ucfirst: ucfirst, 2656 startsWith: startsWith, 2657 endsWith: endsWith, 2658 includes: includes, 2659 findIndex: findIndex, 2660 isArray: isArray, 2661 isFunction: isFunction, 2662 isObject: isObject, 2663 isPlainObject: isPlainObject, 2664 isWindow: isWindow, 2665 isDocument: isDocument, 2666 isJQuery: isJQuery, 2667 isNode: isNode, 2668 isElement: isElement, 2669 isNodeCollection: isNodeCollection, 2670 isBoolean: isBoolean, 2671 isString: isString, 2672 isNumber: isNumber, 2673 isNumeric: isNumeric, 2674 isEmpty: isEmpty, 2675 isUndefined: isUndefined, 2676 toBoolean: toBoolean, 2677 toNumber: toNumber, 2678 toFloat: toFloat, 2679 toNode: toNode, 2680 toNodes: toNodes, 2681 toWindow: toWindow, 2682 toList: toList, 2683 toMs: toMs, 2684 isEqual: isEqual, 2685 swap: swap, 2686 assign: assign, 2687 last: last, 2688 each: each, 2689 sortBy: sortBy, 2690 uniqueBy: uniqueBy, 2691 clamp: clamp, 2692 noop: noop, 2693 intersectRect: intersectRect, 2694 pointInRect: pointInRect, 2695 Dimensions: Dimensions, 2696 MouseTracker: MouseTracker, 2697 mergeOptions: mergeOptions, 2698 parseOptions: parseOptions, 2699 play: play, 2700 pause: pause, 2701 mute: mute, 2702 Promise: Promise, 2703 Deferred: Deferred, 2704 IntersectionObserver: IntersectionObserver, 2705 query: query, 2706 queryAll: queryAll, 2707 find: find, 2708 findAll: findAll, 2709 matches: matches, 2710 closest: closest, 2711 parent: parent, 2712 escape: escape, 2713 css: css, 2714 getStyles: getStyles, 2715 getStyle: getStyle, 2716 getCssVar: getCssVar, 2717 propName: propName, 2718 isInView: isInView, 2719 scrollTop: scrollTop, 2720 scrollIntoView: scrollIntoView, 2721 scrolledOver: scrolledOver, 2722 scrollParents: scrollParents, 2723 getViewport: getViewport 2724 }); 2725 2726 function globalAPI(UIkit) { 2727 2728 var DATA = UIkit.data; 2729 2730 UIkit.use = function (plugin) { 2731 2732 if (plugin.installed) { 2733 return; 2734 } 2735 2736 plugin.call(null, this); 2737 plugin.installed = true; 2738 2739 return this; 2740 }; 2741 2742 UIkit.mixin = function (mixin, component) { 2743 component = (isString(component) ? UIkit.component(component) : component) || this; 2744 component.options = mergeOptions(component.options, mixin); 2745 }; 2746 2747 UIkit.extend = function (options) { 2748 2749 options = options || {}; 2750 2751 var Super = this; 2752 var Sub = function UIkitComponent(options) { 2753 this._init(options); 2754 }; 2755 2756 Sub.prototype = Object.create(Super.prototype); 2757 Sub.prototype.constructor = Sub; 2758 Sub.options = mergeOptions(Super.options, options); 2759 2760 Sub.super = Super; 2761 Sub.extend = Super.extend; 2762 2763 return Sub; 2764 }; 2765 2766 UIkit.update = function (element, e) { 2767 2768 element = element ? toNode(element) : document.body; 2769 2770 parents(element).reverse().forEach(function (element) { 2771 return update(element[DATA], e); 2772 }); 2773 apply(element, function (element) { 2774 return update(element[DATA], e); 2775 }); 2776 }; 2777 2778 var container; 2779 Object.defineProperty(UIkit, 'container', { 2780 2781 get: function get$$1() { 2782 return container || document.body; 2783 }, 2784 2785 set: function set$$1(element) { 2786 container = $(element); 2787 } 2788 2789 }); 2790 2791 function update(data, e) { 2792 2793 if (!data) { 2794 return; 2795 } 2796 2797 for (var name in data) { 2798 if (data[name]._connected) { 2799 data[name]._callUpdate(e); 2800 } 2801 } 2802 } 2803 } 2804 2805 function hooksAPI(UIkit) { 2806 2807 UIkit.prototype._callHook = function (hook) { 2808 var this$1 = this; 2809 2810 var handlers = this.$options[hook]; 2811 2812 if (handlers) { 2813 handlers.forEach(function (handler) { 2814 return handler.call(this$1); 2815 }); 2816 } 2817 }; 2818 2819 UIkit.prototype._callConnected = function () { 2820 2821 if (this._connected) { 2822 return; 2823 } 2824 2825 this._data = {}; 2826 this._computeds = {}; 2827 this._frames = { reads: {}, writes: {} }; 2828 2829 this._initProps(); 2830 2831 this._callHook('beforeConnect'); 2832 this._connected = true; 2833 2834 this._initEvents();
2835 this._initObserver(); 2836 2837 this._callHook('connected'); 2838 this._callUpdate(); 2839 }; 2840 2841 UIkit.prototype._callDisconnected = function () { 2842 2843 if (!this._connected) { 2844 return; 2845 } 2846 2847 this._callHook('beforeDisconnect'); 2848 2849 if (this._observer) { 2850 this._observer.disconnect(); 2851 this._observer = null; 2852 } 2853 2854 this._unbindEvents(); 2855 this._callHook('disconnected'); 2856 2857 this._connected = false; 2858 }; 2859 2860 UIkit.prototype._callUpdate = function (e) { 2861 var this$1 = this; 2862 if (e === void 0) e = 'update'; 2863 2864 var type = e.type || e; 2865 2866 if (includes(['update', 'resize'], type)) { 2867 this._callWatches(); 2868 } 2869 2870 var updates = this.$options.update; 2871 var ref = this._frames; 2872 var reads = ref.reads; 2873 var writes = ref.writes; 2874 2875 if (!updates) { 2876 return; 2877 } 2878 2879 updates.forEach(function (ref, i) { 2880 var read = ref.read; 2881 var write = ref.write; 2882 var events = ref.events; 2883 2884 if (type !== 'update' && !includes(events, type)) { 2885 return; 2886 } 2887 2888 if (read && !includes(fastdom.reads, reads[i])) { 2889 reads[i] = fastdom.read(function () { 2890 2891 var result = this$1._connected && read.call(this$1, this$1._data, type); 2892 2893 if (result === false && write) { 2894 fastdom.clear(writes[i]); 2895 } else if (isPlainObject(result)) { 2896 assign(this$1._data, result); 2897 } 2898 }); 2899 } 2900 2901 if (write && !includes(fastdom.writes, writes[i])) { 2902 writes[i] = fastdom.write(function () { 2903 return this$1._connected && write.call(this$1, this$1._data, type); 2904 }); 2905 } 2906 }); 2907 }; 2908 2909 UIkit.prototype._callWatches = function () { 2910 var this$1 = this; 2911 2912 var ref = this; 2913 var _frames = ref._frames; 2914 2915 if (_frames._watch) { 2916 return; 2917 } 2918 2919 var initital = !hasOwn(_frames, '_watch'); 2920 2921 _frames._watch = fastdom.read(function () { 2922 2923 if (!this$1._connected) { 2924 return; 2925 } 2926 2927 var ref = this$1; 2928 var computed = ref.$options.computed; 2929 var _computeds = ref._computeds; 2930 2931 for (var key in computed) { 2932 2933 var hasPrev = hasOwn(_computeds, key); 2934 var prev = _computeds[key]; 2935 2936 delete _computeds[key]; 2937 2938 var ref$1 = computed[key]; 2939 var watch = ref$1.watch; 2940 var immediate = ref$1.immediate; 2941 if (watch && (initital && immediate || hasPrev && !isEqual(prev, this$1[key]))) { 2942 watch.call(this$1, this$1[key], prev); 2943 } 2944 } 2945 2946 _frames._watch = null; 2947 }); 2948 }; 2949 } 2950 2951 function stateAPI(UIkit) { 2952 2953 var uid = 0; 2954 2955 UIkit.prototype._init = function (options) { 2956 2957 options = options || {}; 2958 options.data = normalizeData(options, this.constructor.options); 2959 2960 this.$options = mergeOptions(this.constructor.options, options, this); 2961 this.$el = null; 2962 this.$props = {}; 2963 2964 this._uid = uid++; 2965 this._initData(); 2966 this._initMethods(); 2967 this._initComputeds(); 2968 this._callHook('created'); 2969 2970 if (options.el) { 2971 this.$mount(options.el); 2972 } 2973 }; 2974 2975 UIkit.prototype._initData = function () { 2976 2977 var ref = this.$options; 2978 var data = ref.data;if (data === void 0) data = {}; 2979 2980 for (var key in data) { 2981 this.$props[key] = this[key] = data[key]; 2982 } 2983 }; 2984 2985 UIkit.prototype._initMethods = function () { 2986 2987 var ref = this.$options; 2988 var methods = ref.methods; 2989 2990 if (methods) { 2991 for (var key in methods) { 2992 this[key] = methods[key].bind(this); 2993 } 2994 } 2995 }; 2996 2997 UIkit.prototype._initComputeds = function () { 2998 2999 var ref = this.$options; 3000 var computed = ref.computed; 3001 3002 this._computeds = {}; 3003 3004 if (computed) { 3005 for (var key in computed) { 3006 registerComputed(this, key, computed[key]); 3007 } 3008 } 3009 }; 3010 3011 UIkit.prototype._initProps = function (props) { 3012 3013 var key; 3014 3015 props = props || getProps(this.$options, this.$name); 3016 3017 for (key in props) { 3018 if (!isUndefined(props[key])) { 3019 this.$props[key] = props[key]; 3020 } 3021 } 3022 3023 var exclude = [this.$options.computed, this.$options.methods]; 3024 for (key in this.$props) { 3025 if (key in props && notIn(exclude, key)) { 3026 this[key] = this.$props[key]; 3027 } 3028 } 3029 }; 3030 3031 UIkit.prototype._initEvents = function () { 3032 var this$1 = this; 3033 3034 this._events = []; 3035 3036 var ref = this.$options; 3037 var events = ref.events; 3038 3039 if (events) { 3040
3041 events.forEach(function (event) { 3042 3043 if (!hasOwn(event, 'handler')) { 3044 for (var key in event) { 3045 registerEvent(this$1, event[key], key); 3046 } 3047 } else { 3048 registerEvent(this$1, event); 3049 } 3050 }); 3051 } 3052 }; 3053 3054 UIkit.prototype._unbindEvents = function () { 3055 this._events.forEach(function (unbind) { 3056 return unbind(); 3057 }); 3058 delete this._events; 3059 }; 3060 3061 UIkit.prototype._initObserver = function () { 3062 var this$1 = this; 3063 3064 var ref = this.$options; 3065 var attrs = ref.attrs; 3066 var props = ref.props; 3067 var el = ref.el; 3068 if (this._observer || !props || attrs === false) { 3069 return; 3070 } 3071 3072 attrs = isArray(attrs) ? attrs : Object.keys(props); 3073 3074 this._observer = new MutationObserver(function (records) { 3075 var data = getProps(this$1.$options, this$1.$name); 3076 if (records.some(function (ref) { 3077 var attributeName = ref.attributeName; 3078 3079 var prop = attributeName.replace('data-', ''); 3080 return (prop === this$1.$name ? attrs : [camelize(prop), camelize(attributeName)]).some(function (prop) { 3081 return !isUndefined(data[prop]) && data[prop] !== this$1.$props[prop]; 3082 }); 3083 })) { 3084 this$1.$reset(); 3085 } 3086 }); 3087 3088 var filter = attrs.map(function (key) { 3089 return hyphenate(key); 3090 }).concat(this.$name); 3091 3092 this._observer.observe(el, { 3093 attributes: true, 3094 attributeFilter: filter.concat(filter.map(function (key) { 3095 return "data-" + key; 3096 })) 3097 }); 3098 }; 3099 3100 function getProps(opts, name) { 3101 3102 var data$1 = {}; 3103 var args = opts.args;if (args === void 0) args = []; 3104 var props = opts.props;if (props === void 0) props = {}; 3105 var el = opts.el; 3106 3107 if (!props) { 3108 return data$1; 3109 } 3110 3111 for (var key in props) { 3112 var prop = hyphenate(key); 3113 var value = data(el, prop); 3114 3115 if (isUndefined(value)) { 3116 continue; 3117 } 3118 3119 value = props[key] === Boolean && value === '' ? true : coerce(props[key], value); 3120 3121 if (prop === 'target' && (!value || startsWith(value, '_'))) { 3122 continue; 3123 } 3124 3125 data$1[key] = value; 3126 } 3127 3128 var options = parseOptions(data(el, name), args); 3129 3130 for (var key$1 in options) { 3131 var prop$1 = camelize(key$1); 3132 if (props[prop$1] !== undefined) { 3133 data$1[prop$1] = coerce(props[prop$1], options[key$1]); 3134 } 3135 } 3136 3137 return data$1; 3138 } 3139 3140 function registerComputed(component, key, cb) { 3141 Object.defineProperty(component, key, { 3142 3143 enumerable: true, 3144 3145 get: function get$$1() { 3146 3147 var _computeds = component._computeds; 3148 var $props = component.$props; 3149 var $el = component.$el; 3150 3151 if (!hasOwn(_computeds, key)) { 3152 _computeds[key] = (cb.get || cb).call(component, $props, $el); 3153 } 3154 3155 return _computeds[key]; 3156 }, 3157 3158 set: function set$$1(value) { 3159 3160 var _computeds = component._computeds; 3161 3162 _computeds[key] = cb.set ? cb.set.call(component, value) : value; 3163 3164 if (isUndefined(_computeds[key])) { 3165 delete _computeds[key]; 3166 } 3167 } 3168 3169 }); 3170 } 3171 3172 function registerEvent(component, event, key) { 3173 3174 if (!isPlainObject(event)) { 3175 event = { name: key, handler: event }; 3176 } 3177 3178 var name = event.name; 3179 var el = event.el; 3180 var handler = event.handler; 3181 var capture = event.capture; 3182 var passive = event.passive; 3183 var delegate = event.delegate; 3184 var filter = event.filter; 3185 var self = event.self; 3186 el = isFunction(el) ? el.call(component) : el || component.$el; 3187 3188 if (isArray(el)) { 3189 el.forEach(function (el) { 3190 return registerEvent(component, assign({}, event, { el: el }), key); 3191 }); 3192 return; 3193 } 3194 3195 if (!el || filter && !filter.call(component)) { 3196 return; 3197 } 3198 3199 component._events.push(on(el, name, !delegate ? null : isString(delegate) ? delegate : delegate.call(component), isString(handler) ? component[handler] : handler.bind(component), { passive: passive, capture: capture, self: self })); 3200 } 3201 3202 function notIn(options, key) { 3203 return options.every(function (arr) { 3204 return !arr || !hasOwn(arr, key); 3205 }); 3206 } 3207 3208 function coerce(type, value) { 3209 3210 if (type === Boolean) { 3211 return toBoolean(value); 3212 } else if (type === Number) { 3213 return toNumber(value); 3214 } else if (type === 'list') { 3215 return toList(value); 3216 } 3217 3218 return type ? type(value) : value; 3219 } 3220 3221 function normalizeData(ref, ref$1) { 3222 var data = ref.data; 3223 var args = ref$1.args; 3224 var props = ref$1.props;if (props === void 0) props = {}; 3225 3226 data = isArray(data) ? !isEmpty(args) ? data.slice(0, args.length).reduce(function (data, value, index) { 3227 if (isPlainObject(value)) { 3228 assign(data, value); 3229 } else { 3230 data[args[index]] = value; 3231 } 3232 return data; 3233 }, {}) : undefined : data; 3234 3235 if (data) { 3236 for (var key in data) { 3237 if (isUndefined(data[key])) { 3238 delete data[key]; 3239 } else { 3240 data[key] = props[key] ? coerce(props[key], data[key]) : data[key]; 3241 } 3242 } 3243 } 3244 3245 return data; 3246 } 3247 } 3248 3249 function instanceAPI(UIkit) { 3250 3251 var DATA = UIkit.data; 3252 3253 UIkit.prototype.$create = function (component, element, data) { 3254 return UIkit[component](element, data); 3255 }; 3256 3257 UIkit.prototype.$mount = function (el) { 3258 3259 var ref = this.$options; 3260 var name = ref.name; 3261 3262 if (!el[DATA]) { 3263 el[DATA] = {}; 3264 } 3265 3266 if (el[DATA][name]) { 3267 return; 3268 } 3269 3270 el[DATA][name] = this; 3271 3272 this.$el = this.$options.el = this.$options.el || el; 3273 3274 if (within(el, document)) { 3275 this._callConnected(); 3276 } 3277 }; 3278 3279 UIkit.prototype.$reset = function () { 3280 this._callDisconnected(); 3281 this._callConnected(); 3282 }; 3283 3284 UIkit.prototype.$destroy = function (removeEl) { 3285 if (removeEl === void 0) removeEl = false;
3286 3287 var ref = this.$options; 3288 var el = ref.el; 3289 var name = ref.name; 3290 3291 if (el) { 3292 this._callDisconnected(); 3293 } 3294 3295 this._callHook('destroy'); 3296 3297 if (!el || !el[DATA]) { 3298 return; 3299 } 3300 3301 delete el[DATA][name]; 3302 3303 if (!isEmpty(el[DATA])) { 3304 delete el[DATA]; 3305 } 3306 3307 if (removeEl) { 3308 _remove(this.$el); 3309 } 3310 }; 3311 3312 UIkit.prototype.$emit = function (e) { 3313 this._callUpdate(e); 3314 }; 3315 3316 UIkit.prototype.$update = function (element, e) { 3317 if (element === void 0) element = this.$el; 3318 3319 UIkit.update(element, e); 3320 }; 3321 3322 UIkit.prototype.$getComponent = UIkit.getComponent; 3323 3324 var names = {}; 3325 Object.defineProperties(UIkit.prototype, { 3326 3327 $container: Object.getOwnPropertyDescriptor(UIkit, 'container'), 3328 3329 $name: { 3330 3331 get: function get$$1() { 3332 var ref = this.$options; 3333 var name = ref.name; 3334 3335 if (!names[name]) { 3336 names[name] = UIkit.prefix + hyphenate(name); 3337 } 3338 3339 return names[name]; 3340 } 3341 3342 } 3343 3344 }); 3345 } 3346 3347 function componentAPI(UIkit) { 3348 3349 var DATA = UIkit.data; 3350 3351 var components = {}; 3352 3353 UIkit.component = function (name, options) { 3354 3355 var id = hyphenate(name); 3356 3357 name = camelize(id); 3358 3359 if (!options) { 3360 3361 if (isPlainObject(components[name])) { 3362 components[name] = UIkit.extend(components[name]); 3363 } 3364 3365 return components[name]; 3366 } 3367 3368 UIkit[name] = function (element, data) { 3369 var i = arguments.length, 3370 argsArray = Array(i); 3371 while (i--) { 3372 argsArray[i] = arguments[i]; 3373 }var component = UIkit.component(name); 3374 3375 return component.options.functional ? new component({ data: isPlainObject(element) ? element : [].concat(argsArray) }) : !element ? init(element) : $$(element).map(init)[0]; 3376 3377 function init(element) { 3378 3379 var instance = UIkit.getComponent(element, name); 3380 3381 if (instance) { 3382 if (!data) { 3383 return instance; 3384 } else { 3385 instance.$destroy(); 3386 } 3387 } 3388 3389 return new component({ el: element, data: data }); 3390 } 3391 }; 3392 3393 var opt = isPlainObject(options) ? assign({}, options) : options.options; 3394 3395 opt.name = name; 3396 3397 if (opt.install) { 3398 opt.install(UIkit, opt, name); 3399 } 3400 3401 if (UIkit._initialized && !opt.functional) { 3402 fastdom.read(function () { 3403 return UIkit[name]("[uk-" + id + "],[data-uk-" + id + "]"); 3404 }); 3405 } 3406 3407 return components[name] = isPlainObject(options) ? opt : options; 3408 }; 3409 3410 UIkit.getComponents = function (element) { 3411 return element && element[DATA] || {}; 3412 }; 3413 UIkit.getComponent = function (element, name) { 3414 return UIkit.getComponents(element)[name]; 3415 }; 3416 3417 UIkit.connect = function (node) { 3418 3419 if (node[DATA]) { 3420 for (var name in node[DATA]) { 3421 node[DATA][name]._callConnected(); 3422 } 3423 } 3424 3425 for (var i = 0; i < node.attributes.length; i++) { 3426 3427 var name$1 = getComponentName(node.attributes[i].name); 3428 3429 if (name$1 && name$1 in components) { 3430 UIkit[name$1](node); 3431 } 3432 } 3433 }; 3434 3435 UIkit.disconnect = function (node) { 3436 for (var name in node[DATA]) { 3437 node[DATA][name]._callDisconnected(); 3438 } 3439 }; 3440 } 3441 3442 function getComponentName(attribute) { 3443 return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-') ? camelize(attribute.replace('data-uk-', '').replace('uk-', '')) : false; 3444 } 3445 3446 var UIkit = function UIkit(options) { 3447 this._init(options); 3448 }; 3449 3450 UIkit.util = util; 3451 UIkit.data = '__uikit__'; 3452 UIkit.prefix = 'uk-'; 3453 UIkit.options = {}; 3454 UIkit.version = '3.5.7'; 3455 3456 globalAPI(UIkit); 3457 hooksAPI(UIkit); 3458 stateAPI(UIkit); 3459 componentAPI(UIkit); 3460 instanceAPI(UIkit); 3461 3462 function Core(UIkit) { 3463 3464 inBrowser && ready(function () { 3465
3466 UIkit.update(); 3467 on(window, 'load resize', function () { 3468 return UIkit.update(null, 'resize'); 3469 }); 3470 on(document, 'loadedmetadata load', function (ref) { 3471 var target = ref.target; 3472 3473 return UIkit.update(target, 'resize'); 3474 }, true); 3475 3476 // throttle `scroll` event (Safari triggers multiple `scroll` events per frame) 3477 var pending; 3478 on(window, 'scroll', function (e) { 3479 3480 if (pending) { 3481 return; 3482 } 3483 pending = true; 3484 fastdom.write(function () { 3485 return pending = false; 3486 }); 3487 3488 UIkit.update(null, e.type); 3489 }, { passive: true, capture: true }); 3490 3491 var started = 0; 3492 on(document, 'animationstart', function (ref) { 3493 var target = ref.target; 3494 3495 if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) { 3496 3497 started++; 3498 css(document.body, 'overflowX', 'hidden'); 3499 setTimeout(function () { 3500 if (! --started) { 3501 css(document.body, 'overflowX', ''); 3502 } 3503 }, toMs(css(target, 'animationDuration')) + 100); 3504 } 3505 }, true); 3506 3507 var off; 3508 on(document, pointerDown, function (e) { 3509 3510 off && off(); 3511 3512 if (!isTouch(e)) { 3513 return; 3514 } 3515 3516 // Handle Swipe Gesture 3517 var pos = getEventPos(e); 3518 var target = 'tagName' in e.target ? e.target : e.target.parentNode; 3519 off = once(document, pointerUp + " " + pointerCancel, function (e) { 3520 3521 var ref = getEventPos(e); 3522 var x = ref.x; 3523 var y = ref.y; 3524 3525 // swipe 3526 if (target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) { 3527 3528 setTimeout(function () { 3529 trigger(target, 'swipe'); 3530 trigger(target, "swipe" + swipeDirection(pos.x, pos.y, x, y)); 3531 }); 3532 } 3533 }); 3534 }, { passive: true }); 3535 }); 3536 } 3537 3538 function swipeDirection(x1, y1, x2, y2) { 3539 return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? x1 - x2 > 0 ? 'Left' : 'Right' : y1 - y2 > 0 ? 'Up' : 'Down'; 3540 } 3541 3542 function boot(UIkit) { 3543 3544 var connect = UIkit.connect; 3545 var disconnect = UIkit.disconnect; 3546 3547 if (!inBrowser || !window.MutationObserver) { 3548 return; 3549 } 3550 3551 fastdom.read(init); 3552 3553 function init() { 3554 3555 if (document.body) { 3556 apply(document.body, connect); 3557 } 3558 3559 new MutationObserver(function (mutations) { 3560 var updates = []; 3561 mutations.forEach(function (mutation) { 3562 return applyMutation(mutation, updates); 3563 }); 3564 updates.forEach(function (el) { 3565 return UIkit.update(el); 3566 }); 3567 }).observe(document, { 3568 childList: true, 3569 subtree: true, 3570 characterData: true, 3571 attributes: true 3572 }); 3573 3574 UIkit._initialized = true; 3575 } 3576 3577 function applyMutation(mutation, updates) { 3578 3579 var target = mutation.target; 3580 var type = mutation.type; 3581 3582 var update = type !== 'attributes' ? applyChildList(mutation) : applyAttribute(mutation); 3583 3584 if (update && !updates.some(function (element) { 3585 return element.contains(target); 3586 })) { 3587 updates.push(target.contains ? target : target.parentNode); // IE 11 text node does not implement contains 3588 } 3589 } 3590 3591 function applyAttribute(ref) { 3592 var target = ref.target; 3593 var attributeName = ref.attributeName; 3594 3595 if (attributeName === 'href') { 3596 return true; 3597 } 3598 3599 var name = getComponentName(attributeName); 3600 3601 if (!name || !(name in UIkit)) { 3602 return; 3603 } 3604 3605 if (hasAttr(target, attributeName)) { 3606 UIkit[name](target); 3607 return true; 3608 } 3609 3610 var component = UIkit.getComponent(target, name); 3611 3612 if (component) { 3613 component.$destroy(); 3614 return true; 3615 } 3616 } 3617 3618 function applyChildList(ref) { 3619 var addedNodes = ref.addedNodes; 3620 var removedNodes = ref.removedNodes; 3621 3622 for (var i = 0; i < addedNodes.length; i++) { 3623 apply(addedNodes[i], connect); 3624 } 3625 3626 for (var i$1 = 0; i$1 < removedNodes.length; i$1++) { 3627 apply(removedNodes[i$1], disconnect); 3628 } 3629 3630 return true; 3631 } 3632 } 3633 3634 var Class = { 3635 3636 connected: function connected() { 3637 !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name); 3638 } 3639 3640 }; 3641 3642 var Togglable = { 3643 3644 props: { 3645 cls: Boolean, 3646 animation: 'list', 3647 duration: Number, 3648 origin: String, 3649 transition: String 3650 }, 3651 3652 data: { 3653 cls: false, 3654 animation: [false], 3655 duration: 200, 3656 origin: false, 3657 transition: 'linear', 3658 3659 initProps: { 3660 overflow: '', 3661 height: '', 3662 paddingTop: '', 3663 paddingBottom: '', 3664 marginTop: '', 3665 marginBottom: '' 3666 }, 3667 3668 hideProps: { 3669 overflow: 'hidden', 3670 height: 0, 3671 paddingTop: 0, 3672 paddingBottom: 0, 3673 marginTop: 0, 3674 marginBottom: 0 3675 } 3676 3677 }, 3678 3679 computed: { 3680 3681 hasAnimation: function hasAnimation(ref) { 3682 var animation = ref.animation; 3683 3684 return !!animation[0]; 3685 }, 3686 3687 hasTransition: function hasTransition(ref) { 3688 var animation = ref.animation; 3689 3690 return this.hasAnimation && animation[0] === true; 3691 } 3692 3693 }, 3694 3695 methods: { 3696 3697 toggleElement: function toggleElement(targets, show, animate) { 3698 var this$1 = this; 3699 3700 return Promise.all(toNodes(targets).map(function (el) { 3701 return new Promise(function (resolve) { 3702 return this$1._toggleElement(el, show, animate).then(resolve, noop); 3703 }); 3704 })); 3705 }, 3706 3707 isToggled: function isToggled(el) { 3708 var nodes = toNodes(el || this.$el); 3709 return this.cls ? hasClass(nodes, this.cls.split(' ')[0]) : !hasAttr(nodes, 'hidden'); 3710 }, 3711 3712 updateAria: function updateAria(el) { 3713 if (this.cls === false) { 3714 attr(el, 'aria-hidden', !this.isToggled(el)); 3715 } 3716 }, 3717 3718 _toggleElement: function _toggleElement(el, show, animate) { 3719 var this$1 = this; 3720 3721 show = isBoolean(show) ? show : Animation.inProgress(el) ? hasClass(el, 'uk-animation-leave') : Transition.inProgress(el) ? el.style.height === '0px' : !this.isToggled(el); 3722 3723 if (!trigger(el, "before" + (show ? 'show' : 'hide'), [this])) { 3724 return Promise.reject(); 3725 } 3726 3727 var promise = (isFunction(animate) ? animate : animate === false || !this.hasAnimation ? this._toggle : this.hasTransition ? toggleHeight(this) : toggleAnimation(this))(el, show); 3728 3729 trigger(el, show ? 'show' : 'hide', [this]); 3730 3731 var final = function final() { 3732 trigger(el, show ? 'shown' : 'hidden', [this$1]); 3733 this$1.$update(el); 3734 }; 3735 3736 return (promise || Promise.resolve()).then(final); 3737 }, 3738 3739 _toggle: function _toggle(el, toggled) { 3740 3741 if (!el) { 3742 return; 3743 } 3744 3745 toggled = Boolean(toggled); 3746 3747 var changed; 3748 if (this.cls) { 3749 changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls); 3750 changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled); 3751 } else { 3752 changed = toggled === hasAttr(el, 'hidden'); 3753 changed && attr(el, 'hidden', !toggled ? '' : null); 3754 } 3755 3756 $$('[autofocus]', el).some(function (el) { 3757 return isVisible(el) ? el.focus() || true : el.blur(); 3758 }); 3759 3760 this.updateAria(el); 3761 3762 if (changed) { 3763 trigger(el, 'toggled', [this]); 3764 this.$update(el); 3765 } 3766 } 3767 3768 } 3769 3770 }; 3771 3772 function toggleHeight(ref) { 3773 var isToggled = ref.isToggled; 3774 var duration = ref.duration; 3775 var initProps = ref.initProps; 3776 var hideProps = ref.hideProps; 3777 var transition = ref.transition; 3778 var _toggle = ref._toggle; 3779 3780 return function (el, show) { 3781 3782 var inProgress = Transition.inProgress(el);
3783 var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0; 3784 var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0; 3785 3786 Transition.cancel(el); 3787 3788 if (!isToggled(el)) { 3789 _toggle(el, true); 3790 } 3791 3792 height(el, ''); 3793 3794 // Update child components first 3795 fastdom.flush(); 3796 3797 var endHeight = height(el) + (inProgress ? 0 : inner); 3798 height(el, currentHeight); 3799 3800 return (show ? Transition.start(el, assign({}, initProps, { overflow: 'hidden', height: endHeight }), Math.round(duration * (1 - currentHeight / endHeight)), transition) : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () { 3801 return _toggle(el, false); 3802 })).then(function () { 3803 return css(el, initProps); 3804 }); 3805 }; 3806 } 3807 3808 function toggleAnimation(cmp) { 3809 return function (el, show) { 3810 3811 Animation.cancel(el); 3812 3813 var animation = cmp.animation; 3814 var duration = cmp.duration; 3815 var _toggle = cmp._toggle; 3816 3817 if (show) { 3818 _toggle(el, true); 3819 return Animation.in(el, animation[0], duration, cmp.origin); 3820 } 3821 3822 return Animation.out(el, animation[1] || animation[0], duration, cmp.origin).then(function () { 3823 return _toggle(el, false); 3824 }); 3825 }; 3826 } 3827 3828 var Accordion = { 3829 3830 mixins: [Class, Togglable], 3831 3832 props: { 3833 targets: String, 3834 active: null, 3835 collapsible: Boolean, 3836 multiple: Boolean, 3837 toggle: String, 3838 content: String, 3839 transition: String, 3840 offset: Number 3841 }, 3842 3843 data: { 3844 targets: '> *', 3845 active: false, 3846 animation: [true], 3847 collapsible: true, 3848 multiple: false, 3849 clsOpen: 'uk-open', 3850 toggle: '> .uk-accordion-title', 3851 content: '> .uk-accordion-content', 3852 transition: 'ease', 3853 offset: 0 3854 }, 3855 3856 computed: { 3857 3858 items: { 3859 3860 get: function get$$1(ref, $el) { 3861 var targets = ref.targets; 3862 3863 return $$(targets, $el); 3864 }, 3865 3866 watch: function watch(items, prev) { 3867 var this$1 = this; 3868 3869 items.forEach(function (el) { 3870 return hide($(this$1.content, el), !hasClass(el, this$1.clsOpen)); 3871 }); 3872 3873 if (prev || hasClass(items, this.clsOpen)) { 3874 return; 3875 } 3876 3877 var active = this.active !== false && items[Number(this.active)] || !this.collapsible && items[0]; 3878 3879 if (active) { 3880 this.toggle(active, false); 3881 } 3882 }, 3883 3884 immediate: true 3885 3886 } 3887 3888 }, 3889 3890 events: [{ 3891 3892 name: 'click', 3893 3894 delegate: function delegate() { 3895 return this.targets + " " + this.$props.toggle; 3896 }, 3897 3898 handler: function handler(e) { 3899 e.preventDefault(); 3900 this.toggle(index($$(this.targets + " " + this.$props.toggle, this.$el), e.current)); 3901 } 3902 3903 }], 3904 3905 methods: { 3906 3907 toggle: function toggle(item, animate) { 3908 var this$1 = this; 3909 3910 var items = [this.items[_getIndex(item, this.items)]]; 3911 var activeItems = filter(this.items, "." + this.clsOpen); 3912 3913 if (!this.multiple && !includes(activeItems, items[0])) { 3914 items = items.concat(activeItems); 3915 } 3916 3917 if (!this.collapsible && activeItems.length < 2 && !filter(items, ":not(." + this.clsOpen + ")").length) { 3918 return; 3919 } 3920 3921 items.forEach(function (el) { 3922 return this$1.toggleElement(el, !hasClass(el, this$1.clsOpen), function (el, show) { 3923 3924 toggleClass(el, this$1.clsOpen, show); 3925 3926 var content = $("" + (el._wrapper ? '> * ' : '') + this$1.content, el); 3927 3928 if (animate === false || !this$1.hasTransition) { 3929 hide(content, !show); 3930 return; 3931 } 3932 3933 if (!el._wrapper) { 3934 el._wrapper = wrapAll(content, "<div" + (show ? ' hidden' : '') + ">"); 3935 } 3936 3937 hide(content, false); 3938 return toggleHeight(this$1)(el._wrapper, show).then(function () { 3939 hide(content, !show); 3940 delete el._wrapper; 3941 unwrap(content); 3942 3943 if (show) { 3944 var toggle = $(this$1.$props.toggle, el); 3945 if (!isInView(toggle)) { 3946 scrollIntoView(toggle, { offset: this$1.offset }); 3947 } 3948 } 3949 }); 3950 }); 3951 }); 3952 } 3953 3954 } 3955 3956 }; 3957 3958 function hide(el, hide) { 3959 attr(el, 'hidden', hide ? '' : null); 3960 } 3961 3962 var alert = { 3963 3964 mixins: [Class, Togglable], 3965 3966 args: 'animation', 3967 3968 props: { 3969 close: String 3970 }, 3971 3972 data: { 3973 animation: [true], 3974 selClose: '.uk-alert-close', 3975 duration: 150, 3976 hideProps: assign({ opacity: 0 }, Togglable.data.hideProps) 3977 }, 3978 3979 events: [{ 3980 3981 name: 'click', 3982 3983 delegate: function delegate() { 3984 return this.selClose; 3985 }, 3986 3987 handler: function handler(e) { 3988 e.preventDefault(); 3989 this.close(); 3990 } 3991 3992 }], 3993 3994 methods: { 3995 3996 close: function close() { 3997 var this$1 = this; 3998 3999 this.toggleElement(this.$el).then(function () { 4000 return this$1.$destroy(true); 4001 }); 4002 } 4003 4004 } 4005 4006 }; 4007 4008 var Video = { 4009 4010 args: 'autoplay', 4011 4012 props: { 4013 automute: Boolean, 4014 autoplay: Boolean 4015 }, 4016 4017 data: { 4018 automute: false, 4019 autoplay: true 4020 }, 4021 4022 computed: { 4023 4024 inView: function inView(ref) { 4025 var autoplay = ref.autoplay; 4026 4027 return autoplay === 'inview'; 4028 } 4029 4030 }, 4031 4032 connected: function connected() { 4033 4034 if (this.inView && !hasAttr(this.$el, 'preload')) { 4035 this.$el.preload = 'none'; 4036 } 4037 4038 if (this.automute) { 4039 mute(this.$el); 4040 } 4041 }, 4042 4043 update: { 4044 4045 read: function read() { 4046 return { 4047 visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden', 4048 inView: this.inView && isInView(this.$el) 4049 }; 4050 }, 4051 4052 write: function write(ref) { 4053 var visible = ref.visible; 4054 var inView = ref.inView; 4055 4056 if (!visible || this.inView && !inView) { 4057 pause(this.$el); 4058 } else if (this.autoplay === true || this.inView && inView) { 4059 play(this.$el); 4060 } 4061 }, 4062 4063 events: ['resize', 'scroll'] 4064 4065 } 4066 4067 }; 4068 4069 var cover = { 4070 4071 mixins: [Class, Video], 4072 4073 props: { 4074 width: Number, 4075 height: Number 4076 }, 4077 4078 data: { 4079 automute: true 4080 }, 4081 4082 update: { 4083 4084 read: function read() { 4085 4086 var el = this.$el; 4087 var ref = getPositionedParent(el) || el.parentNode; 4088 var height = ref.offsetHeight; 4089 var width = ref.offsetWidth; 4090 var dim = Dimensions.cover({
4091 width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth, 4092 height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight 4093 }, { 4094 width: width + (width % 2 ? 1 : 0), 4095 height: height + (height % 2 ? 1 : 0) 4096 }); 4097 4098 if (!dim.width || !dim.height) { 4099 return false; 4100 } 4101 4102 return dim; 4103 }, 4104 4105 write: function write(ref) { 4106 var height = ref.height; 4107 var width = ref.width; 4108 4109 css(this.$el, { height: height, width: width }); 4110 }, 4111 4112 events: ['resize'] 4113 4114 } 4115 4116 }; 4117 4118 function getPositionedParent(el) { 4119 while (el = parent(el)) { 4120 if (css(el, 'position') !== 'static') { 4121 return el; 4122 } 4123 } 4124 } 4125 4126 var Position = { 4127 4128 props: { 4129 pos: String, 4130 offset: null, 4131 flip: Boolean, 4132 clsPos: String 4133 }, 4134 4135 data: { 4136 pos: "bottom-" + (!isRtl ? 'left' : 'right'), 4137 flip: true, 4138 offset: false, 4139 clsPos: '' 4140 }, 4141 4142 computed: { 4143 4144 pos: function pos(ref) { 4145 var pos = ref.pos; 4146 4147 return (pos + (!includes(pos, '-') ? '-center' : '')).split('-'); 4148 }, 4149 4150 dir: function dir() { 4151 return this.pos[0]; 4152 }, 4153 4154 align: function align() { 4155 return this.pos[1]; 4156 } 4157 4158 }, 4159 4160 methods: { 4161 4162 positionAt: function positionAt(element, target, boundary) { 4163 4164 removeClasses(element, this.clsPos + "-(top|bottom|left|right)(-[a-z]+)?"); 4165 4166 var node; 4167 var ref = this; 4168 var offset$1 = ref.offset; 4169 var axis = this.getAxis(); 4170 4171 if (!isNumeric(offset$1)) { 4172 node = $(offset$1); 4173 offset$1 = node ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom'] : 0; 4174 } 4175 4176 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; 4177 var x = ref$1.x; 4178 var y = ref$1.y; 4179 4180 this.dir = axis === 'x' ? x : y; 4181 this.align = axis === 'x' ? y : x; 4182 4183 toggleClass(element, this.clsPos + "-" + this.dir + "-" + this.align, this.offset === false); 4184 }, 4185 4186 getAxis: function getAxis() { 4187 return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x'; 4188 } 4189 4190 } 4191 4192 }; 4193 4194 var active; 4195 4196 var drop = { 4197 4198 mixins: [Position, Togglable], 4199 4200 args: 'pos', 4201 4202 props: { 4203 mode: 'list', 4204 toggle: Boolean, 4205 boundary: Boolean, 4206 boundaryAlign: Boolean, 4207 delayShow: Number, 4208 delayHide: Number, 4209 clsDrop: String 4210 }, 4211 4212 data: { 4213 mode: ['click', 'hover'], 4214 toggle: '- *', 4215 boundary: inBrowser && window, 4216 boundaryAlign: false, 4217 delayShow: 0, 4218 delayHide: 800, 4219 clsDrop: false, 4220 animation: ['uk-animation-fade'], 4221 cls: 'uk-open' 4222 }, 4223 4224 computed: { 4225 4226 boundary: function boundary(ref, $el) { 4227 var boundary = ref.boundary; 4228 4229 return query(boundary, $el); 4230 }, 4231 4232 clsDrop: function clsDrop(ref) { 4233 var clsDrop = ref.clsDrop; 4234 4235 return clsDrop || "uk-" + this.$options.name; 4236 }, 4237 4238 clsPos: function clsPos() { 4239 return this.clsDrop; 4240 } 4241 4242 }, 4243 4244 created: function created() { 4245 this.tracker = new MouseTracker(); 4246 }, 4247 4248 connected: function connected() { 4249 4250 addClass(this.$el, this.clsDrop); 4251 4252 var ref = this.$props; 4253 var toggle = ref.toggle; 4254 this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), { 4255 target: this.$el, 4256 mode: this.mode 4257 }); 4258 4259 !this.toggle && trigger(this.$el, 'updatearia'); 4260 }, 4261 4262 disconnected: function disconnected() { 4263 if (this.isActive()) { 4264 active = null; 4265 } 4266 }, 4267 4268 events: [{ 4269 4270 name: 'click', 4271 4272 delegate: function delegate() { 4273 return "." + this.clsDrop + "-close"; 4274 }, 4275 4276 handler: function handler(e) { 4277 e.preventDefault(); 4278 this.hide(false); 4279 } 4280 4281 }, { 4282 4283 name: 'click', 4284 4285 delegate: function delegate() { 4286 return 'a[href^="#"]'; 4287 }, 4288 4289 handler: function handler(ref) { 4290 var defaultPrevented = ref.defaultPrevented; 4291 var hash = ref.current.hash; 4292 4293 if (!defaultPrevented && hash && !within(hash, this.$el)) { 4294 this.hide(false); 4295 } 4296 } 4297 4298 }, { 4299 4300 name: 'beforescroll', 4301 4302 handler: function handler() { 4303 this.hide(false); 4304 } 4305 4306 }, { 4307 4308 name: 'toggle', 4309 4310 self: true, 4311 4312 handler: function handler(e, toggle) { 4313 4314 e.preventDefault(); 4315 4316 if (this.isToggled()) { 4317 this.hide(false); 4318 } else { 4319 this.show(toggle, false); 4320 } 4321 } 4322 4323 }, { 4324 4325 name: 'toggleshow', 4326 4327 self: true, 4328 4329 handler: function handler(e, toggle) { 4330 e.preventDefault(); 4331 this.show(toggle); 4332 } 4333 4334 }, { 4335 4336 name: 'togglehide', 4337 4338 self: true, 4339 4340 handler: function handler(e) { 4341 e.preventDefault(); 4342 this.hide(); 4343 } 4344 4345 }, { 4346 4347 name: pointerEnter, 4348 4349 filter: function filter() { 4350 return includes(this.mode, 'hover'); 4351 }, 4352 4353 handler: function handler(e) { 4354 if (!isTouch(e)) { 4355 this.clearTimers(); 4356 } 4357 } 4358 4359 }, { 4360 4361 name: pointerLeave, 4362 4363 filter: function filter() { 4364 return includes(this.mode, 'hover'); 4365 }, 4366 4367 handler: function handler(e) { 4368 if (!isTouch(e) && e.relatedTarget) { 4369 this.hide(); 4370 } 4371 } 4372 4373 }, { 4374 4375 name: 'toggled', 4376 4377 self: true, 4378 4379 handler: function handler() { 4380 4381 if (!this.isToggled()) { 4382 return; 4383 } 4384 4385 this.clearTimers(); 4386 this.position(); 4387 } 4388 4389 }, { 4390 4391 name: 'show', 4392 4393 self: true, 4394 4395 handler: function handler() { 4396 var this$1 = this; 4397 4398 active = this; 4399 4400 this.tracker.init(); 4401 trigger(this.$el, 'updatearia'); 4402 4403 once(this.$el, 'hide', on(document, pointerDown, function (ref) { 4404 var target = ref.target; 4405 4406 return !within(target, this$1.$el) && once(document, pointerUp + " " + pointerCancel + " scroll", function (ref) { 4407 var defaultPrevented = ref.defaultPrevented; 4408 var type = ref.type; 4409 var newTarget = ref.target; 4410 4411 if (!defaultPrevented && type === pointerUp && target === newTarget && !(this$1.toggle && within(target, this$1.toggle.$el))) { 4412 this$1.hide(false); 4413 } 4414 }, true); 4415 }), { self: true }); 4416 4417 once(this.$el, 'hide', on(document, 'keydown', function (e) { 4418 if (e.keyCode === 27) { 4419 e.preventDefault(); 4420 this$1.hide(false); 4421 } 4422 }), { self: true }); 4423 } 4424 4425 }, { 4426 4427 name: 'beforehide', 4428 4429 self: true, 4430 4431 handler: function handler() { 4432 this.clearTimers(); 4433 } 4434 4435 }, { 4436 4437 name: 'hide', 4438 4439 handler: function handler(ref) { 4440 var target = ref.target; 4441 4442 if (this.$el !== target) { 4443 active = active === null && within(target, this.$el) && this.isToggled() ? this
4443: active; 4444 return; 4445 } 4446 4447 active = this.isActive() ? null : active; 4448 trigger(this.$el, 'updatearia'); 4449 this.tracker.cancel(); 4450 } 4451 4452 }, { 4453 4454 name: 'updatearia', 4455 4456 self: true, 4457 4458 handler: function handler(e, toggle) { 4459 4460 e.preventDefault(); 4461 4462 this.updateAria(this.$el); 4463 4464 if (toggle || this.toggle) { 4465 attr((toggle || this.toggle).$el, 'aria-expanded', this.isToggled()); 4466 toggleClass(this.toggle.$el, this.cls, this.isToggled()); 4467 } 4468 } 4469 }], 4470 4471 update: { 4472 4473 write: function write() { 4474 4475 if (this.isToggled() && !Animation.inProgress(this.$el)) { 4476 this.position(); 4477 } 4478 }, 4479 4480 events: ['resize'] 4481 4482 }, 4483 4484 methods: { 4485 4486 show: function show(toggle, delay) { 4487 var this$1 = this; 4488 if (toggle === void 0) toggle = this.toggle; 4489 if (delay === void 0) delay = true; 4490 4491 if (this.isToggled() && toggle && this.toggle && toggle.$el !== this.toggle.$el) { 4492 this.hide(false); 4493 } 4494 4495 this.toggle = toggle; 4496 4497 this.clearTimers(); 4498 4499 if (this.isActive()) { 4500 return; 4501 } 4502 4503 if (active) { 4504 4505 if (delay && active.isDelaying) { 4506 this.showTimer = setTimeout(this.show, 10); 4507 return; 4508 } 4509 4510 var prev; 4511 while (active && prev !== active && !within(this.$el, active.$el)) { 4512 prev = active; 4513 active.hide(false); 4514 } 4515 } 4516 4517 this.showTimer = setTimeout(function () { 4518 return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); 4519 }, delay && this.delayShow || 0); 4520 }, 4521 4522 hide: function hide(delay) { 4523 var this$1 = this; 4524 if (delay === void 0) delay = true; 4525 4526 var hide = function hide() { 4527 return this$1.toggleElement(this$1.$el, false, false); 4528 }; 4529 4530 this.clearTimers(); 4531 4532 this.isDelaying = getPositionedElements(this.$el).some(function (el) { 4533 return this$1.tracker.movesTo(el); 4534 }); 4535 4536 if (delay && this.isDelaying) { 4537 this.hideTimer = setTimeout(this.hide, 50); 4538 } else if (delay && this.delayHide) { 4539 this.hideTimer = setTimeout(hide, this.delayHide); 4540 } else { 4541 hide(); 4542 } 4543 }, 4544 4545 clearTimers: function clearTimers() { 4546 clearTimeout(this.showTimer); 4547 clearTimeout(this.hideTimer); 4548 this.showTimer = null; 4549 this.hideTimer = null; 4550 this.isDelaying = false; 4551 }, 4552 4553 isActive: function isActive() { 4554 return active === this; 4555 }, 4556 4557 position: function position() { 4558 4559 removeClass(this.$el, this.clsDrop + "-stack"); 4560 toggleClass(this.$el, this.clsDrop + "-boundary", this.boundaryAlign); 4561 4562 var boundary = offset(this.boundary); 4563 var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el); 4564 4565 if (this.align === 'justify') { 4566 var prop = this.getAxis() === 'y' ? 'width' : 'height'; 4567 css(this.$el, prop, alignTo[prop]); 4568 } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) { 4569 addClass(this.$el, this.clsDrop + "-stack"); 4570 } 4571 4572 this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary); 4573 } 4574 4575 } 4576 4577 }; 4578 4579 function getPositionedElements(el) { 4580 var result = []; 4581 apply(el, function (el) { 4582 return css(el, 'position') !== 'static' && result.push(el); 4583 }); 4584 return result; 4585 } 4586 4587 var formCustom = { 4588 4589 mixins: [Class], 4590 4591 args: 'target', 4592 4593 props: { 4594 target: Boolean 4595 }, 4596 4597 data: { 4598 target: false 4599 }, 4600 4601 computed: { 4602 4603 input: function input(_, $el) { 4604 return $(selInput, $el); 4605 }, 4606 4607 state: function state() { 4608 return this.input.nextElementSibling; 4609 }, 4610 4611 target: function target(ref, $el) { 4612 var target = ref.target; 4613 4614 return target && (target === true && this.input.parentNode === $el && this.input.nextElementSibling || query(target, $el)); 4615 } 4616 4617 }, 4618
4619 update: function update() { 4620 4621 var ref = this; 4622 var target = ref.target; 4623 var input = ref.input; 4624 4625 if (!target) { 4626 return; 4627 } 4628 4629 var option; 4630 var prop = isInput(target) ? 'value' : 'textContent'; 4631 var prev = target[prop]; 4632 var value = input.files && input.files[0] ? input.files[0].name : matches(input, 'select') && (option = $$('option', input).filter(function (el) { 4633 return el.selected; 4634 })[0]) // eslint-disable-line prefer-destructuring 4635 ? option.textContent : input.value; 4636 4637 if (prev !== value) { 4638 target[prop] = value; 4639 } 4640 }, 4641 4642 events: [{ 4643 name: 'change', 4644 4645 handler: function handler() { 4646 this.$update(); 4647 } 4648 }, { 4649 name: 'reset', 4650 4651 el: function el() { 4652 return closest(this.$el, 'form'); 4653 }, 4654 4655 handler: function handler() { 4656 this.$update(); 4657 } 4658 }] 4659 4660 }; 4661 4662 // Deprecated 4663 var gif = { 4664 4665 update: { 4666 4667 read: function read(data) { 4668 4669 var inview = isInView(this.$el); 4670 4671 if (!inview || data.isInView === inview) { 4672 return false; 4673 } 4674 4675 data.isInView = inview; 4676 }, 4677 4678 write: function write() { 4679 this.$el.src = '' + this.$el.src; // force self-assign 4680 }, 4681 4682 events: ['scroll', 'resize'] 4683 } 4684 4685 }; 4686 4687 var Margin = { 4688 4689 props: { 4690 margin: String, 4691 firstColumn: Boolean 4692 }, 4693 4694 data: { 4695 margin: 'uk-margin-small-top', 4696 firstColumn: 'uk-first-column' 4697 }, 4698 4699 update: { 4700 4701 read: function read() { 4702 4703 var rows = getRows(this.$el.children); 4704 4705 return { 4706 rows: rows, 4707 columns: getColumns(rows) 4708 }; 4709 }, 4710 4711 write: function write(ref) { 4712 var this$1 = this; 4713 var columns = ref.columns; 4714 var rows = ref.rows; 4715 4716 rows.forEach(function (row, i) { 4717 return row.forEach(function (el) { 4718 toggleClass(el, this$1.margin, i !== 0); 4719 toggleClass(el, this$1.firstColumn, includes(columns[0], el)); 4720 }); 4721 }); 4722 }, 4723 4724 events: ['resize'] 4725 4726 } 4727 4728 }; 4729 4730 function getRows(items) { 4731 return sortBy$1(items, 'top', 'bottom'); 4732 } 4733 4734 function getColumns(rows) { 4735 4736 var columns = [[]]; 4737 4738 rows.forEach(function (row) { 4739 return sortBy$1(row, 'left', 'right').forEach(function (column, i) { 4740 return columns[i] = !columns[i] ? column : columns[i].concat(column); 4741 }); 4742 }); 4743 4744 return isRtl ? columns.reverse() : columns; 4745 } 4746 4747 function sortBy$1(items, startProp, endProp) { 4748 4749 var sorted = [[]]; 4750 4751 for (var i = 0; i < items.length; i++) { 4752 4753 var el = items[i]; 4754 4755 if (!isVisible(el)) { 4756 continue; 4757 } 4758 4759 var dim = getOffset(el); 4760 4761 for (var j = sorted.length - 1; j >= 0; j--) { 4762 4763 var current = sorted[j]; 4764 4765 if (!current[0]) { 4766 current.push(el); 4767 break; 4768 } 4769 4770 var startDim = void 0; 4771 if (current[0].offsetParent === el.offsetParent) { 4772 startDim = getOffset(current[0]); 4773 } else { 4774 dim = getOffset(el, true); 4775 startDim = getOffset(current[0], true); 4776 } 4777 4778 if (dim[startProp] >= startDim[endProp] - 1 && dim[startProp] !== startDim[startProp]) { 4779 sorted.push([el]); 4780 break; 4781 } 4782 4783 if (dim[endProp] - 1 > startDim[startProp] || dim[startProp] === startDim[startProp]) { 4784 current.push(el); 4785 break; 4786 } 4787 4788 if (j === 0) { 4789 sorted.unshift([el]); 4790 break; 4791 } 4792 } 4793 } 4794 4795 return sorted; 4796 } 4797 4798 function getOffset(element, offset) { 4799 var assign; 4800 4801 if (offset === void 0) offset = false; 4802 4803 var offsetTop = element.offsetTop; 4804 var offsetLeft = element.offsetLeft; 4805 var offsetHeight = element.offsetHeight; 4806 var offsetWidth = element.offsetWidth; 4807 4808 if (offset) { 4809 assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1]; 4810 } 4811 4812 return { 4813 top: offsetTop, 4814 left: offsetLeft, 4815 bottom: offsetTop + offsetHeight, 4816 right: offsetLeft + offsetWidth 4817 }; 4818 } 4819 4820 var grid = { 4821 4822 extends: Margin, 4823 4824 mixins: [Class], 4825 4826 name: 'grid', 4827 4828 props: { 4829 masonry: Boolean, 4830 parallax: Number 4831 }, 4832 4833 data: { 4834 margin: 'uk-grid-margin', 4835 clsStack: 'uk-grid-stack', 4836 masonry: false, 4837 parallax: 0 4838 }, 4839 4840 connected: function connected() { 4841 this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top'); 4842 }, 4843 4844 update: [{ 4845 4846 write: function write(ref) { 4847 var columns = ref.columns; 4848 4849 toggleClass(this.$el, this.clsStack, columns.length < 2); 4850 }, 4851 4852 events: ['resize'] 4853 4854 }, { 4855 4856 read: function read(ref) { 4857 var columns = ref.columns; 4858 var rows = ref.rows; 4859 4860 var nodes = _children(this.$el); 4861 4862 if (!nodes.length || !this.masonry && !this.parallax) { 4863 return false;
4864 } 4865 4866 var transitionInProgress = nodes.some(Transition.inProgress); 4867 var translates = false; 4868 4869 var columnHeights = getColumnHeights(columns); 4870 var margin = getMarginTop(nodes, this.margin) * (rows.length - 1); 4871 var elHeight = Math.max.apply(Math, columnHeights) + margin; 4872 4873 if (this.masonry) { 4874 columns = columns.map(function (column) { 4875 return sortBy(column, 'offsetTop'); 4876 }); 4877 translates = getTranslates(rows, columns); 4878 } 4879 4880 var padding = Math.abs(this.parallax); 4881 if (padding) { 4882 padding = columnHeights.reduce(function (newPadding, hgt, i) { 4883 return Math.max(newPadding, hgt + margin + (i % 2 ? padding : padding / 8) - elHeight); 4884 }, 0); 4885 } 4886 4887 return { padding: padding, columns: columns, translates: translates, height: transitionInProgress ? false : this.masonry ? elHeight : '' }; 4888 }, 4889 4890 write: function write(ref) { 4891 var height = ref.height; 4892 var padding = ref.padding; 4893 4894 css(this.$el, 'paddingBottom', padding || ''); 4895 height !== false && css(this.$el, 'height', height); 4896 }, 4897 4898 events: ['resize'] 4899 4900 }, { 4901 4902 read: function read(ref) { 4903 var height$1 = ref.height; 4904 4905 return { 4906 scrolled: this.parallax ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * Math.abs(this.parallax) : false 4907 }; 4908 }, 4909 4910 write: function write(ref) { 4911 var columns = ref.columns; 4912 var scrolled = ref.scrolled; 4913 var translates = ref.translates; 4914 4915 if (scrolled === false && !translates) { 4916 return; 4917 } 4918 4919 columns.forEach(function (column, i) { 4920 return column.forEach(function (el, j) { 4921 return css(el, 'transform', !scrolled && !translates ? '' : "translateY(" + ((translates && -translates[i][j]) + (scrolled ? i % 2 ? scrolled : scrolled / 8 : 0)) + "px)"); 4922 }); 4923 }); 4924 }, 4925 4926 events: ['scroll', 'resize'] 4927 4928 }] 4929 4930 }; 4931 4932 function getTranslates(rows, columns) { 4933 4934 var rowHeights = rows.map(function (row) { 4935 return Math.max.apply(Math, row.map(function (el) { 4936 return el.offsetHeight; 4937 })); 4938 }); 4939 4940 return columns.map(function (elements) { 4941 var prev = 0; 4942 return elements.map(function (element, row) { 4943 return prev += row ? rowHeights[row - 1] - elements[row - 1].offsetHeight : 0; 4944 }); 4945 }); 4946 } 4947 4948 function getMarginTop(nodes, cls) { 4949 4950 var ref = nodes.filter(function (el) { 4951 return hasClass(el, cls); 4952 }); 4953 var node = ref[0]; 4954 4955 return toFloat(node ? css(node, 'marginTop') : css(nodes[0], 'paddingLeft')); 4956 } 4957 4958 function getColumnHeights(columns) { 4959 return columns.map(function (column) { 4960 return column.reduce(function (sum, el) { 4961 return sum + el.offsetHeight; 4962 }, 0); 4963 }); 4964 } 4965 4966 // IE 11 fix (min-height on a flex container won't apply to its flex items) 4967 var FlexBug = isIE ? { 4968 4969 props: { 4970 selMinHeight: String 4971 }, 4972 4973 data: { 4974 selMinHeight: false, 4975 forceHeight: false 4976 }, 4977 4978 computed: { 4979 4980 elements: function elements(ref, $el) { 4981 var selMinHeight = ref.selMinHeight; 4982 4983 return selMinHeight ? $$(selMinHeight, $el) : [$el]; 4984 } 4985 4986 }, 4987 4988 update: [{ 4989 4990 read: function read() { 4991 css(this.elements, 'height', ''); 4992 }, 4993 4994 order: -5, 4995 4996 events: ['resize'] 4997 4998 }, { 4999 5000 write: function write() { 5001 var this$1 = this; 5002 5003 this.elements.forEach(function (el) { 5004 var height = toFloat(css(el, 'minHeight')); 5005 if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust(el, 'height', 'content-box')) >= el.offsetHeight)) { 5006 css(el, 'height', height); 5007 } 5008 }); 5009 }, 5010 5011 order: 5, 5012 5013 events: ['resize'] 5014 5015 }] 5016 5017 } : {}; 5018 5019 var heightMatch = { 5020 5021 mixins: [FlexBug], 5022 5023 args: 'target', 5024 5025 props: { 5026 target: String, 5027 row: Boolean 5028 }, 5029 5030 data: { 5031 target: '> *', 5032 row: true, 5033 forceHeight: true 5034 }, 5035 5036 computed: { 5037 5038 elements: function elements(ref, $el) { 5039 var target = ref.target; 5040 5041 return $$(target, $el); 5042 } 5043 5044 }, 5045 5046 update: { 5047 5048 read: function read() { 5049 return { 5050 rows: (this.row ? getRows(this.elements) : [this.elements]).map(match) 5051 }; 5052 }, 5053 5054 write: function write(ref) { 5055 var rows = ref.rows; 5056 5057 rows.forEach(function (ref) { 5058 var heights = ref.heights; 5059 var elements = ref.elements; 5060
5061 return elements.forEach(function (el, i) { 5062 return css(el, 'minHeight', heights[i]); 5063 }); 5064 }); 5065 }, 5066 5067 events: ['resize'] 5068 5069 } 5070 5071 }; 5072 5073 function match(elements) { 5074 var assign; 5075 5076 if (elements.length < 2) { 5077 return { heights: [''], elements: elements }; 5078 } 5079 5080 var ref = getHeights(elements); 5081 var heights = ref.heights; 5082 var max = ref.max; 5083 var hasMinHeight = elements.some(function (el) { 5084 return el.style.minHeight; 5085 }); 5086 var hasShrunk = elements.some(function (el, i) { 5087 return !el.style.minHeight && heights[i] < max; 5088 }); 5089 5090 if (hasMinHeight && hasShrunk) { 5091 css(elements, 'minHeight', ''); 5092 assign = getHeights(elements), heights = assign.heights, max = assign.max; 5093 } 5094 5095 heights = elements.map(function (el, i) { 5096 return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max; 5097 }); 5098 5099 return { heights: heights, elements: elements }; 5100 } 5101 5102 function getHeights(elements) { 5103 var heights = elements.map(function (el) { 5104 return offset(el).height - boxModelAdjust(el, 'height', 'content-box'); 5105 }); 5106 var max = Math.max.apply(null, heights); 5107 5108 return { heights: heights, max: max }; 5109 } 5110 5111 var heightViewport = { 5112 5113 mixins: [FlexBug], 5114 5115 props: { 5116 expand: Boolean, 5117 offsetTop: Boolean, 5118 offsetBottom: Boolean, 5119 minHeight: Number 5120 }, 5121 5122 data: { 5123 expand: false, 5124 offsetTop: false, 5125 offsetBottom: false, 5126 minHeight: 0 5127 }, 5128 5129 update: { 5130 5131 read: function read(ref) { 5132 var prev = ref.minHeight; 5133 5134 if (!isVisible(this.$el)) { 5135 return false; 5136 } 5137 5138 var minHeight = ''; 5139 var box = boxModelAdjust(this.$el, 'height', 'content-box'); 5140 5141 if (this.expand) { 5142 5143 this.$el.dataset.heightExpand = ''; 5144 5145 if ($('[data-height-expand]') !== this.$el) { 5146 return false; 5147 } 5148 5149 minHeight = height(window) - (offsetHeight(document.documentElement) - offsetHeight(this.$el)) - box || ''; 5150 } else { 5151 5152 // on mobile devices (iOS and Android) window.innerHeight !== 100vh 5153 minHeight = 'calc(100vh'; 5154 5155 if (this.offsetTop) { 5156 5157 var ref$1 = offset(this.$el); 5158 var top = ref$1.top; 5159 minHeight += top > 0 && top < height(window) / 2 ? " - " + top + "px" : ''; 5160 } 5161 5162 if (this.offsetBottom === true) { 5163 5164 minHeight += " - " + offsetHeight(this.$el.nextElementSibling) + "px"; 5165 } else if (isNumeric(this.offsetBottom)) { 5166 5167 minHeight += " - " + this.offsetBottom + "vh"; 5168 } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) { 5169 5170 minHeight += " - " + toFloat(this.offsetBottom) + "px"; 5171 } else if (isString(this.offsetBottom)) { 5172 5173 minHeight += " - " + offsetHeight(query(this.offsetBottom, this.$el)) + "px"; 5174 } 5175 5176 minHeight += (box ? " - " + box + "px" : '') + ")"; 5177 } 5178 5179 return { minHeight: minHeight, prev: prev }; 5180 }, 5181 5182 write: function write(ref) { 5183 var minHeight = ref.minHeight; 5184 var prev = ref.prev; 5185 5186 css(this.$el, { minHeight: minHeight }); 5187 5188 if (minHeight !== prev) { 5189 this.$update(this.$el, 'resize'); 5190 } 5191 5192 if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) { 5193 css(this.$el, 'minHeight', this.minHeight); 5194 } 5195 }, 5196 5197 events: ['resize'] 5198 5199 } 5200 5201 }; 5202 5203 function offsetHeight(el) { 5204 return el && offset(el).height || 0; 5205 } 5206 5207 var SVG = { 5208 5209 args: 'src', 5210 5211 props: { 5212 id: Boolean, 5213 icon: String, 5214 src: String, 5215 style: String, 5216 width: Number, 5217 height: Number, 5218 ratio: Number, 5219 class: String, 5220 strokeAnimation: Boolean, 5221 focusable: Boolean, // IE 11 5222 attributes: 'list' 5223 }, 5224 5225 data: { 5226 ratio: 1, 5227 include: ['style', 'class', 'focusable'], 5228 class: '', 5229 strokeAnimation: false 5230 }, 5231 5232 beforeConnect: function beforeConnect() { 5233 this.class += ' uk-svg'; 5234 }, 5235 5236 connected: function connected() { 5237 var this$1 = this; 5238 var assign; 5239 5240 if (!this.icon && includes(this.src, '#')) { 5241 assign = this.src.split('#'), this.src = assign[0], this.icon = assign[1]; 5242 } 5243
5244 this.svg = this.getSvg().then(function (el) { 5245 this$1.applyAttributes(el); 5246 return this$1.svgEl = insertSVG(el, this$1.$el); 5247 }, noop); 5248 }, 5249 5250 disconnected: function disconnected() { 5251 var this$1 = this; 5252 5253 if (isVoidElement(this.$el)) { 5254 attr(this.$el, 'hidden', null); 5255 } 5256 5257 if (this.svg) { 5258 this.svg.then(function (svg) { 5259 return (!this$1._connected || svg !== this$1.svgEl) && _remove(svg); 5260 }, noop); 5261 } 5262 5263 this.svg = this.svgEl = null; 5264 }, 5265 5266 update: { 5267 5268 read: function read() { 5269 return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl)); 5270 }, 5271 5272 write: function write() { 5273 applyAnimation(this.svgEl); 5274 }, 5275 5276 type: ['resize'] 5277 5278 }, 5279 5280 methods: { 5281 5282 getSvg: function getSvg() { 5283 var this$1 = this; 5284 5285 return loadSVG(this.src).then(function (svg) { 5286 return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.'); 5287 }); 5288 }, 5289 5290 applyAttributes: function applyAttributes(el) { 5291 var this$1 = this; 5292 5293 for (var prop in this.$options.props) { 5294 if (this[prop] && includes(this.include, prop)) { 5295 attr(el, prop, this[prop]); 5296 } 5297 } 5298 5299 for (var attribute in this.attributes) { 5300 var ref = this.attributes[attribute].split(':', 2); 5301 var prop$1 = ref[0]; 5302 var value = ref[1]; 5303 attr(el, prop$1, value); 5304 } 5305 5306 if (!this.id) { 5307 removeAttr(el, 'id'); 5308 } 5309 5310 var props = ['width', 'height']; 5311 var dimensions = [this.width, this.height]; 5312 5313 if (!dimensions.some(function (val) { 5314 return val; 5315 })) { 5316 dimensions = props.map(function (prop) { 5317 return attr(el, prop); 5318 }); 5319 } 5320 5321 var viewBox = attr(el, 'viewBox'); 5322 if (viewBox && !dimensions.some(function (val) { 5323 return val; 5324 })) { 5325 dimensions = viewBox.split(' ').slice(2); 5326 } 5327 5328 dimensions.forEach(function (val, i) { 5329 val = (val | 0) * this$1.ratio; 5330 val && attr(el, props[i], val); 5331 5332 if (val && !dimensions[i ^ 1]) { 5333 removeAttr(el, props[i ^ 1]); 5334 } 5335 }); 5336
5337 attr(el, 'data-svg', this.icon || this.src); 5338 } 5339 5340 } 5341 5342 }; 5343 5344 var svgs = {}; 5345 5346 function loadSVG(src) { 5347 5348 if (svgs[src]) { 5349 return svgs[src]; 5350 } 5351 5352 return svgs[src] = new Promise(function (resolve, reject) { 5353 5354 if (!src) { 5355 reject(); 5356 return; 5357 } 5358 5359 if (startsWith(src, 'data:')) { 5360 resolve(decodeURIComponent(src.split(',')[1])); 5361 } else { 5362 5363 ajax(src).then(function (xhr) { 5364 return resolve(xhr.response); 5365 }, function () { 5366 return reject('SVG not found.'); 5367 }); 5368 } 5369 }); 5370 } 5371 5372 function parseSVG(svg, icon) { 5373 5374 if (icon && includes(svg, '<symbol')) { 5375 svg = parseSymbols(svg, icon) || svg; 5376 } 5377 5378 svg = $(svg.substr(svg.indexOf('<svg'))); 5379 return svg && svg.hasChildNodes() && svg; 5380 } 5381 5382 var symbolRe = /<symbol([^]*?id=(['"])(.+?)\2[^]*?<\/)symbol>/g; 5383 var symbols = {}; 5384 5385 function parseSymbols(svg, icon) { 5386 5387 if (!symbols[svg]) { 5388 5389 symbols[svg] = {}; 5390 5391 symbolRe.lastIndex = 0; 5392 5393 var match; 5394 while (match = symbolRe.exec(svg)) { 5395 symbols[svg][match[3]] = "<svg xmlns=\"http://www.w3.org/2000/svg\"" + match[1] + "svg>"; 5396 } 5397 } 5398 5399 return symbols[svg][icon]; 5400 } 5401 5402 function applyAnimation(el) { 5403 5404 var length = getMaxPathLength(el); 5405 5406 if (length) { 5407 el.style.setProperty('--uk-animation-stroke', length); 5408 } 5409 } 5410 5411 function getMaxPathLength(el) { 5412 return Math.ceil(Math.max.apply(Math, [0].concat($$('[stroke]', el).map(function (stroke) { 5413 try { 5414 return stroke.getTotalLength(); 5415 } catch (e) { 5416 return 0; 5417 } 5418 })))); 5419 } 5420 5421 function insertSVG(el, root) { 5422 5423 if (isVoidElement(root) || root.tagName === 'CANVAS') { 5424 5425 attr(root, 'hidden', true); 5426 5427 var next = root.nextElementSibling; 5428 return equals(el, next) ? next : after(root, el); 5429 } 5430 5431 var last = root.lastElementChild; 5432 return equals(el, last) ? last : append(root, el); 5433 } 5434 5435 function equals(el, other) { 5436 return attr(el, 'data-svg') === attr(other, 'data-svg'); 5437 } 5438 5439 var closeIcon = "<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>"; 5440 5441 var closeLarge = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>"; 5442 5443 var marker = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>"; 5444 5445 var navbarToggleIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>"; 5446 5447 var overlayIcon = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>"; 5448 5449 var paginationNext = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>"; 5450 5451 var paginationPrevious = "<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>"; 5452 5453 var searchIcon = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>"; 5454 5455 var searchLarge = "<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>"; 5456 5457 var searchNavbar = "<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>"; 5458 5459 var slidenavNext = "<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>"; 5460 5461 var slidenavNextLarge = "<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>"; 5462 5463 var slidenavPrevious = "<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>"; 5464 5465 var slidenavPreviousLarge = "<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>"; 5466 5467 var spinner = "<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>"; 5468 5469 var totop = "<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>"; 5470 5471 var icons = { 5472 spinner: spinner, 5473 totop: totop, 5474 marker: marker, 5475 'close-icon': closeIcon, 5476 'close-large': closeLarge, 5477 'navbar-toggle-icon': navbarToggleIcon, 5478 'overlay-icon': overlayIcon, 5479 'pagination-next': paginationNext, 5480 'pagination-previous': paginationPrevious, 5481 'search-icon': searchIcon, 5482 'search-large': searchLarge, 5483 'search-navbar': searchNavbar, 5484 'slidenav-next': slidenavNext, 5485 'slidenav-next-large': slidenavNextLarge, 5486 'slidenav-previous': slidenavPrevious, 5487 'slidenav-previous-large': slidenavPreviousLarge 5488 }; 5489 5490 var Icon = { 5491 5492 install: install, 5493 5494 extends: SVG, 5495 5496 args: 'icon', 5497 5498 props: ['icon'], 5499 5500 data: { 5501 include: ['focusable'] 5502 }, 5503 5504 isIcon: true, 5505 5506 beforeConnect: function beforeConnect() { 5507 addClass(this.$el, 'uk-icon'); 5508 }, 5509 5510 methods: { 5511 5512 getSvg: function getSvg() { 5513 5514 var icon = getIcon(this.icon); 5515 5516 if (!icon) { 5517 return Promise.reject('Icon not found.'); 5518 } 5519 5520 return Promise.resolve(icon); 5521 } 5522 5523 } 5524 5525 }; 5526 5527 var IconComponent = { 5528 5529 args: false, 5530 5531 extends: Icon, 5532 5533 data: function data(vm) { 5534 return { 5535 icon: hyphenate(vm.constructor.options.name) 5536 }; 5537 }, 5538 5539 beforeConnect: function beforeConnect() { 5540 addClass(this.$el, this.$name); 5541 } 5542 5543 }; 5544 5545 var Slidenav = { 5546 5547 extends: IconComponent, 5548 5549 beforeConnect: function beforeConnect() { 5550 addClass(this.$el, 'uk-slidenav'); 5551 }, 5552 5553 computed: { 5554 5555 icon: function icon(ref, $el) { 5556 var icon = ref.icon; 5557 5558 return hasClass($el, 'uk-slidenav-large') ? icon + "-large" : icon; 5559 } 5560 5561 } 5562 5563 }; 5564 5565 var Search = { 5566 5567 extends: IconComponent, 5568 5569 computed: { 5570 5571 icon: function icon(ref, $el) { 5572 var icon = ref.icon; 5573 5574 return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length ? 'search-large' : parents($el, '.uk-search-navbar').length ? 'search-navbar' : icon; 5575 } 5576 5577 } 5578 5579 }; 5580 5581 var Close = { 5582 5583 extends: IconComponent, 5584 5585 computed: { 5586 5587 icon: function icon() { 5588 return "close-" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'); 5589 } 5590 5591 } 5592 5593 }; 5594 5595 var Spinner = { 5596 5597 extends: IconComponent, 5598 5599 connected: function connected() { 5600 var this$1 = this; 5601 5602 this.svg.then(function (svg) { 5603 return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); 5604 }, noop); 5605 } 5606 5607 }; 5608 5609 var parsed = {}; 5610 function install(UIkit) { 5611 UIkit.icon.add = function (name, svg) { 5612 var obj; 5613 5614 var added = isString(name) ? (obj = {}, obj[name] = svg, obj) : name; 5615 each(added, function (svg, name) { 5616 icons[name] = svg; 5617 delete parsed[name]; 5618 }); 5619 5620 if (UIkit._initialized) { 5621 apply(document.body, function (el) { 5622 return each(UIkit.getComponents(el), function (cmp) { 5623 cmp.$options.isIcon && cmp.icon in added && cmp.$reset(); 5624 }); 5625 }); 5626 } 5627 }; 5628 } 5629 5630 function getIcon(icon) { 5631 5632 if (!icons[icon]) { 5633 return null; 5634 } 5635 5636 if (!parsed[icon]) { 5637 parsed[icon] = $((icons[applyRtl(icon)] || icons[icon]).trim()); 5638 } 5639 5640 return parsed[icon].cloneNode(true); 5641 } 5642 5643 function applyRtl(icon) { 5644 return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon; 5645 } 5646 5647 var img = { 5648 5649 args: 'dataSrc', 5650 5651 props: { 5652 dataSrc: String, 5653 dataSrcset: Boolean, 5654 sizes: String, 5655 width: Number, 5656 height: Number, 5657 offsetTop: String, 5658 offsetLeft: String, 5659 target: String 5660 }, 5661 5662 data: { 5663 dataSrc: '', 5664 dataSrcset: false, 5665 sizes: false, 5666 width: false, 5667 height: false, 5668 offsetTop: '50vh', 5669 offsetLeft: 0, 5670 target: false 5671 }, 5672 5673 computed: { 5674 5675 cacheKey: function cacheKey(ref) { 5676 var dataSrc = ref.dataSrc; 5677 5678 return this.$name + "." + dataSrc; 5679 }, 5680 5681 width: function width(ref) { 5682 var width = ref.width; 5683 var dataWidth = ref.dataWidth; 5684 5685 return width || dataWidth; 5686 }, 5687 5688 height: function height(ref) { 5689 var height = ref.height; 5690 var dataHeight = ref.dataHeight; 5691 5692 return height || dataHeight; 5693 }, 5694 5695 sizes: function sizes(ref) { 5696 var sizes = ref.sizes; 5697 var dataSizes = ref.dataSizes; 5698 5699 return sizes || dataSizes; 5700 }, 5701 5702 isImg: function isImg(_, $el) { 5703 return _isImg($el); 5704 }, 5705 5706 target: { 5707 5708 get: function get$$1(ref) { 5709 var target = ref.target; 5710 5711 return [this.$el].concat(queryAll(target, this.$el)); 5712 }, 5713 5714 watch: function watch() { 5715 this.observe(); 5716 } 5717 5718 }, 5719 5720 offsetTop: function offsetTop(ref) { 5721 var offsetTop = ref.offsetTop; 5722 5723 return toPx(offsetTop, 'height'); 5724 }, 5725 5726 offsetLeft: function offsetLeft(ref) { 5727 var offsetLeft = ref.offsetLeft; 5728 5729 return toPx(offsetLeft, 'width'); 5730 } 5731 5732 }, 5733 5734 connected: function connected() { 5735 5736 if (storage[this.cacheKey]) { 5737 setSrcAttrs(this.$el, storage[this.cacheKey], this.dataSrcset, this.sizes); 5738 } else if (this.isImg && this.width && this.height) { 5739 setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes)); 5740 } 5741 5742 this.observer = new IntersectionObserver(this.load, { 5743 rootMargin: this.offsetTop + "px " + this.offsetLeft + "px" 5744 }); 5745 5746 requestAnimationFrame(this.observe); 5747 }, 5748 5749 disconnected: function disconnected() { 5750 this.observer.disconnect(); 5751 }, 5752 5753 update: { 5754 5755 read: function read(ref) { 5756 var this$1 = this; 5757 var image = ref.image; 5758 5759 if (!image && document.readyState === 'complete') { 5760 this.load(this.observer.takeRecords()); 5761 } 5762 5763 if (this.isImg) { 5764 return false;
5765 } 5766 5767 image && image.then(function (img) { 5768 return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img)); 5769 }); 5770 }, 5771 5772 write: function write(data) { 5773 5774 if (this.dataSrcset && window.devicePixelRatio !== 1) { 5775 5776 var bgSize = css(this.$el, 'backgroundSize'); 5777 if (bgSize.match(/^(auto\s?)+$/) || toFloat(bgSize) === data.bgSize) { 5778 data.bgSize = getSourceSize(this.dataSrcset, this.sizes); 5779 css(this.$el, 'backgroundSize', data.bgSize + "px"); 5780 } 5781 } 5782 }, 5783 5784 events: ['resize'] 5785 5786 }, 5787 5788 methods: { 5789 5790 load: function load(entries) { 5791 var this$1 = this; 5792 5793 // Old chromium based browsers (UC Browser) did not implement `isIntersecting` 5794 if (!entries.some(function (entry) { 5795 return isUndefined(entry.isIntersecting) || entry.isIntersecting; 5796 })) { 5797 return; 5798 } 5799 5800 this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) { 5801 5802 setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes); 5803 storage[this$1.cacheKey] = currentSrc(img); 5804 return img; 5805 }, function (e) { 5806 return trigger(this$1.$el, new e.constructor(e.type, e)); 5807 }); 5808 5809 this.observer.disconnect(); 5810 }, 5811 5812 observe: function observe() { 5813 var this$1 = this; 5814 5815 if (this._connected && !this._data.image) { 5816 this.target.forEach(function (el) { 5817 return this$1.observer.observe(el); 5818 }); 5819 } 5820 } 5821 5822 } 5823 5824 }; 5825 5826 function setSrcAttrs(el, src, srcset, sizes) { 5827 5828 if (_isImg(el)) { 5829 sizes && (el.sizes = sizes); 5830 srcset && (el.srcset = srcset); 5831 src && (el.src = src); 5832 } else if (src) { 5833 5834 var change = !includes(el.style.backgroundImage, src); 5835 if (change) { 5836 css(el, 'backgroundImage', "url(" + escape(src) + ")"); 5837 trigger(el, createEvent('load', false)); 5838 } 5839 } 5840 } 5841 5842 function getPlaceholderImage(width, height, sizes) { 5843 var assign; 5844 5845 if (sizes) { 5846 assign = Dimensions.ratio({ width: width, height: height }, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height; 5847 } 5848 5849 return "data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"" + width + "\" height=\"" + height + "\"></svg>"; 5850 } 5851 5852 var sizesRe = /\s*(.*?)\s*(\w+|calc\(.*?\))\s*(?:,|$)/g; 5853 function sizesToPixel(sizes) { 5854 var matches; 5855 5856 sizesRe.lastIndex = 0; 5857 5858 while (matches = sizesRe.exec(sizes)) { 5859 if (!matches[1] || window.matchMedia(matches[1]).matches) { 5860 matches = evaluateSize(matches[2]); 5861 break; 5862 } 5863 } 5864 5865 return matches || '100vw'; 5866 } 5867 5868 var sizeRe = /\d+(?:\w+|%)/g; 5869 var additionRe = /[+-]?(\d+)/g; 5870 function evaluateSize(size) { 5871 return startsWith(size, 'calc') ? size.substring(5, size.length - 1).replace(sizeRe, function (size) { 5872 return toPx(size); 5873 }).replace(/ /g, '').match(additionRe).reduce(function (a, b) { 5874 return a + +b; 5875 }, 0) : size; 5876 } 5877 5878 var srcSetRe = /\s+\d+w\s*(?:,|$)/g; 5879 function getSourceSize(srcset, sizes) { 5880 var srcSize = toPx(sizesToPixel(sizes)); 5881 var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) { 5882 return a - b; 5883 }); 5884 5885 return descriptors.filter(function (size) { 5886 return size >= srcSize; 5887 })[0] || descriptors.pop() || ''; 5888 } 5889 5890 function _isImg(el) { 5891 return el.tagName === 'IMG'; 5892 } 5893 5894 function currentSrc(el) { 5895 return el.currentSrc || el.src; 5896 } 5897 5898 var key = '__test__'; 5899 var storage; 5900 5901 // workaround for Safari's private browsing mode and accessing sessionStorage in Blink 5902 try { 5903 storage = window.sessionStorage || {}; 5904 storage[key] = 1; 5905 delete storage[key]; 5906 } catch (e) { 5907 storage = {}; 5908 } 5909 5910 var Media = { 5911 5912 props: { 5913 media: Boolean 5914 }, 5915 5916 data: { 5917 media: false 5918 }, 5919 5920 computed: { 5921 5922 matchMedia: function matchMedia() { 5923 var media = toMedia(this.media); 5924 return !media || window.matchMedia(media).matches; 5925 } 5926 5927 } 5928 5929 }; 5930 5931 function toMedia(value) { 5932 5933 if (isString(value)) { 5934 if (value[0] === '@') { 5935 var name = "breakpoint-" + value.substr(1); 5936 value = toFloat(getCssVar(name)); 5937 } else if (isNaN(value)) { 5938 return value; 5939 } 5940 } 5941 5942 return value && !isNaN(value) ? "(min-width: " + value + "px)" : false;
5943 } 5944 5945 var leader = { 5946 5947 mixins: [Class, Media], 5948 5949 props: { 5950 fill: String 5951 }, 5952 5953 data: { 5954 fill: '', 5955 clsWrapper: 'uk-leader-fill', 5956 clsHide: 'uk-leader-hide', 5957 attrFill: 'data-fill' 5958 }, 5959 5960 computed: { 5961 5962 fill: function fill(ref) { 5963 var fill = ref.fill; 5964 5965 return fill || getCssVar('leader-fill-content'); 5966 } 5967 5968 }, 5969 5970 connected: function connected() { 5971 var assign; 5972 5973 assign = wrapInner(this.$el, "<span class=\"" + this.clsWrapper + "\">"), this.wrapper = assign[0]; 5974 }, 5975 5976 disconnected: function disconnected() { 5977 unwrap(this.wrapper.childNodes); 5978 }, 5979 5980 update: { 5981 5982 read: function read(ref) { 5983 var changed = ref.changed; 5984 var width = ref.width; 5985 5986 var prev = width; 5987 5988 width = Math.floor(this.$el.offsetWidth / 2); 5989 5990 return { 5991 width: width, 5992 fill: this.fill, 5993 changed: changed || prev !== width, 5994 hide: !this.matchMedia 5995 }; 5996 }, 5997 5998 write: function write(data) { 5999 6000 toggleClass(this.wrapper, this.clsHide, data.hide); 6001 6002 if (data.changed) { 6003 data.changed = false; 6004 attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill)); 6005 } 6006 }, 6007 6008 events: ['resize'] 6009 6010 } 6011 6012 }; 6013 6014 var Container = { 6015 6016 props: { 6017 container: Boolean 6018 }, 6019 6020 data: { 6021 container: true 6022 }, 6023 6024 computed: { 6025 6026 container: function container(ref) { 6027 var container = ref.container; 6028 6029 return container === true && this.$container || container && $(container); 6030 } 6031 6032 } 6033 6034 }; 6035 6036 var active$1 = []; 6037 6038 var Modal = { 6039 6040 mixins: [Class, Container, Togglable], 6041 6042 props: { 6043 selPanel: String, 6044 selClose: String, 6045 escClose: Boolean, 6046 bgClose: Boolean, 6047 stack: Boolean 6048 }, 6049 6050 data: { 6051 cls: 'uk-open', 6052 escClose: true, 6053 bgClose: true, 6054 overlay: true, 6055 stack: false 6056 }, 6057 6058 computed: { 6059 6060 panel: function panel(ref, $el) { 6061 var selPanel = ref.selPanel; 6062 6063 return $(selPanel, $el); 6064 }, 6065 6066 transitionElement: function transitionElement() { 6067 return this.panel; 6068 }, 6069 6070 bgClose: function bgClose(ref) { 6071 var bgClose = ref.bgClose; 6072 6073 return bgClose && this.panel; 6074 } 6075 6076 }, 6077 6078 beforeDisconnect: function beforeDisconnect() { 6079 if (this.isToggled()) { 6080 this.toggleElement(this.$el, false, false); 6081 } 6082 }, 6083 6084 events: [{ 6085 6086 name: 'click', 6087 6088 delegate: function delegate() { 6089 return this.selClose; 6090 }, 6091 6092 handler: function handler(e) { 6093 e.preventDefault(); 6094 this.hide(); 6095 } 6096 6097 }, { 6098 6099 name: 'toggle', 6100 6101 self: true, 6102 6103 handler: function handler(e) { 6104 6105 if (e.defaultPrevented) { 6106 return; 6107 } 6108 6109 e.preventDefault(); 6110 6111 if (this.isToggled() === includes(active$1, this)) { 6112 this.toggle(); 6113 } 6114 } 6115 6116 }, { 6117 name: 'beforeshow', 6118 6119 self: true, 6120 6121 handler: function handler(e) { 6122 6123 if (includes(active$1, this)) { 6124 return false; 6125 } 6126 6127 if (!this.stack && active$1.length) { 6128 Promise.all(active$1.map(function (modal) { 6129 return modal.hide(); 6130 })).then(this.show); 6131 e.preventDefault(); 6132 } else { 6133 active$1.push(this); 6134 } 6135 } 6136 6137 }, { 6138 6139 name: 'show', 6140 6141 self: true, 6142 6143 handler: function handler() { 6144 var this$1 = this; 6145 6146 if (width(window) - width(document) && this.overlay) { 6147 css(document.body, 'overflowY', 'scroll'); 6148 } 6149 6150 if (this.stack) { 6151 css(this.$el, 'zIndex', toFloat(css(this.$el, 'zIndex')) + active$1.length); 6152 } 6153 6154 addClass(document.documentElement, this.clsPage); 6155 6156 if (this.bgClose) { 6157 once(this.$el, 'hide', on(document, pointerDown, function (ref) { 6158 var target = ref.target; 6159 6160 if (last(active$1) !== this$1 || this$1.overlay && !within(target, this$1.$el) || within(target, this$1.panel)) { 6161 return; 6162 } 6163 6164 once(document, pointerUp + " " + pointerCancel + " scroll", function (ref) { 6165 var defaultPrevented = ref.defaultPrevented; 6166 var type = ref.type; 6167 var newTarget = ref.target; 6168 6169 if (!defaultPrevented && type === pointerUp && target === newTarget) { 6170 this$1.hide(); 6171 } 6172 }, true); 6173 }), { self: true }); 6174 } 6175 6176 if (this.escClose) { 6177 once(this.$el, 'hide', on(document, 'keydown', function (e) { 6178 if (e.keyCode === 27 && last(active$1) === this$1) { 6179 e.preventDefault(); 6180 this$1.hide(); 6181 } 6182 }), { self: true }); 6183 } 6184 } 6185 6186 }, { 6187 6188 name: 'hidden', 6189 6190 self: true, 6191 6192 handler: function handler() { 6193 var this$1 = this; 6194 6195 active$1.splice(active$1.indexOf(this), 1); 6196 6197 if (!active$1.length) { 6198 css(document.body, 'overflowY', ''); 6199 } 6200 6201 css(this.$el, 'zIndex', ''); 6202 6203 if (!active$1.some(function (modal) { 6204 return modal.clsPage === this$1.clsPage; 6205 })) { 6206 removeClass(document.documentElement, this.clsPage); 6207 } 6208 } 6209 6210 }], 6211 6212 methods: { 6213
6214 toggle: function toggle() { 6215 return this.isToggled() ? this.hide() : this.show(); 6216 }, 6217 6218 show: function show() { 6219 var this$1 = this; 6220 6221 if (this.container && this.$el.parentNode !== this.container) { 6222 append(this.container, this.$el); 6223 return new Promise(function (resolve) { 6224 return requestAnimationFrame(function () { 6225 return this$1.show().then(resolve); 6226 }); 6227 }); 6228 } 6229 6230 return this.toggleElement(this.$el, true, animate$1(this)); 6231 }, 6232 6233 hide: function hide() { 6234 return this.toggleElement(this.$el, false, animate$1(this)); 6235 } 6236 6237 } 6238 6239 }; 6240 6241 function animate$1(ref) { 6242 var transitionElement = ref.transitionElement; 6243 var _toggle = ref._toggle; 6244 6245 return function (el, show) { 6246 return new Promise(function (resolve, reject) { 6247 return once(el, 'show hide', function () { 6248 el._reject && el._reject(); 6249 el._reject = reject; 6250 6251 _toggle(el, show); 6252 6253 var off = once(transitionElement, 'transitionstart', function () { 6254 once(transitionElement, 'transitionend transitioncancel', resolve, { self: true }); 6255 clearTimeout(timer); 6256 }, { self: true }); 6257 6258 var timer = setTimeout(function () { 6259 off(); 6260 resolve(); 6261 }, toMs(css(transitionElement, 'transitionDuration'))); 6262 }); 6263 }); 6264 }; 6265 } 6266 6267 var modal = { 6268 6269 install: install$1, 6270 6271 mixins: [Modal], 6272 6273 data: { 6274 clsPage: 'uk-modal-page', 6275 selPanel: '.uk-modal-dialog', 6276 selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full' 6277 }, 6278 6279 events: [{ 6280 name: 'show', 6281 6282 self: true, 6283 6284 handler: function handler() { 6285 6286 if (hasClass(this.panel, 'uk-margin-auto-vertical')) { 6287 addClass(this.$el, 'uk-flex'); 6288 } else { 6289 css(this.$el, 'display', 'block'); 6290 } 6291 6292 height(this.$el); // force reflow 6293 } 6294 }, { 6295 name: 'hidden', 6296 6297 self: true, 6298 6299 handler: function handler() { 6300 6301 css(this.$el, 'display', ''); 6302 removeClass(this.$el, 'uk-flex'); 6303 } 6304 }] 6305 6306 }; 6307 6308 function install$1(ref) { 6309 var modal = ref.modal; 6310 6311 modal.dialog = function (content, options) { 6312 6313 var dialog = modal("<div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">" + content + "</div> </div>", options); 6314 6315 dialog.show(); 6316 6317 on(dialog.$el, 'hidden', function () { 6318 return Promise.resolve().then(function () { 6319 return dialog.$destroy(true); 6320 }); 6321 }, { self: true }); 6322 6323 return dialog; 6324 }; 6325 6326 modal.alert = function (message, options) { 6327 return openDialog(function (ref) { 6328 var labels = ref.labels; 6329 6330 return "<div class=\"uk-modal-body\">" + (isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>" + labels.ok + "</button> </div>"; 6331 }, options, function (deferred) { 6332 return deferred.resolve(); 6333 }); 6334 }; 6335 6336 modal.confirm = function (message, options) { 6337 return openDialog(function (ref) { 6338 var labels = ref.labels; 6339 6340 return "<form> <div class=\"uk-modal-body\">" + (isString(message) ? message : html(message)) + "</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + labels.cancel + "</button> <button class=\"uk-button uk-button-primary\" autofocus>" + labels.ok + "</button> </div> </form>"; 6341 }, options, function (deferred) { 6342 return deferred.reject(); 6343 }); 6344 }; 6345 6346 modal.prompt = function (message, value, options) { 6347 return openDialog(function (ref) { 6348 var labels = ref.labels; 6349 6350 return "<form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>" + (isString(message) ? message : html(message)) + "</label> <input class=\"uk-input\" value=\"" + (value || '') + "\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">" + labels.cancel + "</button> <button class=\"uk-button uk-button-primary\">" + labels.ok + "</button> </div> </form>"; 6351 }, options, function (deferred) { 6352 return deferred.resolve(null); 6353 }, function (dialog) { 6354 return $('input', dialog.$el).value; 6355 }); 6356 }; 6357 6358 modal.labels = { 6359 ok: 'Ok', 6360 cancel: 'Cancel' 6361 }; 6362 6363 function openDialog(tmpl, options, hideFn, submitFn) { 6364 6365 options = assign({ bgClose: false, escClose: true, labels: modal.labels }, options); 6366 6367 var dialog = modal.dialog(tmpl(options), options); 6368 var deferred = new Deferred(); 6369 6370 var resolved = false;
6371 6372 on(dialog.$el, 'submit', 'form', function (e) { 6373 e.preventDefault(); 6374 deferred.resolve(submitFn && submitFn(dialog)); 6375 resolved = true; 6376 dialog.hide(); 6377 }); 6378 6379 on(dialog.$el, 'hide', function () { 6380 return !resolved && hideFn(deferred); 6381 }); 6382 6383 deferred.promise.dialog = dialog; 6384 6385 return deferred.promise; 6386 } 6387 } 6388 6389 var nav = { 6390 6391 extends: Accordion, 6392 6393 data: { 6394 targets: '> .uk-parent', 6395 toggle: '> a', 6396 content: '> ul' 6397 } 6398 6399 }; 6400 6401 var navbar = { 6402 6403 mixins: [Class, FlexBug], 6404 6405 props: { 6406 dropdown: String, 6407 mode: 'list', 6408 align: String, 6409 offset: Number, 6410 boundary: Boolean, 6411 boundaryAlign: Boolean, 6412 clsDrop: String, 6413 delayShow: Number, 6414 delayHide: Number, 6415 dropbar: Boolean, 6416 dropbarMode: String, 6417 dropbarAnchor: Boolean, 6418 duration: Number 6419 }, 6420 6421 data: { 6422 dropdown: '.uk-navbar-nav > li', 6423 align: !isRtl ? 'left' : 'right', 6424 clsDrop: 'uk-navbar-dropdown', 6425 mode: undefined, 6426 offset: undefined, 6427 delayShow: undefined, 6428 delayHide: undefined, 6429 boundaryAlign: undefined, 6430 flip: 'x', 6431 boundary: true, 6432 dropbar: false, 6433 dropbarMode: 'slide', 6434 dropbarAnchor: false, 6435 duration: 200, 6436 forceHeight: true, 6437 selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle' 6438 }, 6439 6440 computed: { 6441 6442 boundary: function boundary(ref, $el) { 6443 var boundary = ref.boundary; 6444 var boundaryAlign = ref.boundaryAlign; 6445 6446 return boundary === true || boundaryAlign ? $el : boundary; 6447 }, 6448 6449 dropbarAnchor: function dropbarAnchor(ref, $el) { 6450 var dropbarAnchor = ref.dropbarAnchor; 6451 6452 return query(dropbarAnchor, $el); 6453 }, 6454 6455 pos: function pos(ref) { 6456 var align = ref.align; 6457 6458 return "bottom-" + align; 6459 }, 6460 6461 dropbar: { 6462 6463 get: function get$$1(ref) { 6464 var dropbar = ref.dropbar; 6465 6466 if (!dropbar) { 6467 return null; 6468 } 6469 6470 dropbar = this._dropbar || query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el); 6471 6472 return dropbar ? dropbar : this._dropbar = $('<div></div>'); 6473 }, 6474 6475 watch: function watch(dropbar) { 6476 addClass(dropbar, 'uk-navbar-dropbar'); 6477 }, 6478 6479 immediate: true 6480 6481 }, 6482 6483 dropdowns: { 6484 6485 get: function get$$1(ref, $el) { 6486 var dropdown = ref.dropdown; 6487 var clsDrop = ref.clsDrop; 6488 6489 return $$(dropdown + " ." + clsDrop, $el); 6490 }, 6491 6492 watch: function watch(dropdowns) { 6493 var this$1 = this; 6494 6495 this.$create('drop', dropdowns.filter(function (el) { 6496 return !this$1.getDropdown(el); 6497 }), assign({}, this.$props, { boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset })); 6498 }, 6499 6500 immediate: true 6501 6502 } 6503 6504 }, 6505 6506 disconnected: function disconnected() { 6507 this.dropbar && _remove(this.dropbar); 6508 delete this._dropbar; 6509 }, 6510 6511 events: [{ 6512 name: 'mouseover', 6513 6514 delegate: function delegate() { 6515 return this.dropdown; 6516 }, 6517 6518 handler: function handler(ref) { 6519 var current = ref.current; 6520 6521 var active = this.getActive(); 6522 if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) { 6523 active.hide(false); 6524 } 6525 } 6526 6527 }, { 6528 name: 'mouseleave', 6529 6530 el: function el() { 6531 return this.dropbar; 6532 }, 6533 6534 handler: function handler() { 6535 var active = this.getActive(); 6536 6537 if (active && !this.dropdowns.some(function (el) { 6538 return matches(el, ':hover'); 6539 })) { 6540 active.hide(); 6541 } 6542 } 6543 }, { 6544 name: 'beforeshow', 6545 6546 capture: true, 6547 6548 filter: function filter() { 6549 return this.dropbar; 6550 }, 6551 6552 handler: function handler() { 6553 6554 if (!this.dropbar.parentNode) { 6555 after(this.dropbarAnchor || this.$el, this.dropbar); 6556 } 6557 } 6558 }, { 6559 name: 'show', 6560 6561 filter: function filter() { 6562 return this.dropbar; 6563 }, 6564 6565 handler: function handler(_, ref) { 6566 var $el = ref.$el; 6567 var dir = ref.dir; 6568 6569 if (this.dropbarMode === 'slide') { 6570 addClass(this.dropbar, 'uk-navbar-dropbar-slide'); 6571 } 6572 6573 this.clsDrop && addClass($el, this.clsDrop + "-dropbar"); 6574 6575 if (dir === 'bottom') { 6576 this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el); 6577 } 6578 } 6579 }, { 6580 name: 'beforehide', 6581 6582 filter: function filter() { 6583 return this.dropbar; 6584 }, 6585 6586 handler: function handler(e, ref) { 6587 var $el = ref.$el; 6588 6589 var active = this.getActive(); 6590 6591 if (matches(this.dropbar, ':hover') && active && active.$el === $el) { 6592 e.preventDefault(); 6593 } 6594 } 6595 }, { 6596 name: 'hide', 6597 6598 filter: function filter() { 6599 return this.dropbar; 6600 }, 6601 6602 handler: function handler(_, ref) { 6603 var $el = ref.$el; 6604 6605 var active = this.getActive(); 6606 6607 if (!active || active && active.$el === $el) { 6608 this.transitionTo(0); 6609 } 6610 } 6611 }], 6612 6613 methods: { 6614 6615 getActive: function getActive() { 6616 var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { 6617 return drop && drop.isActive(); 6618 }); 6619 var active = ref[0]; 6620 return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active; 6621 }, 6622 6623 transitionTo: function transitionTo(newHeight, el) { 6624 var this$1 = this; 6625 6626 var ref = this; 6627 var dropbar = ref.dropbar; 6628 var oldHeight = isVisible(dropbar) ? height(dropbar) : 0; 6629 6630 el = oldHeight < newHeight && el; 6631 6632 css(el, 'clip', "rect(0," + el.offsetWidth + "px," + oldHeight + "px,0
6632)"); 6633 6634 height(dropbar, oldHeight); 6635 6636 Transition.cancel([el, dropbar]); 6637 return Promise.all([Transition.start(dropbar, { height: newHeight }, this.duration), Transition.start(el, { clip: "rect(0," + el.offsetWidth + "px," + newHeight + "px,0)" }, this.duration)]).catch(noop).then(function () { 6638 css(el, { clip: '' }); 6639 this$1.$update(dropbar); 6640 }); 6641 }, 6642 6643 getDropdown: function getDropdown(el) { 6644 return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown'); 6645 } 6646 6647 } 6648 6649 }; 6650 6651 var offcanvas = { 6652 6653 mixins: [Modal], 6654 6655 args: 'mode', 6656 6657 props: { 6658 mode: String, 6659 flip: Boolean, 6660 overlay: Boolean 6661 }, 6662 6663 data: { 6664 mode: 'slide', 6665 flip: false, 6666 overlay: false, 6667 clsPage: 'uk-offcanvas-page', 6668 clsContainer: 'uk-offcanvas-container', 6669 selPanel: '.uk-offcanvas-bar', 6670 clsFlip: 'uk-offcanvas-flip', 6671 clsContainerAnimation: 'uk-offcanvas-container-animation', 6672 clsSidebarAnimation: 'uk-offcanvas-bar-animation', 6673 clsMode: 'uk-offcanvas', 6674 clsOverlay: 'uk-offcanvas-overlay', 6675 selClose: '.uk-offcanvas-close', 6676 container: false 6677 }, 6678 6679 computed: { 6680 6681 clsFlip: function clsFlip(ref) { 6682 var flip = ref.flip; 6683 var clsFlip = ref.clsFlip; 6684 6685 return flip ? clsFlip : ''; 6686 }, 6687 6688 clsOverlay: function clsOverlay(ref) { 6689 var overlay = ref.overlay; 6690 var clsOverlay = ref.clsOverlay; 6691 6692 return overlay ? clsOverlay : ''; 6693 }, 6694 6695 clsMode: function clsMode(ref) { 6696 var mode = ref.mode; 6697 var clsMode = ref.clsMode; 6698 6699 return clsMode + "-" + mode; 6700 }, 6701 6702 clsSidebarAnimation: function clsSidebarAnimation(ref) { 6703 var mode = ref.mode; 6704 var clsSidebarAnimation = ref.clsSidebarAnimation; 6705 6706 return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation; 6707 }, 6708 6709 clsContainerAnimation: function clsContainerAnimation(ref) { 6710 var mode = ref.mode; 6711 var clsContainerAnimation = ref.clsContainerAnimation; 6712 6713 return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation; 6714 }, 6715 6716 transitionElement: function transitionElement(ref) { 6717 var mode = ref.mode; 6718 6719 return mode === 'reveal' ? this.panel.parentNode : this.panel; 6720 } 6721 6722 }, 6723 6724 events: [{ 6725 6726 name: 'click', 6727 6728 delegate: function delegate() { 6729 return 'a[href^="#"]'; 6730 }, 6731 6732 handler: function handler(ref) { 6733 var hash = ref.current.hash; 6734 var defaultPrevented = ref.defaultPrevented; 6735 6736 if (!defaultPrevented && hash && $(hash, document.body)) { 6737 this.hide(); 6738 } 6739 } 6740 6741 }, { 6742 name: 'touchstart', 6743 6744 passive: true, 6745 6746 el: function el() { 6747 return this.panel; 6748 }, 6749 6750 handler: function handler(ref) { 6751 var targetTouches = ref.targetTouches; 6752 6753 if (targetTouches.length === 1) { 6754 this.clientY = targetTouches[0].clientY; 6755 } 6756 } 6757 6758 }, { 6759 name: 'touchmove', 6760 6761 self: true, 6762 passive: false, 6763 6764 filter: function filter() { 6765 return this.overlay; 6766 }, 6767 6768 handler: function handler(e) { 6769 e.cancelable && e.preventDefault(); 6770 } 6771 6772 }, { 6773 name: 'touchmove', 6774 6775 passive: false, 6776 6777 el: function el() { 6778 return this.panel; 6779 }, 6780 6781 handler: function handler(e) { 6782 6783 if (e.targetTouches.length !== 1) { 6784 return; 6785 } 6786 6787 var clientY = event.targetTouches[0].clientY - this.clientY; 6788 var ref = this.panel; 6789 var scrollTop = ref.scrollTop; 6790 var scrollHeight = ref.scrollHeight; 6791 var clientHeight = ref.clientHeight; 6792 6793 if (clientHeight >= scrollHeight || scrollTop === 0 && clientY > 0 || scrollHeight - scrollTop <= clientHeight && clientY < 0) { 6794 e.cancelable && e.preventDefault(); 6795 } 6796 } 6797 6798 }, { 6799 name: 'show', 6800 6801 self: true, 6802 6803 handler: function handler() { 6804 6805 if (this.mode === 'reveal' && !hasClass(this.panel.parentNode, this.clsMode)) { 6806 wrapAll(this.panel, '<div>'); 6807 addClass(this.panel.parentNode, this.clsMode); 6808 } 6809 6810 css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : ''); 6811 addClass(document.body, this.clsContainer, this.clsFlip); 6812 css(document.body, 'touch-action', 'pan-y pinch-zoom'); 6813 css(this.$el, 'display', 'block'); 6814 addClass(this.$el, this.clsOverlay); 6815 addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : ''); 6816 6817 height(document.body); // force reflow 6818 addClass(document.body, this.clsContainerAnimation); 6819 6820 this.clsContainerAnimation && suppressUserScale(); 6821 } 6822 }, { 6823 name: 'hide', 6824 6825 self: true, 6826 6827 handler: function handler() { 6828 removeClass(document.body, this.clsContainerAnimation); 6829 css(document.body, 'touch-action', ''); 6830 } 6831 }, { 6832 name: 'hidden', 6833 6834 self: true, 6835 6836 handler: function handler() { 6837 6838 this.clsContainerAnimation && resumeUserScale(); 6839 6840 if (this.mode === 'reveal') { 6841 unwrap(this.panel); 6842 } 6843 6844 removeClass(this.panel, this.clsSidebarAnimation, this.clsMode); 6845 removeClass(this.$el, this.clsOverlay); 6846 css(this.$el, 'display', ''); 6847 removeClass(document.body, this.clsContainer, this.clsFlip); 6848 6849 css(document.documentElement, 'overflowY', ''); 6850 } 6851 }, { 6852 name: 'swipeLeft swipeRight', 6853 6854 handler: function handler(e) { 6855 6856 if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) { 6857 this.hide(); 6858 } 6859 } 6860 }] 6861 6862 }; 6863 6864 // Chrome in responsive mode zooms page upon opening offcanvas 6865 function suppressUserScale() { 6866 getViewport$1().content += ',user-scalable=0'; 6867 } 6868 6869 function resumeUserScale() { 6870 var viewport = getViewport$1(); 6871 viewport.content = viewport.content.replace(/,user-scalable=0$/, ''); 6872 } 6873 6874 function getViewport$1() { 6875 return $('meta[name="viewport"]', document.head) || append(document.head, '<meta name="viewport">'); 6876 } 6877 6878 var overflowAuto = { 6879 6880 mixins: [Class], 6881 6882 props: { 6883 selContainer: String, 6884 selContent: String 6885 }, 6886 6887 data: { 6888 selContainer: '.uk-modal', 6889 selContent: '.uk-modal-dialog' 6890 }, 6891 6892 computed: { 6893 6894 container: function container(ref, $el) { 6895 var selContainer = ref.selContainer; 6896 6897 return closest($el, selContainer); 6898 }, 6899 6900 content: function content(ref, $el) { 6901 var selContent = ref.selContent; 6902 6903 return closest($el, selContent); 6904 } 6905 6906 }, 6907 6908 connected: function connected() { 6909 css(this.$el, 'minHeight', 150); 6910 }, 6911 6912 update: { 6913 6914 read: function read() { 6915 6916 if (!this.content || !this.container) { 6917 return false;
6918 } 6919 6920 return { 6921 current: toFloat(css(this.$el, 'maxHeight')), 6922 max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el))) 6923 }; 6924 }, 6925 6926 write: function write(ref) { 6927 var current = ref.current; 6928 var max = ref.max; 6929 6930 css(this.$el, 'maxHeight', max); 6931 if (Math.round(current) !== Math.round(max)) { 6932 trigger(this.$el, 'resize'); 6933 } 6934 }, 6935 6936 events: ['resize'] 6937 6938 } 6939 6940 }; 6941 6942 var responsive = { 6943 6944 props: ['width', 'height'], 6945 6946 connected: function connected() { 6947 addClass(this.$el, 'uk-responsive-width'); 6948 }, 6949 6950 update: { 6951 6952 read: function read() { 6953 return isVisible(this.$el) && this.width && this.height ? { width: width(this.$el.parentNode), height: this.height } : false; 6954 }, 6955 6956 write: function write(dim) { 6957 height(this.$el, Dimensions.contain({ 6958 height: this.height, 6959 width: this.width 6960 }, dim).height); 6961 }, 6962 6963 events: ['resize'] 6964 6965 } 6966 6967 }; 6968 6969 var scroll = { 6970 6971 props: { 6972 offset: Number 6973 }, 6974 6975 data: { 6976 offset: 0 6977 }, 6978 6979 methods: { 6980 6981 scrollTo: function scrollTo(el) { 6982 var this$1 = this; 6983 6984 el = el && $(el) || document.body; 6985 6986 if (trigger(this.$el, 'beforescroll', [this, el])) { 6987 scrollIntoView(el, { offset: this.offset }).then(function () { 6988 return trigger(this$1.$el, 'scrolled', [this$1, el]); 6989 }); 6990 } 6991 } 6992 6993 }, 6994 6995 events: { 6996 6997 click: function click(e) { 6998 6999 if (e.defaultPrevented) { 7000 return; 7001 } 7002 7003 e.preventDefault(); 7004 this.scrollTo(escape(decodeURIComponent(this.$el.hash)).substr(1)); 7005 } 7006 7007 } 7008 7009 }; 7010 7011 var stateKey$1 = '_ukScrollspy'; 7012 var scrollspy = { 7013 7014 args: 'cls', 7015 7016 props: { 7017 cls: String, 7018 target: String, 7019 hidden: Boolean, 7020 offsetTop: Number, 7021 offsetLeft: Number, 7022 repeat: Boolean, 7023 delay: Number 7024 }, 7025 7026 data: function data() { 7027 return { 7028 cls: false, 7029 target: false, 7030 hidden: true, 7031 offsetTop: 0, 7032 offsetLeft: 0, 7033 repeat: false, 7034 delay: 0, 7035 inViewClass: 'uk-scrollspy-inview' 7036 }; 7037 }, 7038 7039 computed: { 7040 7041 elements: { 7042 7043 get: function get$$1(ref, $el) { 7044 var target = ref.target; 7045 7046 return target ? $$(target, $el) : [$el]; 7047 }, 7048 7049 watch: function watch(elements) { 7050 if (this.hidden) { 7051 css(filter(elements, ":not(." + this.inViewClass + ")"), 'visibility', 'hidden'); 7052 } 7053 }, 7054 7055 immediate: true 7056 7057 } 7058 7059 }, 7060 7061 update: [{ 7062 7063 read: function read(ref) { 7064 var this$1 = this; 7065 var update = ref.update; 7066 7067 if (!update) { 7068 return; 7069 } 7070 7071 this.elements.forEach(function (el) { 7072 7073 if (!el[stateKey$1]) { 7074 el[stateKey$1] = { cls: data(el, 'uk-scrollspy-class') || this$1.cls }; 7075 } 7076 7077 el[stateKey$1].show = isInView(el, this$1.offsetTop, this$1.offsetLeft); 7078 }); 7079 }, 7080 7081 write: function write(data) { 7082 var this$1 = this; 7083 7084 // Let child components be applied at least once first 7085 if (!data.update) { 7086 this.$emit(); 7087 return data.update = true; 7088 } 7089 7090 this.elements.forEach(function (el) { 7091 7092 var state = el[stateKey$1]; 7093 var toggle = function toggle(inview) { 7094 7095 css(el, 'visibility', !inview && this$1.hidden ? 'hidden' : ''); 7096 7097 toggleClass(el, this$1.inViewClass, inview); 7098 toggleClass(el, state.cls); 7099 7100 trigger(el, inview ? 'inview' : 'outview'); 7101 7102 state.inview = inview; 7103 7104 this$1.$update(el); 7105 }; 7106 7107 if (state.show && !state.inview && !state.queued) { 7108 7109 state.queued = true; 7110 7111 data.promise = (data.promise || Promise.resolve()).then(function () { 7112 return new Promise(function (resolve) { 7113 return setTimeout(resolve, this$1.delay); 7114 }); 7115 }).then(function () { 7116 toggle(true); 7117 setTimeout(function () { 7118 state.queued = false;
7119 this$1.$emit(); 7120 }, 300); 7121 }); 7122 } else if (!state.show && state.inview && !state.queued && this$1.repeat) { 7123 7124 toggle(false); 7125 } 7126 }); 7127 }, 7128 7129 events: ['scroll', 'resize'] 7130 7131 }] 7132 7133 }; 7134 7135 var scrollspyNav = { 7136 7137 props: { 7138 cls: String, 7139 closest: String, 7140 scroll: Boolean, 7141 overflow: Boolean, 7142 offset: Number 7143 }, 7144 7145 data: { 7146 cls: 'uk-active', 7147 closest: false, 7148 scroll: false, 7149 overflow: true, 7150 offset: 0 7151 }, 7152 7153 computed: { 7154 7155 links: { 7156 7157 get: function get$$1(_, $el) { 7158 return $$('a[href^="#"]', $el).filter(function (el) { 7159 return el.hash; 7160 }); 7161 }, 7162 7163 watch: function watch(links) { 7164 if (this.scroll) { 7165 this.$create('scroll', links, { offset: this.offset || 0 }); 7166 } 7167 }, 7168 7169 immediate: true 7170 7171 }, 7172 7173 targets: function targets() { 7174 return $$(this.links.map(function (el) { 7175 return escape(el.hash).substr(1); 7176 }).join(',')); 7177 }, 7178 7179 elements: function elements(ref) { 7180 var selector = ref.closest; 7181 7182 return closest(this.links, selector || '*'); 7183 } 7184 7185 }, 7186 7187 update: [{ 7188 7189 read: function read() { 7190 var this$1 = this; 7191 7192 var ref = this.targets; 7193 var length = ref.length; 7194 7195 if (!length || !isVisible(this.$el)) { 7196 return false; 7197 } 7198 7199 var scrollElement = last(scrollParents(this.targets[0])); 7200 var scrollTop = scrollElement.scrollTop; 7201 var scrollHeight = scrollElement.scrollHeight; 7202 var viewport = getViewport(scrollElement); 7203 var max = scrollHeight - offset(viewport).height; 7204 var active = false; 7205 7206 if (scrollTop === max) { 7207 active = length - 1; 7208 } else { 7209 7210 this.targets.every(function (el, i) { 7211 if (position(el, viewport).top - this$1.offset <= 0) { 7212 active = i; 7213 return true; 7214 } 7215 }); 7216 7217 if (active === false && this.overflow) { 7218 active = 0; 7219 } 7220 } 7221 7222 return { active: active }; 7223 }, 7224 7225 write: function write(ref) { 7226 var active = ref.active; 7227 7228 this.links.forEach(function (el) { 7229 return el.blur(); 7230 }); 7231 removeClass(this.elements, this.cls); 7232 7233 if (active !== false) { 7234 trigger(this.$el, 'active', [active, addClass(this.elements[active], this.cls)]); 7235 } 7236 }, 7237 7238 events: ['scroll', 'resize'] 7239 7240 }] 7241 7242 }; 7243 7244 var sticky = { 7245 7246 mixins: [Class, Media], 7247 7248 props: { 7249 top: null, 7250 bottom: Boolean, 7251 offset: String, 7252 animation: String, 7253 clsActive: String, 7254 clsInactive: String, 7255 clsFixed: String, 7256 clsBelow: String, 7257 selTarget: String, 7258 widthElement: Boolean, 7259 showOnUp: Boolean, 7260 targetOffset: Number 7261 }, 7262 7263 data: { 7264 top: 0, 7265 bottom: false, 7266 offset: 0, 7267 animation: '', 7268 clsActive: 'uk-active', 7269 clsInactive: '', 7270 clsFixed: 'uk-sticky-fixed', 7271 clsBelow: 'uk-sticky-below', 7272 selTarget: '', 7273 widthElement: false, 7274 showOnUp: false, 7275 targetOffset: false 7276 }, 7277 7278 computed: { 7279 7280 offset: function offset(ref) { 7281 var offset = ref.offset; 7282 7283 return toPx(offset); 7284 }, 7285 7286 selTarget: function selTarget(ref, $el) { 7287 var selTarget = ref.selTarget; 7288 7289 return selTarget && $(selTarget, $el) || $el; 7290 }, 7291 7292 widthElement: function widthElement(ref, $el) { 7293 var widthElement = ref.widthElement; 7294 7295 return query(widthElement, $el) || this.placeholder; 7296 }, 7297 7298 isActive: { 7299 7300 get: function get$$1() { 7301 return hasClass(this.selTarget, this.clsActive); 7302 }, 7303 7304 set: function set$$1(value) { 7305 if (value && !this.isActive) { 7306 replaceClass(this.selTarget, this.clsInactive, this.clsActive); 7307 trigger(this.$el, 'active'); 7308 } else if (!value && !hasClass(this.selTarget, this.clsInactive)) { 7309 replaceClass(this.selTarget, this.clsActive, this.clsInactive); 7310 trigger(this.$el, 'inactive'); 7311 } 7312 } 7313 7314 } 7315 7316 }, 7317 7318 connected: function connected() { 7319 this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class="uk-sticky-placeholder"></div>'); 7320 this.isFixed = false;
7321 this.isActive = false; 7322 }, 7323 7324 disconnected: function disconnected() { 7325 7326 if (this.isFixed) { 7327 this.hide(); 7328 removeClass(this.selTarget, this.clsInactive); 7329 } 7330 7331 _remove(this.placeholder); 7332 this.placeholder = null; 7333 this.widthElement = null; 7334 }, 7335 7336 events: [{ 7337 7338 name: 'load hashchange popstate', 7339 7340 el: inBrowser && window, 7341 7342 handler: function handler() { 7343 var this$1 = this; 7344 7345 if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) { 7346 return; 7347 } 7348 7349 var target = $(location.hash); 7350 7351 if (target) { 7352 fastdom.read(function () { 7353 7354 var ref = offset(target); 7355 var top = ref.top; 7356 var elTop = offset(this$1.$el).top; 7357 var elHeight = this$1.$el.offsetHeight; 7358 7359 if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) { 7360 scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset); 7361 } 7362 }); 7363 } 7364 } 7365 7366 }], 7367 7368 update: [{ 7369 7370 read: function read(ref, type) { 7371 var height = ref.height; 7372 7373 this.inactive = !this.matchMedia || !isVisible(this.$el); 7374 7375 if (this.inactive) { 7376 return false; 7377 } 7378 7379 if (this.isActive && type !== 'update') { 7380 this.hide(); 7381 height = this.$el.offsetHeight; 7382 this.show(); 7383 } 7384 7385 height = !this.isActive ? this.$el.offsetHeight : height; 7386 7387 this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top; 7388 this.bottomOffset = this.topOffset + height; 7389 7390 var bottom = parseProp('bottom', this); 7391 7392 this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset; 7393 this.bottom = bottom && bottom - this.$el.offsetHeight; 7394 this.width = offset(isVisible(this.widthElement) ? this.widthElement : this.$el).width; 7395 7396 return { 7397 height: height, 7398 top: offsetPosition(this.placeholder)[0], 7399 margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight']) 7400 }; 7401 }, 7402 7403 write: function write(ref) { 7404 var height = ref.height; 7405 var margins = ref.margins; 7406 7407 var ref$1 = this; 7408 var placeholder = ref$1.placeholder; 7409 7410 css(placeholder, assign({ height: height }, margins)); 7411 7412 if (!within(placeholder, document)) { 7413 after(this.$el, placeholder); 7414 attr(placeholder, 'hidden', ''); 7415 } 7416 7417 this.isActive = !!this.isActive; // force self-assign 7418 }, 7419 7420 events: ['resize'] 7421 7422 }, { 7423 7424 read: function read(ref) { 7425 var scroll = ref.scroll;if (scroll === void 0) scroll = 0; 7426 7427 this.scroll = window.pageYOffset; 7428 7429 return { 7430 dir: scroll <= this.scroll ? 'down' : 'up', 7431 scroll: this.scroll 7432 }; 7433 }, 7434 7435 write: function write(data, type) { 7436 var this$1 = this; 7437 7438 var now = Date.now(); 7439 var initTimestamp = data.initTimestamp;if (initTimestamp === void 0) initTimestamp = 0; 7440 var dir = data.dir; 7441 var lastDir = data.lastDir; 7442 var lastScroll = data.lastScroll; 7443 var scroll = data.scroll; 7444 var top = data.top; 7445 7446 data.lastScroll = scroll; 7447 7448 if (scroll < 0 || scroll === lastScroll && type === 'scroll' || this.showOnUp && type !== 'scroll' && !this.isFixed) { 7449 return; 7450 } 7451 7452 if (now - initTimestamp > 300 || dir !== lastDir) { 7453 data.initScroll = scroll; 7454 data.initTimestamp = now; 7455 } 7456 7457 data.lastDir = dir; 7458 7459 if (this.showOnUp && !this.isFixed && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) { 7460 return; 7461 } 7462 7463 if (this.inactive || scroll < this.top || this.showOnUp && (scroll <= this.top || dir === 'down' && type === 'scroll' || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)) { 7464 7465 if (!this.isFixed) { 7466 7467 if (Animation.inProgress(this.$el) && top > scroll) { 7468 Animation.cancel(this.$el); 7469 this.hide(); 7470 } 7471 7472 return; 7473 } 7474 7475 this.isFixed = false;
7476 7477 if (this.animation && scroll > this.topOffset) { 7478 Animation.cancel(this.$el); 7479 Animation.out(this.$el, this.animation).then(function () { 7480 return this$1.hide(); 7481 }, noop); 7482 } else { 7483 this.hide(); 7484 } 7485 } else if (this.isFixed) { 7486 7487 this.update(); 7488 } else if (this.animation) { 7489 7490 Animation.cancel(this.$el); 7491 this.show(); 7492 Animation.in(this.$el, this.animation).catch(noop); 7493 } else { 7494 this.show(); 7495 } 7496 }, 7497 7498 events: ['resize', 'scroll'] 7499 7500 }], 7501 7502 methods: { 7503 7504 show: function show() { 7505 7506 this.isFixed = true; 7507 this.update(); 7508 attr(this.placeholder, 'hidden', null); 7509 }, 7510 7511 hide: function hide() { 7512 7513 this.isActive = false; 7514 removeClass(this.$el, this.clsFixed, this.clsBelow); 7515 css(this.$el, { position: '', top: '', width: '' }); 7516 attr(this.placeholder, 'hidden', ''); 7517 }, 7518 7519 update: function update() { 7520 7521 var active = this.top !== 0 || this.scroll > this.top; 7522 var top = Math.max(0, this.offset); 7523 7524 if (isNumeric(this.bottom) && this.scroll > this.bottom - this.offset) { 7525 top = this.bottom - this.scroll; 7526 } 7527 7528 css(this.$el, { 7529 position: 'fixed', 7530 top: top + "px", 7531 width: this.width 7532 }); 7533 7534 this.isActive = active; 7535 toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset); 7536 addClass(this.$el, this.clsFixed); 7537 } 7538 7539 } 7540 7541 }; 7542 7543 function parseProp(prop, ref) { 7544 var $props = ref.$props; 7545 var $el = ref.$el; 7546 var propOffset = ref[prop + "Offset"]; 7547 7548 var value = $props[prop]; 7549 7550 if (!value) { 7551 return; 7552 } 7553 7554 if (isString(value) && value.match(/^-?\d/)) { 7555 7556 return propOffset + toPx(value); 7557 } else { 7558 7559 return offset(value === true ? $el.parentNode : query(value, $el)).bottom; 7560 } 7561 } 7562 7563 var Switcher = { 7564 7565 mixins: [Togglable], 7566 7567 args: 'connect', 7568 7569 props: { 7570 connect: String, 7571 toggle: String, 7572 active: Number, 7573 swiping: Boolean 7574 }, 7575 7576 data: { 7577 connect: '~.uk-switcher', 7578 toggle: '> * > :first-child', 7579 active: 0, 7580 swiping: true, 7581 cls: 'uk-active', 7582 clsContainer: 'uk-switcher', 7583 attrItem: 'uk-switcher-item' 7584 }, 7585 7586 computed: { 7587 7588 connects: { 7589 7590 get: function get$$1(ref, $el) { 7591 var connect = ref.connect; 7592 7593 return queryAll(connect, $el); 7594 }, 7595 7596 watch: function watch(connects) { 7597 var this$1 = this; 7598 7599 connects.forEach(function (list) { 7600 return this$1.updateAria(list.children); 7601 }); 7602 7603 if (this.swiping) { 7604 css(connects, 'touch-action', 'pan-y pinch-zoom'); 7605 } 7606 }, 7607 7608 immediate: true 7609 7610 }, 7611 7612 toggles: { 7613 7614 get: function get$$1(ref, $el) { 7615 var toggle = ref.toggle; 7616 7617 return $$(toggle, $el).filter(function (el) { 7618 return !matches(el, '.uk-disabled *, .uk-disabled, [disabled]'); 7619 }); 7620 }, 7621 7622 watch: function watch(toggles) { 7623 var active = this.index(); 7624 this.show(~active && active || toggles[this.active] || toggles[0]); 7625 }, 7626 7627 immediate: true 7628 7629 }, 7630 7631 children: function children() { 7632 var this$1 = this; 7633 7634 return _children(this.$el).filter(function (child) { 7635 return this$1.toggles.some(function (toggle) { 7636 return within(toggle, child); 7637 }); 7638 }); 7639 } 7640 7641 }, 7642 7643 events: [{ 7644 7645 name: 'click', 7646 7647 delegate: function delegate() { 7648 return this.toggle; 7649 }, 7650 7651 handler: function handler(e) { 7652 if (!includes(this.toggles, e.current)) { 7653 return; 7654 } 7655 e.preventDefault(); 7656 this.show(e.current); 7657 } 7658 7659 }, { 7660 name: 'click', 7661 7662 el: function el() { 7663 return this.connects; 7664 }, 7665 7666 delegate: function delegate() { 7667 return "[" + this.attrItem + "],[data-" + this.attrItem + "]"; 7668 }, 7669 7670 handler: function handler(e) { 7671 e.preventDefault(); 7672 this.show(data(e.current, this.attrItem)); 7673 } 7674 }, { 7675 name: 'swipeRight swipeLeft', 7676 7677 filter: function filter() { 7678 return this.swiping; 7679 }, 7680 7681 el: function el() { 7682 return this.connects; 7683 }, 7684 7685 handler: function handler(ref) { 7686 var type = ref.type; 7687 7688 this.show(endsWith(type, 'Left') ? 'next' : 'previous'); 7689 } 7690 }], 7691 7692 methods: { 7693 7694 index: function index() { 7695 var this$1 = this; 7696 7697 return findIndex(this.children, function (el) { 7698 return hasClass(el, this$1.cls); 7699 }); 7700 }, 7701 7702 show: function show(item) { 7703 var this$1 = this; 7704 7705 var prev = this.index(); 7706 var next = _getIndex(item, this.toggles, prev); 7707 7708 if (prev === next) { 7709 return; 7710 } 7711
7712 this.children.forEach(function (child, i) { 7713 toggleClass(child, this$1.cls, next === i); 7714 attr(this$1.toggles[i], 'aria-expanded', next === i); 7715 }); 7716 7717 this.connects.forEach(function (ref) { 7718 var children = ref.children; 7719 7720 return this$1.toggleElement(toNodes(children).filter(function (child, i) { 7721 return i !== next && this$1.isToggled(child); 7722 }), false, prev >= 0).then(function () { 7723 return this$1.toggleElement(children[next], true, prev >= 0); 7724 }); 7725 }); 7726 } 7727 7728 } 7729 7730 }; 7731 7732 var tab = { 7733 7734 mixins: [Class], 7735 7736 extends: Switcher, 7737 7738 props: { 7739 media: Boolean 7740 }, 7741 7742 data: { 7743 media: 960, 7744 attrItem: 'uk-tab-item' 7745 }, 7746 7747 connected: function connected() { 7748 7749 var cls = hasClass(this.$el, 'uk-tab-left') ? 'uk-tab-left' : hasClass(this.$el, 'uk-tab-right') ? 'uk-tab-right' : false; 7750 7751 if (cls) { 7752 this.$create('toggle', this.$el, { cls: cls, mode: 'media', media: this.media }); 7753 } 7754 } 7755 7756 }; 7757 7758 var toggle = { 7759 7760 mixins: [Media, Togglable], 7761 7762 args: 'target', 7763 7764 props: { 7765 href: String, 7766 target: null, 7767 mode: 'list', 7768 queued: Boolean 7769 }, 7770 7771 data: { 7772 href: false, 7773 target: false, 7774 mode: 'click', 7775 queued: true 7776 }, 7777 7778 computed: { 7779 7780 target: { 7781 7782 get: function get$$1(ref, $el) { 7783 var href = ref.href; 7784 var target = ref.target; 7785 7786 target = queryAll(target || href, $el); 7787 return target.length && target || [$el]; 7788 }, 7789 7790 watch: function watch() { 7791 trigger(this.target, 'updatearia', [this]); 7792 }, 7793 7794 immediate: true 7795 7796 } 7797 7798 }, 7799 7800 events: [{ 7801 7802 name: pointerEnter + " " + pointerLeave, 7803 7804 filter: function filter() { 7805 return includes(this.mode, 'hover'); 7806 }, 7807 7808 handler: function handler(e) { 7809 if (!isTouch(e)) { 7810 this.toggle("toggle" + (e.type === pointerEnter ? 'show' : 'hide')); 7811 } 7812 } 7813 7814 }, { 7815 7816 name: 'click', 7817 7818 filter: function filter() { 7819 return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover'); 7820 }, 7821 7822 handler: function handler(e) { 7823 7824 // TODO better isToggled handling 7825 var link; 7826 if (closest(e.target, 'a[href="#"], a[href=""]') || (link = closest(e.target, 'a[href]')) && (this.cls && !hasClass(this.target, this.cls.split(' ')[0]) || !isVisible(this.target) || link.hash && matches(this.target, link.hash))) { 7827 e.preventDefault(); 7828 } 7829 7830 this.toggle(); 7831 } 7832 7833 }], 7834 7835 update: { 7836 7837 read: function read() { 7838 return includes(this.mode, 'media') && this.media ? { match: this.matchMedia } : false; 7839 }, 7840 7841 write: function write(ref) { 7842 var match = ref.match; 7843 7844 var toggled = this.isToggled(this.target); 7845 if (match ? !toggled : toggled) { 7846 this.toggle(); 7847 } 7848 }, 7849 7850 events: ['resize'] 7851 7852 }, 7853 7854 methods: { 7855 7856 toggle: function toggle(type) { 7857 var this$1 = this; 7858 7859 if (!trigger(this.target, type || 'toggle', [this])) { 7860 return; 7861 } 7862 7863 if (this.queued) { 7864 7865 var toggled = this.target.filter(this.isToggled); 7866 this.toggleElement(toggled, false).then(function () { 7867 return this$1.toggleElement(this$1.target.filter(function (el) { 7868 return !includes(toggled, el); 7869 }), true); 7870 }); 7871 } else { 7872 this.toggleElement(this.target); 7873 } 7874 } 7875 7876 } 7877 7878 }; 7879 7880 var components = /*#__PURE__*/Object.freeze({ 7881 __proto__: null, 7882 Accordion: Accordion, 7883 Alert: alert, 7884 Cover: cover, 7885 Drop: drop, 7886 Dropdown: drop, 7887 FormCustom: formCustom, 7888 Gif: gif, 7889 Grid: grid, 7890 HeightMatch: heightMatch, 7891 HeightViewport: heightViewport, 7892 Icon: Icon, 7893 Img: img, 7894 Leader: leader, 7895 Margin: Margin, 7896 Modal: modal,
7897 Nav: nav, 7898 Navbar: navbar, 7899 Offcanvas: offcanvas, 7900 OverflowAuto: overflowAuto, 7901 Responsive: responsive, 7902 Scroll: scroll, 7903 Scrollspy: scrollspy, 7904 ScrollspyNav: scrollspyNav, 7905 Sticky: sticky, 7906 Svg: SVG, 7907 Switcher: Switcher, 7908 Tab: tab, 7909 Toggle: toggle, 7910 Video: Video, 7911 Close: Close, 7912 Spinner: Spinner, 7913 SlidenavNext: Slidenav, 7914 SlidenavPrevious: Slidenav, 7915 SearchIcon: Search, 7916 Marker: IconComponent, 7917 NavbarToggleIcon: IconComponent, 7918 OverlayIcon: IconComponent, 7919 PaginationNext: IconComponent, 7920 PaginationPrevious: IconComponent, 7921 Totop: IconComponent 7922 }); 7923 7924 // register components 7925 each(components, function (component, name) { 7926 return UIkit.component(name, component); 7927 }); 7928 7929 // core functionality 7930 UIkit.use(Core); 7931 7932 boot(UIkit); 7933 7934 var countdown = { 7935 7936 mixins: [Class], 7937 7938 props: { 7939 date: String, 7940 clsWrapper: String 7941 }, 7942 7943 data: { 7944 date: '', 7945 clsWrapper: '.uk-countdown-%unit%' 7946 }, 7947 7948 computed: { 7949 7950 date: function date(ref) { 7951 var date = ref.date; 7952 7953 return Date.parse(date); 7954 }, 7955 7956 days: function days(ref, $el) { 7957 var clsWrapper = ref.clsWrapper; 7958 7959 return $(clsWrapper.replace('%unit%', 'days'), $el); 7960 }, 7961 7962 hours: function hours(ref, $el) { 7963 var clsWrapper = ref.clsWrapper; 7964 7965 return $(clsWrapper.replace('%unit%', 'hours'), $el); 7966 }, 7967 7968 minutes: function minutes(ref, $el) { 7969 var clsWrapper = ref.clsWrapper; 7970 7971 return $(clsWrapper.replace('%unit%', 'minutes'), $el); 7972 }, 7973 7974 seconds: function seconds(ref, $el) { 7975 var clsWrapper = ref.clsWrapper; 7976 7977 return $(clsWrapper.replace('%unit%', 'seconds'), $el); 7978 }, 7979 7980 units: function units() { 7981 var this$1 = this; 7982 7983 return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { 7984 return this$1[unit]; 7985 }); 7986 } 7987 7988 }, 7989 7990 connected: function connected() { 7991 this.start(); 7992 }, 7993 7994 disconnected: function disconnected() { 7995 var this$1 = this; 7996 7997 this.stop(); 7998 this.units.forEach(function (unit) { 7999 return empty(this$1[unit]); 8000 }); 8001 }, 8002 8003 events: [{ 8004 8005 name: 'visibilitychange', 8006 8007 el: inBrowser && document, 8008 8009 handler: function handler() { 8010 if (document.hidden) { 8011 this.stop(); 8012 } else { 8013 this.start(); 8014 } 8015 } 8016 8017 }], 8018 8019 update: { 8020 8021 write: function write() { 8022 var this$1 = this; 8023 8024 var timespan = getTimeSpan(this.date); 8025 8026 if (timespan.total <= 0) { 8027 8028 this.stop(); 8029 8030 timespan.days = timespan.hours = timespan.minutes = timespan.seconds = 0; 8031 } 8032 8033 this.units.forEach(function (unit) { 8034 8035 var digits = String(Math.floor(timespan[unit])); 8036 8037 digits = digits.length < 2 ? "0" + digits : digits; 8038 8039 var el = this$1[unit]; 8040 if (el.textContent !== digits) { 8041 digits = digits.split(''); 8042 8043 if (digits.length !== el.children.length) { 8044 html(el, digits.map(function () { 8045 return '<span></span>'; 8046 }).join('')); 8047 } 8048 8049 digits.forEach(function (digit, i) { 8050 return el.children[i].textContent = digit; 8051 }); 8052 } 8053 }); 8054 } 8055 8056 }, 8057 8058 methods: { 8059 8060 start: function start() { 8061 8062 this.stop(); 8063 8064 if (this.date && this.units.length) { 8065 this.$update(); 8066 this.timer = setInterval(this.$update, 1000); 8067 } 8068 }, 8069 8070 stop: function stop() { 8071 8072 if (this.timer) { 8073 clearInterval(this.timer); 8074 this.timer = null; 8075 } 8076 } 8077 8078 } 8079 8080 }; 8081 8082 function getTimeSpan(date) { 8083 8084 var total = date - Date.now(); 8085 8086 return { 8087 total: total, 8088 seconds: total / 1000 % 60, 8089 minutes: total / 1000 / 60 % 60, 8090 hours: total / 1000 / 60 / 60 % 24, 8091 days: total / 1000 / 60 / 60 / 24 8092 }; 8093 } 8094 8095 var targetClass = 'uk-animation-target'; 8096 8097 var Animate = { 8098 8099 props: { 8100 animation: Number 8101 }, 8102 8103 data: { 8104 animation: 150 8105 }, 8106 8107 methods: { 8108 8109 animate: function animate(action, target) { 8110 var this$1 = this; 8111 if (target === void 0) target = this.$el; 8112 8113 addStyle(); 8114 8115 var children$1 = _children(target); 8116 var propsFrom = children$1.map(function (el) { 8117 return getProps(el, true); 8118 }); 8119 8120 var oldHeight = height(target); 8121 var oldScrollY = window.pageYOffset; 8122 8123 action(); 8124 8125 Transition.cancel(target);
8126 children$1.forEach(Transition.cancel); 8127 8128 reset(target); 8129 this.$update(target, 'resize'); 8130 fastdom.flush(); 8131 8132 var newHeight = height(target); 8133 8134 children$1 = children$1.concat(_children(target).filter(function (el) { 8135 return !includes(children$1, el); 8136 })); 8137 8138 var propsTo = children$1.map(function (el, i) { 8139 return el.parentNode && i in propsFrom ? propsFrom[i] ? isVisible(el) ? getPositionWithMargin(el) : { opacity: 0 } : { opacity: isVisible(el) ? 1 : 0 } : false; 8140 }); 8141 8142 propsFrom = propsTo.map(function (props, i) { 8143 var from = children$1[i].parentNode === target ? propsFrom[i] || getProps(children$1[i]) : false; 8144 8145 if (from) { 8146 if (!props) { 8147 delete from.opacity; 8148 } else if (!('opacity' in props)) { 8149 var opacity = from.opacity; 8150 8151 if (opacity % 1) { 8152 props.opacity = 1; 8153 } else { 8154 delete from.opacity; 8155 } 8156 } 8157 } 8158 8159 return from; 8160 }); 8161 8162 addClass(target, targetClass); 8163 children$1.forEach(function (el, i) { 8164 return propsFrom[i] && css(el, propsFrom[i]); 8165 }); 8166 css(target, { height: oldHeight, display: 'block' }); 8167 scrollTop(window, oldScrollY); 8168 8169 return Promise.all(children$1.map(function (el, i) { 8170 return ['top', 'left', 'height', 'width'].some(function (prop) { 8171 return propsFrom[i][prop] !== propsTo[i][prop]; 8172 }) && Transition.start(el, propsTo[i], this$1.animation, 'ease'); 8173 }).concat(oldHeight !== newHeight && Transition.start(target, { height: newHeight }, this.animation, 'ease'))).then(function () { 8174 children$1.forEach(function (el, i) { 8175 return css(el, { display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: '' }); 8176 }); 8177 reset(target); 8178 this$1.$update(target, 'resize'); 8179 fastdom.flush(); // needed for IE11 8180 }, noop); 8181 } 8182 } 8183 }; 8184 8185 function getProps(el, opacity) { 8186 8187 var zIndex = css(el, 'zIndex'); 8188 8189 return isVisible(el) ? assign({ 8190 display: '', 8191 opacity: opacity ? css(el, 'opacity') : '0', 8192 pointerEvents: 'none', 8193 position: 'absolute', 8194 zIndex: zIndex === 'auto' ? index(el) : zIndex 8195 }, getPositionWithMargin(el)) : false; 8196 } 8197 8198 function reset(el) { 8199 css(el.children, { 8200 height: '', 8201 left: '', 8202 opacity: '', 8203 pointerEvents: '', 8204 position: '', 8205 top: '', 8206 width: '' 8207 }); 8208 removeClass(el, targetClass); 8209 css(el, { height: '', display: '' }); 8210 } 8211 8212 function getPositionWithMargin(el) { 8213 var ref = offset(el); 8214 var height = ref.height; 8215 var width = ref.width; 8216 var ref$1 = position(el); 8217 var top = ref$1.top; 8218 var left = ref$1.left; 8219 8220 return { top: top, left: left, height: height, width: width }; 8221 } 8222 8223 var style; 8224 8225 function addStyle() { 8226 if (style) { 8227 return; 8228 } 8229 style = append(document.head, '<style>').sheet; 8230 style.insertRule("." + targetClass + " > * {\n margin-top: 0 !important;\n transform: none !important;\n }", 0); 8231 } 8232 8233 var filter$1 = { 8234 8235 mixins: [Animate], 8236 8237 args: 'target', 8238 8239 props: { 8240 target: Boolean, 8241 selActive: Boolean 8242 }, 8243 8244 data: { 8245 target: null, 8246 selActive: false, 8247 attrItem: 'uk-filter-control', 8248 cls: 'uk-active', 8249 animation: 250 8250 }, 8251 8252 computed: { 8253 8254 toggles: { 8255 8256 get: function get$$1(ref, $el) { 8257 return $$("[" + this.attrItem + "],[data-" + this.attrItem + "]", $el); 8258 }, 8259 8260 watch: function watch() { 8261 var this$1 = this; 8262 8263 this.updateState(); 8264 8265 if (this.selActive !== false) { 8266 var actives = $$(this.selActive, this.$el);
8267 this.toggles.forEach(function (el) { 8268 return toggleClass(el, this$1.cls, includes(actives, el)); 8269 }); 8270 } 8271 }, 8272 8273 immediate: true 8274 8275 }, 8276 8277 children: { 8278 8279 get: function get$$1(ref, $el) { 8280 var target = ref.target; 8281 8282 return $$(target + " > *", $el); 8283 }, 8284 8285 watch: function watch(list, old) { 8286 if (!isEqualList(list, old)) { 8287 this.updateState(); 8288 } 8289 } 8290 } 8291 8292 }, 8293 8294 events: [{ 8295 8296 name: 'click', 8297 8298 delegate: function delegate() { 8299 return "[" + this.attrItem + "],[data-" + this.attrItem + "]"; 8300 }, 8301 8302 handler: function handler(e) { 8303 8304 e.preventDefault(); 8305 this.apply(e.current); 8306 } 8307 8308 }], 8309 8310 methods: { 8311 8312 apply: function apply(el) { 8313 this.setState(mergeState(el, this.attrItem, this.getState())); 8314 }, 8315 8316 getState: function getState() { 8317 var this$1 = this; 8318 8319 return this.toggles.filter(function (item) { 8320 return hasClass(item, this$1.cls); 8321 }).reduce(function (state, el) { 8322 return mergeState(el, this$1.attrItem, state); 8323 }, { filter: { '': '' }, sort: [] }); 8324 }, 8325 8326 setState: function setState(state, animate) { 8327 var this$1 = this; 8328 if (animate === void 0) animate = true; 8329 8330 state = assign({ filter: { '': '' }, sort: [] }, state); 8331 8332 trigger(this.$el, 'beforeFilter', [this, state]); 8333 8334 this.toggles.forEach(function (el) { 8335 return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state)); 8336 }); 8337 8338 Promise.all($$(this.target, this.$el).map(function (target) { 8339 var children$1 = _children(target); 8340 return animate ? this$1.animate(function () { 8341 return applyState(state, target, children$1); 8342 }, target) : applyState(state, target, children$1); 8343 })).then(function () { 8344 return trigger(this$1.$el, 'afterFilter', [this$1]); 8345 }); 8346 }, 8347 8348 updateState: function updateState() { 8349 var this$1 = this; 8350 8351 fastdom.write(function () { 8352 return this$1.setState(this$1.getState(), false); 8353 }); 8354 } 8355 8356 } 8357 8358 }; 8359 8360 function getFilter(el, attr) { 8361 return parseOptions(data(el, attr), ['filter']); 8362 } 8363 8364 function applyState(state, target, children) { 8365 var selector = getSelector(state); 8366 8367 children.forEach(function (el) { 8368 return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); 8369 }); 8370 8371 var ref = state.sort; 8372 var sort = ref[0]; 8373 var order = ref[1]; 8374 8375 if (sort) { 8376 var sorted = sortItems(children, sort, order); 8377 if (!isEqual(sorted, children)) { 8378 append(target, sorted); 8379 } 8380 } 8381 } 8382 8383 function mergeState(el, attr, state) { 8384 8385 var filterBy = getFilter(el, attr); 8386 var filter = filterBy.filter; 8387 var group = filterBy.group; 8388 var sort = filterBy.sort; 8389 var order = filterBy.order;if (order === void 0) order = 'asc'; 8390 8391 if (filter || isUndefined(sort)) { 8392 8393 if (group) { 8394 8395 if (filter) { 8396 delete state.filter['']; 8397 state.filter[group] = filter; 8398 } else { 8399 delete state.filter[group]; 8400 8401 if (isEmpty(state.filter) || '' in state.filter) { 8402 state.filter = { '': filter || '' }; 8403 } 8404 } 8405 } else { 8406 state.filter = { '': filter || '' }; 8407 } 8408 } 8409 8410 if (!isUndefined(sort)) { 8411 state.sort = [sort, order]; 8412 } 8413 8414 return state; 8415 } 8416 8417 function matchFilter(el, attr, ref) { 8418 var stateFilter = ref.filter;if (stateFilter === void 0) stateFilter = { '': '' }; 8419 var ref_sort = ref.sort; 8420 var stateSort = ref_sort[0]; 8421 var stateOrder = ref_sort[1]; 8422 8423 var ref$1 = getFilter(el, attr); 8424 var filter = ref$1.filter;if (filter === void 0) filter = ''; 8425 var group = ref$1.group;if (group === void 0) group = ''; 8426 var sort = ref$1.sort; 8427 var order = ref$1.order;if (order === void 0) order = 'asc'; 8428 8429 return isUndefined(sort) ? group in stateFilter && filter === stateFilter[group] || !filter && group && !(group in stateFilter) && !stateFilter[''] : stateSort === sort && stateOrder === order; 8430 } 8431 8432 function isEqualList(listA, listB) { 8433 return listA.length === listB.length && listA.every(function (el) { 8434 return ~listB.indexOf(el); 8435 }); 8436 } 8437 8438 function getSelector(ref) { 8439 var filter = ref.filter; 8440 8441 var selector = ''; 8442 each(filter, function (value) { 8443 return selector += value || ''; 8444 }); 8445 return selector; 8446 } 8447 8448 function sortItems(nodes, sort, order) { 8449 return assign([], nodes).sort(function (a, b) { 8450 return data(a, sort).localeCompare(data(b, sort), undefined, { numeric: true }) * (order === 'asc' || -1); 8451 }); 8452 } 8453 8454 var Animations = { 8455 8456 slide: { 8457 8458 show: function show(dir) { 8459 return [{ transform: _translate(dir * -100) }, { transform: _translate() }]; 8460 }, 8461 8462 percent: function percent(current) { 8463 return translated(current); 8464 }, 8465 8466 translate: function translate(percent, dir) { 8467 return [{ transform: _translate(dir * -100 * percent) }, { transform: _translate(dir * 100 * (1 - percent)) }]; 8468 } 8469 8470 } 8471 8472 }; 8473 8474 function translated(el) { 8475 return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0; 8476 } 8477 8478 function _translate(value, unit) { 8479 if (value === void 0) value = 0; 8480 if (unit === void 0) unit = '%'; 8481 8482 value += value ? unit : '';
8483 return isIE ? "translateX(" + value + ")" : "translate3d(" + value + ", 0, 0)"; // currently not translate3d in IE, translate3d within translate3d does not work while transitioning 8484 } 8485 8486 function scale3d(value) { 8487 return "scale3d(" + value + ", " + value + ", 1)"; 8488 } 8489 8490 var Animations$1 = assign({}, Animations, { 8491 8492 fade: { 8493 8494 show: function show() { 8495 return [{ opacity: 0 }, { opacity: 1 }]; 8496 }, 8497 8498 percent: function percent(current) { 8499 return 1 - css(current, 'opacity'); 8500 }, 8501 8502 translate: function translate(percent) { 8503 return [{ opacity: 1 - percent }, { opacity: percent }]; 8504 } 8505 8506 }, 8507 8508 scale: { 8509 8510 show: function show() { 8511 return [{ opacity: 0, transform: scale3d(1 - .2) }, { opacity: 1, transform: scale3d(1) }]; 8512 }, 8513 8514 percent: function percent(current) { 8515 return 1 - css(current, 'opacity'); 8516 }, 8517 8518 translate: function translate(percent) { 8519 return [{ opacity: 1 - percent, transform: scale3d(1 - .2 * percent) }, { opacity: percent, transform: scale3d(1 - .2 + .2 * percent) }]; 8520 } 8521 8522 } 8523 8524 }); 8525 8526 function Transitioner(prev, next, dir, ref) { 8527 var animation = ref.animation; 8528 var easing = ref.easing; 8529 8530 var _percent = animation.percent; 8531 var _translate2 = animation.translate; 8532 var show = animation.show;if (show === void 0) show = noop; 8533 var props = show(dir); 8534 var deferred = new Deferred(); 8535 8536 return { 8537 8538 dir: dir, 8539 8540 show: function show(duration, percent, linear) { 8541 var this$1 = this; 8542 if (percent === void 0) percent = 0; 8543 8544 var timing = linear ? 'linear' : easing; 8545 duration -= Math.round(duration * clamp(percent, -1, 1)); 8546 8547 this.translate(percent); 8548 8549 triggerUpdate(next, 'itemin', { percent: percent, duration: duration, timing: timing, dir: dir }); 8550 triggerUpdate(prev, 'itemout', { percent: 1 - percent, duration: duration, timing: timing, dir: dir }); 8551 8552 Promise.all([Transition.start(next, props[1], duration, timing), Transition.start(prev, props[0], duration, timing)]).then(function () { 8553 this$1.reset(); 8554 deferred.resolve(); 8555 }, noop); 8556 8557 return deferred.promise; 8558 }, 8559 8560 stop: function stop() { 8561 return Transition.stop([next, prev]); 8562 }, 8563 8564 cancel: function cancel() { 8565 Transition.cancel([next, prev]); 8566 }, 8567 8568 reset: function reset() { 8569 for (var prop in props[0]) { 8570 css([next, prev], prop, ''); 8571 } 8572 }, 8573 8574 forward: function forward(duration, percent) { 8575 if (percent === void 0) percent = this.percent(); 8576 8577 Transition.cancel([next, prev]); 8578 return this.show(duration, percent, true); 8579 }, 8580 8581 translate: function translate(percent) { 8582 8583 this.reset(); 8584 8585 var props = _translate2(percent, dir); 8586 css(next, props[1]); 8587 css(prev, props[0]); 8588 triggerUpdate(next, 'itemtranslatein', { percent: percent, dir: dir }); 8589 triggerUpdate(prev, 'itemtranslateout', { percent: 1 - percent, dir: dir }); 8590 }, 8591 8592 percent: function percent() { 8593 return _percent(prev || next, next, dir); 8594 }, 8595 8596 getDistance: function getDistance() { 8597 return prev && prev.offsetWidth; 8598 } 8599 8600 }; 8601 } 8602 8603 function triggerUpdate(el, type, data) { 8604 trigger(el, createEvent(type, false, false, data)); 8605 } 8606 8607 var SliderAutoplay = { 8608 8609 props: { 8610 autoplay: Boolean, 8611 autoplayInterval: Number, 8612 pauseOnHover: Boolean 8613 }, 8614 8615 data: { 8616 autoplay: false, 8617 autoplayInterval: 7000, 8618 pauseOnHover: true 8619 }, 8620 8621 connected: function connected() { 8622 this.autoplay && this.startAutoplay(); 8623 }, 8624 8625 disconnected: function disconnected() { 8626 this.stopAutoplay(); 8627 }, 8628 8629 update: function update() { 8630 attr(this.slides, 'tabindex', '-1'); 8631 }, 8632 8633 events: [{ 8634 8635 name: 'visibilitychange', 8636 8637 el: inBrowser && document, 8638 8639 filter: function filter() { 8640 return this.autoplay; 8641 }, 8642 8643 handler: function handler() { 8644 if (document.hidden) { 8645 this.stopAutoplay(); 8646 } else { 8647 this.startAutoplay(); 8648 } 8649 } 8650 8651 }], 8652 8653 methods: { 8654 8655 startAutoplay: function startAutoplay() { 8656 var this$1 = this; 8657 8658 this.stopAutoplay(); 8659 8660 this.interval = setInterval(function () { 8661 return (!this$1.draggable || !$(':focus', this$1.$el)) && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover')) && !this$1.stack.length && this$1.show('next'); 8662 }, this.autoplayInterval); 8663 }, 8664 8665 stopAutoplay: function stopAutoplay() { 8666 this.interval && clearInterval(this.interval); 8667 } 8668 8669 } 8670 8671 }; 8672 8673 var SliderDrag = { 8674 8675 props: { 8676 draggable: Boolean 8677 }, 8678 8679 data: { 8680 draggable: true, 8681 threshold: 10 8682 }, 8683 8684 created: function created() { 8685 var this$1 = this; 8686 8687 ['start', 'move', 'end'].forEach(function (key) { 8688 8689 var fn = this$1[key]; 8690 this$1[key] = function (e) { 8691 8692 var pos = getEventPos(e).x * (isRtl ? -1 : 1); 8693 8694 this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos; 8695 this$1.pos = pos; 8696 8697 fn(e); 8698 }; 8699 }); 8700 }, 8701 8702 events: [{ 8703 8704 name: pointerDown, 8705 8706 delegate: function delegate() { 8707 return this.selSlides; 8708 }, 8709 8710 handler: function handler(e) { 8711 8712 if (!this.draggable || !isTouch(e) && hasTextNodesOnly(e.target) || closest(e.target, selInput) || e.button > 0 || this.length < 2) { 8713 return; 8714 } 8715 8716 this.start(e); 8717 } 8718 8719 }, { 8720 name: 'dragstart', 8721 8722 handler: function handler(e) { 8723 e.preventDefault(); 8724 } 8725 }], 8726 8727 methods: { 8728 8729 start: function start() { 8730 8731 this.drag = this.pos; 8732 8733 if (this._transitioner) { 8734 8735 this.percent = this._transitioner.percent(); 8736 this.drag += this._transitioner.getDistance() * this.percent * this.dir; 8737 8738 this._transitioner.cancel(); 8739 this._transitioner.translate(this.percent); 8740 8741 this.dragging = true; 8742 8743 this.stack = []; 8744 } else { 8745 this.prevIndex = this.index; 8746 } 8747 8748 // See above workaround notice 8749 on(document, pointerMove, this.move, { passive: false }); 8750 on(document, pointerUp + " " + pointerCancel, this.end, true); 8751 8752 css(this.list, 'userSelect', 'none'); 8753 }, 8754 8755 move: function move(e) { 8756 var this$1 = this; 8757 8758 var distance = this.pos - this.drag; 8759 8760 if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) { 8761 return; 8762 } 8763
8764 css(this.list, 'pointerEvents', 'none'); 8765 8766 e.cancelable && e.preventDefault(); 8767 8768 this.dragging = true; 8769 this.dir = distance < 0 ? 1 : -1; 8770 8771 var ref = this; 8772 var slides = ref.slides; 8773 var ref$1 = this; 8774 var prevIndex = ref$1.prevIndex; 8775 var dis = Math.abs(distance); 8776 var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex); 8777 var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth; 8778 8779 while (nextIndex !== prevIndex && dis > width) { 8780 8781 this.drag -= width * this.dir; 8782 8783 prevIndex = nextIndex; 8784 dis -= width; 8785 nextIndex = this.getIndex(prevIndex + this.dir, prevIndex); 8786 width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth; 8787 } 8788 8789 this.percent = dis / width; 8790 8791 var prev = slides[prevIndex]; 8792 var next = slides[nextIndex]; 8793 var changed = this.index !== nextIndex; 8794 var edge = prevIndex === nextIndex; 8795 8796 var itemShown; 8797 8798 [this.index, this.prevIndex].filter(function (i) { 8799 return !includes([nextIndex, prevIndex], i); 8800 }
8800).forEach(function (i) { 8801 trigger(slides[i], 'itemhidden', [this$1]); 8802 8803 if (edge) { 8804 itemShown = true; 8805 this$1.prevIndex = prevIndex; 8806 } 8807 }); 8808 8809 if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) { 8810 trigger(slides[this.index], 'itemshown', [this]); 8811 } 8812 8813 if (changed) { 8814 this.prevIndex = prevIndex; 8815 this.index = nextIndex; 8816 8817 !edge && trigger(prev, 'beforeitemhide', [this]); 8818 trigger(next, 'beforeitemshow', [this]); 8819 } 8820 8821 this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next); 8822 8823 if (changed) { 8824 !edge && trigger(prev, 'itemhide', [this]); 8825 trigger(next, 'itemshow', [this]); 8826 } 8827 }, 8828 8829 end: function end() { 8830 8831 off(document, pointerMove, this.move, { passive: false }); 8832 off(document, pointerUp + " " + pointerCancel, this.end, true); 8833 8834 if (this.dragging) { 8835 8836 this.dragging = null; 8837 8838 if (this.index === this.prevIndex) { 8839 this.percent = 1 - this.percent; 8840 this.dir *= -1; 8841 this._show(false, this.index, true); 8842 this._transitioner = null; 8843 } else { 8844 8845 var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos; 8846 this.index = dirChange ? this.index : this.prevIndex; 8847 8848 if (dirChange) { 8849 this.percent = 1 - this.percent; 8850 } 8851 8852 this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true); 8853 } 8854 } 8855 8856 css(this.list, { userSelect: '', pointerEvents: '' }); 8857 8858 this.drag = this.percent = null; 8859 } 8860 8861 } 8862 8863 }; 8864 8865 function hasTextNodesOnly(el) { 8866 return !el.children.length && el.childNodes.length; 8867 } 8868 8869 var SliderNav = { 8870 8871 data: { 8872 selNav: false 8873 }, 8874 8875 computed: { 8876 8877 nav: function nav(ref, $el) { 8878 var selNav = ref.selNav; 8879 8880 return $(selNav, $el); 8881 }, 8882 8883 selNavItem: function selNavItem(ref) { 8884 var attrItem = ref.attrItem; 8885 8886 return "[" + attrItem + "],[data-" + attrItem + "]"; 8887 }, 8888 8889 navItems: function navItems(_, $el) { 8890 return $$(this.selNavItem, $el); 8891 } 8892 8893 }, 8894 8895 update: { 8896 8897 write: function write() { 8898 var this$1 = this; 8899 8900 if (this.nav && this.length !== this.nav.children.length) { 8901 html(this.nav, this.slides.map(function (_, i) { 8902 return "<li " + this$1.attrItem + "=\"" + i + "\"><a href></a></li>"; 8903 }).join('')); 8904 } 8905 8906 toggleClass($$(this.selNavItem, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex); 8907 8908 this.updateNav(); 8909 }, 8910 8911 events: ['resize'] 8912 8913 }, 8914 8915 events: [{ 8916 8917 name: 'click', 8918 8919 delegate: function delegate() { 8920 return this.selNavItem; 8921 }, 8922 8923 handler: function handler(e) { 8924 e.preventDefault(); 8925 this.show(data(e.current, this.attrItem)); 8926 } 8927 8928 }, { 8929 8930 name: 'itemshow', 8931 handler: 'updateNav' 8932 8933 }], 8934 8935 methods: { 8936 8937 updateNav: function updateNav() { 8938 var this$1 = this; 8939 8940 var i = this.getValidIndex(); 8941 this.navItems.forEach(function (el) { 8942 8943 var cmd = data(el, this$1.attrItem); 8944 8945 toggleClass(el, this$1.clsActive, toNumber(cmd) === i); 8946 toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex)); 8947 }); 8948 } 8949 8950 } 8951 8952 }; 8953 8954 var Slider = { 8955 8956 mixins: [SliderAutoplay, SliderDrag, SliderNav], 8957 8958 props: { 8959 clsActivated: Boolean, 8960 easing: String, 8961 index: Number, 8962 finite: Boolean, 8963 velocity: Number, 8964 selSlides: String 8965 }, 8966 8967 data: function data() { 8968 return { 8969 easing: 'ease', 8970 finite: false, 8971 velocity: 1, 8972 index: 0, 8973 prevIndex: -1, 8974 stack: [], 8975 percent: 0, 8976 clsActive: 'uk-active', 8977 clsActivated: false, 8978 Transitioner: false, 8979 transitionOptions: {} 8980 }; 8981 }, 8982 8983 connected: function connected() { 8984 this.prevIndex = -1; 8985 this.index = this.getValidIndex(this.index); 8986 this.stack = []; 8987 }, 8988 8989 disconnected: function disconnected() { 8990 removeClass(this.slides, this.clsActive); 8991 }, 8992 8993 computed: { 8994 8995 duration: function duration(ref, $el) { 8996 var velocity = ref.velocity; 8997 8998 return speedUp($el.offsetWidth / velocity); 8999 }, 9000 9001 list: function list(ref, $el) { 9002 var selList = ref.selList; 9003 9004 return $(selList, $el); 9005 }, 9006 9007 maxIndex: function maxIndex() { 9008 return this.length - 1; 9009 }, 9010 9011 selSlides: function selSlides(ref) { 9012 var selList = ref.selList; 9013 var selSlides = ref.selSlides; 9014 9015 return selList + " " + (selSlides || '> *'); 9016 }, 9017 9018 slides: { 9019 9020 get: function get$$1() { 9021 return $$(this.selSlides, this.$el); 9022 }, 9023 9024 watch: function watch() { 9025 this.$reset(); 9026 } 9027 9028 }, 9029 9030 length: function length() { 9031 return this.slides.length; 9032 } 9033 9034 }, 9035 9036 events: { 9037 9038 itemshown: function itemshown() { 9039 this.$update(this.list); 9040 } 9041 9042 }, 9043 9044 methods: { 9045 9046 show: function show(index, force) { 9047 var this$1 = this; 9048 if (force === void 0) force = false;
9049 9050 if (this.dragging || !this.length) { 9051 return; 9052 } 9053 9054 var ref = this; 9055 var stack = ref.stack; 9056 var queueIndex = force ? 0 : stack.length; 9057 var reset = function reset() { 9058 stack.splice(queueIndex, 1); 9059 9060 if (stack.length) { 9061 this$1.show(stack.shift(), true); 9062 } 9063 }; 9064 9065 stack[force ? 'unshift' : 'push'](index); 9066 9067 if (!force && stack.length > 1) { 9068 9069 if (stack.length === 2) { 9070 this._transitioner.forward(Math.min(this.duration, 200)); 9071 } 9072 9073 return; 9074 } 9075 9076 var prevIndex = this.getIndex(this.index); 9077 var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex]; 9078 var nextIndex = this.getIndex(index, this.index); 9079 var next = this.slides[nextIndex]; 9080 9081 if (prev === next) { 9082 reset(); 9083 return; 9084 } 9085 9086 this.dir = getDirection(index, prevIndex); 9087 this.prevIndex = prevIndex; 9088 this.index = nextIndex; 9089 9090 if (prev && !trigger(prev, 'beforeitemhide', [this]) || !trigger(next, 'beforeitemshow', [this, prev])) { 9091 this.index = this.prevIndex; 9092 reset(); 9093 return; 9094 } 9095 9096 var promise = this._show(prev, next, force).then(function () { 9097 9098 prev && trigger(prev, 'itemhidden', [this$1]); 9099 trigger(next, 'itemshown', [this$1]); 9100 9101 return new Promise(function (resolve) { 9102 fastdom.write(function () { 9103 stack.shift(); 9104 if (stack.length) { 9105 this$1.show(stack.shift(), true); 9106 } else { 9107 this$1._transitioner = null; 9108 } 9109 resolve(); 9110 }); 9111 }); 9112 }); 9113 9114 prev && trigger(prev, 'itemhide', [this]); 9115 trigger(next, 'itemshow', [this]); 9116 9117 return promise; 9118 }, 9119 9120 getIndex: function getIndex(index, prev) { 9121 if (index === void 0) index = this.index; 9122 if (prev === void 0) prev = this.index; 9123 9124 return clamp(_getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex); 9125 }, 9126 9127 getValidIndex: function getValidIndex(index, prevIndex) { 9128 if (index === void 0) index = this.index; 9129 if (prevIndex === void 0) prevIndex = this.prevIndex; 9130 9131 return this.getIndex(index, prevIndex); 9132 }, 9133 9134 _show: function _show(prev, next, force) { 9135 9136 this._transitioner = this._getTransitioner(prev, next, this.dir, assign({ 9137 easing: force ? next.offsetWidth < 600 ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */ 9138 : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */ 9139 : this.easing 9140 }, this.transitionOptions)); 9141 9142 if (!force && !prev) { 9143 this._translate(1); 9144 return Promise.resolve(); 9145 } 9146 9147 var ref = this.stack; 9148 var length = ref.length; 9149 return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent); 9150 }, 9151 9152 _getDistance: function _getDistance(prev, next) { 9153 return this._getTransitioner(prev, prev !== next && next).getDistance(); 9154 }, 9155 9156 _translate: function _translate(percent, prev, next) { 9157 if (prev === void 0) prev = this.prevIndex; 9158 if (next === void 0) next = this.index; 9159 9160 var transitioner = this._getTransitioner(prev !== next ? prev : false, next); 9161 transitioner.translate(percent); 9162 return transitioner; 9163 }, 9164 9165 _getTransitioner: function _getTransitioner(prev, next, dir, options) { 9166 if (prev === void 0) prev = this.prevIndex; 9167 if (next === void 0) next = this.index; 9168 if (dir === void 0) dir = this.dir || 1; 9169 if (options === void 0) options = this.transitionOptions; 9170 9171 return new this.Transitioner(isNumber(prev) ? this.slides[prev] : prev, isNumber(next) ? this.slides[next] : next, dir * (isRtl ? -1 : 1), options); 9172 } 9173 9174 } 9175 9176 }; 9177 9178 function getDirection(index, prevIndex) { 9179 return index === 'next' ? 1 : index === 'previous' ? -1 : index < prevIndex ? -1 : 1; 9180 } 9181 9182 function speedUp(x) { 9183 return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200) 9184 } 9185 9186 var Slideshow = { 9187 9188 mixins: [Slider], 9189 9190 props: { 9191 animation: String 9192 }, 9193 9194 data: { 9195 animation: 'slide', 9196 clsActivated: 'uk-transition-active', 9197 Animations: Animations, 9198 Transitioner: Transitioner 9199 }, 9200 9201 computed: { 9202 9203 animation: function animation(ref) { 9204 var animation = ref.animation; 9205 var Animations = ref.Animations; 9206 9207 return assign(Animations[animation] || Animations.slide, { name: animation }); 9208 }, 9209 9210 transitionOptions: function transitionOptions() { 9211 return { animation: this.animation }; 9212 } 9213 9214 }, 9215 9216 events: { 9217 9218 'itemshow itemhide itemshown itemhidden': function itemshowItemhideItemshownItemhidden(ref) { 9219 var target = ref.target; 9220 9221 this.$update(target); 9222 }, 9223 9224 beforeitemshow: function beforeitemshow(ref) { 9225 var target = ref.target; 9226 9227 addClass(target, this.clsActive); 9228 }, 9229 9230 itemshown: function itemshown(ref) { 9231 var target = ref.target; 9232 9233 addClass(target, this.clsActivated); 9234 }, 9235 9236 itemhidden: function itemhidden(ref) { 9237 var target = ref.target; 9238 9239 removeClass(target, this.clsActive, this.clsActivated); 9240 } 9241 9242 } 9243 9244 }; 9245 9246 var LightboxPanel = { 9247 9248 mixins: [Container, Modal, Togglable, Slideshow], 9249 9250 functional: true, 9251 9252 props: { 9253 delayControls: Number, 9254 preload: Number, 9255 videoAutoplay: Boolean,
9256 template: String 9257 }, 9258 9259 data: function data() { 9260 return { 9261 preload: 1, 9262 videoAutoplay: false, 9263 delayControls: 3000, 9264 items: [], 9265 cls: 'uk-open', 9266 clsPage: 'uk-lightbox-page', 9267 selList: '.uk-lightbox-items', 9268 attrItem: 'uk-lightbox-item', 9269 selClose: '.uk-close-large', 9270 selCaption: '.uk-lightbox-caption', 9271 pauseOnHover: false, 9272 velocity: 2, 9273 Animations: Animations$1, 9274 template: "<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-sli
9274de-bottom uk-transition-opaque\"></div> </div>" 9275 }; 9276 }, 9277 9278 created: function created() { 9279 9280 var $el = $(this.template); 9281 var list = $(this.selList, $el); 9282 this.items.forEach(function () { 9283 return append(list, '<li>'); 9284 }); 9285 9286 this.$mount(append(this.container, $el)); 9287 }, 9288 9289 computed: { 9290 9291 caption: function caption(ref, $el) { 9292 return $('.uk-lightbox-caption', $el); 9293 } 9294 9295 }, 9296 9297 events: [{ 9298 9299 name: pointerMove + " " + pointerDown + " keydown", 9300 9301 handler: 'showControls' 9302 9303 }, { 9304 9305 name: 'click', 9306 9307 self: true, 9308 9309 delegate: function delegate() { 9310 return this.selSlides; 9311 }, 9312 9313 handler: function handler(e) { 9314 9315 if (e.defaultPrevented) { 9316 return; 9317 } 9318 9319 this.hide(); 9320 } 9321 9322 }, { 9323 9324 name: 'shown', 9325 9326 self: true, 9327 9328 handler: function handler() { 9329 this.showControls(); 9330 } 9331 9332 }, { 9333 9334 name: 'hide', 9335 9336 self: true, 9337 9338 handler: function handler() { 9339 9340 this.hideControls(); 9341 9342 removeClass(this.slides, this.clsActive); 9343 Transition.stop(this.slides); 9344 } 9345 }, { 9346 9347 name: 'hidden', 9348 9349 self: true, 9350 9351 handler: function handler() { 9352 this.$destroy(true); 9353 } 9354 9355 }, { 9356 9357 name: 'keyup', 9358 9359 el: inBrowser && document, 9360 9361 handler: function handler(e) { 9362 9363 if (!this.isToggled(this.$el) || !this.draggable) { 9364 return; 9365 } 9366 9367 switch (e.keyCode) { 9368 case 37: 9369 this.show('previous'); 9370 break; 9371 case 39: 9372 this.show('next'); 9373 break; 9374 } 9375 } 9376 }, { 9377 9378 name: 'beforeitemshow', 9379 9380 handler: function handler(e) { 9381 9382 if (this.isToggled()) { 9383 return; 9384 } 9385 9386 this.draggable = false; 9387 9388 e.preventDefault(); 9389 9390 this.toggleElement(this.$el, true, false); 9391 9392 this.animation = Animations$1['scale']; 9393 removeClass(e.target, this.clsActive); 9394 this.stack.splice(1, 0, this.index); 9395 } 9396 9397 }, { 9398 9399 name: 'itemshow', 9400 9401 handler: function handler() { 9402 9403 html(this.caption, this.getItem().caption || ''); 9404 9405 for (var j = -this.preload; j <= this.preload; j++) { 9406 this.loadItem(this.index + j); 9407 } 9408 } 9409 9410 }, { 9411 9412 name: 'itemshown', 9413 9414 handler: function handler() { 9415 this.draggable = this.$props.draggable; 9416 } 9417 9418 }, { 9419 9420 name: 'itemload', 9421 9422 handler: function handler(_, item) { 9423 var this$1 = this; 9424 9425 var src = item.source; 9426 var type = item.type; 9427 var alt = item.alt;if (alt === void 0) alt = ''; 9428 var poster = item.poster; 9429 var attrs = item.attrs;if (attrs === void 0) attrs = {}; 9430 9431 this.setItem(item, '<span uk-spinner></span>'); 9432 9433 if (!src) { 9434 return; 9435 } 9436 9437 var matches; 9438 var iframeAttrs = { 9439 frameborder: '0', 9440 allow: 'autoplay', 9441 allowfullscreen: '', 9442 style: 'max-width: 100%; box-sizing: border-box;', 9443 'uk-responsive': '', 9444 'uk-video': "" + this.videoAutoplay 9445 }; 9446 9447 // Image 9448 if (type === 'image' || src.match(/\.(jpe?g|png|gif|svg|webp)($|\?)/i)) { 9449 9450 getImage(src, attrs.srcset, attrs.size).then(function (ref) { 9451 var width = ref.width; 9452 var height = ref.height; 9453 9454 return this$1.setItem(item, createEl('img', assign({ src: src, width: width, height: height, alt: alt }, attrs))); 9455 }, function () { 9456 return this$1.setError(item); 9457 }); 9458 9459 // Video 9460 } else if (type === 'video' || src.match(/\.(mp4|webm|ogv)($|\?)/i)) { 9461 9462 var video = createEl('video', assign({ 9463 src: src, 9464 poster: poster, 9465 controls: '', 9466 playsinline: '', 9467 'uk-video': "" + this.videoAutoplay 9468 }, attrs)); 9469 9470 on(video, 'loadedmetadata', function () { 9471 attr(video, { width: video.videoWidth, height: video.videoHeight }); 9472 this$1.setItem(item, video); 9473 }); 9474 on(video, 'error', function () { 9475 return this$1.setError(item); 9476 }); 9477 9478 // Iframe 9479 } else if (type === 'iframe' || src.match(/\.(html|php)($|\?)/i)) { 9480 9481 this.setItem(item, createEl('iframe', assign({ 9482 src: src, 9483 frameborder: '0', 9484 allowfullscreen: '', 9485 class: 'uk-lightbox-iframe' 9486 }, attrs))); 9487 9488 // YouTube 9489 } else if (matches = src.match(/\/\/(?:.*?youtube(-nocookie)?\..*?[?&]v=|youtu\.be\/)([\w-]{11})[&?]?(.*)?/)) { 9490 9491 this.setItem(item, createEl('iframe', assign({ 9492 src: "https://www.youtube" + (matches[1] || '') + ".com/embed/" + matches[2] + (matches[3] ? "?" + matches[3] : ''), 9493 width: 1920, 9494 height: 1080 9495 }, iframeAttrs, attrs))); 9496 9497 // Vimeo 9498 } else if (matches = src.match(/\/\/.*?vimeo\.[a-z]+\/(\d+)[&?]?(.*)?/)) { 9499 9500 ajax("https://vimeo.com/api/oembed.json?maxwidth=1920&url=" + encodeURI(src), { 9501 responseType: 'json', 9502 withCredentials: false 9503 }).then(function (ref) { 9504 var ref_response = ref.response; 9505 var height = ref_response.height; 9506 var width = ref_response.width; 9507 9508 return this$1.setItem(item, createEl('iframe', assign({ 9509 src: "https://player.vimeo.com/video/" + matches[1] + (matches[2] ? "?" + matches[2] : ''), 9510 width: width, 9511 height: height 9512 }, iframeAttrs, attrs))); 9513 }, function () { 9514 return this$1.setError(item); 9515 }); 9516 } 9517 } 9518 9519 }], 9520 9521 methods: { 9522 9523 loadItem: function loadItem(index) { 9524 if (index === void 0) index = this.index; 9525 9526 var item = this.getItem(index); 9527 9528 if (!this.getSlide(item).childElementCount) { 9529 trigger(this.$el, 'itemload', [item]); 9530 } 9531 }, 9532 9533 getItem: function getItem(index) { 9534 if (index === void 0) index = this.index; 9535 9536 return this.items[_getIndex(index, this.slides)]; 9537 }, 9538 9539 setItem: function setItem(item, content) { 9540 trigger(this.$el, 'itemloaded', [this, html(this.getSlide(item), content)]); 9541 }, 9542 9543 getSlide: function getSlide(item) { 9544 return this.slides[this.items.indexOf(item)]; 9545 }, 9546 9547 setError: function setError(item) { 9548 this.setItem(item, '<span uk-icon="icon: bolt; ratio: 2"></span>'); 9549 }, 9550 9551 showControls: function showControls() { 9552 9553 clearTimeout(this.controlsTimer); 9554 this.controlsTimer = setTimeout(this.hideControls, this.delayControls); 9555 9556 addClass(this.$el, 'uk-active', 'uk-transition-active'); 9557 }, 9558 9559 hideControls: function hideControls() { 9560 removeClass(this.$el, 'uk-active', 'uk-transition-active'); 9561 } 9562 9563 } 9564 9565 }; 9566 9567 function createEl(tag, attrs) { 9568 var el = fragment("<" + tag + ">"); 9569 attr(el, attrs); 9570 return el; 9571 } 9572 9573 var lightbox = { 9574 9575 install: install$2, 9576 9577 props: { toggle: String }, 9578 9579 data: { toggle: 'a' }, 9580 9581 computed: { 9582 9583 toggles: { 9584 9585 get: function get$$1(ref, $el) { 9586 var toggle = ref.toggle; 9587 9588 return $$(toggle, $el); 9589 }, 9590 9591 watch: function watch() { 9592 this.hide(); 9593 } 9594 9595 } 9596 9597 }, 9598 9599 disconnected: function disconnected() { 9600 this.hide(); 9601 }, 9602 9603 events: [{ 9604 9605 name: 'click', 9606 9607 delegate: function delegate() { 9608 return this.toggle + ":not(.uk-disabled)"; 9609 }, 9610 9611 handler: function handler(e) { 9612 e.preventDefault(); 9613 this.show(e.current); 9614 } 9615 9616 }], 9617 9618 methods: { 9619 9620 show: function show(index) { 9621 var this$1 = this; 9622 9623 var items = uniqueBy(this.toggles.map(toItem), 'source'); 9624 9625 if (isElement(index)) { 9626 var ref = toItem(index); 9627 var source = ref.source; 9628 index = findIndex(items, function (ref) { 9629 var src = ref.source; 9630 9631 return source === src; 9632 }); 9633 } 9634 9635 this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, { items: items })); 9636 9637 on(this.panel.$el, 'hidden', function () { 9638 return this$1.panel = false;
9639 }); 9640 9641 return this.panel.show(index); 9642 }, 9643 9644 hide: function hide() { 9645 9646 return this.panel && this.panel.hide(); 9647 } 9648 9649 } 9650 9651 }; 9652 9653 function install$2(UIkit, Lightbox) { 9654 9655 if (!UIkit.lightboxPanel) { 9656 UIkit.component('lightboxPanel', LightboxPanel); 9657 } 9658 9659 assign(Lightbox.props, UIkit.component('lightboxPanel').options.props); 9660 } 9661 9662 function toItem(el) { 9663 9664 var item = {}; 9665 9666 ['href', 'caption', 'type', 'poster', 'alt', 'attrs'].forEach(function (attr) { 9667 item[attr === 'href' ? 'source' : attr] = data(el, attr); 9668 }); 9669 9670 item.attrs = parseOptions(item.attrs); 9671 9672 return item; 9673 } 9674 9675 var obj; 9676 9677 var notification = { 9678 9679 functional: true, 9680 9681 args: ['message', 'status'], 9682 9683 data: { 9684 message: '', 9685 status: '', 9686 timeout: 5000, 9687 group: null, 9688 pos: 'top-center', 9689 clsContainer: 'uk-notification', 9690 clsClose: 'uk-notification-close', 9691 clsMsg: 'uk-notification-message' 9692 }, 9693 9694 install: install$3, 9695 9696 computed: { 9697 9698 marginProp: function marginProp(ref) { 9699 var pos = ref.pos; 9700 9701 return "margin" + (startsWith(pos, 'top') ? 'Top' : 'Bottom'); 9702 }, 9703 9704 startProps: function startProps() { 9705 var obj; 9706 9707 return obj = { opacity: 0 }, obj[this.marginProp] = -this.$el.offsetHeight, obj; 9708 } 9709 9710 }, 9711 9712 created: function created() { 9713 9714 var container = $("." + this.clsContainer + "-" + this.pos, this.$container) || append(this.$container, "<div class=\"" + this.clsContainer + " " + this.clsContainer + "-" + this.pos + "\" style=\"display: block\"></div>"); 9715 9716 this.$mount(append(container, "<div class=\"" + this.clsMsg + (this.status ? " " + this.clsMsg + "-" + this.status : '') + "\"> <a href class=\"" + this.clsClose + "\" data-uk-close></a> <div>" + this.message + "</div> </div>")); 9717 }, 9718 9719 connected: function connected() { 9720 var this$1 = this; 9721 var obj; 9722 9723 var margin = toFloat(css(this.$el, this.marginProp)); 9724 Transition.start(css(this.$el, this.startProps), (obj = { opacity: 1 }, obj[this.marginProp] = margin, obj)).then(function () { 9725 if (this$1.timeout) { 9726 this$1.timer = setTimeout(this$1.close, this$1.timeout); 9727 } 9728 }); 9729 }, 9730 9731 events: (obj = { 9732 9733 click: function click(e) { 9734 if (closest(e.target, 'a[href="#"],a[href=""]')) { 9735 e.preventDefault(); 9736 } 9737 this.close(); 9738 } 9739 9740 }, obj[pointerEnter] = function () { 9741 if (this.timer) { 9742 clearTimeout(this.timer); 9743 } 9744 }, obj[pointerLeave] = function () { 9745 if (this.timeout) { 9746 this.timer = setTimeout(this.close, this.timeout); 9747 } 9748 }, obj), 9749 9750 methods: { 9751 9752 close: function close(immediate) { 9753 var this$1 = this; 9754 9755 var removeFn = function removeFn() { 9756 9757 var container = this$1.$el.parentNode; 9758 9759 trigger(this$1.$el, 'close', [this$1]); 9760 _remove(this$1.$el); 9761 9762 if (container && !container.hasChildNodes()) { 9763 _remove(container); 9764 } 9765 }; 9766 9767 if (this.timer) { 9768 clearTimeout(this.timer); 9769 } 9770 9771 if (immediate) { 9772 removeFn(); 9773 } else { 9774 Transition.start(this.$el, this.startProps).then(removeFn); 9775 } 9776 } 9777 9778 } 9779 9780 }; 9781 9782 function install$3(UIkit) { 9783 UIkit.notification.closeAll = function (group, immediate) { 9784 apply(document.body, function (el) { 9785 var notification = UIkit.getComponent(el, 'notification'); 9786 if (notification && (!group || group === notification.group)) { 9787 notification.close(immediate); 9788 } 9789 }); 9790 }; 9791 } 9792 9793 var _props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke']; 9794 9795 var Parallax = { 9796 9797 mixins: [Media], 9798
9799 props: _props.reduce(function (props, prop) { 9800 props[prop] = 'list'; 9801 return props; 9802 }, {}), 9803 9804 data: _props.reduce(function (data, prop) { 9805 data[prop] = undefined; 9806 return data; 9807 }, {}), 9808 9809 computed: { 9810 9811 props: function props(properties, $el) { 9812 var this$1 = this; 9813 9814 return _props.reduce(function (props, prop) { 9815 9816 if (isUndefined(properties[prop])) { 9817 return props; 9818 } 9819 9820 var isColor = prop.match(/color/i); 9821 var isCssProp = isColor || prop === 'opacity'; 9822 9823 var pos, bgPos, diff; 9824 var steps = properties[prop].slice(0); 9825 9826 if (isCssProp) { 9827 css($el, prop, ''); 9828 } 9829 9830 if (steps.length < 2) { 9831 steps.unshift((prop === 'scale' ? 1 : isCssProp ? css($el, prop) : 0) || 0); 9832 } 9833 9834 var unit = getUnit(steps); 9835 9836 if (isColor) { 9837 9838 var ref = $el.style; 9839 var color = ref.color; 9840 steps = steps.map(function (step) { 9841 return parseColor($el, step); 9842 }); 9843 $el.style.color = color; 9844 } else if (startsWith(prop, 'bg')) { 9845 9846 var attr = prop === 'bgy' ? 'height' : 'width'; 9847 steps = steps.map(function (step) { 9848 return toPx(step, attr, this$1.$el); 9849 }); 9850 9851 css($el, "background-position-" + prop[2], ''); 9852 bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y] 9853 9854 if (this$1.covers) { 9855 9856 var min = Math.min.apply(Math, steps); 9857 var max = Math.max.apply(Math, steps); 9858 var down = steps.indexOf(min) < steps.indexOf(max); 9859 9860 diff = max - min; 9861 9862 steps = steps.map(function (step) { 9863 return step - (down ? min : max); 9864 }); 9865 pos = (down ? -diff : 0) + "px"; 9866 } else { 9867 9868 pos = bgPos; 9869 } 9870 } else { 9871 9872 steps = steps.map(toFloat); 9873 } 9874 9875 if (prop === 'stroke') { 9876 9877 if (!steps.some(function (step) { 9878 return step; 9879 })) { 9880 return props; 9881 } 9882 9883 var length = getMaxPathLength(this$1.$el); 9884 css($el, 'strokeDasharray', length); 9885 9886 if (unit === '%') { 9887 steps = steps.map(function (step) { 9888 return step * length / 100; 9889 }); 9890 } 9891 9892 steps = steps.reverse(); 9893 9894 prop = 'strokeDashoffset'; 9895 } 9896 9897 props[prop] = { steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff }; 9898 9899 return props; 9900 }, {}); 9901 }, 9902 9903 bgProps: function bgProps() { 9904 var this$1 = this; 9905 9906 return ['bgx', 'bgy'].filter(function (bg) { 9907 return bg in this$1.props; 9908 }); 9909 }, 9910 9911 covers: function covers(_, $el) { 9912 return _covers($el); 9913 } 9914 9915 }, 9916 9917 disconnected: function disconnected() { 9918 delete this._image; 9919 }, 9920 9921 update: { 9922 9923 read: function read(data) { 9924 var this$1 = this; 9925 9926 data.active = this.matchMedia; 9927 9928 if (!data.active) { 9929 return; 9930 } 9931 9932 if (!data.image && this.covers && this.bgProps.length) { 9933 var src = css(this.$el, 'backgroundImage').replace(/^none|url\(["']?(.+?)["']?\)$/, '$1'); 9934 9935 if (src) { 9936 var img = new Image(); 9937 img.src = src; 9938 data.image = img; 9939 9940 if (!img.naturalWidth) { 9941 img.onload = function () { 9942 return this$1.$update(); 9943 }; 9944 } 9945 } 9946 } 9947 9948 var image = data.image; 9949 9950 if (!image || !image.naturalWidth) { 9951 return; 9952 } 9953 9954 var dimEl = { 9955 width: this.$el.offsetWidth, 9956 height: this.$el.offsetHeight 9957 }; 9958 var dimImage = {
9959 width: image.naturalWidth, 9960 height: image.naturalHeight 9961 }; 9962 9963 var dim = Dimensions.cover(dimImage, dimEl); 9964 9965 this.bgProps.forEach(function (prop) { 9966 9967 var ref = this$1.props[prop]; 9968 var diff = ref.diff; 9969 var bgPos = ref.bgPos; 9970 var steps = ref.steps; 9971 var attr = prop === 'bgy' ? 'height' : 'width'; 9972 var span = dim[attr] - dimEl[attr]; 9973 9974 if (span < diff) { 9975 dimEl[attr] = dim[attr] + diff - span; 9976 } else if (span > diff) { 9977 9978 var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el); 9979 9980 if (posPercentage) { 9981 this$1.props[prop].steps = steps.map(function (step) { 9982 return step - (span - diff) / posPercentage; 9983 }); 9984 } 9985 } 9986 9987 dim = Dimensions.cover(dimImage, dimEl); 9988 }); 9989 9990 data.dim = dim; 9991 }, 9992 9993 write: function write(ref) { 9994 var dim = ref.dim; 9995 var active = ref.active; 9996 9997 if (!active) { 9998 css(this.$el, { backgroundSize: '', backgroundRepeat: '' }); 9999 return; 10000 } 10001 10002 dim && css(this.$el, { 10003 backgroundSize: dim.width + "px " + dim.height + "px", 10004 backgroundRepeat: 'no-repeat' 10005 }); 10006 }, 10007 10008 events: ['resize'] 10009 10010 }, 10011 10012 methods: { 10013 10014 reset: function reset() { 10015 var this$1 = this; 10016 10017 each(this.getCss(0), function (_, prop) { 10018 return css(this$1.$el, prop, ''); 10019 }); 10020 }, 10021 10022 getCss: function getCss(percent) { 10023 10024 var ref = this; 10025 var props = ref.props; 10026 return Object.keys(props).reduce(function (css, prop) { 10027 10028 var ref = props[prop]; 10029 var steps = ref.steps; 10030 var unit = ref.unit; 10031 var pos = ref.pos; 10032 var value = getValue(steps, percent); 10033 10034 switch (prop) { 10035 10036 // transforms 10037 case 'x': 10038 case 'y': 10039 { 10040 unit = unit || 'px'; 10041 css.transform += " translate" + ucfirst(prop) + "(" + toFloat(value).toFixed(unit === 'px' ? 0 : 2) + unit + ")"; 10042 break; 10043 } 10044 case 'rotate': 10045 unit = unit || 'deg'; 10046 css.transform += " rotate(" + (value + unit) + ")"; 10047 break; 10048 case 'scale': 10049 css.transform += " scale(" + value + ")"; 10050 break; 10051 10052 // bg image 10053 case 'bgy': 10054 case 'bgx': 10055 css["background-position-" + prop[2]] = "calc(" + pos + " + " + value + "px)"; 10056 break; 10057 10058 // color 10059 case 'color': 10060 case 'backgroundColor': 10061 case 'borderColor': 10062 { 10063 10064 var ref$1 = getStep(steps, percent); 10065 var start = ref$1[0]; 10066 var end = ref$1[1]; 10067 var p = ref$1[2]; 10068 10069 css[prop] = "rgba(" + start.map(function (value, i) { 10070 value = value + p * (end[i] - value); 10071 return i === 3 ? toFloat(value) : parseInt(value, 10); 10072 }).join(',') + ")"; 10073 break; 10074 } 10075 // CSS Filter 10076 case 'blur': 10077 unit = unit || 'px'; 10078 css.filter += " blur(" + (value + unit) + ")"; 10079 break; 10080 case 'hue': 10081 unit = unit || 'deg'; 10082 css.filter += " hue-rotate(" + (value + unit) + ")"; 10083 break; 10084 case 'fopacity': 10085 unit = unit || '%'; 10086 css.filter += " opacity(" + (value + unit) + ")"; 10087 break; 10088 case 'grayscale': 10089 case 'invert': 10090 case 'saturate': 10091 case 'sepia': 10092 unit = unit || '%'; 10093 css.filter += " " + prop + "(" + (value + unit) + ")"; 10094 break; 10095 default: 10096 css[prop] = value; 10097 } 10098 10099 return css; 10100 }, { transform: '', filter: '' }); 10101 } 10102 10103 } 10104 10105 }; 10106 10107 function parseColor(el, color) { 10108 return css(css(el, 'color', color), 'color').split(/[(),]/g).slice(1, -1).concat(1).slice(0, 4).map(toFloat); 10109 } 10110 10111 function getStep(steps, percent) { 10112 var count = steps.length - 1; 10113 var index = Math.min(Math.floor(count * percent), count - 1); 10114 var step = steps.slice(index, index + 2); 10115 10116 step.push(percent === 1 ? 1 : percent % (1 / count) * count); 10117 10118 return step; 10119 } 10120 10121 function getValue(steps, percent, digits) { 10122 if (digits === void 0) digits = 2; 10123 10124 var ref = getStep(steps, percent); 10125 var start = ref[0]; 10126 var end = ref[1]; 10127 var p = ref[2]; 10128 return (isNumber(start) ? start + Math.abs(start - end) * p * (start < end ? 1 : -1) : +end).toFixed(digits); 10129 } 10130 10131 function getUnit(steps) { 10132 return steps.reduce(function (unit, step) { 10133 return isString(step) && step.replace(/-|\d/g, '').trim() || unit; 10134 }, ''); 10135 } 10136 10137 function _covers(el) { 10138 var ref = el.style; 10139 var backgroundSize = ref.backgroundSize; 10140 var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover'; 10141 el.style.backgroundSize = backgroundSize; 10142 return covers; 10143 } 10144 10145 var parallax = { 10146 10147 mixins: [Parallax], 10148 10149 props: { 10150 target: String, 10151 viewport: Number, 10152 easing: Number 10153 }, 10154 10155 data: { 10156 target: false, 10157 viewport: 1, 10158 easing: 1 10159 }, 10160 10161 computed: { 10162 10163 target: function target(ref, $el) { 10164 var target = ref.target; 10165 10166 return getOffsetElement(target && query(target, $el) || $el); 10167 } 10168 10169 }, 10170 10171 update: { 10172 10173 read: function read(ref, type) { 10174 var percent = ref.percent; 10175 var active = ref.active; 10176 10177 if (type !== 'scroll') { 10178 percent = false;
10179 } 10180 10181 if (!active) { 10182 return; 10183 } 10184 10185 var prev = percent; 10186 percent = ease(scrolledOver(this.target) / (this.viewport || 1), this.easing); 10187 10188 return { 10189 percent: percent, 10190 style: prev !== percent ? this.getCss(percent) : false 10191 }; 10192 }, 10193 10194 write: function write(ref) { 10195 var style = ref.style; 10196 var active = ref.active; 10197 10198 if (!active) { 10199 this.reset(); 10200 return; 10201 } 10202 10203 style && css(this.$el, style); 10204 }, 10205 10206 events: ['scroll', 'resize'] 10207 } 10208 10209 }; 10210 10211 function ease(percent, easing) { 10212 return clamp(percent * (1 - (easing - easing * percent))); 10213 } 10214 10215 // SVG elements do not inherit from HTMLElement 10216 function getOffsetElement(el) { 10217 return el ? 'offsetTop' in el ? el : getOffsetElement(el.parentNode) : document.body; 10218 } 10219 10220 var SliderReactive = { 10221 10222 update: { 10223 10224 write: function write() { 10225 10226 if (this.stack.length || this.dragging) { 10227 return; 10228 } 10229 10230 var index = this.getValidIndex(this.index); 10231 10232 if (!~this.prevIndex || this.index !== index) { 10233 this.show(index); 10234 } 10235 }, 10236 10237 events: ['resize'] 10238 10239 } 10240 10241 }; 10242 10243 function Transitioner$1(prev, next, dir, ref) { 10244 var center = ref.center; 10245 var easing = ref.easing; 10246 var list = ref.list; 10247 10248 var deferred = new Deferred(); 10249 10250 var from = prev ? getLeft(prev, list, center) : getLeft(next, list, center) + offset(next).width * dir; 10251 var to = next ? getLeft(next, list, center) : from + offset(prev).width * dir * (isRtl ? -1 : 1); 10252 10253 return { 10254 10255 dir: dir, 10256 10257 show: function show(duration, percent, linear) { 10258 if (percent === void 0) percent = 0; 10259 10260 var timing = linear ? 'linear' : easing; 10261 duration -= Math.round(duration * clamp(percent, -1, 1)); 10262 10263 this.translate(percent); 10264 10265 prev && this.updateTranslates(); 10266 percent = prev ? percent : clamp(percent, 0, 1); 10267 triggerUpdate$1(this.getItemIn(), 'itemin', { percent: percent, duration: duration, timing: timing, dir: dir }); 10268 prev && triggerUpdate$1(this.getItemIn(true), 'itemout', { percent: 1 - percent, duration: duration, timing: timing, dir: dir }); 10269 10270 Transition.start(list, { transform: _translate(-to * (isRtl ? -1 : 1), 'px') }, duration, timing).then(deferred.resolve, noop); 10271 10272 return deferred.promise; 10273 }, 10274 10275 stop: function stop() { 10276 return Transition.stop(list); 10277 }, 10278 10279 cancel: function cancel() { 10280 Transition.cancel(list); 10281 }, 10282 10283 reset: function reset() { 10284 css(list, 'transform', ''); 10285 }, 10286 10287 forward: function forward(duration, percent) { 10288 if (percent === void 0) percent = this.percent(); 10289 10290 Transition.cancel(list); 10291 return this.show(duration, percent, true); 10292 }, 10293 10294 translate: function translate(percent) { 10295 10296 var distance = this.getDistance() * dir * (isRtl ? -1 : 1); 10297 10298 css(list, 'transform', _translate(clamp(-to + (distance - distance * percent), -getWidth(list), offset(list).width) * (isRtl ? -1 : 1), 'px')); 10299 10300 this.updateTranslates(); 10301 10302 if (prev) { 10303 percent = clamp(percent, -1, 1); 10304 triggerUpdate$1(this.getItemIn(), 'itemtranslatein', { percent: percent, dir: dir }); 10305 triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', { percent: 1 - percent, dir: dir }); 10306 } 10307 }, 10308 10309 percent: function percent() { 10310 return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from)); 10311 }, 10312 10313 getDistance: function getDistance() { 10314 return Math.abs(to - from); 10315 }, 10316 10317 getItemIn: function getItemIn(out) { 10318 if (out === void 0) out = false; 10319 10320 var actives = this.getActives(); 10321 var all = sortBy(slides(list), 'offsetLeft'); 10322 var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]); 10323 10324 return ~i && all[i + (prev && !out ? dir : 0)]; 10325 }, 10326 10327 getActives: function getActives() { 10328 10329 var left = getLeft(prev || next, list, center); 10330 10331 return sortBy(slides(list).filter(function (slide) { 10332 var slideLeft = getElLeft(slide, list); 10333 return slideLeft >= left && slideLeft + offset(slide).width <= offset(list).width + left; 10334 }), 'offsetLeft'); 10335 }, 10336 10337 updateTranslates: function updateTranslates() { 10338 10339 var actives = this.getActives(); 10340 10341 slides(list).forEach(function (slide) { 10342 var isActive = includes(actives, slide); 10343 10344 triggerUpdate$1(slide, "itemtranslate" + (isActive ? 'in' : 'out'), { 10345 percent: isActive ? 1 : 0, 10346 dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1 10347 }); 10348 }); 10349 } 10350 10351 }; 10352 } 10353 10354 function getLeft(el, list, center) { 10355 10356 var left = getElLeft(el, list); 10357 10358 return center ? left - centerEl(el, list) : Math.min(left, getMax(list)); 10359 } 10360 10361 function getMax(list) { 10362 return Math.max(0, getWidth(list) - offset(list).width); 10363 } 10364 10365 function getWidth(list) { 10366 return slides(list).reduce(function (right, el) { 10367 return offset(el).width + right; 10368 }, 0); 10369 } 10370 10371 function getMaxWidth(list) { 10372 return slides(list).reduce(function (right, el) { 10373 return Math.max(right, offset(el).width); 10374 }, 0); 10375 } 10376 10377 function centerEl(el, list) { 10378 return offset(list).width / 2 - offset(el).width / 2; 10379 } 10380 10381 function getElLeft(el, list) { 10382 return (position(el).left + (isRtl ? offset(el).width - offset(list).width : 0)) * (isRtl ? -1 : 1); 10383 } 10384 10385 function triggerUpdate$1(el, type, data) { 10386 trigger(el, createEvent(type, false, false, data)); 10387 } 10388 10389 function slides(list) { 10390 return _children(list); 10391 } 10392 10393 var slider = { 10394 10395 mixins: [Class, Slider, SliderReactive], 10396 10397 props: { 10398 center: Boolean, 10399 sets: Boolean 10400 }, 10401 10402 data: { 10403 center: false, 10404 sets: false, 10405 attrItem: 'uk-slider-item', 10406 selList: '.uk-slider-items', 10407 selNav: '.uk-slider-nav', 10408 clsContainer: 'uk-slider-container', 10409 Transitioner: Transitioner$1 10410 }, 10411 10412 computed: { 10413 10414 avgWidth: function avgWidth() { 10415 return getWidth(this.list) / this.length; 10416 }, 10417 10418 finite: function finite(ref) { 10419 var finite = ref.finite; 10420 10421 return finite || Math.ceil(getWidth(this.list)) < offset(this.list).width + getMaxWidth(this.list) + this.center; 10422 }, 10423 10424 maxIndex: function maxIndex() { 10425 10426 if (!this.finite || this.center && !this.sets) { 10427 return this.length - 1; 10428 } 10429 10430 if (this.center) { 10431 return last(this.sets); 10432 } 10433 10434 css(this.slides, 'order', ''); 10435 10436 var max = getMax(this.list); 10437 var i = this.length; 10438 10439 while (i--) { 10440 if (getElLeft(this.list.children[i], this.list) < max) { 10441 return Math.min(i + 1, this.length - 1); 10442 } 10443 } 10444 10445 return 0; 10446 }, 10447 10448 sets: function sets(ref) { 10449 var this$1 = this; 10450 var sets = ref.sets; 10451 10452 var width = offset(this.list).width / (this.center ? 2 : 1); 10453 10454 var left = 0; 10455 var leftCenter = width; 10456 var slideLeft = 0; 10457 10458 sets = sets && this.slides.reduce(function (sets, slide, i) { 10459 10460 var ref = offset(slide); 10461 var slideWidth = ref.width; 10462 var slideRight = slideLeft + slideWidth; 10463 10464 if (slideRight > left) { 10465 10466 if (!this$1.center && i > this$1.maxIndex) { 10467 i = this$1.maxIndex; 10468 } 10469 10470 if (!includes(sets, i)) { 10471 10472 var cmp = this$1.slides[i + 1]; 10473 if (this$1.center && cmp && slideWidth < leftCenter - offset(cmp).width / 2) { 10474 leftCenter -= slideWidth; 10475 } else { 10476 leftCenter = width; 10477 sets.push(i); 10478 left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0); 10479 } 10480 } 10481 } 10482 10483 slideLeft += slideWidth; 10484 10485 return sets; 10486 }, []); 10487
10488 return !isEmpty(sets) && sets; 10489 }, 10490 10491 transitionOptions: function transitionOptions() { 10492 return { 10493 center: this.center, 10494 list: this.list 10495 }; 10496 } 10497 10498 }, 10499 10500 connected: function connected() { 10501 toggleClass(this.$el, this.clsContainer, !$("." + this.clsContainer, this.$el)); 10502 }, 10503 10504 update: { 10505 10506 write: function write() { 10507 var this$1 = this; 10508 10509 $$("[" + this.attrItem + "],[data-" + this.attrItem + "]", this.$el).forEach(function (el) { 10510 var index = data(el, this$1.attrItem); 10511 this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex)); 10512 }); 10513 10514 if (this.length && !this.dragging && !this.stack.length) { 10515 this.reorder(); 10516 this._translate(1); 10517 } 10518 10519 var actives = this._getTransitioner(this.index).getActives(); 10520 this.slides.forEach(function (slide) { 10521 return toggleClass(slide, this$1.clsActive, includes(actives, slide)); 10522 }); 10523 (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { 10524 return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); 10525 }); 10526 }, 10527 10528 events: ['resize'] 10529 10530 }, 10531 10532 events: { 10533 10534 beforeitemshow: function beforeitemshow(e) { 10535 10536 if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) { 10537 this.index = this.getValidIndex(); 10538 } 10539 10540 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)); 10541 10542 if (!this.dragging && diff > 1) { 10543 10544 for (var i = 0; i < diff; i++) { 10545 this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous'); 10546 } 10547 10548 e.preventDefault(); 10549 return; 10550 } 10551 10552 this.duration = speedUp(this.avgWidth / this.velocity) * (offset(this.dir < 0 || !this.slides[this.prevIndex] ? this.slides[this.index] : this.slides[this.prevIndex]).width / this.avgWidth); 10553 10554 this.reorder(); 10555 }, 10556 10557 itemshow: function itemshow() { 10558 ~this.prevIndex && addClass(this._getTransitioner().getItemIn(), this.clsActive); 10559 } 10560 10561 }, 10562 10563 methods: { 10564 10565 reorder: function reorder() { 10566 var this$1 = this; 10567 10568 if (this.finite) { 10569 css(this.slides, 'order', ''); 10570 return; 10571 } 10572 10573 var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index; 10574 10575 this.slides.forEach(function (slide, i) { 10576 return css(slide, 'order', this$1.dir > 0 && i < index ? 1 : this$1.dir < 0 && i >= this$1.index ? -1 : ''); 10577 }); 10578 10579 if (!this.center) { 10580 return; 10581 } 10582 10583 var next = this.slides[index]; 10584 var width = offset(this.list).width / 2 - offset(next).width / 2; 10585 var j = 0; 10586 10587 while (width > 0) { 10588 var slideIndex = this.getIndex(--j + index, index); 10589 var slide = this.slides[slideIndex]; 10590 10591 css(slide, 'order', slideIndex > index ? -2 : -1); 10592 width -= offset(slide).width; 10593 } 10594 }, 10595 10596 getValidIndex: function getValidIndex(index, prevIndex) { 10597 if (index === void 0) index = this.index; 10598 if (prevIndex === void 0) prevIndex = this.prevIndex; 10599 10600 index = this.getIndex(index, prevIndex); 10601 10602 if (!this.sets) { 10603 return index; 10604 } 10605 10606 var prev; 10607 10608 do { 10609 10610 if (includes(this.sets, index)) { 10611 return index; 10612 } 10613 10614 prev = index; 10615 index = this.getIndex(index + this.dir, prevIndex); 10616 } while (index !== prev); 10617 10618 return index; 10619 } 10620 10621 } 10622 10623 }; 10624 10625 var sliderParallax = { 10626 10627 mixins: [Parallax], 10628 10629 data: { 10630 selItem: '!li' 10631 }, 10632 10633 computed: { 10634 10635 item: function item(ref, $el) { 10636 var selItem = ref.selItem; 10637 10638 return query(selItem, $el); 10639 } 10640 10641 }, 10642 10643 events: [{ 10644 10645 name: 'itemshown', 10646 10647 self: true, 10648 10649 el: function el() { 10650 return this.item; 10651 }, 10652 10653 handler: function handler() { 10654 css(this.$el, this.getCss(.5)); 10655 } 10656 10657 }, { 10658 name: 'itemin itemout', 10659 10660 self: true, 10661 10662 el: function el() { 10663 return this.item; 10664 }, 10665 10666 handler: function handler(ref) { 10667 var type = ref.type; 10668 var ref_detail = ref.detail; 10669 var percent = ref_detail.percent; 10670 var duration = ref_detail.duration; 10671 var timing = ref_detail.timing; 10672 var dir = ref_detail.dir; 10673 10674 Transition.cancel(this.$el); 10675 css(this.$el, this.getCss(getCurrent(type, dir, percent))); 10676 10677 Transition.start(this.$el, this.getCss(isIn(type) ? .5 : dir >
10677 0 ? 1 : 0), duration, timing).catch(noop); 10678 } 10679 }, { 10680 name: 'transitioncanceled transitionend', 10681 10682 self: true, 10683 10684 el: function el() { 10685 return this.item; 10686 }, 10687 10688 handler: function handler() { 10689 Transition.cancel(this.$el); 10690 } 10691 10692 }, { 10693 name: 'itemtranslatein itemtranslateout', 10694 10695 self: true, 10696 10697 el: function el() { 10698 return this.item; 10699 }, 10700 10701 handler: function handler(ref) { 10702 var type = ref.type; 10703 var ref_detail = ref.detail; 10704 var percent = ref_detail.percent; 10705 var dir = ref_detail.dir; 10706 10707 Transition.cancel(this.$el); 10708 css(this.$el, this.getCss(getCurrent(type, dir, percent))); 10709 } 10710 }] 10711 10712 }; 10713 10714 function isIn(type) { 10715 return endsWith(type, 'in'); 10716 } 10717 10718 function getCurrent(type, dir, percent) { 10719 10720 percent /= 2; 10721 10722 return !isIn(type) ? dir < 0 ? percent : 1 - percent : dir < 0 ? 1 - percent : percent; 10723 } 10724 10725 var Animations$2 = assign({}, Animations, { 10726 10727 fade: { 10728 10729 show: function show() { 10730 return [{ opacity: 0, zIndex: 0 }, { zIndex: -1 }]; 10731 }, 10732 10733 percent: function percent(current) { 10734 return 1 - css(current, 'opacity'); 10735 }, 10736 10737 translate: function translate(percent) { 10738 return [{ opacity: 1 - percent, zIndex: 0 }, { zIndex: -1 }]; 10739 } 10740 10741 }, 10742 10743 scale: { 10744 10745 show: function show() { 10746 return [{ opacity: 0, transform: scale3d(1 + .5), zIndex: 0 }, { zIndex: -1 }]; 10747 }, 10748 10749 percent: function percent(current) { 10750 return 1 - css(current, 'opacity'); 10751 }, 10752 10753 translate: function translate(percent) { 10754 return [{ opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0 }, { zIndex: -1 }]; 10755 } 10756 10757 }, 10758 10759 pull: { 10760 10761 show: function show(dir) { 10762 return dir < 0 ? [{ transform: _translate(30), zIndex: -1 }, { transform: _translate(), zIndex: 0 }] : [{ transform: _translate(-100), zIndex: 0 }, { transform: _translate(), zIndex: -1 }]; 10763 }, 10764 10765 percent: function percent(current, next, dir) { 10766 return dir < 0 ? 1 - translated(next) : translated(current); 10767 }, 10768 10769 translate: function translate(percent, dir) { 10770 return dir < 0 ? [{ transform: _translate(30 * percent), zIndex: -1 }, { transform: _translate(-100 * (1 - percent)), zIndex: 0 }] : [{ transform: _translate(-percent * 100), zIndex: 0 }, { transform: _translate(30 * (1 - percent)), zIndex: -1 }]; 10771 } 10772 10773 }, 10774 10775 push: { 10776 10777 show: function show(dir) { 10778 return dir < 0 ? [{ transform: _translate(100), zIndex: 0 }, { transform: _translate(), zIndex: -1 }] : [{ transform: _translate(-30), zIndex: -1 }, { transform: _translate(), zIndex: 0 }]; 10779 }, 10780 10781 percent: function percent(current, next, dir) { 10782 return dir > 0 ? 1 - translated(next) : translated(current); 10783 }, 10784 10785 translate: function translate(percent, dir) { 10786 return dir < 0 ? [{ transform: _translate(percent * 100), zIndex: 0 }, { transform: _translate(-30 * (1 - percent)), zIndex: -1 }] : [{ transform: _translate(-30 * percent), zIndex: -1 }, { transform: _translate(100 * (1 - percent)), zIndex: 0 }]; 10787 } 10788 10789 } 10790 10791 }); 10792 10793 var slideshow = { 10794 10795 mixins: [Class, Slideshow, SliderReactive], 10796 10797 props: { 10798 ratio: String, 10799 minHeight: Number, 10800 maxHeight: Number 10801 }, 10802 10803 data: { 10804 ratio: '16:9', 10805 minHeight: false, 10806 maxHeight: false, 10807 selList: '.uk-slideshow-items', 10808 attrItem: 'uk-slideshow-item', 10809 selNav: '.uk-slideshow-nav', 10810 Animations: Animations$2 10811 }, 10812 10813 update: { 10814 10815 read: function read() { 10816 10817 var ref = this.ratio.split(':').map(Number); 10818 var width = ref[0]; 10819 var height = ref[1]; 10820 10821 height = height * this.list.offsetWidth / width || 0; 10822 10823 if (this.minHeight) { 10824 height = Math.max(this.minHeight, height); 10825 } 10826 10827 if (this.maxHeight) { 10828 height = Math.min(this.maxHeight, height); 10829 } 10830 10831 return { height: height - boxModelAdjust(this.list, 'height', 'content-box') }; 10832 }, 10833 10834 write: function write(ref) { 10835 var height = ref.height; 10836 10837 height > 0 && css(this.list, 'minHeight', height); 10838 }, 10839 10840 events: ['resize'] 10841 10842 } 10843 10844 }; 10845 10846 var sortable = { 10847 10848 mixins: [Class, Animate], 10849 10850 props: { 10851 group: String, 10852 threshold: Number, 10853 clsItem: String, 10854 clsPlaceholder: String, 10855 clsDrag: String, 10856 clsDragState: String, 10857 clsBase: String, 10858 clsNoDrag: String, 10859 clsEmpty: String, 10860 clsCustom: String, 10861 handle: String 10862 }, 10863 10864 data: { 10865 group: false, 10866 threshold: 5, 10867 clsItem: 'uk-sortable-item', 10868 clsPlaceholder: 'uk-sortable-placeholder', 10869 clsDrag: 'uk-sortable-drag', 10870 clsDragState: 'uk-drag', 10871 clsBase: 'uk-sortable', 10872 clsNoDrag: 'uk-sortable-nodrag', 10873 clsEmpty: 'uk-sortable-empty', 10874 clsCustom: '', 10875 handle: false, 10876 pos: {} 10877 }, 10878 10879 created: function created() { 10880 var this$1 = this; 10881 10882 ['init', 'start', 'move', 'end'].forEach(function (key) { 10883 var fn = this$1[key]; 10884 this$1[key] = function (e) { 10885 assign(this$1.pos, getEventPos(e)); 10886 fn(e); 10887 }; 10888 }); 10889 }, 10890 10891 events: { 10892 10893 name: pointerDown, 10894 passive: false, 10895 handler: 'init' 10896 10897 }, 10898 10899 computed: { 10900 10901 target: function target() { 10902 return (this.$el.tBodies || [this.$el])[0]; 10903 }, 10904 10905 items: function items() { 10906 return _children(this.target); 10907 }, 10908 10909 isEmpty: { 10910 10911 get: function get$$1() { 10912 return isEmpty(this.items); 10913 }, 10914 10915 watch: function watch(empty) { 10916 toggleClass(this.target, this.clsEmpty, empty); 10917 }, 10918 10919 immediate: true 10920 10921 }, 10922 10923 handles: { 10924 10925 get: function get$$1(ref, el) { 10926 var handle = ref.handle; 10927 10928 return handle ? $$(handle, el) : this.items; 10929 }, 10930 10931 watch: function watch(handles, prev) { 10932 css(prev, { touchAction: '', userSelect: '' }); 10933 css(handles, { touchAction: hasTouch ? 'none' : '', userSelect: 'none' }); // touchAction set to 'none' causes a performance drop in Chrome 80 10934 }, 10935 10936 immediate: true 10937 10938 } 10939 10940 }, 10941 10942 update: { 10943 10944 write: function write() { 10945 10946 if (!this.drag || !parent(this.placeholder)) { 10947 return; 10948 } 10949 10950 // clamp to viewport 10951 var ref = this.pos; 10952 var x = ref.x; 10953 var y = ref.y; 10954 var ref$1 = this.origin; 10955 var offsetTop = ref$1.offsetTop; 10956 var offsetLeft = ref$1.offsetLeft; 10957 var ref$2 = this.drag; 10958 var offsetHeight = ref$2.offsetHeight; 10959 var offsetWidth = ref$2.offsetWidth; 10960 var ref$3 = offset(window); 10961 var right = ref$3.right; 10962 var bottom = ref$3.bottom; 10963 var target = document.elementFromPoint(x, y); 10964 10965 css(this.drag, { 10966 top: clamp(y - offsetTop, 0, bottom - offsetHeight), 10967 left: clamp(x - offsetLeft, 0, right - offsetWidth) 10968 }); 10969
10970 var sortable = this.getSortable(target); 10971 var previous = this.getSortable(this.placeholder); 10972 var move = sortable !== previous; 10973 10974 if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) { 10975 return; 10976 } 10977 10978 target = sortable.target === target.parentNode && target || sortable.items.filter(function (element) { 10979 return within(target, element); 10980 })[0]; 10981 10982 if (move) { 10983 previous.remove(this.placeholder); 10984 } else if (!target) { 10985 return; 10986 } 10987 10988 sortable.insert(this.placeholder, target); 10989 10990 if (!includes(this.touched, sortable)) { 10991 this.touched.push(sortable); 10992 } 10993 }, 10994 10995 events: ['move'] 10996 10997 }, 10998 10999 methods: { 11000 11001 init: function init(e) { 11002 11003 var target = e.target; 11004 var button = e.button; 11005 var defaultPrevented = e.defaultPrevented; 11006 var ref = this.items.filter(function (el) { 11007 return within(target, el); 11008 }); 11009 var placeholder = ref[0]; 11010 11011 if (!placeholder || defaultPrevented || button > 0 || isInput(target) || within(target, "." + this.clsNoDrag) || this.handle && !within(target, this.handle)) { 11012 return; 11013 } 11014 11015 e.preventDefault(); 11016 11017 this.touched = [this]; 11018 this.placeholder = placeholder; 11019 this.origin = assign({ target: target, index: index(placeholder) }, this.pos); 11020 11021 on(document, pointerMove, this.move); 11022 on(document, pointerUp, this.end); 11023 11024 if (!this.threshold) { 11025 this.start(e); 11026 } 11027 }, 11028 11029 start: function start(e) { 11030 11031 this.drag = appendDrag(this.$container, this.placeholder); 11032 var ref = this.placeholder.getBoundingClientRect(); 11033 var left = ref.left; 11034 var top = ref.top; 11035 assign(this.origin, { offsetLeft: this.pos.x - left, offsetTop: this.pos.y - top }); 11036 11037 addClass(this.drag, this.clsDrag, this.clsCustom); 11038 addClass(this.placeholder, this.clsPlaceholder); 11039 addClass(this.items, this.clsItem); 11040 addClass(document.documentElement, this.clsDragState); 11041 11042 trigger(this.$el, 'start', [this, this.placeholder]); 11043 11044 trackScroll(this.pos); 11045 11046 this.move(e); 11047 }, 11048 11049 move: function move(e) { 11050 11051 if (this.drag) { 11052 this.$emit('move'); 11053 } else if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) { 11054 this.start(e); 11055 } 11056 }, 11057 11058 end: function end(e) { 11059 11060 off(document, pointerMove, this.move); 11061 off(document, pointerUp, this.end); 11062 off(window, 'scroll', this.scroll); 11063 11064 if (!this.drag) { 11065 return; 11066 } 11067 11068 untrackScroll(); 11069 11070 var sortable = this.getSortable(this.placeholder); 11071 11072 if (this === sortable) { 11073 if (this.origin.index !== index(this.placeholder)) { 11074 trigger(this.$el, 'moved', [this, this.placeholder]); 11075 } 11076 } else { 11077 trigger(sortable.$el, 'added', [sortable, this.placeholder]); 11078 trigger(this.$el, 'removed', [this, this.placeholder]); 11079 } 11080 11081 trigger(this.$el, 'stop', [this, this.placeholder]); 11082 11083 _remove(this.drag); 11084 this.drag = null; 11085 11086 var classes = this.touched.map(function (sortable) { 11087 return sortable.clsPlaceholder + " " + sortable.clsItem; 11088 }).join(' '); 11089 this.touched.forEach(function (sortable) { 11090 return removeClass(sortable.items, classes); 11091 }); 11092 11093 removeClass(document.documentElement, this.clsDragState); 11094 }, 11095 11096 insert: function insert(element, target) { 11097 var this$1 = this; 11098 11099 addClass(this.items, this.clsItem); 11100 11101 var insert = function insert() { 11102 11103 if (target) { 11104 11105 if (!within(element, this$1.target) || isPredecessor(element, target)) { 11106 before(target, element); 11107 } else { 11108 after(target, element); 11109 } 11110 } else { 11111 append(this$1.target, element); 11112 } 11113 }; 11114 11115 if (this.animation) { 11116 this.animate(insert); 11117 } else { 11118 insert(); 11119 } 11120 }, 11121 11122 remove: function remove(element) { 11123 11124 if (!within(element, this.target)) { 11125 return; 11126 } 11127 11128 if (this.animation) { 11129 this.animate(function () { 11130 return _remove(element); 11131 }); 11132 } else { 11133 _remove(element); 11134 } 11135 }, 11136 11137 getSortable: function getSortable(element) { 11138 return element && (this.$getComponent(element, 'sortable') || this.get
11138Sortable(element.parentNode)); 11139 } 11140 11141 } 11142 11143 }; 11144 11145 function isPredecessor(element, target) { 11146 return element.parentNode === target.parentNode && index(element) > index(target); 11147 } 11148 11149 var trackTimer; 11150 function trackScroll(pos) { 11151 11152 var last = Date.now(); 11153 trackTimer = setInterval(function () { 11154 11155 var x = pos.x; 11156 var y = pos.y; 11157 y += window.pageYOffset; 11158 11159 var dist = (Date.now() - last) * .3; 11160 last = Date.now(); 11161 11162 scrollParents(document.elementFromPoint(x, pos.y)).some(function (scrollEl) { 11163 11164 var scroll = scrollEl.scrollTop; 11165 var scrollHeight = scrollEl.scrollHeight; 11166 11167 var ref = offset(getViewport(scrollEl)); 11168 var top = ref.top; 11169 var bottom = ref.bottom; 11170 var height = ref.height; 11171 11172 if (top < y && top + 30 > y) { 11173 scroll -= dist; 11174 } else if (bottom > y && bottom - 30 < y) { 11175 scroll += dist; 11176 } else { 11177 return; 11178 } 11179 11180 if (scroll > 0 && scroll < scrollHeight - height) { 11181 scrollTop(scrollEl, scroll); 11182 return true; 11183 } 11184 }); 11185 }, 15); 11186 } 11187 11188 function untrackScroll() { 11189 clearInterval(trackTimer); 11190 } 11191 11192 function appendDrag(container, element) { 11193 var clone = append(container, element.outerHTML.replace(/(^<)(?:li|tr)|(?:li|tr)(\/>$)/g, '$1div$2')); 11194 11195 attr(clone, 'style', attr(clone, 'style') + ";margin:0!important"); 11196 11197 css(clone, assign({ 11198 boxSizing: 'border-box', 11199 width: element.offsetWidth, 11200 height: element.offsetHeight, 11201 overflow: 'hidden' 11202 }, css(element, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom']))); 11203 11204 height(clone.firstElementChild, height(element.firstElementChild)); 11205 11206 return clone; 11207 } 11208 11209 var obj$1; 11210 11211 var actives = []; 11212 11213 var tooltip = { 11214 11215 mixins: [Container, Togglable, Position], 11216 11217 args: 'title', 11218 11219 props: { 11220 delay: Number, 11221 title: String 11222 }, 11223 11224 data: { 11225 pos: 'top', 11226 title: '', 11227 delay: 0, 11228 animation: ['uk-animation-scale-up'], 11229 duration: 100, 11230 cls: 'uk-active', 11231 clsPos: 'uk-tooltip' 11232 }, 11233 11234 beforeConnect: function beforeConnect() { 11235 this._hasTitle = hasAttr(this.$el, 'title'); 11236 attr(this.$el, { title: '', 'aria-expanded': false }); 11237 }, 11238 11239 disconnected: function disconnected() { 11240 this.hide(); 11241 attr(this.$el, { title: this._hasTitle ? this.title : null, 'aria-expanded': null }); 11242 }, 11243 11244 methods: { 11245 11246 show: function show() { 11247 var this$1 = this; 11248 11249 if (this.isActive() || !this.title) { 11250 return; 11251 } 11252 11253 actives.forEach(function (active) { 11254 return active.hide(); 11255 }); 11256 actives.push(this); 11257 11258 this._unbind = on(document, pointerUp, function (e) { 11259 return !within(e.target, this$1.$el) && this$1.hide(); 11260 }); 11261 11262 clearTimeout(this.showTimer); 11263 this.showTimer = setTimeout(this._show, this.delay); 11264 }, 11265 11266 hide: function hide() { 11267 var this$1 = this; 11268 11269 if (!this.isActive() || matches(this.$el, 'input:focus')) { 11270 return; 11271 } 11272 11273 this.toggleElement(this.tooltip, false, false).then(function () { 11274 11275 actives.splice(actives.indexOf(this$1), 1); 11276 11277 clearTimeout(this$1.showTimer); 11278 11279 this$1.tooltip = _remove(this$1.tooltip); 11280 this$1._unbind(); 11281 }); 11282 }, 11283 11284 _show: function _show() { 11285 var this$1 = this; 11286 11287 this.tooltip = append(this.container, "<div class=\"" + this.clsPos + "\"> <div class=\"" + this.clsPos + "-inner\">" + this.title + "</div> </div>"); 11288 11289 on(this.tooltip, 'toggled', function () { 11290 11291 var toggled = this$1.isToggled(this$1.tooltip); 11292 11293 attr(this$1.$el, 'aria-expanded', toggled); 11294 11295 if (!toggled) { 11296 return; 11297 } 11298 11299 this$1.positionAt(this$1.tooltip, this$1.$el); 11300 11301 this$1.origin = this$1.getAxis() === 'y' ? flipPosition(this$1.dir) + "-" + this$1.al
11301ign : this$1.align + "-" + flipPosition(this$1.dir); 11302 }); 11303 11304 this.toggleElement(this.tooltip, true); 11305 }, 11306 11307 isActive: function isActive() { 11308 return includes(actives, this); 11309 } 11310 11311 }, 11312 11313 events: (obj$1 = { 11314 11315 focus: 'show', 11316 blur: 'hide' 11317 11318 }, obj$1[pointerEnter + " " + pointerLeave] = function (e) { 11319 if (isTouch(e)) { 11320 return; 11321 } 11322 e.type === pointerEnter ? this.show() : this.hide(); 11323 }, obj$1[pointerDown] = function (e) { 11324 if (!isTouch(e)) { 11325 return; 11326 } 11327 this.isActive() ? this.hide() : this.show(); 11328 }, obj$1) 11329 11330 }; 11331 11332 var upload = { 11333 11334 props: { 11335 allow: String, 11336 clsDragover: String, 11337 concurrent: Number, 11338 maxSize: Number, 11339 method: String, 11340 mime: String, 11341 msgInvalidMime: String, 11342 msgInvalidName: String, 11343 msgInvalidSize: String, 11344 multiple: Boolean, 11345 name: String, 11346 params: Object, 11347 type: String, 11348 url: String 11349 }, 11350 11351 data: { 11352 allow: false, 11353 clsDragover: 'uk-dragover', 11354 concurrent: 1, 11355 maxSize: 0, 11356 method: 'POST', 11357 mime: false, 11358 msgInvalidMime: 'Invalid File Type: %s', 11359 msgInvalidName: 'Invalid File Name: %s', 11360 msgInvalidSize: 'Invalid File Size: %s Kilobytes Max', 11361 multiple: false, 11362 name: 'files[]', 11363 params: {}, 11364 type: '', 11365 url: '', 11366 abort: noop, 11367 beforeAll: noop, 11368 beforeSend: noop, 11369 complete: noop, 11370 completeAll: noop, 11371 error: noop, 11372 fail: noop, 11373 load: noop, 11374 loadEnd: noop, 11375 loadStart: noop, 11376 progress: noop 11377 }, 11378 11379 events: { 11380 11381 change: function change(e) { 11382 11383 if (!matches(e.target, 'input[type="file"]')) { 11384 return; 11385 } 11386 11387 e.preventDefault(); 11388 11389 if (e.target.files) { 11390 this.upload(e.target.files); 11391 } 11392 11393 e.target.value = ''; 11394 }, 11395 11396 drop: function drop(e) { 11397 stop(e); 11398 11399 var transfer = e.dataTransfer; 11400 11401 if (!transfer || !transfer.files) { 11402 return; 11403 } 11404 11405 removeClass(this.$el, this.clsDragover); 11406 11407 this.upload(transfer.files); 11408 }, 11409 11410 dragenter: function dragenter(e) { 11411 stop(e); 11412 }, 11413 11414 dragover: function dragover(e) { 11415 stop(e); 11416 addClass(this.$el, this.clsDragover); 11417 }, 11418 11419 dragleave: function dragleave(e) { 11420 stop(e); 11421 removeClass(this.$el, this.clsDragover); 11422 } 11423 11424 }, 11425 11426 methods: { 11427 11428 upload: function upload(files) { 11429 var this$1 = this; 11430 11431 if (!files.length) { 11432 return; 11433 } 11434 11435 trigger(this.$el, 'upload', [files]); 11436 11437 for (var i = 0; i < files.length; i++) { 11438 11439 if (this.maxSize && this.maxSize * 1000 < files[i].size) { 11440 this.fail(this.msgInvalidSize.replace('%s', this.maxSize)); 11441 return; 11442 } 11443 11444 if (this.allow && !match$1(this.allow, files[i].name)) { 11445 this.fail(this.msgInvalidName.replace('%s', this.allow)); 11446 return; 11447 } 11448 11449 if (this.mime && !match$1(this.mime, files[i].type)) { 11450 this.fail(this.msgInvalidMime.replace('%s', this.mime)); 11451 return; 11452 } 11453 } 11454 11455 if (!this.multiple) { 11456 files = [files[0]]; 11457 } 11458 11459 this.beforeAll(this, files); 11460 11461 var chunks = chunk(files, this.concurrent); 11462 var upload = function upload(files) { 11463 11464 var data = new FormData(); 11465 11466 files.forEach(function (file) { 11467 return data.append(this$1.name, file); 11468 }); 11469 11470 for (var key in this$1.params) { 11471 data.append(key, this$1.params[key]); 11472 } 11473 11474 ajax(this$1.url, { 11475 data: data, 11476 method: this$1.method, 11477 responseType: this$1.type, 11478 beforeSend: function beforeSend(env) { 11479 11480 var xhr = env.xhr; 11481 xhr.upload && on(xhr.upload, 'progress', this$1.progress); 11482 ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { 11483 return on(xhr, type.toLowerCase(), this$1[type]); 11484 }); 11485 11486 this$1.beforeSend(env); 11487 } 11488 }).then(function (xhr) { 11489 11490 this$1.complete(xhr); 11491 11492 if (chunks.length) { 11493 upload(chunks.shift()); 11494 } else { 11495 this$1.completeAll(xhr); 11496 } 11497 }, function (e) { 11498 return this$1.error(e); 11499 }); 11500 }; 11501 11502 upload(chunks.shift()); 11503 } 11504 11505 } 11506 11507 }; 11508 11509 function match$1(pattern, path) { 11510 return path.match(new RegExp("^" + pattern.replace(/\//g, '\\/').replace(/\*\*/g, '(\\/[^\\/]+)*').replace(/\*/g, '[^\\/]+').replace(/((?!\\))\?/g, '$1.') + "$", 'i')); 11511 } 11512 11513 function chunk(files, size) { 11514 var chunks = []; 11515 for (var i = 0; i < files.length; i += size) { 11516 var chunk = []; 11517 for (var j = 0; j < size; j++) { 11518 chunk.push(files[i + j]); 11519 } 11520 chunks.push(chunk); 11521 } 11522 return chunks; 11523 } 11524 11525 function stop(e) { 11526 e.preventDefault(); 11527 e.stopPropagation(); 11528 } 11529 11530 var components$1 = /*#__PURE__*/Object.freeze({ 11531 __proto__: null, 11532 Countdown: countdown, 11533 Filter: filter$1, 11534 Lightbox: lightbox, 11535 LightboxPanel: LightboxPanel, 11536 Notification: notification, 11537 Parallax: parallax, 11538 Slider: slider, 11539 SliderParallax: sliderParallax, 11540 Slideshow: slideshow, 11541 SlideshowParallax: sliderParallax,
11542 Sortable: sortable, 11543 Tooltip: tooltip, 11544 Upload: upload 11545 }); 11546 11547 each(components$1, function (component, name) { 11548 return UIkit.component(name, component); 11549 }); 11550 11551 return UIkit; 11552 }); 11553}); 11554 11555var uikitIcons = createCommonjsModule(function (module, exports) { 11556 /*! UIkit 3.5.7 | https://www.getuikit.com | (c) 2014 - 2020 YOOtheme | MIT License */ 11557 11558 (function (global, factory) { 11559 module.exports = factory(); 11560 })(commonjsGlobal, function () { 11561 'use strict'; 11562 11563 function plugin(UIkit) { 11564 11565 if (plugin.installed) { 11566 return; 11567 } 11568 11569 UIkit.icon.add({ 11570 "500px": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg
vendor: 3,152 bytes, lines 11570-11571
11570\"><path d=\"M9.624,11.866c-0.141,0.132,0.479,0.658,0.662,0.418c0.051-0.046,0.607-0.61,0.662-0.664c0,0,0.738,0.719,0.814,0.719 c0.1,0,0.207-0.055,0.322-0.17c0.27-0.269,0.135-0.416,0.066-0.495l-0.631-0.616l0.658-0.668c0.146-0.156,0.021-0.314-0.1-0.449 c-0.182-0.18-0.359-0.226-0.471-0.125l-0.656,0.654l-0.654-0.654c-0.033-0.034-0.08-0.045-0.124-0.045 c-0.079,0-0.191,0.068-0.307,0.181c-0.202,0.202-0.247,0.351-0.133,0.462l0.665,0.665L9.624,11.866z\"/><path d=\"M11.066,2.884c-1.061,0-2.185,0.248-3.011,0.604c-0.087,0.034-0.141,0.106-0.15,0.205C7.893,3.784,7.919,3.909,7.982,4.066 c0.05,0.136,0.187,0.474,0.452,0.372c0.844-0.326,1.779-0.507,2.633-0.507c0.963,0,1.9,0.191,2.781,0.564 c0.695,0.292,1.357,0.719,2.078,1.34c0.051,0.044,0.105,0.068,0.164,0.068c0.143,0,0.273-0.137,0.389-0.271 c0.191-0.214,0.324-0.395,0.135-0.575c-0.686-0.654-1.436-1.138-2.363-1.533C13.24,3.097,12.168,2.884,11.066,2.884z\"/><path d=\"M16.43,15.747c-0.092-0.028-0.242,0.05-0.309,0.119l0,0c-0.652,0.652-1.42,1.169-2.268,1.521 c-0.877,0.371-1.814,0.551-2.779,0.551c-0.961,0-1.896-0.189-2.775-0.564c-0.848-0.36-1.612-0.879-2.268-1.53 c-0.682-0.688-1.196-1.455-1.529-2.268c-0.325-0.799-0.471-1.643-0.471-1.643c-0.045-0.24-0.258-0.249-0.567-0.203 c-0.128,0.021-0.519,0.079-0.483,0.36v0.01c0.105,0.644,0.289,1.284,0.545,1.895c0.417,0.969,1.002,1.849,1.756,2.604 c0.757,0.754,1.636,1.34,2.604,1.757C8.901,18.785,9.97,19,11.088,19c1.104,0,2.186-0.215,3.188-0.645 c1.838-0.896,2.604-1.757,2.604-1.757c0.182-0.204,0.227-0.317-0.1-0.643C16.779,15.956,16.525,15.774,16.43,15.747z\"/><path d=\"M5.633,13.287c0.293,0.71,0.723,1.341,1.262,1.882c0.54,0.54,1.172,0.971,1.882,1.264c0.731,0.303,1.509,0.461,2.298,0.461 c0.801,0,1.578-0.158,2.297-0.461c0.711-0.293,1.344-0.724,1.883-1.264c0.543-0.541,0.971-1.172,1.264-1.882 c0.314-0.721,0.463-1.5,0.463-2.298c0-0.79-0.148-1.569-0.463-2.289c-0.293-0.699-0.721-1.329-1.264-1.881 c-0.539-0.541-1.172-0.959-1.867-1.263c-0.721-0.303-1.5-0.461-2.299-0.461c-0.802,0-1.613,0.159-2.322,0.461 c-0.577,0.25-1.544,0.867-2.119,1.454v0.012V2.108h8.16C15.1,2.104,15.1,1.69,15.1,1.552C15.1,1.417,15.1,1,14.809,1H5.915 C5.676,1,5.527,1.192,5.527,1.384v6.84c0,0.214,0.273,0.372,0.529,0.428c0.5,0.105,0.614-0.056,0.737-0.224l0,0 c0.18-0.273,0.776-0.884,0.787-0.894c0.901-0.905,2.117-1.408,3.416-1.408c1.285,0,2.5,0.501,3.412,1.408 c0.914,0.914,1.408,2.122,1.408,3.405c0,1.288-0.508,2.496-1.408,3.405c-0.9,0.896-2.152,1.406-3.438,1.406 c-0.877,0-1.711-0.229-2.433-0.671v-4.158c0-0.553,0.237-1.151,0.643-1.614c0.462-0.519,1.094-0.799,1.782-0.799 c0.664,0,1.293,0.253,1.758,0.715c0.459,0.459,0.709,1.071,0.709,1.723c0,1.385-1.094,2.468-2.488,2.468 c-0.273,0-0.769-0.121-0.781-0.125c-0.281-0.087-0.405,0.306-0.438,0.436c-0.159,0.496,0.079,0.585,0.123,0.607 c0.452,0.137,0.743,0.157,1.129,0.157c1.973,0,3.572-1.6,3.572-3.57c0-1.964-1.6-3.552-3.572-3.552c-0.97,0-1.872,0.36-2.546,1.038 c-0.656,0.631-1.027,1.487-1.027,2.322v3.438v-0.011c-0.372-0.42-0.732-1.041-0.981-1.682c-0.102-0.248-0.315-0.202-0.607-0.113 c-0.135,0.035-0.519,0.157-0.44,0.439C5.372,12.799,5.577,13.164,5.633,13.287z\"/></svg>", 11571 "album": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"
11571 xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"5\" y=\"2\" width=\"10\" height=\"1\"/><rect x=\"3\" y=\"4\" width=\"14\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"6.5\" width=\"17\" height=\"11\"/></svg>", 11572 "arrow-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"10.5,16.08 5.63,10.66 6.37,10 10.5,14.58 14.63,10 15.37,10.66\"/><line fill=\"none\" stroke=\"#000\" x1=\"10.5\" y1=\"4\" x2=\"10.5\" y2=\"15\"/></svg>", 11573 "arrow-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"10 14 5 9.5 10 5\"/><line fill=\"none\" stroke=\"#000\" x1=\"16\" y1=\"9.5\" x2=\"5\" y2=\"9.52\"/></svg>", 11574 "arrow-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"10 5 15 9.5 10 14\"/><line fill=\"none\" stroke=\"#000\" x1=\"4\" y1=\"9.5\" x2=\"15\" y2=\"9.5\"/></svg>", 11575 "arrow-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"10.5,4 15.37,9.4 14.63,10.08 10.5,5.49 6.37,10.08 5.63,9.4\"/><line fill=\"none\" stroke=\"#000\" x1=\"10.5\" y1=\"16\" x2=\"10.5\" y2=\"5\"/></svg>", 11576 "ban": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"4\" y1=\"3.5\" x2=\"16\" y2=\"16.5\"/></svg>", 11577 "behance": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.5,10.6c-0.4-0.5-0.9-0.9-1.6-1.1c1.7-1,2.2-3.2,0.7-4.7C7.8,4,6.3,4,5.2,4C3.5,4,1.7,4,0,4v12c1.7,0,3.4,0,5.2,0 c1,0,2.1,0,3.1-0.5C10.2,14.6,10.5,12.3,9.5,10.6L9.5,10.6z M5.6,6.1c1.8,0,1.8,2.7-0.1,2.7c-1,0-2,0-2.9,0V6.1H5.6z M2.6,13.8v-3.1 c1.1,0,2.1,0,3.2,0c2.1,0,2.1,3.2,0.1,3.2L2.6,13.8z\"/><path d=\"M19.9,10.9C19.7,9.2,18.7,7.6,17,7c-4.2-1.3-7.3,3.4-5.3,7.1c0.9,1.7,2.8,2.3,4.7,2.1c1.7-0.2,2.9-1.3,3.4-2.9h-2.2 c-0.4,1.3-2.4,1.5-3.5,0.6c-0.4-0.4-0.6-1.1-0.6-1.7H20C20,11.7,19.9,10.9,19.9,10.9z M13.5,10.6c0-1.6,2.3-2.7,3.5-1.4 c0.4,0.4,0.5,0.9,0.6,1.4H13.5L13.5,10.6z\"/><rect x=\"13\" y=\"4\" width=\"5\" height=\"1.4\"/></svg>", 11578 "bell": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17,15.5 L3,15.5 C2.99,14.61 3.79,13.34 4.1,12.51 C4.58,11.3 4.72,10.35 5.19,7.01 C5.54,4.53 5.89,3.2 7.28,2.16 C8.13,1.56 9.37,1.5 9.81,1.5 L9.96,1.5 C9.96,1.5 11.62,1.41 12.67,2.17 C14.08,3.2 14.42,4.54 14.77,7.02 C15.26,10.35 15.4,11.31 15.87,12.52 C16.2,13.34 17.01,14.61 17,15.5 L17,15.5 Z\"/><path fill=\"none\" stroke=\"#000\" d=\"M12.39,16 C12.39,17.37 11.35,18.43 9.91,18.43 C8.48,18.43 7.42,17.37 7.42,16\"/></svg>", 11579 "bold": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5,15.3 C5.66,15.3 5.9,15 5.9,14.53 L5.9,5.5 C5.9,4.92 5.56,4.7 5,4.7 L5,4 L8.95,4 C12.6,4 13.7,5.37 13.7,6.9 C13.7,7.87 13.14,9.17 10.86,9.59 L10.86,9.7 C13.25,9.86 14.29,11.28 14.3,12.54 C14.3,14.47 12.94,16 9,16 L5,16 L5,15.3 Z M9,9.3 C11.19,9.3 11.8,8.5 11.85,7 C11.85,5.65 11.3,4.8 9,4.8 L7.67,4.8 L7.67,9.3 L9,9.3 Z M9.185,15.22 C11.97,15 12.39,14 12.4,12.58 C12.4,11.
1157915 11.39,10 9,10 L7.67,10 L7.67,15 L9.18,15 Z\"/></svg>", 11580 "bolt": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.74,20 L7.73,12 L3,12 L15.43,1 L12.32,9 L17.02,9 L4.74,20 L4.74,20 L4.74,20 Z M9.18,11 L7.1,16.39 L14.47,10 L10.86,10 L12.99,4.67 L5.61,11 L9.18,11 L9.18,11 L9.18,11 Z\"/></svg>", 11581 "bookmark": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"5.5 1.5 15.5 1.5 15.5 17.5 10.5 12.5 5.5 17.5\"/></svg>", 11582 "calendar": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 2,3 2,17 18,17 18,3 2,3 Z M 17,16 3,16 3,8 17,8 17,16 Z M 17,7 3,7 3,4 17,4 17,7 Z\"/><rect width=\"1\" height=\"3\" x=\"6\" y=\"2\"/><rect width=\"1\" height=\"3\" x=\"13\" y=\"2\"/></svg>", 11583 "camera": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10.8\" r=\"3.8\"/><path fill=\"none\" stroke=\"#000\" d=\"M1,4.5 C0.7,4.5 0.5,4.7 0.5,5 L0.5,17 C0.5,17.3 0.7,17.5 1,17.5 L19,17.5 C19.3,17.5 19.5,17.3 19.5,17 L19.5,5 C19.5,4.7 19.3,4.5 19,4.5 L13.5,4.5 L13.5,2.9 C13.5,2.6 13.3,2.5 13,2.5 L7,2.5 C6.7,2.5 6.5,2.6 6.5,2.9 L6.5,4.5 L1,4.5 L1,4.5 Z\"/></svg>", 11584 "cart": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"7.3\" cy=\"17.3\" r=\"1.4\"/><circle cx=\"13.3\" cy=\"17.3\" r=\"1.4\"/><polyline fill=\"none\" stroke=\"#000\" points=\"0 2 3.2 4 5.3 12.5 16 12.5 18 6.5 8 6.5\"/></svg>", 11585 "check": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" points=\"4,10 8,15 17,4\"/></svg>", 11586 "chevron-double-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"10 14 6 10 10 6\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"14 14 10 10 14 6\"/></svg>", 11587 "chevron-double-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"10 6 14 10 10 14\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"6 6 10 10 6 14\"/></svg>", 11588 "chevron-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"16 7 10 13 4 7\"/></svg>", 11589 "chevron-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"13 16 7 10 13 4\"/></svg>", 11590 "chevron-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"7 4 13 10 7 16\"/></svg>", 11591 "chevron-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" points=\"4 13 10 7 16 13\"/></svg>", 11592 "clock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.018,14.197 L9.445,10.625\"/></svg>", 11593 "close": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.06\" d=\"M16,16 L4,4\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.06\" d=\"M16,4 L4,16\"/></svg>", 11594 "cloud-download": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.3,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.3
115941,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6\"/><polyline fill=\"none\" stroke=\"#000\" points=\"11.75 16 9.5 18.25 7.25 16\"/><path fill=\"none\" stroke=\"#000\" d=\"M9.5,18 L9.5,9.5\"/></svg>", 11595 "cloud-upload": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.5,14.61 L3.75,14.61 C1.96,14.61 0.5,13.17 0.5,11.39 C0.5,9.76 1.72,8.41 3.31,8.2 C3.38,5.31 5.75,3 8.68,3 C11.19,3 13.31,4.71 13.89,7.02 C14.39,6.8 14.93,6.68 15.5,6.68 C17.71,6.68 19.5,8.45 19.5,10.64 C19.5,12.83 17.71,14.6 15.5,14.6 L12.5,14.6\"/><polyline fill=\"none\" stroke=\"#000\" points=\"7.25 11.75 9.5 9.5 11.75 11.75\"/><path fill=\"none\" stroke=\"#000\" d=\"M9.5,18 L9.5,9.5\"/></svg>", 11596 "code": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"13,4 19,10 13,16\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"7,4 1,10 7,16\"/></svg>", 11597 "cog": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"9.997\" cy=\"10\" r=\"3.31\"/><path fill=\"none\" stroke=\"#000\" d=\"M18.488,12.285 L16.205,16.237 C15.322,15.496 14.185,15.281 13.303,15.791 C12.428,16.289 12.047,17.373 12.246,18.5 L7.735,18.5 C7.938,17.374 7.553,16.299 6.684,15.791 C5.801,15.27 4.655,15.492 3.773,16.237 L1.5,12.285 C2.573,11.871 3.317,10.999 3.317,9.991 C3.305,8.98 2.573,8.121 1.5,7.716 L3.765,3.784 C4.645,4.516 5.794,4.738 6.687,4.232 C7.555,3.722 7.939,2.637 7.735,1.5 L12.263,1.5 C12.072,2.637 12.441,3.71 13.314,4.22 C14.206,4.73 15.343,4.516 16.225,3.794 L18.487,7.714 C17.404,8.117 16.661,8.988 16.67,10.009 C16.672,11.018 17.415,11.88 18.488,12.285 L18.488,12.285 Z\"/></svg>", 11598 "comment": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6,18.71 L6,14 L1,14 L1,1 L19,1 L19,14 L10.71,14 L6,18.71 L6,18.71 Z M2,13 L7,13 L7,16.29 L10.29,13 L18,13 L18,2 L2,2 L2,13 L2,13 Z\"/></svg>", 11599 "commenting": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"1.5,1.5 18.5,1.5 18.5,13.5 10.5,13.5 6.5,17.5 6.5,13.5 1.5,13.5\"/><circle cx=\"10\" cy=\"8\" r=\"1\"/><circle cx=\"6\" cy=\"8\" r=\"1\"/><circle cx=\"14\" cy=\"8\" r=\"1\"/></svg>", 11600 "comments": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"2 0.5 19.5 0.5 19.5 13\"/><path d=\"M5,19.71 L5,15 L0,15 L0,2 L18,2 L18,15 L9.71,15 L5,19.71 L5,19.71 L5,19.71 Z M1,14 L6,14 L6,17.29 L9.29,14 L17,14 L17,3 L1,3 L1,14 L1,14 L1,14 Z\"/></svg>", 11601 "copy": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"2.5\" width=\"12\" height=\"16\"/><polyline fill=\"none\" stroke=\"#000\" points=\"5 0.5 17.5 0.5 17.5 17\"/></svg>", 11602 "credit-card": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"4.5\" width=\"17\" height=\"12\"/><rect x=\"1\" y=\"7\" width=\"18\" height=\"3\"/></svg>", 11603 "database": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"4.64\" rx=\"7.5\" ry=\"3.14\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.5,8.11 C17.5,9.85 14.14,11.25 10,11.25 C5.86,11.25 2.5,9.84 2.5,8.11\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.5,11.25 C17.5,12.99 14.14,14.39 10,14.39 C5.86,14.39 2.5,12.98 2.5,11.25\"/><path fill=\"none\" stroke=\"#000\" d=\"M17.49,4.64 L17.5,14.36 C17.5,16.1 14.14,17.5 10,17.5 C5.86,17.5 2.5,16.09 2.5,14.36 L2.5,4.64\"/></svg>", 11604 "desktop": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"8\" y=\"15\" width=\"1\" height=\"2\"/><rect x=\"11\" y=\"15\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"16\" width=\"10\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"3.5\" width=\"17\" height=\"11\"/></svg>", 11605 "download": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"14,10 9.5,14.5 5,10\"/><rect x=\"3\" y=\"17\" width=\"13\" height=\"1\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"13.91\" x2=\"9.5\" y2=\"3\"/></svg>", 11606 "dribbble": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M1.3,8.9c0,0,5,0.1,8.6-1c1.4-0.4,2.6-0.9,4-1.9 c1.4-1.1,2.5-2.5,2.5-2.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M3.9,16.6c0,0,1.7-2.8,3.5-4.2 c1.8-1.3,4-2,5.7-2.2C16,10,19,10.6,19,10.6\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" d=\"M6.9,1.6c0,0,3.3,4.6,4.2,6.8 c0.4,0.9,1.3,3.1,1.9,5.2c0.6,2,0.9,4.4,0.9,4.4\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>", 11607 "etsy": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"><path d=\"M8,4.26C8,4.07,8,4,8.31,4h4.46c.79,0,1.22.67,1.53,1.91l.25,1h.76c.14-2.82.26-4,.26-4S13.65,3,12.52,3H6.81L3.75,2.92v.84l1,.2c.73.11.9.27,1,1,0,0,.06,2,.06,5.17s-.06,5.14-.06,5.14c0,.59-.23.81-1,.94l-1,.2v.84l3.06-.1h5.11c1.15,0,3.82.1,3.82.1,0-.7.45-3.88.51-4.22h-.73l-.76,1.69a2.25,2.25,0,0,1-2.45,1.47H9.4c-1,0-1.44-.4-1.44-1.24V10.44s2.16,0,2.86.06c.55,0,.85.19,1.06,1l.23,1H13L12.9,9.94,13,7.41h-.85l-.28,1.13c-.16.74-.28.84-1,1-1,.1-2.89.09-2.89.09Z\"/></svg>", 11608 "expand": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"13 2 18 2 18 7 17 7 17 3 13 3\"/><polygon points=\"2 13 3 13 3 17 7 17 7 18 2 18\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M11,9 L17,3\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M3,17 L9,11\"/></svg>", 11609 "facebook": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M11,10h2.6l0.4-3H11V5.3c0-0.9,0.2-1.5,1.5-1.5H14V1.1c-0.3,0-1-0.1-2.1-0.1C9.6,1,8,2.4,8,5v2H5.5v3H8v8h3V10z\"/></svg>", 11610 "file-edit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M18.65,1.68 C18.41,1.45 18.109,1.33 17.81,1.33 C17.499,1.33 17.209,1.45 16.98,1.68 L8.92,9.76 L8,12.33 L10.55,11.41 L18.651,3.34 C19.12,2.87 19.12,2.15 18.65,1.68 L18.65,1.68 L18.65,1.68 Z\"/><polyline fill=\"none\" stroke=\"#000\" points=\"16.5 8.482 16.5 18.5 3.5 18.5 3.5 1.5 14.211 1.5\"/></svg>", 11611 "file-pdf": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" width=\"13\" height=\"17\" x=\"3.5\" y=\"1.5\"/><path d=\"M14.65 11.67c-.48.3-1.37-.19-1.79-.37a4.65 4.65 0 0 1 1.49.06c.35.1.36.28.3.31zm-6.3.06l.43-.79a14.7 14.7 0 0 0 .75-1.64 5.48 5.48 0 0 0 1.25 1.55l.2.15a16.36 16.36 0 0 0-2.63.73zM9.5 5.32c.2 0 .32.5.32.97a1.99 1.99 0 0 1-.23 1.04 5.05 5.05 0 0 1-.17-1.3s0-.71.08-.71zm-3.9 9a4.35 4.35 0 0 1 1.21-1.46l.24-.22a4.35 4.35 0 0 1-1.46 1.68zm9.23-3.3a2.05 2.05 0 0 0-1.32-.3 11.07 11.07 0 0 0-1.58.11 4.09 4.09 0 0 1-.74-.5 5.39 5.39 0 0 1-1.32-2.06 10.37 10.37 0 0 0 .28-2.62 1.83 1.83 0 0 0-.07-.25.57.57 0 0 0-.52-.4H9.4a.59.59 0 0 0-.6.38 6.95 6.95 0 0 0 .37 3.14c-.26.63-1 2.12-1 2.12-.3.58-.57 1.08-.82 1.5l-.8.44A3.11 3.11 0 0 0 5 14.16a.39.39 0 0 0 .15.42l.24.13c1.15.56 2.28-1.74 2.66-2.42a23.1 23.1 0 0 1 3.59-.85 4.56 4.56 0 0 0 2.91.8.5.5 0 0 0 .3-.21 1.1 1.1 0 0 0 .12-.75.84.84 0 0 0-.14-.25z\"/></svg>", 11612 "file-text": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" width=\"13\" height=\"17\" x=\"3.5\" y=\"1.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"12\" y1=\"12.5\" y2=\"12.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"8.5\" y2=\"8.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"6.5\" y2=\"6.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"6\" x2=\"14\" y1=\"10.5\" y2=\"10.5\"/></svg>", 11613 "file": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"1.5\" width=\"13\" height=\"17\"/></svg>", 11614 "flickr": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"5.5\" cy=\"9.5\" r=\"3.5\"/><circle cx=\"14.5\" cy=\"9.5\" r=\"3.5\"/></svg>", 11615 "folder": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"9.5 5.5 8.5 3.5 1.5 3.5 1.5 16.5 18.5 16.5 18.5 5.5\"/></svg>", 11616 "forward": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.47,13.11 C4.02,10.02 6.27,7.85 9.04,6.61 C9.48,6.41 10.27,6.13 11,5.91 L11,2 L18.89,9 L11,16 L11,12.13 C9.25,12.47 7.58,13.19 6.02,14.25 C3.03,16.28 1.63,18.54 1.63,18.54 C1.63,18.54 1.38,15.28 2.47,13.11 L2.47,13.11 Z M5.3,13.53 C6.92,12.4 9.04,11.4 12,10.92 L12,13.63 L17.36,9 L12,4.25 L12,6.8 C11.71,6.86 10.86,7.02 9.67,7.49 C6.79,8.65 4.58,10.96 3.49,13.08 C3.18,13.7 2.68,14.87 2.49,16 C3.28,15.05 4.4,14.15 5.3,13.53 L5.3,13.53 Z\"/></svg>", 11617 "foursquare": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.23,2 C15.96,2 16.4,2.41 16.5,2.86 C16.57,3.15 16.56,3.44 16.51,3.73 C16.46,4.04 14.86,11.72 14.75,12.03 C14.56,12.56 14.16,12.82 13.61,12.83 C13.03,12.84 11.09,12.51 10.69,13 C10.38,13.38 7.79,16.39 6.81,17.53 C6.61,17.76 6.4,17.96 6.08,17.99 C5.68,18.04 5.29,17.87 5.17,17.45 C5.12,17.28 5.1,17.09 5.1,16.91 C5.1,12.4 4.86,7.81 5.11,3.31 C5.17,2.5 5.81,2.12 6.53,2 L15.23,2 L15.23,2 Z M9.76,11.42 C9.94,11.19 10.17,11.1 10.45,11.1 L12.86,11.1 C13.12,11.1 13.31,10.94 13.36,10.69 C13.37,10.64 13.62,9.41 13.74,8.83 C13.81,8.52 13.53,8.28 13.27,8.28 C12.35,8.29 11.42,8.28 10.5,8.28 C9.84,8.28 9.83,7.69 9.82,7.21 C9.8,6.85 10.13,6.55 10.5,6.55 C11.59,6.56 12.67,6.55 13.76,6.55 C14.03,6.55 14.23,6.4 14.28,6.14 C14.34,5.87 14.67,4.29 14.67,4.29 C14.67,4.29 14.82,3.74 14.19,3.74 L7.34,3.74 C7,3.75 6.84,4.02 6.84,4.33 C6.84,7.58 6.85,14.95 6.85,14.99 C6.87,15 8.89,12.51 9.76,11.42 L9.76,11.42 Z\"/></svg>", 11618 "future": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline points=\"19 2 18 2 18 6 14 6 14 7 19 7 19 2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M18,6.548 C16.709,3.29 13.354,1 9.6,1 C4.6,1 0.6,5 0.6,10 C0.6,15 4.6,19 9.6,19 C14.6,19 18.6,15 18.6,10\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path d=\"M13.018,14.197 L9.445,10.625\" fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\"/></svg>", 11619 "git-branch": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"7\" cy=\"3\" r=\"2\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"14\" cy=\"6\" r=\"2\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"7\" cy=\"17\" r=\"2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"2\" d=\"M14,8 C14,10.41 12.43,10.87 10.56,11.25 C9.09,11.54 7,12.06 7,15 L7,5\"/></svg>", 11620 "git-fork": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"5.79\" cy=\"2.79\" r=\"1.79\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"14.19\" cy=\"2.79\" r=\"1.79\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" cx=\"10.03\" cy=\"16.79\" r=\"1.79\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"2\" d=\"M5.79,4.57 L5.79,6.56 C5.79,9.19 10.03,10.22 10.03,13.31 C10.03,14.86 10.04,14.55 10.04,14.55 C10.04,14.37 10.04,14.86 10.04,13.31 C10.04,10.22 14.2,9.19 14.2,6.56 L14.2,4.57\"/></svg>", 11621 "github-alt": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5 C4.75,0.5 0.5,4.76 0.5,10.01 C0.5,15.26 4.75,19.51 10,19.51 C15.24,19.51 19.5,15.26 19.5,10.01 C19.5,4.76 15.25,0.5 10,0.5 L10,0.5 Z M12.81,17.69 C12.81,17.69 12.81,17.7 12.79,17.69 C12.47,17.75 12.35,17.59 12.35,17.36 L12.35,16.17 C12.35,15.45 12.09,14.92 11.58,14.56 C12.2,14.51 12.77,14.39 13.26,14.21 C13.87,13.98 14.36,13.69 14.74,13.29 C15.42,12.59 15.76,11.55 15.76,10.17 C15.76,9.25 15.45,8.46 14.83,7.8 C15.1,7.08 15.07,6.29 14.75,5.44 L14.51,5.42 C14.34,5.4 14.06,5.46 13.67,5.61 C13.25,5.78 12.79,6.03 12.31,6.35 C11.55,6.16 10.81,6.05 10.09,6.05 C9.36,6.05 8.61,6.15 7.88,6.35 C7.28,5.96 6.75,5.68 6.26,5.54 C6.07,5.47 5.9,5.44 5.78,5.44 L5.42,5.44 C5.06,6.29 5.04,7.08 5.32,7.8 C4.7,8.46 4.4,9.25 4.4,10.17 C4.4,11.94 4.96,13.16 6.08,13.84 C6.53,14.13 7.05,14.32 7.69,14.43 C8.03,14.5 8.32,14.54 8.55,14.55 C8.07,14.89 7.82,15.42 7.82,16.16 L7.82,17.51 C7.8,17.69 7.7,17.8 7.51,17.8 C4.21,16.74 1.82,13.65 1.82,10.01 C1.82,5.5 5.49,1.83 10,1.83 C14.5,1.83 18.17,5.5 18.17,10.01 C18.18,13.53 15.94,16.54 12.81,17.69 L12.81,17.69 Z\"/></svg>", 11622 "github": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,1 C5.03,1 1,5.03 1,10 C1,13.98 3.58,17.35 7.16,18.54 C7.61,18.62 7.77,18.34 7.77,18.11 C7.77,17.9 7.76,17.33 7.76,16.58 C5.26,17.12 4.73,15.37 4.73,15.37 C4.32,14.33 3.73,14.05 3.73,14.05 C2.91,13.5 3.79,13.5 3.79,13.5 C4.69,13.56 5.17,14.43 5.17,14.43 C5.97,15.8 7.28,15.41 7.79,15.18 C7.87,14.6 8.1,14.2 8.36,13.98 C6.36,13.75 4.26,12.98 4.26,9.53 C4.26,8.55 4.61,7.74 5.19,7.11 C5.1,6.88 4.79,5.97 5.28,4.73 C5.28,4.73 6.04,4.49 7.75,5.65 C8.47,5.45 9.24,5.35 10,5.35 C10.76,5.35 11.53,5.45 12.25,5.65 C13.97,4.48 14.72,4.73 14.72,4.73 C15.21,5.97 14.9,6.88 14.81,7.11 C15.39,7.74 15.73,8.54 15.73,9.53 C15.73,12.99 13.63,13.75 11.62,13.97 C11.94,14.25 12.23,14.8 12.23,15.64 C12.23,16.84 12.22,17.81 12.22,18.11 C12.22,18.35 12.38,18.63 12.84,18.54 C16.42,17.35 19,13.98 19,10 C19,5.03 14.97,1 10,1 L10,1 Z\"/></svg>", 11623 "gitter": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"3.5\" y=\"1\" width=\"1.531\" height=\"11.471\"/><rect x=\"7.324\" y=\"4.059\" width=\"1.529\" height=\"15.294\"/><rect x=\"11.148\" y=\"4.059\" width=\"1.527\" height=\"15.294\"/><rect x=\"14.971\" y=\"4.059\" width=\"1.529\" height=\"8.412\"/></svg>", 11624 "google-plus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.9,9c0,2.7-0.6,5-3.2,6.3c-3.7,1.8-8.1,0.2-9.4-3.6C-1.1,7.6,1.9,3.3,6.1,3c1.7-0.1,3.2,0.3,4.6,1.3 c0.1,0.1,0.3,0.2,0.4,0.4c-0.5,0.5-1.2,1-1.7,1.6c-1-0.8-2.1-1.1-3.5-0.9C5,5.6,4.2,6,3.6,6.7c-1.3,1.3-1.5,3.4-0.5,5 c1,1.7,2.6,2.3,4.6,1.9c1.4-0.3,2.4-1.2,2.6-2.6H6.9V9H12.9z\"/><polygon points=\"20,9 20,11 18,11 18,13 16,13 16,11 14,11 14,9 16,9 16,7 18,7 18,9\"/></svg>", 11625 "google": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.86,9.09 C18.46,12.12 17.14,16.05 13.81,17.56 C9.45,19.53 4.13,17.68 2.47,12.87 C0.68,7.68 4.22,2.42 9.5,2.03 C11.57,1.88 13.42,2.37 15.05,3.65 C15.22,3.78 15.37,3.93 15.61,4.14 C14.9,4.81 14.23,5.45 13.5,6.14 C12.27,5.08 10.84,4.72 9.28,4.98 C8.12,5.17 7.16,5.76 6.37,6.63 C4.88,8.27 4.62,10.86 5.76,12.82 C6.95,14.87 9.17,15.8 11.57,15.25 C13.27,14.87 14.76,13.33 14.89,11.75 L10.51,11.75 L10.51,9.09 L17.86,9.09 L17.86,9.09 Z\"/></svg>", 11626 "grid": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"2\" width=\"3\" height=\"3\"/><rect x=\"2\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"8\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"8\" width=\"3\" height=\"3\"/
11626><rect x=\"2\" y=\"14\" width=\"3\" height=\"3\"/><rect x=\"8\" y=\"14\" width=\"3\" height=\"3\"/><rect x=\"14\" y=\"14\" width=\"3\" height=\"3\"/></svg>", 11627 "happy": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"13\" cy=\"7\" r=\"1\"/><circle cx=\"7\" cy=\"7\" r=\"1\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10\" r=\"8.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M14.6,11.4 C13.9,13.3 12.1,14.5 10,14.5 C7.9,14.5 6.1,13.3 5.4,11.4\"/></svg>", 11628 "hashtag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.431,8 L15.661,7 L12.911,7 L13.831,3 L12.901,3 L11.98,7 L9.29,7 L10.21,3 L9.281,3 L8.361,7 L5.23,7 L5,8 L8.13,8 L7.21,12 L4.23,12 L4,13 L6.98,13 L6.061,17 L6.991,17 L7.911,13 L10.601,13 L9.681,17 L10.611,17 L11.531,13 L14.431,13 L14.661,12 L11.76,12 L12.681,8 L15.431,8 Z M10.831,12 L8.141,12 L9.061,8 L11.75,8 L10.831,12 Z\"/></svg>", 11629 "heart": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.03\" d=\"M10,4 C10,4 8.1,2 5.74,2 C3.38,2 1,3.5
116295 1,6.73 C1,8.84 2.67,10.44 2.67,10.44 L10,18 L17.33,10.44 C17.33,10.44 19,8.84 19,6.73 C19,3.55 16.62,2 14.26,2 C11.9,2 10,4 10,4 L10,4 Z\"/></svg>", 11630 "history": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"#000\" points=\"1 2 2 2 2 6 6 6 6 7 1 7 1 2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M2.1,6.548 C3.391,3.29 6.746,1 10.5,1 C15.5,1 19.5,5 19.5,10 C19.5,15 15.5,19 10.5,19 C5.5,19 1.5,15 1.5,10\"/><rect x=\"9\" y=\"4\" width=\"1\" height=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.018,14.197 L9.445,10.625\"/></svg>", 11631 "home": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"18.65 11.35 10 2.71 1.35 11.35 0.65 10.65 10 1.29 19.35 10.65\"/><polygon points=\"15 4 18 4 18 7 17 7 17 5 15 5\"/><polygon points=\"3 11 4 11 4 18 7 18 7 12 12 12 12 18 16 18 16 11 17 11 17 19 11 19 11 13 8 13 8 19 3 19\"/></svg>", 11632 "image": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"16.1\" cy=\"6.1\" r=\"1.1\"/><rect fill=\"none\" stroke=\"#000\" x=\".5\" y=\"2.5\" width=\"19\" height=\"15\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"4,13 8,9 13,14\"/><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"11,12 12.5,10.5 16,14\"/></svg>", 11633 "info": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.13,11.59 C11.97,12.84 10.35,14.12 9.1,14.16 C6.17,14.2 9.89,9.46 8.74,8.37 C9.3,8.16 10.62,7.83 10.62,8.81 C10.62,9.63 10.12,10.55 9.88,11.32 C8.66,15.16 12.13,11.15 12.14,11.18 C12.16,11.21 12.16,11.35 12.13,11.59 C12.08,11.95 12.16,11.35 12.13,11.59 L12.13,11.59 Z M11.56,5.67 C11.56,6.67 9.36,7.15 9.36,6.03 C9.36,5 11.56,4.54 11.56,5.67 L11.56,5.67 Z\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>", 11634 "instagram": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M13.55,1H6.46C3.45,1,1,3.44,1,6.44v7.12c0,3,2.45,5.44,5.46,5.44h7.08c3.02,0,5.46-2.44,5.46-5.44V6.44 C19.01,3.44,16.56,1,13.55,1z M17.5,14c0,1.93-1.57,3.5-3.5,3.5H6c-1.93,0-3.5-1.57-3.5-3.5V6c0-1.93,1.57-3.5,3.5-3.5h8 c1.93,0,3.5,1.57,3.5,3.5V14z\"/><circle cx=\"14.87\" cy=\"5.26\" r=\"1.09\"/><path d=\"M10.03,5.45c-2.55,0-4.63,2.06-4.63,4.6c0,2.55,2.07,4.61,4.63,4.61c2.56,0,4.63-2.061,4.63-4.61 C14.65,7.51,12.58,5.45,10.03,5.45L10.03,5.45L10.03,5.45z M10.08,13c-1.66,0-3-1.34-3-2.99c0-1.65,1.34-2.99,3-2.99s3,1.34,3,2.99 C13.08,11.66,11.74,13,10.08,13L10.08,13L10.08,13z\"/></svg>", 11635 "italic": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M12.63,5.48 L10.15,14.52 C10,15.08 10.37,15.25 11.92,15.3 L11.72,16 L6,16 L6.2,15.31 C7.78,15.26 8.19,15.09 8.34,14.53 L10.82,5.49 C10.97,4.92 10.63,4.76 9.09,4.71 L9.28,4 L15,4 L14.81,4.69 C13.23,4.75 12.78,4.91 12.63,5.48 L12.63,5.48 Z\"/></svg>", 11636 "joomla": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M7.8,13.4l1.7-1.7L5.9,8c-0.6-0.5-0.6-1.5,0-2c0.6-0.6,1.4-0.6,2,0l1.7-1.7c-1-1-2.3-1.3-3.6-1C5.8,2.2,4.8,1.4,3.7,1.4 c-1.3,0-2.3,1-2.3,2.3c0,1.1,0.8,2,1.8,2.3c-0.4,1.3-0.1,2.8,1,3.8L7.8,13.4L7.8,13.4z\"/><path d=\"M10.2,4.3c1-1,2.5-1.4,3.8-1c0.2-1.1,1.1-2,2.3-2c1.3,0,2.3,1,2.3,2.3c0,1.2-0.9,2.2-2,2.3c0.4,1.3,0,2.8-1,3.8L13.9,8 c0.6-0.5,0.6-1.5,0-2c-0.5-0.6-1.5-0.6-2,0L8.2,9.7L6.5,8\"/><path d=\"M14.1,16.8c-1.3,0.4-2.8,0.1-3.8-1l1.7-1.7c0.6,0.6,1.5,0.6,2,0c0.5-0.6,0.6-1.5,0-2l-3.7-3.7L12,6.7l3.7,3.7 c1,1,1.3,2.4,1,3.6c1.1,0.2,2,1.1,2,2.3c0,1.3-1,2.3-2.3,2.3C15.2,18.6,14.3,17.8,14.1,16.8\"/><path d=\"M13.2,12.2l-3.7,3.7c-1,1-2.4,1.3-3.6,1c-0.2,1-1.2,1.8-2.2,1.8c-1.3,0-2.3-1-2.3-2.3c0-1.1,0.8-2,1.8-2.3 c-0.3-1.3,0-2.7,1-3.7l1.7,1.7c-0.6,0.6-0.6,1.5,0,2c0.6,0.6,1.4,0.6,2,0l3.7-3.7\"/></svg>", 11637 "laptop": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"16\" width=\"20\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"2.5\" y=\"4.5\" width=\"15\" height=\"10\"/></svg>", 11638 "lifesaver": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5 C4.76,0.5 0.5,4.76 0.5,10 C0.5,15.24 4.76,19.5 10,19.5 C15.24,19.5 19.5,15.24 19.5,10 C19.5,4.76 15.24,0.5 10,0.5 L10,0.5 Z M10,1.5 C11.49,1.5 12.89,1.88 14.11,2.56 L11.85,4.82 C11.27,4.61 10.65,4.5 10,4.5 C9.21,4.5 8.47,4.67 7.79,4.96 L5.58,2.75 C6.87,1.95 8.38,1.5 10,1.5 L10,1.5 Z M4.96,7.8 C4.67,8.48 4.5,9.21 4.5,10 C4.5,10.65 4.61,11.27 4.83,11.85 L2.56,14.11 C1.88,12.89 1.5,11.49 1.5,10 C1.5,8.38 1.95,6.87 2.75,5.58 L4.96,7.79 L4.96,7.8 L4.96,7.8 Z M10,18.5 C8.25,18.5 6.62,17.97 5.27,17.06 L7.46,14.87 C8.22,15.27 9.08,15.5 10,15.5 C10.79,15.5 11.53,15.33 12.21,15.04 L14.42,17.25 C13.13,18.05 11.62,18.5 10,18.5 L10,18.5 Z M10,14.5 C7.52,14.5 5.5,12.48 5.5,10 C5.5,7.52 7.52,5.5 10,5.5 C12.48,5.5 14.5,7.52 14.5,10 C14.5,12.48 12.48,14.5 10,14.5 L10,14.5 Z M15.04,12.21 C15.33,11.53 15.5,10.79 15.5,10 C15.5,9.08 15.27,8.22 14.87,7.46 L17.06,5.27 C17.97,6.62 18.5,8.25 18.5,10 C18.5,11.62 18.05,13.13 17.25,14.42 L15.04,12.21 L15.04,12.21 Z\"/></svg>", 11639 "link": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M10.625,12.375 L7.525,15.475 C6.825,16.175 5.925,16.175 5.225,15.475 L4.525,14.775 C3.825,14.074 3.825,13.175 4.525,12.475 L7.625,9.375\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M9.325,7.375 L12.425,4.275 C13.125,3.575 14.025,3.575 14.724,4.275 L15.425,4.975 C16.125,5.675 16.125,6.575 15.425,7.275 L12.325,10.375\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M7.925,11.875 L11.925,7.975\"/></svg>", 11640 "linkedin": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.77,17.89 L5.77,7.17 L2.21,7.17 L2.21,17.89 L5.77,17.89 L5.77,17.89 Z M3.99,5.71 C5.23,5.71 6.01,4.89 6.01,3.86 C5.99,2.8 5.24,2 4.02,2 C2.8,2 2,2.8 2,3.85 C2,4.88 2.77,5.7 3.97,5.7 L3.99,5.7 L3.99,5.71 L3.99,5.71 Z\"/><path d=\"M7.75,17.89 L11.31,17.89 L11.31,11.9 C11.31,11.58 11.33,11.26 11.43,11.03 C11.69,10.39 12.27,9.73 13.26,9.73 C14.55,9.73 15.06,10.71 15.06,12.15 L15.06,17.89 L18.62,17.89 L18.62,11.74 C18.62,8.45 16.86,6.92 14.52,6.92 C12.6,6.92 11.75,7.99 11.28,8.73 L11.3,8.73 L11.3,7.17 L7.75,7.17 C7.79,8.17 7.75,17.89 7.75,17.89 L7.75,17.89 L7.75,17.89 Z\"/></svg>", 11641 "list": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"6\" y=\"4\" width=\"12\" height=\"1\"/><rect x=\"6\" y=\"9\" width=\"12\" height=\"1\"/><rect x=\"6\" y=\"14\" width=\"12\" height=\"1\"/><rect x=\"2\" y=\"4\" width=\"2\" height=\"1\"/><rect x=\"2\" y=\"9\" width=\"2\" height=\"1\"/><rect x=\"2\" y=\"14\" width=\"2\" height=\"1\"/></svg>", 11642 "location": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" d=\"M10,0.5 C6.41,0.5 3.5,3.39 3.5,6.98 C3.5,11.83 10,19 10,19 C10,
1164219 16.5,11.83 16.5,6.98 C16.5,3.39 13.59,0.5 10,0.5 L10,0.5 Z\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"6.8\" r=\"2.3\"/></svg>", 11643 "lock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" height=\"10\" width=\"13\" y=\"8.5\" x=\"3.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M6.5,8 L6.5,4.88 C6.5,3.01 8.07,1.5 10,1.5 C11.93,1.5 13.5,3.01 13.5,4.88 L13.5,8\"/></svg>", 11644 "mail": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"1.4,6.5 10,11 18.6,6.5\"/><path d=\"M 1,4 1,16 19,16 19,4 1,4 Z M 18,15 2,15 2,5 18,5 18,15 Z\"/></svg>", 11645 "menu": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"2\" y=\"4\" width=\"16\" height=\"1\"/><rect x=\"2\" y=\"9\" width=\"16\" height=\"1\"/><rect x=\"2\" y=\"14\" width=\"16\" height=\"1\"/></svg>", 11646 "microphone": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" x1=\"10\" x2=\"10\" y1=\"16.44\" y2=\"18.5\"/><line fill=\"none\" stroke=\"#000\" x1=\"7\" x2=\"13\" y1=\"18.5\" y2=\"18.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M13.5 4.89v5.87a3.5 3.5 0 0 1-7 0V4.89a3.5 3.5 0 0 1 7 0z\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M15.5 10.36V11a5.5 5.5 0 0 1-11 0v-.6\"/></svg>", 11647 "minus-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.5\" cy=\"9.5\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" x1=\"5\" y1=\"9.5\" x2=\"14\" y2=\"9.5\"/></svg>", 11648 "minus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect height=\"1\" width=\"18\" y=\"9\" x=\"1\"/></svg>", 11649 "more-vertical": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"10\" cy=\"3\" r=\"2\"/><circle cx=\"10\" cy=\"10\" r=\"2\"/><circle cx=\"10\" cy=\"17\" r=\"2\"/></svg>", 11650 "more": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"3\" cy=\"10\" r=\"2\"/><circle cx=\"10\" cy=\"10\" r=\"2\"/><circle cx=\"17\" cy=\"10\" r=\"2\"/></svg>", 11651 "move": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"4,5 1,5 1,9 2,9 2,6 4,6\"/><polygon points=\"1,16 2,16 2,18 4,18 4,19 1,19\"/><polygon points=\"14,16 14,19 11,19 11,18 13,18 13,16\"/><rect fill=\"none\" stroke=\"#000\" x=\"5.5\" y=\"1.5\" width=\"13\" height=\"13\"/><rect x=\"1\" y=\"11\" width=\"1\" height=\"3\"/><rect x=\"6\" y=\"18\" width=\"3\" height=\"1\"/></svg>", 11652 "nut": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"2.5,5.7 10,1.3 17.5,5.7 17.5,14.3 10,18.7 2.5,14.3\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10\" r=\"3.5\"/></svg>", 11653 "pagekit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"3,1 17,1 17,16 10,16 10,13 14,13 14,4 6,4 6,16 10,16 10,19 3,19\"/></svg>", 11654 "paint-bucket": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.21,1 L0,11.21 L8.1,19.31 L18.31,9.1 L10.21,1 L10.21,1 Z M16.89,9.1 L15,11 L1.7,11 L10.21,2.42 L16.89,9.1 Z\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M6.42,2.33 L11.7,7.61\"/><path d=\"M18.49,12 C18.49,12 20,14.06 20,15.36 C20,16.28 19.24,17 18.49,17 L18.49,17 C17.74,17 17,16.28 17,15.36 C17,14.06 18.49,12 18.49,12 L18.49,12 Z\"/></svg>", 11655 "pencil": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M17.25,6.01 L7.12,16.1 L3.82,17.2 L5.02,13.9 L15.12,3.88 C15.71,3.29 16.66,3.29 17.25,3.88 C17.83,4.47 17.83,5.42 17.25,6.01 L17.25,6.01 Z\"/><path fill=\"none\" stroke=\"#000\" d=\"M15.98,7.268 L13.851,5.148\"/></svg>", 11656 "phone-landscape": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M17,5.5 C17.8,5.5 18.5,6.2 18.5,7 L18.5,14 C18.5,14.8 17.8,15.5 17,15.5 L3,15.5 C2.2,15.5 1.5,14.8 1.5,14 L1.5,7 C1.5,6.2 2.2,5.5 3,5.5 L17,5.5 L17,5.5 L17,5.5 Z\"/><circle cx=\"3.8\" cy=\"10.5\" r=\".8\"/></svg>", 11657 "phone": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M15.5,17 C15.5,17.8 14.8,18.5 14,18.5 L7,18.5 C6.2,18.5 5.5,17.8 5.5,17 L5.5,3 C5.5,2.2 6.2,1.5 7,1.5 L14,1.5 C14.8,1.5 15.5,2.2 15.5,3 L15.5,17 L15.5,17 L15.5,17 Z\"/><circle cx=\"10.5\" cy=\"16.5\" r=\".8\"/></svg>", 11658 "pinterest": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10.21,1 C5.5,1 3,4.16 3,7.61 C3,9.21 3.85,11.2 5.22,11.84 C5.43,11.94 5.54,11.89 5.58,11.69 C5.62,11.54 5.8,10.8 5.88,10.45 C5.91,10.34 5.89,10.24 5.8,10.14 C5.36,9.59 5,8.58 5,7.65 C5,5.24 6.82,2.91 9.93,2.91 C12.61,2.91 14.49,4.74 14.49,7.35 C14.49,10.3 13,12.35 11.06,12.35 C9.99,12.35 9.19,11.47 9.44,10.38 C9.75,9.08 10.35,7.68 10.35,6.75 C10.35,5.91 9.9,5.21 8.97,5.21 C7.87,5.21 6.99,6.34 6.99,7.86 C6.99,8.83 7.32,9.48 7.32,9.48 C7.32,9.48 6.24,14.06 6.04,14.91 C5.7,16.35 6.08,18.7 6.12,18.9 C6.14,19.01 6.26,19.05 6.33,18.95 C6.44,18.81 7.74,16.85 8.11,15.44 C8.24,14.93 8.79,12.84 8.79,12.84 C9.15,13.52 10.19,14.09 11.29,14.09 C14.58,14.09 16.96,11.
1165806 16.96,7.3 C16.94,3.7 14,1 10.21,1\"/></svg>", 11659 "play-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" points=\"8.5 7 13.5 10 8.5 13\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/></svg>", 11660 "play": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"6.5,5 14.5,10 6.5,15\"/></svg>", 11661 "plus-circle": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.5\" cy=\"9.5\" r=\"9\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"5\" x2=\"9.5\" y2=\"14\"/><line fill=\"none\" stroke=\"#000\" x1=\"5\" y1=\"9.5\" x2=\"14\" y2=\"9.5\"/></svg>", 11662 "plus": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"1\" width=\"1\" height=\"17\"/><rect x=\"1\" y=\"9\" width=\"17\" height=\"1\"/></svg>", 11663 "print": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"4.5 13.5 1.5 13.5 1.5 6.5 18.5 6.5 18.5 13.5 15.5 13.5\"/><polyline fill=\"none\" stroke=\"#000\" points=\"15.5 6.5 15.5 2.5 4.5 2.5 4.5 6.5\"/><rect fill=\"none\" stroke=\"#000\" width=\"11\" height=\"6\" x=\"4.5\" y=\"11.5\"/><rect width=\"8\" height=\"1\" x=\"6\" y=\"13\"/><rect width=\"8\" height=\"1\" x=\"6\" y=\"15\"/></svg>", 11664 "pull": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"6.85,8 9.5,10.6 12.15,8 12.85,8.7 9.5,12 6.15,8.7\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"11\" x2=\"9.5\" y2=\"2\"/><polyline fill=\"none\" stroke=\"#000\" points=\"6,5.5 3.5,5.5 3.5,18.5 15.5,18.5 15.5,5.5 13,5.5\"/></svg>", 11665 "push": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"12.15,4 9.5,1.4 6.85,4 6.15,3.3 9.5,0 12.85,3.3\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"10\" x2=\"9.5\" y2=\"1\"/><polyline fill=\"none\" stroke=\"#000\" points=\"6 5.5 3.5 5.5 3.5 18.5 15.5 18.5 15.5 5.5 13 5.5\"/></svg>", 11666 "question": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><circle cx=\"10.44\" cy=\"14.42\" r=\"1.05\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" d=\"M8.17,7.79 C8.17,4.75 12.72,4.73 12.72,7.72 C12.72,8.67 11.81,9.15 11.23,9.75 C10.75,10.24 10.51,10.73 10.45,11.4 C10.44,11.53 10.43,11.64 10.43,11.75\"/></svg>", 11667 "quote-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.27,7.79 C17.27,9.45 16.97,10.43 15.99,12.02 C14.98,13.64 13,15.23 11.56,15.97 L11.1,15.08 C12.34,14.2 13.14,13.51 14.02,11.82 C14.27,11.34 14.41,10.92 14.49,10.54 C14.3,10.58 14.09,10.6 13.88,10.6 C12.06,10.6 10.59,9.12 10.59,7.3 C10.59,5.48 12.06,4 13.88,4 C15.39,4 16.67,5.02 17.05,6.42 C17.19,6.82 17.27,7.27 17.27,7.79 L17.27,7.79 Z\"/><path d=\"M8.68,7.79 C8.68,9.45 8.38,10.43 7.4,12.02 C6.39,13.64 4.41,15.23 2.97,15.97 L2.51,15.08 C3.75,14.2 4.55,13.51 5.43,11.82 C5.68,11.34 5.82,10.92 5.9,10.54 C5.71,10.58 5.5,10.6 5.29,10.6 C3.47,10.6 2,9.12 2,7.3 C2,5.48 3.47,4 5.29,4 C6.8,4 8.08,5.02 8.46,6.42 C8.6,6.82 8.68,7.27 8.68,7.79 L8.68,7.79 Z\"/></svg>", 11668 "receiver": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" d=\"M6.189,13.611C8.134,15.525 11.097,18.239 13.867,18.257C16.47,18.275 18.2,16.241 18.2,16.241L14.509,12.551L11.539,13.639L6.189,8.29L7.313,5.355L3.76,1.8C3.76,1.8 1.732,3.537 1.7,6.092C1.667,8.809 4.347,11.738 6.189,13.611\"/></svg>", 11669 "reddit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19 9.05a2.56 2.56 0 0 0-2.56-2.56 2.59 2.59 0 0 0-1.88.82 10.63 10.63 0 0 0-4.14-1v-.08c.58-1.62 1.58-3.89 2.7-4.1.38-.08.77.12 1.19.57a1.15 1.15 0 0 0-.06.37 1.48 1.48 0 1 0 1.51-1.45 1.43 1.43 0 0 0-.76.19A2.29 2.29 0 0 0 12.91 1c-2.11.43-3.39 4.38-3.63 5.19 0 0 0 .11-.06.11a10.65 10.65 0 0 0-3.75 1A2.56 2.56 0 0 0 1 9.05a2.42 2.42 0 0 0 .72 1.76A5.18 5.18 0 0 0 1.24 13c0 3.66 3.92 6.64 8.73 6.64s8.74-3 8.74-6.64a5.23 5.23 0 0 0-.46-2.13A2.58 2.58 0 0 0 19 9.05zm-16.88 0a1.44 1.44 0 0 1 2.27-1.19 7.68 7.68 0 0 0-2.07 1.91 1.33 1.33 0 0 1-.2-.72zM10 18.4c-4.17 0-7.55-2.4-7.55-5.4S5.83 7.53 10 7.53 17.5 10 17.5 13s-3.38 5.4-7.5 5.4zm7.69-8.61a7.62 7.62 0 0 0-2.09-1.91 1.41 1.41 0 0 1 .84-.28 1.47 1.47 0 0 1 1.44 1.45 1.34 1.34 0 0 1-.21.72z\"/><path d=\"M6.69 12.58a1.39 1.39 0 1 1 1.39-1.39 1.38 1.38 0 0 1-1.38 1.39z\"/><path d=\"M14.26 11.2a1.39 1.39 0 1 1-1.39-1.39 1.39 1.39 0 0 1 1.39 1.39z\"/><path d=\"M13.09 14.88a.54.54 0 0 1-.09.77 5.3 5.3 0 0 1-3.26 1.19 5.61 5.61 0 0 1-3.4-1.22.55.55 0 1 1 .73-.83 4.09 4.09 0 0 0 5.25 0 .56.56 0 0 1 .77.09z\"/></svg>", 11670 "refresh": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17.08,11.15 C17.09,11.31 17.1,11.47 17.1,11.64 C17.1,15.53 13.94,18.69 10.05,18.69 C6.16,18.68 3,15.53 3,11.63 C3,7.74 6.16,4.58 10.05,4.58 C10.9,4.58 11.71,4.73 12.46,5\"/><polyline fill=\"none\" stroke=\"#000\" points=\"9.9 2 12.79 4.89 9.79 7.9\"/>
11670</svg>", 11671 "reply": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.7,13.11 C16.12,10.02 13.84,7.85 11.02,6.61 C10.57,6.41 9.75,6.13 9,5.91 L9,2 L1,9 L9,16 L9,12.13 C10.78,12.47 12.5,13.19 14.09,14.25 C17.13,16.28 18.56,18.54 18.56,18.54 C18.56,18.54 18.81,15.28 17.7,13.11 L17.7,13.11 Z M14.82,13.53 C13.17,12.4 11.01,11.4 8,10.92 L8,13.63 L2.55,9 L8,4.25 L8,6.8 C8.3,6.86 9.16,7.02 10.37,7.49 C13.3,8.65 15.54,10.96 16.65,13.08 C16.97,13.7 17.48,14.86 17.68,16 C16.87,15.05 15.73,14.15 14.82,13.53 L14.82,13.53 Z\"/></svg>", 11672 "rss": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"3.12\" cy=\"16.8\" r=\"1.85\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,8.2 C1.78,8.18 2.06,8.16 2.35,8.16 C7.57,8.16 11.81,12.37 11.81,17.57 C11.81,17.89 11.79,18.19 11.76,18.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,2.52 C1.78,2.51 2.06,2.5 2.35,2.5 C10.72,2.5 17.5,9.24 17.5,17.57 C17.5,17.89 17.49,18.19 17.47,18.5\"/></svg>", 11673 "search": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>", 11674 "server": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"3\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"7\" y=\"3\" width=\"1\" height=\"2\"/><rect x=\"16\" y=\"3\" width=\"1\" height=\"1\"/><rect x=\"16\" y=\"10\" width=\"1\" height=\"1\"/><circle fill=\"none\" stroke=\"#000\" cx=\"9.9\" cy=\"17.4\" r=\"1.4\"/><rect x=\"3\" y=\"10\" width=\"1\" height=\"2\"/><rect x=\"5\" y=\"10\" width=\"1\" height=\"2\"/><rect x=\"9.5\" y=\"14\" width=\"1\" height=\"2\"/><rect x=\"3\" y=\"17\" width=\"6\" height=\"1\"/><rect x=\"11\" y=\"17\" width=\"6\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"1.5\" width=\"17\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"1.5\" y=\"8.5\" width=\"17\" height=\"5\"/></svg>", 11675 "settings": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><ellipse fill=\"none\" stroke=\"#000\" cx=\"6.11\" cy=\"3.55\" rx=\"2.11\" ry=\"2.15\"/><ellipse fill=\"none\" stroke=\"#000\" cx=\"6.11\" cy=\"15.55\" rx=\"2.11\" ry=\"2.15\"/><circle fill=\"none\" stroke=\"#000\" cx=\"13.15\" cy=\"9.55\" r=\"2.15\"/><rect x=\"1\" y=\"3\" width=\"3\" height=\"1\"/><rect x=\"10\" y=\"3\" width=\"8\" height=\"1\"/><rect x=\"1\" y=\"9\" width=\"8\" height=\"1\"/><rect x=\"15\" y=\"9\" width=\"3\" height=\"1\"/><rect x=\"1\" y=\"15\" width=\"3\" height=\"1\"/><rect x=\"10\" y=\"15\" width=\"8\" height=\"1\"/></svg>", 11676 "shrink": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"11 4 12 4 12 8 16 8 16 9 11 9\"/><polygon points=\"4 11 9 11 9 16 8 16 8 12 4 12\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M12,8 L18,2\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M2,18 L8,12\"/></svg>", 11677 "sign-in": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"7 2 17 2 17 17 7 17 7 16 16 16 16 3 7 3\"/><polygon points=\"9.1 13.4 8.5 12.8 11.28 10 4 10 4 9 11.28 9 8.5 6.2 9.1 5.62 13 9.5\"/></svg>", 11678 "sign-out": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"13.1 13.4 12.5 12.8 15.28 10 8 10 8 9 15.28 9 12.5 6.2 13.1 5.62 17 9.5\"/><polygon points=\"13 2 3 2 3 17 13 17 13 16 4 16 4 3 13 3\"/></svg>", 11679 "social": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13.4\" y1=\"14\" x2=\"6.3\" y2=\"10.7\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13.5\" y1=\"5.5\" x2=\"6.5\" y2=\"8.8\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"15.5\" cy=\"4.6\" r=\"2.3\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"15.5\" cy=\"14.8\" r=\"2.3\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"4.5\" cy=\"9.8\" r=\"2.3\"/></svg>", 11680 "soundcloud": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.2,9.4c-0.4,0-0.8,0.1-1.101,0.2c-0.199-2.5-2.399-4.5-5-4.5c-0.6,0-1.2,0.1-1.7,0.3C9.2,5.5,9.1,5.6,9.1,5.6V15h8
11680c1.601,0,2.801-1.2,2.801-2.8C20,10.7,18.7,9.4,17.2,9.4L17.2,9.4z\"/><rect x=\"6\" y=\"6.5\" width=\"1.5\" height=\"8.5\"/><rect x=\"3\" y=\"8\" width=\"1.5\" height=\"7\"/><rect y=\"10\" width=\"1.5\" height=\"5\"/></svg>", 11681 "star": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" stroke-width=\"1.01\" points=\"10 2 12.63 7.27 18.5 8.12 14.25 12.22 15.25 18 10 15.27 4.75 18 5.75 12.22 1.5 8.12 7.37 7.27\"/></svg>", 11682 "strikethrough": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6,13.02 L6.65,13.02 C7.64,15.16 8.86,16.12 10.41,16.12 C12.22,16.12 12.92,14.93 12.92,13.89 C12.92,12.55 11.99,12.03 9.74,11.23 C8.05,10.64 6.23,10.11 6.23,7.83 C6.23,5.5 8.09,4.09 10.4,4.09 C11.44,4.09 12.13,4.31 12.72,4.54 L13.33,4 L13.81,4 L13.81,7.59 L13.16,7.59 C12.55,5.88 11.52,4.89 10.07,4.89 C8.84,4.89 7.89,5.69 7.89,7.03 C7.89,8.29 8.89,8.78 10.88,9.45 C12.57,10.03 14.38,10.6 14.38,12.91 C14.38,14.75 13.27,16.93 10.18,16.93 C9.18,16.93 8.17,16.69 7.46,16.39 L6.52,17 L6,17 L6,13.02 L6,13.02 Z\"/><rect x=\"3\" y=\"10\" width=\"15\" height=\"1\"/></svg>", 11683 "table": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"1\" y=\"3\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"7\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"11\" width=\"18\" height=\"1\"/><rect x=\"1\" y=\"15\" width=\"18\" height=\"1\"/></svg>", 11684 "tablet-landscape": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M1.5,5 C1.5,4.2 2.2,3.5 3,3.5 L17,3.5 C17.8,3.5 18.5,4.2 18.5,5 L18.5,16 C18.5,16.8 17.8,17.5 17,17.5 L3,17.5 C2.2,17.5 1.5,16.8 1.5,16 L1.5,5 L1.5,5 L1.5,5 Z\"/><circle cx=\"3.7\" cy=\"10.5\" r=\".8\"/></svg>", 11685 "tablet": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M5,18.5 C4.2,18.5 3.5,17.8 3.5,17 L3.5,3 C3.5,2.2 4.2,1.5 5,1.5 L16,1.5 C16.8,1.5 17.5,2.2 17.5,3 L17.5,17 C17.5,17.8 16.8,18.5 16,18.5 L5,18.5 L5,18.5 L5,18.5 Z\"/><circle cx=\"10.5\" cy=\"16.3\" r=\".8\"/></svg>", 11686 "tag": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M17.5,3.71 L17.5,7.72 C17.5,7.96 17.4,8.2 17.21,8.39 L8.39,17.2 C7.99,17.6 7.33,17.6 6.93,17.2 L2.8,13.07 C2.4,12.67 2.4,12.01 2.8,11.61 L11.61,2.8 C11.81,2.6 12.08,2.5 12.34,2.5 L16.19,2.5 C16.52,2.5 16.86,2.63 17.11,2.88 C17.35,3.11 17.48,3.4 17.5,3.71 L17.5,3.71 Z\"/><circle cx=\"14\" cy=\"6\" r=\"1\"/></svg>", 11687 "thumbnails": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"3.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"11.5\" y=\"3.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"11.5\" y=\"11.5\" width=\"5\" height=\"5\"/><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"11.5\" width=\"5\" height=\"5\"/></svg>", 11688 "trash": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"6.5 3 6.5 1.5 13.5 1.5 13.5 3\"/><polyline fill=\"none\" stroke=\"#000\" points=\"4.5 4 4.5 18.5 15.5 18.5 15.5 4\"/><rect x=\"8\" y=\"7\" width=\"1\" height=\"9\"/><rect x=\"11\" y=\"7\" width=\"1\" height=\"9\"/><rect x=\"2\" y=\"3\" width=\"16\" height=\"1\"/></svg>", 11689 "triangle-down": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"5 7 15 7 10 12\"/></svg>", 11690 "triangle-left": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"12 5 7 10 12 15\"/></svg>", 11691 "triangle-right": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"8 5 13 10 8 15\"/></svg>", 11692 "triangle-up": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"5 13 10 8 15 13\"/></svg>", 11693 "tripadvisor": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19.021,7.866C19.256,6.862,20,5.854,20,5.854h-3.346C14.781,4.641,12.504,4,9.98,4C7.363,4,4.999,4.651,3.135,5.876H0\tc0,0,0.738,0.987,0.976,1.988c-0.611,0.837-0.973,1.852-0.973,2.964c0,2.763,2.249,5.009,5.011,5.
11693009\tc1.576,0,2.976-0.737,3.901-1.879l1.063,1.599l1.075-1.615c0.475,0.611,1.1,1.111,1.838,1.451c1.213,0.547,2.574,0.612,3.825,0.15\tc2.589-0.963,3.913-3.852,2.964-6.439c-0.175-0.463-0.4-0.876-0.675-1.238H19.021z M16.38,14.594\tc-1.002,0.371-2.088,0.328-3.06-0.119c-0.688-0.317-1.252-0.817-1.657-1.438c-0.164-0.25-0.313-0.52-0.417-0.811\tc-0.124-0.328-0.186-0.668-0.217-1.014c-0.063-0.689,0.037-1.396,0.339-2.043c0.448-0.971,1.251-1.71,2.25-2.079\tc2.075-0.765,4.375,0.3,5.14,2.366c0.762,2.066-0.301,4.37-2.363,5.134L16.38,14.594L16.38,14.594z M8.322,13.066\tc-0.72,1.059-1.935,1.76-3.309,1.76c-2.207,0-4.001-1.797-4.001-3.996c0-2.203,1.795-4.002,4.001-4.002\tc2.204,0,3.999,1.8,3.999,4.002c0,0.137-0.024,0.261-0.04,0.396c-0.067,0.678-0.284,1.313-0.648,1.853v-0.013H8.322z M2.472,10.775\tc0,1.367,1.112,2.479,2.476,2.479c1.363,0,2.472-1.11,2.472-2.479c0-1.359-1.11-2.468-2.472-2.468\tC3.584,8.306,2.473,9.416,2.472,10.775L2.472,10.775z M12.514,10.775c0,1.367,1.104,2.479,2.471,2.479\tc1.363,0,2.474-1.108,2.474-2.479c0-1.359-1.11-2.468-2.474-2.468c-1.364,0-2.477,1.109-2.477,2.468H12.514z M3.324,10.775\tc0-0.893,0.726-1.618,1.614-1.618c0.889,0,1.625,0.727,1.625,1.618c0,0.898-0.725,1.627-1.625,1.627\tc-0.901,0-1.625-0.729-1.625-1.627H3.324z M13.354,10.775c0-0.893,0.726-1.618,1.627-1.618c0.886,0,1.61,0.727,1.61,1.618\tc0,0.898-0.726,1.627-1.626,1.627s-1.625-0.729-1.625-1.627H13.354z M9.977,4.875c1.798,0,3.425,0.324,4.849,0.968\tc-0.535,0.015-1.061,0.108-1.586,0.3c-1.264,0.463-2.264,1.388-2.815,2.604c-0.262,0.551-0.398,1.133-0.448,1.72\tC9.79,7.905,7.677,5.873,5.076,5.82C6.501,5.208,8.153,4.875,9.94,4.875H9.977z\"/></svg>", 11694 "tumblr": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6.885,8.598c0,0,0,3.393,0,4.996c0,0.282,0,0.66,0.094,0.942c0.377,1.509,1.131,2.545,2.545,3.11 c1.319,0.472,2.356,0.472,3.676,0c0.565-0.188,1.132-0.659,1.132-0.659l-0.849-2.263c0,0-1.036,0.378-1.603,0.283 c-0.565-0.094-1.226-0.66-1.226-1.508c0-1.603,0-4.902,0-4.902h2.828V5.771h-2.828V2H8.205c0,0-0.094,0.66-0.188,0.942 C7.828,3.791,7.262,4.733,6.603,5.394C5.848,6.147,5,6.43,5,6.43v2.168H6.885z\"/></svg>", 11695 "tv": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"7\" y=\"16\" width=\"6\" height=\"1\"/><rect fill=\"none\" stroke=\"#000\" x=\".5\" y=\"3.5\" width=\"19\" height=\"11\"/></svg>", 11696 "twitter": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M19,4.74 C18.339,5.029 17.626,5.229 16.881,5.32 C17.644,4.86 18.227,4.139 18.503,3.28 C17.79,3.7 17.001,4.009 16.159,4.17 C15.485,3.45 14.526,3 13.464,3 C11.423,3 9.771,4.66 9.771,6.7 C9.771,6.99 9.804,7.269 9.868,7.539 C6.795,7.38 4.076,5.919 2.254,3.679 C1.936,4.219 1.754,4.86 1.754,5.539 C1.754,6.82 2.405,7.95 3.397,8.61 C2.79,8.589 2.22,8.429 1.723,8.149 L1.723,8.189 C1.723,9.978 2.997,11.478 4.686,11.82 C4.376,11.899 4.049,11.939 3.713,11.939 C3.475,11.939 3.245,11.919 3.018,11.88 C3.49,13.349 4.852,14.419 6.469,14.449 C5.205,15.429 3.612,16.019 1.882,16.019 C1.583,16.019 1.29,16.009 1,15.969 C2.635,17.019 4.576,17.629 6.662,17.629 C13.454,17.629 17.17,12 17.17,7.129 C17.17,6.969 17.166,6.809 17.157,6.649 C17.879,6.129 18.504,5.478 19,4.74\"/></svg>", 11697 "uikit": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon points=\"14.4,3.1 11.3,5.1 15,7.3 15,12.9 10,15.7 5,12.9 5,8.5 2,6.8 2,14.8 9.9,19.5 18,14.8 18,5.3\"/><polygon points=\"9.8,4.2 6.7,2.4 9.8,0.4 12.9,2.3\"/></svg>", 11698 "unlock": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect fill=\"none\" stroke=\"#000\" x=\"3.5\" y=\"8.5\" width=\"13\" height=\"10\"/><path fill=\"none\" stroke=\"#000\" d=\"M6.5,8.5 L6.5,4.9 C6.5,3 8.1,1.5 10,1.5 C11.9,1.5 13.5,3 13.5,4.9\"/></svg>", 11699 "upload": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" points=\"5 8 9.5 3.5 14 8\"/><rect x=\"3\" y=\"17\" width=\"13\" height=\"1\"/><line fill=\"none\" stroke=\"#000\" x1=\"9.5\" y1=\"15\" x2=\"9.5\" y2=\"4\"/></svg>", 11700 "user": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9.9\" cy=\"6.4\" r=\"4.4\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1.5,19 C2.3,14.5 5.8,11.2 10,11.2 C14.2,11.2 17.7,14.6 18.5,19.2\"/></svg>", 11701 "users": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"7.7\" cy=\"8.6\" r=\"3.5\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M1,18.1 C1.7,14.6 4.4,12.1 7.6,12.1 C10.9,12.1 13.7,14.8 14.3,18.3\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M11.4,4 C12.8,2.4 15.4,2.8 16.3,4.7 C17.2,6.6 15.7,8.9 13.6,8.9 C16.5,8.9 18.8,11.3 19.2,14.1\"/></svg>", 11702 "video-camera": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><polygon fill=\"none\" stroke=\"#000\" points=\"17.5 6.9 17.5 13.1 13.5 10.4 13.5 14.5 2.5 14.5 2.5 5.5 13.5 5.5 13.5 9.6 17.5 6.9\"/></svg>", 11703 "vimeo": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M2.065,7.59C1.84,7.367,1.654,7.082,1.468,6.838c-0.332-0.42-0.137-0.411,0.274-0.772c1.026-0.9
117031,2.004-1.896,3.127-2.688 c1.017-0.713,2.365-1.173,3.286-0.039c0.849,1.045,0.869,2.629,1.084,3.891c0.215,1.309,0.421,2.648,0.88,3.901 c0.127,0.352,0.37,1.018,0.81,1.074c0.567,0.078,1.145-0.917,1.408-1.289c0.684-0.987,1.611-2.317,1.494-3.587 c-0.115-1.349-1.572-1.095-2.482-0.773c0.146-1.514,1.555-3.216,2.912-3.792c1.439-0.597,3.579-0.587,4.302,1.036 c0.772,1.759,0.078,3.802-0.763,5.396c-0.918,1.731-2.1,3.333-3.363,4.829c-1.114,1.329-2.432,2.787-4.093,3.422 c-1.897,0.723-3.021-0.686-3.667-2.318c-0.705-1.777-1.056-3.771-1.565-5.621C4.898,8.726,4.644,7.836,4.136,7.191 C3.473,6.358,2.72,7.141,2.065,7.59C1.977,7.502,2.115,7.551,2.065,7.59L2.065,7.59z\"/></svg>", 11704 "warning": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle cx=\"10\" cy=\"14\" r=\"1\"/><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10\" cy=\"10\" r=\"9\"/><path d=\"M10.97,7.72 C10.85,9.54 10.56,11.29 10.56,11.29 C10.51,11.87 10.27,12 9.99,12 C9.69,12 9.49,11.87 9.43,11.29 C9.43,11.29 9.16,9.54 9.03,7.72 C8.96,6.54 9.03,6 9.03,6 C9.03,5.45 9.46,5.02 9.99,5 C10.53,5.01 10.97,5.44 10.97,6 C10.97,6 11.04,6.54 10.97,7.72 L10.97,7.72 Z\"/></svg>", 11705 "whatsapp": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M16.7,3.3c-1.8-1.8-4.1-2.8-6.7-2.8c-5.2,0-9.4,4.2-9.4,9.4c0,1.7,0.4,3.3,1.3,4.7l-1.3,4.9l5-1.3c1.4,0.8,2.9,1.2,4.5,1.2 l0,0l0,0c5.2,0,9.4-4.2,9.4-9.4C19.5,7.4,18.5,5,16.7,3.3 M10.1,17.7L10.1,17.7c-1.4,0-2.8-0.4-4-1.1l-0.3-0.2l-3,0.8l0.8-2.9 l-0.2-0.3c-0.8-1.2-1.2-2.7-1.2-4.2c0-4.3,3.5-7.8,7.8-7.8c2.1,0,4.1,0.8,5.5,2.3c1.5,1.5,2.3,3.4,2.3,5.5 C17.9,14.2,14.4,17.7,10.1,17.7 M14.4,11.9c-0.2-0.1-1.4-0.7-1.6-0.8c-0.2-0.1-0.4-0.1-0.5,0.1c-0.2,0.2-0.6,0.8-0.8,0.9 c-0.1,0.2-0.3,0.2-0.5,0.1c-0.2-0.1-1-0.4-1.9-1.2c-0.7-0.6-1.2-1.4-1.3-1.6c-0.1-0.2,0-0.4,0.1-0.5C8,8.8,8.1,8.7,8.2,8.5 c0.1-0.1,0.2-0.2,0.2-0.4c0.1-0.2,0-0.3,0-0.4C8.4,7.6,7.9,6.5,7.7,6C7.5,5.5,7.3,5.6,7.2,5.6c-0.1,0-0.3,0-0.4,0 c-0.2,0-0.4,0.1-0.6,0.3c-0.2,0.2-0.8,0.8-0.8,2c0,1.2,0.8,2.3,1,2.4c0.1,0.2,1.7,2.5,4,3.5c0.6,0.2,1,0.4,1.3,0.5 c0.6,0.2,1.1,0.2,1.5,0.1c0.5-0.1,1.4-0.6,1.6-1.1c0.2-0.5,0.2-1,0.1-1.1C14.8,12.1,14.6,12,14.4,11.9\"/>
11705</svg>", 11706 "wordpress": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M10,0.5c-5.2,0-9.5,4.3-9.5,9.5s4.3,9.5,9.5,9.5c5.2,0,9.5-4.3,9.5-9.5S15.2,0.5,10,0.5L10,0.5L10,0.5z M15.6,3.9h-0.1 c-0.8,0-1.4,0.7-1.4,1.5c0,0.7,0.4,1.3,0.8,1.9c0.3,0.6,0.7,1.3,0.7,2.3c0,0.7-0.3,1.5-0.6,2.7L14.1,15l-3-8.9 c0.5,0,0.9-0.1,0.9-0.1C12.5,6,12.5,5.3,12,5.4c0,0-1.3,0.1-2.2,0.1C9,5.5,7.7,5.4,7.7,5.4C7.2,5.3,7.2,6,7.6,6c0,0,0.4,0.1,0.9,0.1 l1.3,3.5L8,15L5,6.1C5.5,6.1,5.9,6,5.9,6C6.4,6,6.3,5.3,5.9,5.4c0,0-1.3,0.1-2.2,0.1c-0.2,0-0.3,0-0.5,0c1.5-2.2,4-3.7,6.9-3.7 C12.2,1.7,14.1,2.6,15.6,3.9L15.6,3.9L15.6,3.9z M2.5,6.6l3.9,10.8c-2.7-1.3-4.6-4.2-4.6-7.4C1.8,8.8,2,7.6,2.5,6.6L2.5,6.6L2.5,6.6 z M10.2,10.7l2.5,6.9c0,0,0,0.1,0.1,0.1C11.9,18,11,18.2,10,18.2c-0.8,0-1.6-0.1-2.3-0.3L10.2,10.7L10.2,10.7L10.2,10.7z M14.2,17.1 l2.5-7.3c0.5-1.2,0.6-2.1,0.6-2.9c0-0.3,0-0.6-0.1-0.8c0.6,1.2,1,2.5,1,4C18.3,13,16.6,15.7,14.2,17.1L14.2,17.1L14.2,17.1z\"/></svg>", 11707 "world": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path fill=\"none\" stroke=\"#000\" d=\"M1,10.5 L19,10.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M2.35,15.5 L17.65,15.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M2.35,5.5 L17.523,5.5\"/><path fill=\"none\" stroke=\"#000\" d=\"M10,19.46 L9.98,19.46 C7.31,17.33 5.61,14.141 5.61,10.58 C5.61,7.02 7.33,3.83 10,1.7 C10.01,1.7 9.99,1.7 10,1.7 L10,1.7 C12.67,3.83 14.4,7.02 14.4,10.58 C14.4,14.141 12.67,17.33 10,19.46 L10,19.46 L10,19.46 L10,19.46 Z\"/><circle fill=\"none\" stroke=\"#000\" cx=\"10\" cy=\"10.5\" r=\"9\"/></svg>", 11708 "xing": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M4.4,4.56 C4.24,4.56 4.11,4.61 4.05,4.72 C3.98,4.83 3.99,4.97 4.07,5.12 L5.82,8.16 L5.82,8.17 L3.06,13.04 C2.99,13.18 2.99,13.33 3.06,13.44 C3.12,13.55 3.24,13.62 3.4,13.62 L6,13.62 C6.39,13.62 6.57,13.36 6.71,13.12 C6.71,13.12 9.41,8.35 9.51,8.16 C9.49,8.14 7.72,5.04 7.72,5.04 C7.58,4.81 7.39,4.56 6.99,4.56 L4.4,4.56 L4.4,4.56 Z\"/><path d=\"M15.3,1 C14.91,1 14.74,1.25 14.6,1.5 C14.6,1.5 9.01,11.42 8.82,11.74 C8.83,11.76 12.51,18.51 12.51,18.51 C12.64,18.74 12.84,19 13.23,19 L15.82,19 C15.98,19 16.1,18.94 16.16,18.83 C16.23,18.72 16.23,18.57 16.16,18.43 L12.5,11.74 L12.5,11.72 L18.25,1.56 C18.32,1.42 18.32,1.27 18.25,1.16 C18.21,1.06 18.08,1 17.93,1 L15.3,1 L15.3,1 Z\"/></svg>", 11709 "yelp": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M17.175,14.971c-0.112,0.77-1.686,2.767-2.406,3.054c-0.246,0.1-0.487,0.076-0.675-0.069\tc-0.122-0.096-2.446-3.859-2.446-3.859c-0.194-0.293-0.157-0.682,0.083-0.978c0.234-0.284,0.581-0.393,0.881-0.276\tc0.016,0.01,4.21,1.394,4.332,1.482c0.178,0.148,0.263,0.379,0.225,0.646L17.175,14.971L17.175,14.971z M11.464,10.789\tc-0.203-0.307-0.199-0.666,0.009-0.916c0,0,2.625-3.574,2.745-3.657c0.203-0.135,0.452-0.141,0.69-0.025\tc0.691,0.335,2.085,2.405,2.167,3.199v0.027c0.024,0.271-0.082,0.491-0.273,0.623c-0.132,0.083-4.43,1.155-4.43,1.155\tc-0.322,0.096-0.68-0.06-0.882-0.381L11.464,10.789z M9.475,9.563C9.32,9.609,8.848,9.757,8.269,8.817c0,0-3.916-6.16-4.007-6.351\tc-0.057-0.212,0.011-0.455,0.202-0.65C5.047,1.211,8.21,0.327,9.037,0.529c0.27,0.069,0.457,0.238,0.522,0.479\tc0.047,0.266,0.433,5.982,0.488,7.264C10.098,9.368,9.629,9.517,9.475,9.563z M9.927,19.066c-0.083,0.225-0.273,0.373-0.54,0.421\tc-0.762,0.13-3.15-0.751-3.647-1.342c-0.096-0.131-0.155-0.262-0.167-0.394c-0.011-0.095,0-0.189,0.036-0.272\tc0.061-0.155,2.917-3.538,2.917-3.538c0.214-0.272,0.595-0.355,0.952-0.213c0.345,0.13,0.56,0.428,0.536,0.749\tC10.014,14.479,9.977,18.923,9.927,19.066z M3.495,13.912c-0.235-0.009-0.444-0.148-0.568-0.382c-0.089-0.17-0.151-0.453-0.19-0.794\tC2.63,11.701,2.761,10.144,3.07,9.648c0.145-0.226,0.357-0.345,0.592-0.336c0.154,0,4.255,1.667,4.255,1.667\tc0.321,0.118,0.521,0.453,0.5,0.833c-0.023,0.37-0.236,0.655-0.551,0.738L3.495,13.912z\"/></svg>", 11710 "youtube": "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15,4.1c1,0.1,2.3,0,3,0.8c0.8,0.8,0.9,2.1,0.9,3.1C19,9.2,19,10.9,19,12c-0.1,1.1,0,2.4-0.5,3.4c-0.5,1.1-1.4,1.5-2.5,1.6 c-1.2,0.1-8.6,0.1-11,0c-1.1-0.1-2.4-0.1-3.2-1c-0.7-0.8-0.7-2-0.8-3C1,11.8,1,10.1,1,8.9c0-1.1,0-2.4,0.5-3.4C2,4.5,3,4.3,4.1,4.2 C5.3,4.1,12.6,4,15,4.1z M8,7.5v6l5.5-3L8,7.5z\"/></svg>" 11711 }); 11712 } 11713 11714 if (typeof window !== 'undefined' && window.UIkit) { 11715 window.UIkit.use(plugin); 11716 } 11717 11718 return plugin; 11719 }); 11720}); 11721 11722// loads the Icon plugin 11723uikit.use(uikitIcons); 11724 11725console.log('File `app.js` loaded'); 11726 11727}());
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.