{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/@uvocore-front/utils/dist/index.js","webpack:///./utils/addActiveLinkClass.js","webpack:///./utils/formatDate.js","webpack:///./utils/isMobile.js","webpack:///./components/Calculator/default/index.js","webpack:///./components/Calculator/short/index.js","webpack:///../node_modules/console-browserify/index.js","webpack:///../node_modules/@glidejs/glide/dist/glide.esm.js","webpack:///../node_modules/util/util.js","webpack:///./components/Calculator/CalculatorInit.js","webpack:///./sections/samples-section/index.js","webpack:///./pages/free-samples/index.js","webpack:///../node_modules/process/browser.js","webpack:///../node_modules/util/support/isBufferBrowser.js","webpack:///../node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///../node_modules/assert/assert.js","webpack:///../node_modules/object-assign/index.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///./components/Header/main/index.js","webpack:///./utils/customEvent.js","webpack:///./components/Footer/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","window","e","default","deployHash","source","withDeployHash","appendTo","document","getElementsByTagName","async","a","u","defer","f","Promise","concat","querySelector","createElement","readyState","test","onload","onreadystatechange","src","appendChild","arguments","length","innerHTML","element","marginValue","thresholdValue","callback","querySelectorAll","rootMargin","threshold","IntersectionObserver","forEach","isIntersecting","unobserve","target","slice","observe","widgetLink","isWidgetLinkHashNeeded","loader","customLoader","insertLoaderTo","loaderPosition","v","fn","y","then","catch","Error","addActiveLinkClass","anchorSelector","activeClass","anchors","current","location","pathname","getAttribute","classList","add","formatDate","date","formattedDate","Date","getDate","getMonth","getFullYear","isMobile","innerWidth","DefaultCalculator","options","calculatorOptions","ID","format","calculatorType","deafault","deadlinesDefault","academicLevelDefault","pagesDefault","removeChild","CalculatorInit","init","ShortCalculator","parent","util","assert","now","getTime","console","Array","times","global","functions","log","apply","warn","label","time","duration","err","message","error","stack","inspect","expression","arr","ok","tuple","defaults","type","startAt","perView","focusAt","gap","autoplay","hoverpause","keyboard","bound","swipeThreshold","dragThreshold","perTouch","touchRatio","touchAngle","animationDuration","rewind","rewindDuration","animationTimingFunc","throttle","direction","peek","breakpoints","classes","ltr","rtl","slider","carousel","swipeable","dragging","cloneSlide","activeNav","activeSlide","disabledArrow","msg","_typeof","iterator","obj","constructor","classCallCheck","instance","Constructor","TypeError","createClass","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","_extends","assign","receiver","Function","desc","getOwnPropertyDescriptor","undefined","getPrototypeOf","possibleConstructorReturn","self","ReferenceError","toInt","parseInt","isString","isObject","isFunction","isUndefined","isArray","mount","glide","extensions","events","components","_name","define","prop","definition","mergeOptions","settings","EventsBus","this","hop","event","handler","on","index","push","remove","context","emit","item","Glide","selector","_c","_t","_e","disabled","transformers","pattern","Run","make","distance","Transition","disable","Move","interval","_o","set","_i","_d","status","func","wait","timeout","args","result","previous","later","leading","throttled","at","remaining","clearTimeout","trailing","setTimeout","cancel","MARGIN_TYPE","siblings","node","parentNode","firstChild","matched","nextSibling","nodeType","exist","HTMLElement","EventsBinder","listeners","el","closure","capture","addEventListener","removeEventListener","VALID_DIRECTIONS","FLIPED_MOVEMENTS","Rtl","Components","modify","translate","Direction","is","Gap","Gaps","Grow","Clones","grow","Peeking","Peek","before","Focusing","width","Sizes","slideWidth","supportsPassive","opts","supportsPassive$1","START_EVENTS","MOVE_EVENTS","END_EVENTS","MOUSE_EVENTS","sortBreakpoints","points","keys","sort","reduce","k","COMPONENTS","Html","root","track","slides","wrapper","children","filter","slide","contains","_r","Translate","Events","transform","TRANSFORMERS","mutate","transformer","mutator","style","isType","isOffset","after","movement","compose","transition","enable","offset","resolve","token","split","join","addClass","removeClass","_v","indexOf","setupSlides","setupWrapper","dimention","wrapperSize","offsetWidth","reductor","len","marginLeft","marginRight","_this","items","collect","_Glide$settings","peekIncrementer","part","start","end","Math","max","floor","clone","cloneNode","_clone","unshift","append","_Components$Html","half","prepend","reverse","_i2","insertBefore","_i3","Resize","Binder","unbind","off","destroy","Build","typeClass","sibling","removeClasses","move","calculate","isStart","isEnd","steps","countableSteps","min","_m","step","substr","Swipe","swipeSin","swipeStartX","swipeStartY","passive","bindSwipeStart","swipe","touches","pageX","pageY","bindSwipeMove","bindSwipeEnd","subExSx","subEySy","powEX","abs","powEY","swipeHypotenuse","sqrt","swipeCathetus","asin","PI","stopPropagation","parseFloat","swipeDistance","swipeDeg","round","unbindSwipeMove","unbindSwipeEnd","unbindSwipeStart","_this2","_this3","changedTouches","Images","dragstart","preventDefault","Anchors","detached","prevented","_a","click","detach","draggable","setAttribute","removeAttribute","attach","Controls","_n","addBindings","setActive","removeActive","controls","removeBindings","elements","currentTarget","Keyboard","press","keyCode","Autoplay","setInterval","stop","clearInterval","Breakpoints","match","matchMedia","point","matches","Glide$1","_Core","Glide$$1","__proto__","subClass","superClass","setPrototypeOf","inherits","getOwnPropertyDescriptors","descriptors","formatRegExp","objects","str","String","replace","x","Number","JSON","stringify","_","isNull","deprecate","process","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","customInspect","stylizeWithColor","formatValue","styleType","styles","recurseTimes","ret","primitive","simple","isNumber","formatPrimitive","visibleKeys","array","hash","val","idx","arrayToHash","getOwnPropertyNames","isError","formatError","isRegExp","RegExp","toString","isDate","output","base","braces","toUTCString","formatProperty","formatArray","map","pop","prev","cur","numLinesEst","reduceToSingleString","line","ar","arg","re","objectToString","pad","debuglog","env","NODE_DEBUG","toUpperCase","pid","isNullOrUndefined","isSymbol","isPrimitive","isBuffer","months","timestamp","getHours","getMinutes","getSeconds","origin","kCustomPromisifiedSymbol","callbackifyOnRejected","reason","cb","newReason","promisify","original","promiseResolve","promiseReject","promise","reject","custom","callbackify","callbackified","maybeCb","nextTick","rej","isPageConfig","pageConfig","pageCalculatorConfig","calculator","calcOptions","Calc","initSamplesSlider","samplesBlock","1199","768","order","bullet","observeElement","getWidget","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","run","marker","runClearTimeout","Item","noop","title","browser","argv","version","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","copy","fill","readUInt8","ctor","superCtor","super_","TempCtor","objectAssign","compare","b","Buffer","_isBuffer","hasOwn","pSlice","functionsHaveNames","pToString","isView","arrbuf","ArrayBuffer","DataView","buffer","regex","getName","truncate","something","rawname","fail","actual","expected","operator","stackStartFunction","AssertionError","_deepEqual","strict","memos","multiline","lastIndex","ignoreCase","Float32Array","Float64Array","Uint8Array","actualIndex","actualVisitedObjects","aIsArgs","isArguments","bIsArgs","ka","objectKeys","kb","objEquiv","expectedException","isPrototypeOf","_throws","shouldThrow","block","_tryBlock","userProvidedMessage","isUnexpectedException","generatedMessage","captureStackTrace","out","fn_name","next_line","substring","equal","notEqual","deepEqual","deepStrictEqual","notDeepEqual","notDeepStrictEqual","strictEqual","notStrictEqual","throws","doesNotThrow","ifError","getOwnPropertySymbols","propIsEnumerable","propertyIsEnumerable","toObject","test1","test2","fromCharCode","test3","letter","shouldUseNative","from","symbols","to","g","ToggleNav","header","button","nav","state","isOpen","sel","showEvent","CustomEvent","show","dispatchEvent","hide","servicesMenuBtn","servicesMenu","toggle","scrollY","params","bubbles","cancelable","detail","evt","createEvent","initCustomEvent","Event"],"mappings":"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","file":"js/free-samples.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 192);\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.utils=t():e.utils=t()}(window,(function(){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=0)}([function(e,t,n){e.exports=n(2)},function(e,t,n){},function(e,t,n){\"use strict\";n.r(t);var o=window.deployHash&&\"string\"==typeof window.deployHash&&\"\"!==window.deployHash?window.deployHash:\"\",r=function(e){var t=e.source,n=e.withDeployHash,r=void 0===n||n,i=e.appendTo,c=void 0===i?document.getElementsByTagName(\"head\")[0]:i,d=e.async,a=void 0===d||d,u=e.defer,f=void 0===u||u;return new Promise((function(e,n){if(t&&\"string\"==typeof t){var i=r&&o?\"?v=\".concat(o):\"\",d=t+i;if(document.querySelector('script[src=\"'.concat(d,'\"]')))e();else{var u=document.createElement(\"script\");u.async=a,u.defer=f;var l=function(t,o){(o||!u.readyState||/loaded|complete/.test(u.readyState))&&(u.onload=null,u.onreadystatechange=null,u=void 0,o?n():e())};u.onload=l,u.onreadystatechange=l,u.src=d,c.appendChild(u)}}}))},i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"center\";e&&\"string\"==typeof e&&(document.querySelector(\"\".concat(e)).innerHTML='\\n
\\n
\\n
\\n '))},c=(n(1),i),d=function(e){var t=e.element,n=e.marginValue,o=void 0===n?400:n,r=e.thresholdValue,i=void 0===r?0:r,c=e.callback,d=void 0===c?function(){}:c;if(t&&\"string\"==typeof t){var a=document.querySelectorAll(t),u={rootMargin:\"\".concat(o,\"px 0px \").concat(o,\"px 0px\"),threshold:i},f=new IntersectionObserver((function(e,t){e.forEach((function(e){e.isIntersecting&&(t.unobserve(e.target),d(e.target))}))}),u);a&&[].slice.call(a).forEach((function(e){f.observe(e)}))}},a=function(e){var t=e.widgetLink,n=e.isWidgetLinkHashNeeded,o=void 0===n||n,i=e.loader,d=void 0===i||i,a=e.customLoader,u=void 0===a?void 0:a,f=e.insertLoaderTo,l=void 0===f?void 0:f,s=e.loaderPosition,p=void 0===s?\"center\":s,v=e.fn,y=void 0===v?function(){}:v;t&&\"string\"==typeof t&&r({source:t,withDeployHash:o}).then((function(){d&&u&&\"function\"==typeof u?u(l,p):d&&c(l,p),y()})).catch((function(e){throw new Error(e)}))};n.d(t,\"loadScripts\",(function(){return r})),n.d(t,\"addLoader\",(function(){return c})),n.d(t,\"observeElement\",(function(){return d})),n.d(t,\"getWidget\",(function(){return a}))}])}));\n//# sourceMappingURL=index.js.map","/**\n *\n * @param anchorSelector\n * @param activeClass\n */\nconst addActiveLinkClass = ({ anchorSelector = 'a', activeClass = 'active' }) => {\n const anchors = document.querySelectorAll(anchorSelector);\n if (!anchors) return;\n\n const current = window.location.pathname;\n\n for (let i = 0; i < anchors.length; i += 1) {\n if (anchors[i].getAttribute('href') === current) {\n anchors[i].classList.add(activeClass);\n }\n }\n};\n\nexport default addActiveLinkClass;\n","const formatDate = date => {\n const monthNames = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec',\n ];\n\n let formattedDate = new Date(date * 1000);\n formattedDate = `${formattedDate.getDate()} ${\n monthNames[formattedDate.getMonth()]\n } ${formattedDate.getFullYear()}`;\n\n return formattedDate;\n};\n\nexport default formatDate;\n","/**\n *\n * @returns {boolean}\n */\nconst isMobile = () => window.innerWidth < 1024;\n\nexport default isMobile();\n","import './style.scss';\nimport CalculatorInit from '../CalculatorInit';\n\nconst init = options => {\n const defaultCalculatorOptions = {\n ID: '61',\n format: 'json',\n calculatorType: 'DefaultCalculator',\n options: {\n deafault: {\n deadlinesDefault: [137189],\n academicLevelDefault: 1,\n pagesDefault: 1,\n },\n },\n callback: () => {\n document\n .querySelector('[data-calc-mini]')\n .removeChild(document.querySelector('[data-calc-mini]').querySelector('.Loader'));\n },\n };\n\n const calculatorOptions = {\n ...defaultCalculatorOptions,\n ...options,\n };\n\n CalculatorInit(calculatorOptions);\n};\n\nconst DefaultCalculator = options => {\n init(options);\n};\n\nexport default DefaultCalculator;\n","import './style.scss';\nimport CalculatorInit from '../CalculatorInit';\n\nconst init = options => {\n const defaultCalculatorOptions = {\n ID: '61',\n calculatorType: 'DefaultCalculator',\n parent: '[data-calc-short]',\n format: 'json',\n options: {\n deafault: {\n deadlinesDefault: [137189],\n academicLevelDefault: 1,\n pagesDefault: 1,\n },\n },\n };\n\n const calculatorOptions = {\n ...defaultCalculatorOptions,\n ...options,\n };\n\n CalculatorInit(calculatorOptions);\n};\n\nconst ShortCalculator = options => {\n init(options);\n};\n\nexport default ShortCalculator;\n","/*global window, global*/\nvar util = require(\"util\")\nvar assert = require(\"assert\")\nfunction now() { return new Date().getTime() }\n\nvar slice = Array.prototype.slice\nvar console\nvar times = {}\n\nif (typeof global !== \"undefined\" && global.console) {\n console = global.console\n} else if (typeof window !== \"undefined\" && window.console) {\n console = window.console\n} else {\n console = {}\n}\n\nvar functions = [\n [log, \"log\"],\n [info, \"info\"],\n [warn, \"warn\"],\n [error, \"error\"],\n [time, \"time\"],\n [timeEnd, \"timeEnd\"],\n [trace, \"trace\"],\n [dir, \"dir\"],\n [consoleAssert, \"assert\"]\n]\n\nfor (var i = 0; i < functions.length; i++) {\n var tuple = functions[i]\n var f = tuple[0]\n var name = tuple[1]\n\n if (!console[name]) {\n console[name] = f\n }\n}\n\nmodule.exports = console\n\nfunction log() {}\n\nfunction info() {\n console.log.apply(console, arguments)\n}\n\nfunction warn() {\n console.log.apply(console, arguments)\n}\n\nfunction error() {\n console.warn.apply(console, arguments)\n}\n\nfunction time(label) {\n times[label] = now()\n}\n\nfunction timeEnd(label) {\n var time = times[label]\n if (!time) {\n throw new Error(\"No such label: \" + label)\n }\n\n delete times[label]\n var duration = now() - time\n console.log(label + \": \" + duration + \"ms\")\n}\n\nfunction trace() {\n var err = new Error()\n err.name = \"Trace\"\n err.message = util.format.apply(null, arguments)\n console.error(err.stack)\n}\n\nfunction dir(object) {\n console.log(util.inspect(object) + \"\\n\")\n}\n\nfunction consoleAssert(expression) {\n if (!expression) {\n var arr = slice.call(arguments, 1)\n assert.ok(false, util.format.apply(null, arr))\n }\n}\n","/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled'\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toFloat(value) {\n return parseFloat(value);\n}\n\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n\n/**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n\n return r[k], r;\n }, {});\n}\n\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\nfunction mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings);\n\n // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n if (settings.hasOwnProperty('classes')) {\n options.classes = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n createClass(EventsBus, [{\n key: 'on',\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n }\n\n // Create the event's object if not yet created\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n }\n\n // Add the handler to queue\n var index = this.events[event].push(handler) - 1;\n\n // Provide handle back for removal of event\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: 'emit',\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n }\n\n // If the event doesn't exist, or there's no handlers in queue, just leave\n if (!this.hop.call(this.events, event)) {\n return;\n }\n\n // Cycle through events queue, fire!\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\n\nvar Glide = function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n createClass(Glide, [{\n key: 'mount',\n value: function mount$$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: 'mutate',\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n this._c.Move.make(distance);\n\n return this;\n }\n\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'play',\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n\n return this;\n }\n\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n\n return this;\n }\n\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n Glide.disable();\n\n this.move = move;\n\n Events.emit('run.before', this.move);\n\n this.calculate();\n\n Events.emit('run', this.move);\n\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset('<') || _this.isOffset('>')) {\n _this._o = false;\n\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n\n Glide.enable();\n });\n }\n },\n\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction;\n\n\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.min(length - Glide.index, -toInt(steps));\n } else {\n Glide.index++;\n }\n break;\n\n case '<':\n if (steps === '<') {\n Glide.index = 0;\n } else if (this.isStart()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.min(Glide.index, toInt(steps));\n } else {\n Glide.index--;\n }\n break;\n\n case '=':\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\n\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index === 0;\n },\n\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index === this.length;\n },\n\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n }\n };\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length;\n\n // If the `bound` option is acitve, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\nfunction throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\n\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * (Components.Sizes.length - 1);\n }\n });\n\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n\n return Gaps.value * (perView - 1) / perView;\n }\n });\n\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\nfunction Html (Glide, Components) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\n }\n };\n\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\n });\n\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n this.offset = offset;\n\n Events.emit('move', {\n movement: this.value\n });\n\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = this.slideWidth + 'px';\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n\n /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\n });\n\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Sizes.remove();\n });\n\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n\n this.typeClass();\n this.activeClass();\n\n Events.emit('build.after');\n },\n\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.activeSlide);\n\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n },\n\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n };\n\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n Events.on('move.after', function () {\n Build.activeClass();\n });\n\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n\n /**\n * Collect clones with pattern.\n *\n * @return {Void}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes;\n\n\n var peekIncrementer = +!!Glide.settings.peek;\n var part = perView + peekIncrementer;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n\n clone.classList.add(classes.cloneSlide);\n\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\n\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n\n\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = Components.Sizes.slideWidth + 'px';\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n Events.on('destroy', function () {\n Clones.remove();\n });\n\n return Clones;\n}\n\nvar EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n createClass(EventsBinder, [{\n key: 'on',\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: 'off',\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\n\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n Events.on('update', function () {\n Direction.mount();\n });\n\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Gaps.value * Glide.index;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\n\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n }\n };\n\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n Events.on('move', function (context) {\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(width * (length - 1));\n });\n\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n\n Translate.set(0);\n });\n\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Translate.remove();\n });\n\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\n\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n\n this.set();\n },\n\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n\n this.set();\n }\n };\n\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n Events.on('move', function () {\n Transition.set();\n });\n\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n Events.on('run', function () {\n Transition.enable();\n });\n\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n Events.on('destroy', function () {\n Transition.remove();\n });\n\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n\n var swipe = this.touches(event);\n\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n\n this.bindSwipeMove();\n this.bindSwipeEnd();\n\n Events.emit('swipe.start');\n }\n },\n\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n\n\n var swipe = this.touches(event);\n\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n\n Components.Move.make(subExSx * toFloat(touchRatio));\n\n Components.Html.root.classList.add(classes.dragging);\n\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var settings = Glide.settings;\n\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n\n Events.emit('swipe.end');\n }\n },\n\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n\n Components.Transition.enable();\n\n return this;\n },\n\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n\n Components.Transition.disable();\n\n return this;\n }\n };\n\n /**\n * Add component class:\n * - after initial building\n */\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n var detached = false;\n\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n var prevented = false;\n\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n\n this.bind();\n },\n\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n\n this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n\n this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\n\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n\n this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var capture = supportsPassive$1 ? { passive: true } : false;\n\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n\n this.addBindings();\n },\n\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.add(settings.classes.activeNav);\n\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\n },\n\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\n }\n },\n\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n event.preventDefault();\n\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n }\n };\n\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\n }\n };\n\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n Events.on('update', function () {\n Keyboard.mount();\n });\n\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n }, this.time);\n }\n }\n },\n\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n _this2.stop();\n });\n\n Binder.on('mouseout', Components.Html.root, function () {\n _this2.start();\n });\n },\n\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n Events.on('update', function () {\n Autoplay.mount();\n });\n\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n Events.on('destroy', function () {\n Binder.destroy();\n });\n\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn('Breakpoints option must be an object');\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n var settings = Glide.settings;\n\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n var points = sortBreakpoints(settings.breakpoints);\n\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n var defaults = _extends({}, settings);\n\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n _extends(settings, Breakpoints.match(points));\n\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n Events.on('update', function () {\n points = sortBreakpoints(points);\n\n defaults = _extends({}, settings);\n });\n\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n}(Glide);\n\nexport default Glide$1;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","const isPageConfig =\n window.pageConfig &&\n Object.keys(window.pageConfig).length > 0 &&\n window.pageConfig.constructor === Object;\n\nconst CalculatorInit = options => {\n const pageCalculatorConfig =\n isPageConfig && window.pageConfig.calculator !== undefined\n ? window.pageConfig.calculator\n : undefined;\n\n const calcOptions = options;\n\n calcOptions.options.deafault = {\n ...calcOptions.options.deafault,\n ...pageCalculatorConfig,\n };\n\n if (window.Calc) {\n new Calc(calcOptions); /* eslint-disable-line */\n }\n};\n\nexport default CalculatorInit;\n","import Glide from '@glidejs/glide';\n\nimport './style.scss';\n\nconst initSamplesSlider = () => {\n const samplesBlock = document.querySelector('[data-slider=\"samples\"]');\n if (!samplesBlock) return;\n\n const glide = new Glide('[data-slider=\"samples\"]', {\n perView: 4,\n gap: 24,\n type: 'carousel',\n startAt: '0',\n breakpoints: {\n 1199: {\n perView: 3,\n },\n 768: {\n perView: 1,\n },\n },\n });\n\n const samplesCarts = Array.prototype.slice.call(samplesBlock.querySelectorAll('.card'));\n\n samplesCarts.forEach((order, key) => {\n const bullet = document.createElement('button');\n bullet.classList.add('glide__bullet');\n bullet.setAttribute('data-glide-dir', `=${key}`);\n document.querySelector('[data-bullets=\"samples\"]').appendChild(bullet);\n });\n\n glide.mount();\n};\n\ndocument.addEventListener('DOMContentLoaded', () => {\n if (document.readyState === 'complete') {\n initSamplesSlider();\n } else {\n window.addEventListener('load', initSamplesSlider);\n }\n});\n","import { getWidget, observeElement } from '@uvocore-front/utils';\nimport '../../components/Header/main';\nimport '../../components/Footer';\nimport '../../sections/samples-section';\nimport { DefaultCalculator } from '../../components/Calculator';\n\nobserveElement({\n element: '[data-calc-mini]',\n marginValue: 300,\n callback: () => {\n getWidget({\n widgetLink: '/assets/js/calc.js',\n loader: true,\n fn: () => {\n DefaultCalculator();\n },\n });\n },\n});\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n","'use strict';\n\nvar objectAssign = require('object-assign');\n\n// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nfunction isBuffer(b) {\n if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n return global.Buffer.isBuffer(b);\n }\n return !!(b != null && b._isBuffer);\n}\n\n// based on node assert, original notice:\n// NB: The URL to the CommonJS spec is kept just for tradition.\n// node-assert has evolved a lot since then, both in API and behavior.\n\n// http://wiki.commonjs.org/wiki/Unit_Testing/1.0\n//\n// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!\n//\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar util = require('util/');\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar pSlice = Array.prototype.slice;\nvar functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n}());\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!util.isFunction(func)) {\n return;\n }\n if (functionsHaveNames) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = function AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n};\n\n// assert.AssertionError instanceof Error\nutil.inherits(assert.AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames || !util.isFunction(something)) {\n return util.inspect(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new assert.AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', assert.ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\n\nassert.equal = function equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n};\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', assert.notEqual);\n }\n};\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n }\n};\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n }\n};\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (isBuffer(actual) && isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (util.isDate(actual) && util.isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (isBuffer(actual) !== isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (util.isPrimitive(a) || util.isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', assert.strictEqual);\n }\n};\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', assert.notStrictEqual);\n }\n};\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && util.isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\n\nassert.throws = function(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n};\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n};\n\nassert.ifError = function(err) { if (err) throw err; };\n\n// Expose a strict only variant of assert\nfunction strict(value, message) {\n if (!value) fail(value, true, message, '==', strict);\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import '../../../utils/customEvent';\n\nimport './style.scss';\n\nfunction ToggleNav() {\n const header = document.querySelector('Header');\n const button = header.querySelector('.Header__burger');\n const nav = header.querySelector('.Header__menu');\n\n if (!header && !button && !nav) return;\n\n this.state = {\n isOpen: false,\n };\n this.sel = nav;\n const showEvent = new CustomEvent('show');\n\n this.show = () => {\n if (this.state.isOpen) return;\n\n this.state.isOpen = true;\n header.classList.add('Header--open');\n this.sel.dispatchEvent(showEvent);\n };\n\n this.hide = () => {\n if (!this.state.isOpen) return;\n\n this.state.isOpen = false;\n header.classList.remove('Header--open');\n };\n\n button.addEventListener('click', () => (this.state.isOpen ? this.hide() : this.show()), false);\n\n window.addEventListener('orientationchange', this.hide);\n}\n\nwindow.addEventListener('DOMContentLoaded', () => {\n const toggleNav = new ToggleNav();\n\n toggleNav.sel.addEventListener('show', () => {});\n\n const servicesMenuBtn = document.querySelector('.Header__submenu__label');\n const servicesMenu = document.querySelector('.Header__submenu');\n\n if (servicesMenuBtn && window.innerWidth <= 1024) {\n servicesMenuBtn.addEventListener('click', () => servicesMenu.classList.toggle('open'));\n }\n});\n\nwindow.addEventListener(\n 'scroll',\n () => {\n const header = document.querySelector('.Header');\n\n if (!header) return;\n\n if (window.scrollY > 0) {\n header.classList.add('Header--scrolled');\n } else {\n header.classList.remove('Header--scrolled');\n }\n },\n false,\n);\n","// eslint-disable-next-line consistent-return\n(() => {\n // If not IE\n if (typeof window.CustomEvent === 'function') return false;\n const CustomEvent = (event, params) => {\n // eslint-disable-next-line no-param-reassign\n params = params || { bubbles: false, cancelable: false, detail: undefined };\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent;\n})();\n","import { addActiveLinkClass } from '../../utils';\n\nimport './style.scss';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n addActiveLinkClass({\n anchorSelector: '.Footer__menu__link',\n });\n});\n"],"sourceRoot":""}