{"version":3,"sources":["webpack:///./node_modules/@weepower/core/scripts/events/events.js","webpack:///./node_modules/@weepower/core/scripts/wee-events.js","webpack:///./node_modules/@weepower/core/scripts/routes/location.js","webpack:///./node_modules/@weepower/core/node_modules/es6-promise/auto.js","webpack:///./node_modules/@weepower/core/scripts/fetch/headers.js","webpack:///./node_modules/@weepower/core/scripts/fetch/error.js","webpack:///./node_modules/@weepower/core/scripts/fetch/factory.js","webpack:///./node_modules/@weepower/core/scripts/fetch/bind.js","webpack:///./node_modules/@weepower/core/scripts/fetch/defaults.js","webpack:///./node_modules/@weepower/core/scripts/fetch/utils.js","webpack:///./node_modules/@weepower/core/scripts/wee-fetch.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/@babel/runtime/helpers/toPrimitive.js","webpack:///./node_modules/@weepower/core/scripts/routes/key.js","webpack:///./node_modules/@weepower/core/scripts/routes/route-handler.js","webpack:///./node_modules/@weepower/core/scripts/routes/route-map.js","webpack:///./node_modules/@weepower/core/scripts/routes/transitions.js","webpack:///./node_modules/@weepower/core/scripts/routes/route.js","webpack:///./node_modules/@weepower/core/scripts/routes/route-matcher.js","webpack:///./node_modules/@weepower/core/scripts/routes/global-hooks.js","webpack:///./node_modules/@weepower/core/scripts/routes/scroll.js","webpack:///./node_modules/@weepower/core/scripts/routes/push-state.js","webpack:///./node_modules/@weepower/core/scripts/routes/error.js","webpack:///./node_modules/@weepower/core/scripts/routes/async-queue.js","webpack:///./node_modules/@weepower/core/scripts/routes/history.js","webpack:///./node_modules/@weepower/core/scripts/routes/pjax.js","webpack:///./node_modules/@weepower/core/scripts/wee-routes.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/@weepower/core/scripts/store/error.js","webpack:///./node_modules/@weepower/core/scripts/wee-store.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@weepower/core/scripts/core/variables.js","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@weepower/core/scripts/core/warn.js","webpack:///./node_modules/@weepower/core/scripts/dom/index.js","webpack:///./node_modules/@weepower/core/scripts/wee-dom.js","webpack:///./node_modules/@weepower/core/scripts/wee-screen.js","webpack:///./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/node-libs-browser/mock/process.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/@weepower/core/node_modules/path-to-regexp/index.js","webpack:///./node_modules/es6-promise/auto.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/@weepower/core/node_modules/path-to-regexp/node_modules/isarray/index.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/objectFitPolyfill/dist/objectFitPolyfill.min.js","webpack:///./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack:///./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","webpack:///./node_modules/@weepower/core/scripts/core/core.js","webpack:///./node_modules/lazysizes/lazysizes.js","webpack:///./node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/@weepower/core/node_modules/es6-promise/dist/es6-promise.js","webpack:///./node_modules/@weepower/core/scripts/core/chain.js","webpack:///./node_modules/@weepower/core/scripts/wee-location.js","webpack:///./node_modules/@weepower/core/scripts/core/types.js","webpack:///./node_modules/@weepower/core/scripts/core/dom.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeFunction.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js"],"names":["events","custom","bound","_bind","els","obj","options","delegate","targ","$each","el","key","hasOwnProperty","evts","split","i","g","conf","$extend","args","once","scope","fn","evt","ev","parts","length","namespace","concat","unshift","f","cb","e","cont","sel","_$","$isString","indexOf","$setRef","$toArray","$sel","some","contains","target","$exec","_off","_bound","addEventListener","push","init","_doc","removeEventListener","splice","event","arguments","undefined","delegateTarg","segs","matches","Object","keys","forEach","binding","newSel","$isObject","oldSel","match","String","eventsModule","on","a","b","c","off","trigger","name","preventDefault","stopPropagation","addEvent","unbindEvents","__webpack_require__","d","__webpack_exports__","parseLocation","core_types__WEBPACK_IMPORTED_MODULE_0__","core_variables__WEBPACK_IMPORTED_MODULE_1__","REMOVE_SLASHES_REGEXP","value","path","query","$serialize","hash","createElement","href","window","location","search","pathname","replace","origin","fullPath","slice","$unserialize","segments","url","protocol","port","module","exports","polyfill","parseHeaders","headers","parsed","line","substr","trim","toLowerCase","val","normalizeHeader","normalizedName","toUpperCase","FetchError","message","config","request","code","response","_classCallCheck","this","_callSuper","errorType","_inherits","_createClass","_wrapNativeSuper","Error","fetchFactory","defaults","version","headerKeys","_settle","resolve","reject","readyState","_prepareResponse","exec","responseUrl","responseURL","status","validateStatus","data","statusText","XMLHttpRequest","getAllResponseHeaders","responseType","responseText","transformResponse","_flattenHeaders","common","method","_getUrl","baseUrl","params","test","_jsonp","jsonpCallback","_win","apply","jsonp","onerror","src","head","appendChild","instance","all","promises","Promise","requestData","processData","transformRequest","requestHeaders","disableCache","dt","Date","now","send","open","timeout","onreadystatechange","ontimeout","host","auth","username","password","Authorization","btoa","setRequestHeader","$isFunction","onDownloadProgress","lengthComputable","progress","loaded","total","call","onUploadProgress","upload","spread","callback","array","_toConsumableArray","bind","thisArg","Array","DEFAULT_CONTENT_TYPE","Content-Type","setContentTypeIfUnset","Accept","jsonpElement","$isFormData","$isArrayBuffer","$isFile","$isBlob","$isArrayBufferView","buffer","JSON","stringify","parse","$copy","extend","createFetchInstance","defaultConfig","context","$fetch","create","instanceDefaults","process","normalizeArray","allowAboveRoot","up","last","basename","start","end","matchedSlash","charCodeAt","filter","xs","res","resolvedPath","resolvedAbsolute","cwd","TypeError","charAt","p","join","normalize","isAbsolute","trailingSlash","paths","prototype","index","relative","from","to","arr","fromParts","toParts","Math","min","samePartsLength","outputParts","sep","delimiter","dirname","hasRoot","ext","extname","startDot","startPart","preDotState","str","len","_typeof","toPrimitive","t","r","Symbol","Number","__esModule","TIME","performance","genTimeKey","toFixed","genKey","s4","floor","random","toString","substring","notFound","RouteHandler","id","beforeInit","beforeUpdate","update","unload","pathList","pathMap","nameMap","_addRouteRecord","route","parent","exclude","ancestors","handler","finalPath","_normalizePath","record","regex","PathToRegexp","before","after","pop","meta","children","_cleanPath","getRouteMap","mapRoutes","routes","count","resetRouteMap","setNotFound","noMatch","_whichTransitionEvent","document","animations","transition","OTransition","MozTransition","WebkitTransition","style","transitionEvent","supportsTransitionEvent","Transition","class","enterCallback","enter","leaveCallback","leave","countEvents","completed","_slice","querySelectorAll","elements","_select","warn","$removeClass","$addClass","error","setTimeout","START","createRoute","matched","freeze","isSameRoute","matchRoute","decodeURIComponent","_castString","routeCount","beforeEach","afterEach","onError","addBeforeEach","addAfterEach","addOnError","getHooks","getErrorHandlers","resetHooks","positionStore","handleScroll","behavior","isPop","shouldScroll","getScrollPosition","position","getElementPosition","$scrollLeft","x","$scrollTop","y","querySelector","docEl","documentElement","docRect","getBoundingClientRect","elRect","left","top","getStateKey","saveScrollPosition","pageXOffset","pageYOffset","_key","supportsPushState","history","pushState","setStateKey","replaceState","win","QueueError","SameRouteError","runQueue","queue","iterator","queueCount","step","History","settings","ready","current","previous","begin","next","replacePage","readyQueue","resetReady","scrollBehavior","popstate","scroll","$router","state","navigate","then","ensureUrl","records","handlers","beforeQueue","extract","updated","activated","unloadQueue","deactivated","afterQueue","transitionPromise","console","type","recordCount","result","asyncTasks","ensureState","setReady","resolveRecords","resolveHandlers","queues","buildQueues","hook","destroyStore","resetScreen","catch","success","updatedRecords","activatedRecords","deactivatedRecords","activate","deactivate","map","addHandler","h","resolveDeactivated","resolveActivate","isArray","handlerCount","j","_asyncToGenerator","_regeneratorRuntime","mark","k","l","m","wrap","prev","max","sent","abrupt","stop","action","click","fetch","partials","X-PJAX","overrideDefaults","requestCount","overrides","paused","_isValid","currentPath","hasAttribute","_path","loc","_reset","$setVar","pjax","_setWindowLocation","onTrigger","getAttribute","destination","attr","attrs","attributes","setAttribute","$events","metaKey","ctrlKey","shiftKey","defaultPrevented","button","go","lastRequestUrl","scrollRestoration","isPaused","override","pause","html","$parseHTML","firstChild","$","className","parentNode","innerHTML","reset","resume","savedPosition","hasPjax","router","currentRoute","onReady","modifyPjax","keyType","routeMaps","run","$ready","uri","Handler","setPrototypeOf","constructor","writable","configurable","defineProperty","StoreError","instances","_storageFactory","storage","localStorage","sessionStorage","getItem","setItem","removeItem","Store","_setBrowserStorage","browserStorage","keepInMemory","prefix","browserStoreKey","browserStore","store","_syncStore","observe","obs","prepend","sync","U","stored","_storage","seg","orig","root","fallback","set","resp","_set","_val","$type","num","storageType","_get","getStore","_add","storeFilter","_setVar","destroy","_nonIterableSpread","global","factory","objectOrFunction","isFunction","_isArray","vertxNext","customSchedulerFn","asap","arg","flush","scheduleFlush","setScheduler","scheduleFn","setAsap","asapFn","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useNextTick","nextTick","useVertxTimer","useSetTimeout","useMutationObserver","iterations","observer","node","createTextNode","characterData","useMessageChannel","channel","port1","onmessage","port2","postMessage","globalSetTimeout","attemptVertx","vertx","Function","require","runOnLoop","runOnContext","onFulfillment","onRejection","child","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","object","Constructor","promise","PENDING","FULFILLED","REJECTED","selfFulfillment","cannotReturnOwn","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","_label","handleOwnThenable","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","initializePromise","resolver","nextId","validationError","Enumerator","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","enumerator","entries","race","_","reject$1","needsResolver","needsNew","finally","local","P","promiseToString","cast","_setScheduler","_setAsap","_asap","_iterableToArray","_body","_html","_core__WEBPACK_IMPORTED_MODULE_0__","D","isBrowser","WeeAlias","body","arrayLikeToArray","_arrayWithoutHoles","$after","$append","$attr","$before","$children","$clone","$closest","$contains","$contents","$css","$data","$empty","$eq","$filter","$find","$hasClass","$hide","$html","$index","$insertAfter","$insertBefore","$height","$is","$last","$next","$not","$offset","$parent","$position","$prepend","$prev","$prop","$parents","$remove","$removeAttr","$removeStyle","$replaceWith","$serializeForm","$show","$siblings","$slice","$text","$toggle","$toggleClass","$val","$width","$wrap","$wrapInner","_core_core__WEBPACK_IMPORTED_MODULE_0__","_core_types__WEBPACK_IMPORTED_MODULE_1__","_core_variables__WEBPACK_IMPORTED_MODULE_2__","_core_dom__WEBPACK_IMPORTED_MODULE_3__","_getClass","SVGElement","_setClass","_toCamel","_toDashed","_getSelected","select","selected","_getSibling","dir","func","cn","names","upd","source","remove","aft","par","cel","insertBefore","nextSibling","reverse","app","bef","$unique","$map","cloneNode","descendant","childNodes","getComputedStyle","removeChild","RegExp","nodeName","atob","outerHTML","height","innerHeight","scrollHeight","offsetHeight","parseFloat","marginTop","marginBottom","$isNumber","msMatchesSelector","webkitMatchesSelector","mozMatchesSelector","rect","offset","offsetTop","offsetLeft","pre","removeAttribute","removeProperty","nodeType","defaultView","scrollLeft","scrollTo","scrollTop","json","checked","siblings","_selArray","textContent","width","innerWidth","scrollWidth","offsetWidth","marginLeft","marginRight","markup","_core_chain__WEBPACK_IMPORTED_MODULE_0__","_dom_index__WEBPACK_IMPORTED_MODULE_3__","$chain","addClass","W","append","appendTo","clone","closest","contents","css","empty","eq","find","first","get","hasClass","hide","insertAfter","is","not","parents","prependTo","prop","removeAttr","removeClass","removeStyle","replaceWith","serialize","show","text","toggle","toggleClass","wrapInner","core_core__WEBPACK_IMPORTED_MODULE_0__","core_types__WEBPACK_IMPORTED_MODULE_1__","core_variables__WEBPACK_IMPORTED_MODULE_2__","_addRule","watch","_run","_eq","size","sz","mn","mx","ex","each","rules","_size","getPropertyValue","screenModule","sets","_getPrototypeOf","getPrototypeOf","__proto__","_assertThisInitialized","ReferenceError","shift","platform","arch","execPath","title","pid","browser","env","argv","chdir","exit","kill","umask","dlopen","uptime","memoryUsage","uvCounters","features","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","_setPrototypeOf","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","tokens","defaultDelimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","encodeAsterisk","opts","encode","pretty","encodeURIComponent","token","segment","attachKeys","re","flags","sensitive","regexpToRegexp","groups","arrayToRegexp","regexp","stringToRegexp","strict","endsWithDelimiter","toPropertyKey","_defineProperties","o","enumerable","_arrayLikeToArray","n","_unsupportedIterableToArray","assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Boolean","valueOf","Reflect","construct","navigator","userAgent","parseInt","clientWidth","clientHeight","dataset","objectFit","objectPosition","overflow","display","max-width","max-height","min-width","min-height","right","bottom","margin-top","margin-right","margin-bottom","margin-left","Event","complete","objectFitPolyfill","asyncIterator","u","toStringTag","define","Generator","Context","makeInvokeMethod","tryCatch","s","GeneratorFunction","GeneratorFunctionPrototype","v","values","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","done","maybeInvokeDelegate","_sent","dispatchException","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isNaN","displayName","isGeneratorFunction","awrap","async","rval","handle","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","isNativeFunction","Map","has","Wrapper","fns","_extend","lazySizes","lazysizes","lazySizesCfg","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","docElem","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","ele","cls","reg","addRemoveLoadEvents","dom","add","triggerEvent","elem","noBubbles","noCancelable","createEvent","initEvent","dispatchEvent","updatePolyfill","full","picturefill","pf","reevaluate","getCSS","getWidth","_lazysizesWidth","rAF","running","waiting","firstFns","secondFns","runFns","rafBatch","hidden","_lsFlush","rAFIt","simple","that","throttle","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","debounce","timestamp","wait","later","loader","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","shrinkExpand","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isNestedVisible","elemExpand","outerRect","visible","offsetParent","checkElements","eLlen","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","unveilElement","expand","_defEx","preloadAfterLoad","throttledCheckElements","switchLoadingClass","_lazyCache","rafSwitchLoadingClass","rafedSwitchLoadingClass","changeIframeSrc","contentWindow","handleSources","sourceSrcset","lazyUnveil","isAuto","sizes","isImg","srcset","isPicture","firesLoad","clearTimeout","getElementsByTagName","isLoaded","naturalWidth","loading","autoSizer","updateElem","afterScroll","altLoadmodeScrollListner","onload","persisted","loadingElements","img","childList","subtree","setInterval","checkElems","unveil","_aLSL","autosizesElems","sizeElement","sources","dataAttr","getSizeElement","updateElementsSizes","debouncedUpdateElementsSizes","uP","aC","rC","hC","fire","gW","isNativeReflectConstruct","_construct","TRY_CATCH_ERROR","getThen","failed","_types__WEBPACK_IMPORTED_MODULE_0__","_dom__WEBPACK_IMPORTED_MODULE_1__","Get","copy","toArray","routes_location__WEBPACK_IMPORTED_MODULE_0__","_copy","deep","bool","ArrayBuffer","isView","FormData","isArrayProp","range","_variables__WEBPACK_IMPORTED_MODULE_1__","_core__WEBPACK_IMPORTED_MODULE_2__","_types__WEBPACK_IMPORTED_MODULE_3__","refs","_contains","selector","ref","WeeSelector","getElementById","createRange","selectNode","createContextualFragment","doc","_isNativeFunction","asyncGeneratorStep","_next","_throw"],"mappings":"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","file":"chunk-vendors.bundle.9648dd45.js","sourcesContent":["export default [\n 'transitionstart',\n 'transitioncancel',\n 'transitionend',\n 'transitionrun',\n 'animationstart',\n 'animationend',\n 'animationiteration',\n 'beforeprint',\n 'afterprint',\n];\n","import { $each, $setRef, $sel } from 'core/dom';\nimport { $extend, $isObject, $isString, $toArray } from 'core/types';\nimport { $exec } from 'core/core';\nimport { _doc } from 'core/variables';\nimport events from 'events/events';\n\nlet custom = {};\nlet bound = [];\n\nfunction _bind(els, obj, options) {\n // Redefine variables when delegating\n if (options && options.delegate) {\n options.targ = els;\n els = options.delegate;\n }\n\n // For each element attach events\n $each(els, (el) => {\n // Loop through object events\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const evts = key.split(' ');\n let\ti = 0;\n\n for (; i < evts.length; i++) {\n const conf = $extend({\n args: [],\n once: false,\n scope: el,\n }, options);\n const fn = obj[key];\n const f = fn;\n let\tevt = evts[i];\n let\tev = evt;\n const parts = ev.split('.');\n evt = parts[0];\n\n if (parts.length == 1 && conf.namespace) {\n ev += `.${conf.namespace}`;\n }\n\n // Prepend element to callback arguments if necessary\n if (conf.args[1] !== el) {\n conf.args.unshift(0, el);\n }\n\n (function (el, evt, fn, f, conf) {\n const cb = (e) => {\n let cont = true;\n conf.args[0] = e;\n\n // If watch within ancestor make sure the target\n // matches the selector\n if (conf.targ) {\n let targ = conf.targ;\n const sel = targ._$ ? targ.sel : targ;\n\n // Update refs when targeting ref\n if ($isString(sel) &&\n sel.indexOf('ref:') > -1) {\n $setRef(el);\n }\n\n cont = $toArray($sel(sel)).some(el => el.contains(e.target) && (targ = el));\n\n // Ensure element argument is the target\n conf.args[1] = conf.scope = targ;\n }\n\n if (cont) {\n $exec(fn, conf);\n\n // Unbind after first execution\n if (conf.once) {\n _off(el, evt, f);\n }\n }\n };\n\n // Ensure the specified element, event, and function\n // combination hasn't already been bound\n if (evt != 'init' && ! _bound(el, ev, f, conf.targ).length) {\n // Determine if the event is native or custom\n if (`on${evt}` in el || events.indexOf(evt) > -1) {\n el.addEventListener(evt, cb, false);\n } else if (custom[evt]) {\n custom[evt][0](el, fn, conf);\n }\n\n bound.push({\n el,\n ev,\n evt,\n cb,\n fn: f,\n targ: conf.targ,\n });\n }\n\n if (evt == 'init' || conf.init === true) {\n cb();\n }\n }(el, evt, fn, f, conf));\n }\n }\n }\n }, options);\n}\n\n/**\n * Detach event(s) from element\n *\n * @private\n * @param {(HTMLElement|string)} [sel]\n * @param {string} [evt]\n * @param {Function} [fn]\n */\nfunction _off(sel, evt, fn) {\n $each(_bound(sel, evt, fn), (e) => {\n if (`on${e.evt}` in _doc) {\n e.el.removeEventListener(e.evt, e.cb);\n } else if (custom[e.evt]) {\n custom[e.evt][1](e.el, e.cb);\n }\n\n bound.splice(bound.indexOf(e), 1);\n });\n}\n\nfunction _bound(target, event = '', fn = null, delegateTarg = undefined) {\n const segs = event.split('.');\n const\tmatches = [];\n target = target || [0];\n\n $each(target, (el) => {\n Object.keys(bound).forEach((e) => {\n const binding = bound[e];\n const newSel = $isObject(delegateTarg) ? delegateTarg.sel : delegateTarg;\n const oldSel = $isObject(binding.targ) ? binding.targ.sel : binding.targ;\n const parts = binding.ev.split('.');\n let match = true;\n\n if (el && el !== binding.el) {\n match = false;\n }\n\n if (event && (segs[0] !== '' && segs[0] != parts[0]) || (segs[1] && segs[1] != parts[1])) {\n match = false;\n }\n\n if (fn && String(fn) !== String(binding.fn)) {\n match = false;\n }\n\n // If delegated event, check against target element\n if (newSel !== oldSel) {\n match = false;\n }\n\n if (match) {\n matches.push(binding);\n }\n });\n });\n\n return matches;\n}\n\nconst eventsModule = {\n /**\n * Bind event function to element\n *\n * @param {(HTMLElement|object|string)} target\n * @param {(Object|string)} a - event name or object of events\n * @param {(Function|object)} [b] - event callback or options object\n * @param {(Object|string)} [c] - event options\n * @param {Array} [c.args] - callback arguments\n * @param {(HTMLElement|string)} [c.context=document]\n * @param {(HTMLElement|string)} [c.delegate]\n * @param {boolean} [c.once=false] - remove event after first execution\n * @param {Oject} [c.scope]\n */\n on(target, a, b, c) {\n let evts = [];\n\n if ($isObject(target) && ! target._$) {\n const keys = Object.keys(target);\n let\ti = 0;\n\n for (; i < keys.length; i++) {\n const key = keys[i];\n evts = target[key];\n\n _bind(key, evts, a);\n }\n } else {\n if ($isString(a)) {\n evts[a] = b;\n } else {\n evts = a;\n c = b;\n }\n\n _bind(target, evts, c);\n }\n },\n\n /**\n * Remove specified event from specified element\n *\n * @param {(HTMLElement|string)} [target]\n * @param {(Object|string)} a - event name or object of events\n * @param {Function} [b] - specific function to remove\n */\n off(target, a, b) {\n let obj = a;\n\n if (! target && ! a) {\n bound = [];\n custom = {};\n return;\n }\n\n if (a) {\n if ($isString(a)) {\n obj = [];\n obj[a] = b;\n }\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n const evts = key.split(' ');\n let\ti = 0;\n\n for (; i < evts.length; i++) {\n const evt = evts[i];\n const fn = obj[evt];\n\n _off(target, evt, fn);\n }\n }\n }\n } else {\n _off(target);\n }\n },\n\n /**\n * Get currently bound events to optional specified element and event|function\n *\n * @param {(boolean|HTMLElement|string)} [target]\n * @param {string} [event] - event name to match\n * @param {Function} [fn] - specific function to match\n * @param {HTMLElement} [delegateTarg] - targets of delegated event\n * @returns {Array} matches\n */\n bound(target, event, fn, delegateTarg) {\n return _bound(target, event, fn, delegateTarg);\n },\n\n /**\n * Execute bound event for each matching selection\n *\n * @param {(HTMLElement|string)} target\n * @param {string} name\n */\n trigger(target, name) {\n const fn = function () {};\n\n _bound(target, name).forEach((e) => {\n e.cb({\n target: e.el,\n preventDefault: fn,\n stopPropagation: fn,\n });\n });\n },\n\n /**\n * Add a custom event\n *\n * @param {string} name\n * @param {Function} on\n * @param {Function} off\n */\n addEvent(name, on, off) {\n custom[name] = [on, off];\n },\n};\n\n/**\n * Unbind namespaced events\n *\n * @param {string} namespace\n */\nexport function unbindEvents(namespace) {\n eventsModule.off(false, `.${namespace}`);\n}\n\nexport default eventsModule;\n","import { $isObject, $serialize, $unserialize } from 'core/types';\nimport { _doc, _win } from 'core/variables';\n\nconst REMOVE_SLASHES_REGEXP = /^\\/|\\/$/g;\n\n/**\n * Parse url and return results\n *\n * @param {string|Object} [value]\n * @returns {Object}\n * @private\n */\nexport function parseLocation(value) {\n if ($isObject(value)) {\n let path = value.path;\n\n if ($isObject(value.query)) {\n path += `?${$serialize(value.query)}`;\n }\n\n if (value.hash) {\n path += `#${value.hash}`;\n }\n\n value = path;\n }\n\n const a = _doc.createElement('a');\n a.href = value || window.location;\n\n const search = a.search;\n const path = a.pathname.replace(REMOVE_SLASHES_REGEXP, '');\n const origin = a.href.split('/');\n\n return {\n fullPath: `/${path}${search}${a.hash}`,\n hash: a.hash.slice(1),\n path: `/${path}`,\n search,\n query: search ? $unserialize(search) : {},\n segments: path.split('/'),\n url: a.href,\n origin: `${origin[0]}//${origin[2]}`,\n protocol: origin[0].replace(':', ''),\n port: a.port,\n };\n}","// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nexport function parseHeaders(headers) {\n const parsed = {};\n\n if (! headers) {\n return parsed;\n }\n\n headers.split('\\n').forEach((line) => {\n const i = line.indexOf(':');\n const key = line.substr(0, i).trim().toLowerCase();\n const val = line.substr(i + 1).trim();\n\n if (key) {\n parsed[key] = parsed[key] ? `${parsed[key]}, ${val}` : val;\n }\n });\n\n return parsed;\n}\n\n/**\n * Ensure proper formatting for header name\n *\n * @param {Object} headers\n * @param {string} normalizedName\n */\nexport function normalizeHeader(headers, normalizedName) {\n Object.keys(headers).forEach((name) => {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = headers[name];\n delete headers[name];\n }\n });\n}\n","export default class FetchError extends Error {\n constructor(message, config, request = null, code = null, response = null) {\n super(message);\n\n this.config = config;\n this.request = request;\n this.response = response;\n this.code = code;\n this.errorType = 'FetchError';\n }\n}\n","// TODO: May need to move promise polyfill to an entry point file if building dist version of Wee\nimport 'es6-promise/auto';\nimport { _doc, _win } from 'core/variables';\nimport { $exec } from 'core/core';\nimport { $extend, $isFormData, $isFunction, $isString, $serialize } from 'core/types';\nimport { parseHeaders } from 'fetch/headers';\nimport FetchError from 'fetch/error';\n\nexport default function fetchFactory(defaults) {\n let version = 1;\n const headerKeys = Object.keys(defaults.headers);\n\n /**\n * Process the readyState change event\n *\n * @private\n * @param {XMLHttpRequest} request\n * @param {Object} conf\n * @returns {*}\n */\n const _settle = function _settle(request, config, resolve, reject) {\n if (request.readyState === 4) {\n const response = _prepareResponse(config, request);\n const exec = {\n args: config.args.slice(0),\n scope: config.scope,\n };\n const responseUrl = request.responseURL;\n\n // The request errored out and we didn't get a response, this will be handled by onerror instead\n // With one exception: request that's using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (response.status === 0 && ! (responseUrl && responseUrl.indexOf('file:') === 0)) {\n return;\n }\n\n if (config.validateStatus(response)) {\n exec.args.unshift(response);\n\n $exec(resolve, exec);\n } else {\n exec.args.unshift(new FetchError(\n `Request failed with status code ${response.status}`,\n response.config,\n response.request,\n null,\n response,\n ));\n\n $exec(reject, exec);\n }\n }\n };\n\n /**\n * Create consistent response object for resolving promise\n *\n * @param {Object} config\n * @param {XMLHttpRequest|Object} request - Either request or response data when jsonp request\n * @returns {Object} response\n * @private\n */\n const _prepareResponse = function _prepareResponse(config, request) {\n let headers = null;\n let data = request;\n let status = null;\n let statusText = null;\n\n if (request instanceof XMLHttpRequest) {\n headers = request.getAllResponseHeaders ?\n parseHeaders(request.getAllResponseHeaders()) :\n null;\n data = ! config.responseType || config.responseType === 'text' ?\n request.responseText :\n request.response;\n\n // IE sends 1223 instead of 204 (https://github.com/mzabriskie/axios/issues/201)\n status = request.status === 1223 ? 204 : request.status;\n statusText = request.status === 1223 ? 'No Content' : request.statusText;\n }\n\n data = config.transformResponse(data);\n\n return {\n config,\n data,\n headers,\n request,\n status,\n statusText,\n };\n };\n\n /**\n * Merge default and specified headers and clean up headers object\n *\n * @param {Object} config\n * @returns {Object}\n * @private\n */\n const _flattenHeaders = function _flattenHeaders(config) {\n config.headers = $extend(\n {},\n config.headers.common,\n config.headers[config.method.toLowerCase()] || {},\n config.headers || {},\n );\n\n // Remove get, post, etc properties from config.headers\n headerKeys.forEach((method) => {\n delete config.headers[method];\n });\n\n return config.headers;\n };\n\n /**\n *\n * @param config\n * @param {string} [baseUrl]\n * @returns {*}\n * @private\n */\n const _getUrl = function _getUrl(config, baseUrl) {\n // Strip ending ? or & to prepare for building query string\n let url = config.url.replace(/[\\?&]$/, '');\n\n // Prefix base URL to url\n if (baseUrl) {\n url = `${baseUrl.replace(/\\/$/, '')}/${\n url.replace(/^\\//, '')}`;\n }\n\n // Build onto query string with params object\n if (config.params && Object.keys(config.params).length) {\n url += (url.indexOf('?') < 0 ? '?' : '&') +\n $serialize(config.params);\n }\n\n // If no protocol, make url relative\n if (url[0] !== '/' && ! /^https?:\\/\\//i.test(url)) {\n url = `/${url}`;\n }\n\n return url;\n };\n\n /**\n * Process JSONP request\n *\n * @param {Object} config\n * @param {Function} resolve\n * @param {Function} reject\n * @private\n */\n const _jsonp = function _jsonp(config, resolve, reject) {\n const el = _doc.createElement('script');\n let fn = config.jsonpCallback;\n\n if (! fn) {\n fn = `jsonp${version}`;\n version++;\n }\n\n _win[fn] = function (data) {\n config.args.unshift(_prepareResponse(config, data));\n\n resolve.apply(config.scope, config.args);\n };\n\n config.params[\n config.jsonp === true ?\n 'callback' :\n config.jsonp\n ] = fn;\n\n el.onerror = function () {\n config.args.unshift(new FetchError('JSONP request failed', config));\n\n reject.apply(config.scope, config.args);\n };\n\n el.src = _getUrl(config);\n\n _doc.head.appendChild(el);\n };\n\n const instance = {\n // Set instance defaults\n defaults,\n\n /**\n * Generate final URL\n *\n * @private\n * @param {object} config\n */\n _getUrl,\n\n /**\n * Complete concurrent requests at one time\n *\n * @param {Array} promises\n * @returns {Promise}\n */\n all(promises) {\n return Promise.all(promises);\n },\n\n /**\n * Make request based on specified options\n *\n * @param {Object|string} options\n * @param {Array} [options.args] - callback arguments appended after default values\n * @param {(Array|Function|string)} [options.complete] - callback on request completion\n * @param {boolean} [options.disableCache=false] - add query string to request to bypass browser caching\n * @param {Object} [options.data] - object to serialize and pass along with request\n * @param {(Array|Function|string)} [options.error] - callback if request fails\n * @param {Object} [options.headers] - request headers\n * @param {(boolean|string)} [options.jsonp=false] - boolean or callback query parameter override\n * @param {string} [options.jsonpCallback] - override the name of the JSONP callback function\n * @param {string} [options.method=get] - request verb\n * @param {boolean} [options.processData=true] - post data in the body\n * @param {string} [options.responseType] - set the type of the response\n * @param {string} [options.baseUrl=''] - prepended request path\n * @param {Object} [options.scope] - callback scope\n * @param {(Array|function|string)} [options.send] - executed before Ajax call\n * @param {(Array|function|string)} [options.success] - callback if request succeeds\n * @param {string} [options.type] - form, html, json, or xml\n * @param {string} options.url - endpoint to request\n */\n request(options) {\n return new Promise((resolve, reject) => {\n // Account for possibility of options being URL string\n if ($isString(options)) {\n const url = options;\n\n options = {\n url,\n };\n }\n\n const config = $extend(true, {}, this.defaults, options);\n const requestData = config.processData ?\n config.transformRequest(config.data, config.headers) :\n config.data;\n const requestHeaders = _flattenHeaders(config);\n\n // Disable browser caching\n if (config.disableCache) {\n config.params.dt = Date.now();\n }\n\n // Process JSONP\n if (config.jsonp) {\n return _jsonp(config, resolve, reject);\n }\n\n // Set final url\n config.url = _getUrl(config, config.baseUrl);\n\n const request = new XMLHttpRequest();\n\n // Inject XHR object as first callback argument\n config.args.unshift(request);\n\n if (config.send) {\n $exec(config.send, {\n args: config.args,\n scope: config.scope,\n });\n }\n\n request.open(config.method.toUpperCase(), config.url, true);\n\n // Set the request timeout in ms\n request.timeout = config.timeout;\n\n // Listen for and settle response\n request.onreadystatechange = function onStateChange() {\n _settle(request, config, resolve, reject);\n };\n\n // Listen for network errors\n request.onerror = function handleError() {\n reject(new FetchError('Network Error', config, request));\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(new FetchError(`Timeout of ${config.timeout} ms exceeded`, config, request, 'ECONNABORTED'));\n };\n\n // Add X-Requested-With header for same domain requests\n // This is a security measure for CORS as it is not an allowed\n // header by default on cross-origin requests\n const a = _doc.createElement('a');\n a.href = config.url;\n\n if (! a.host || a.host === location.host) {\n requestHeaders['X-Requested-With'] = 'XMLHttpRequest';\n }\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n requestHeaders.Authorization = `Basic ${btoa(`${username}:${password}`)}`;\n }\n\n // Set request headers\n for (const key in requestHeaders) {\n const val = requestHeaders[key];\n\n if (val !== false) {\n request.setRequestHeader(key, val);\n }\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n throw e;\n }\n }\n\n // Handle progress if needed\n if ($isFunction(config.onDownloadProgress)) {\n request.addEventListener('progress', (e) => {\n if (e.lengthComputable) {\n e.progress = e.loaded / e.total;\n }\n\n config.onDownloadProgress.call(null, e);\n });\n }\n\n // Not all browsers support upload events\n if ($isFunction(config.onUploadProgress) && request.upload) {\n request.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) {\n e.progress = e.loaded / e.total;\n }\n\n config.onUploadProgress.call(null, e);\n });\n }\n\n request.send(requestData);\n });\n },\n\n /**\n * Spreads out array of promise resolutions/rejections - used for $fetch.all\n *\n * @param {Function} callback\n * @returns {wrap}\n */\n spread(callback) {\n return function wrap(array) {\n return callback(...array);\n };\n },\n };\n\n // Provide convenient verb methods\n ['get', 'delete', 'head'].forEach((method) => {\n instance[method] = function (url, config = {}) {\n config.url = url;\n config.method = method;\n\n return this.request(config);\n };\n });\n\n ['post', 'put', 'patch'].forEach((method) => {\n instance[method] = function (url, data, config = {}) {\n config.url = url;\n config.method = method;\n config.data = data;\n\n return this.request(config);\n };\n });\n\n return instance;\n}\n","/**\n * Wrap function with outer function that passes arguments with proper scope\n *\n * @param {Function} fn\n * @param {Object} thisArg\n * @returns {wrap}\n */\nexport default function bind(fn, thisArg) {\n return function wrap(...args) {\n return fn.apply(thisArg, args);\n };\n}\n","import { $copy, $isArrayBuffer, $isArrayBufferView, $isBlob, $isFile, $isFormData, $isObject, $isString } from '../core/types';\nimport { normalizeHeader } from 'fetch/headers';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if ($isObject(headers) && ! headers['Content-Type']) {\n headers['Content-Type'] = value;\n }\n}\n\nconst defaults = {\n args: [],\n baseUrl: '',\n data: null,\n disableCache: false,\n headers: {\n common: {\n Accept: 'application/json, text/plain, */*',\n },\n },\n jsonpElement: false,\n method: 'get',\n processData: true,\n params: {},\n responseType: 'json',\n scope: null,\n\n /**\n * Default logic for transforming request body\n *\n * @param {Object|string|null} data\n * @param {Object} headers\n * @returns {*}\n */\n transformRequest: function transformRequest(data, headers) {\n normalizeHeader(headers, 'Content-Type');\n\n if ($isFormData(data) ||\n $isArrayBuffer(data) ||\n $isFile(data) ||\n $isBlob(data)\n ) {\n return data;\n }\n\n if ($isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if ($isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n\n return JSON.stringify(data);\n }\n\n return data;\n },\n\n /**\n * Default logic for transforming response data\n *\n * @param {string|ArrayBuffer|Blob} data\n * @returns {*}\n */\n transformResponse: function transformResponse(data) {\n // Ensure that JSON is parsed appropriately\n if ($isString(data)) {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n\n return data;\n },\n timeout: 0,\n\n /**\n * Default status code to look for\n *\n * @param {Object} response\n * @returns {boolean}\n */\n validateStatus(response) {\n return response.status >= 200 && response.status < 400;\n },\n};\n\n// Add headers for various methods\n['delete', 'get', 'head'].forEach((method) => {\n defaults.headers[method] = {};\n});\n\n['post', 'put', 'patch'].forEach((method) => {\n defaults.headers[method] = $copy(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\n","import bind from './bind';\nimport { $isFunction } from '../core/types';\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nexport function extend(a, b, thisArg) {\n Object.keys(b).forEach((key) => {\n const val = b[key];\n\n if (thisArg && $isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n\n return a;\n}\n","import fetchFactory from 'fetch/factory';\nimport bind from 'fetch/bind';\nimport defaults from 'fetch/defaults';\nimport { extend } from 'fetch/utils';\nimport { $extend } from 'core/types';\n\n/**\n * Create a new instance of fetch\n *\n * @param defaultConfig\n * @returns {wrap}\n */\nfunction createFetchInstance(defaultConfig) {\n const context = fetchFactory(defaultConfig);\n const instance = bind(context.request, context);\n\n // Copy properties from context\n extend(instance, context, context);\n\n return instance;\n}\n\n// Instantiate main fetch instance\nconst $fetch = createFetchInstance(defaults);\n\n/**\n * Create a new instance\n *\n * @returns {wrap}\n */\n$fetch.create = function create(instanceDefaults) {\n return createFetchInstance($extend({}, defaults, instanceDefaults));\n};\n\nexport default $fetch;\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\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\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { _win } from '../core/variables';\n\nconst TIME = _win.performance && _win.performance.now ? _win.performance : Date;\n\n/**\n * Generate key based on timestamp\n *\n * @returns {string}\n */\nexport function genTimeKey() {\n return TIME.now().toFixed(3);\n}\n\n/**\n * Generate mock UUID\n *\n * @returns {string}\n */\nexport function genKey() {\n function s4() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n\n return `${s4()}-${s4()}-${s4()}-${s4()}`;\n}\n","import { genKey } from './key';\n\nexport default class RouteHandler {\n constructor(conf) {\n this.id = genKey();\n this.beforeInit = conf.beforeInit || null;\n this.beforeUpdate = conf.beforeUpdate || null;\n this.init = conf.init || null;\n this.update = conf.update || null;\n this.unload = conf.unload || null;\n }\n}\n","import PathToRegexp from 'path-to-regexp';\n\nlet pathList = [];\nlet pathMap = {};\nlet nameMap = {};\nlet notFound;\n\n// Set default notFound route\nsetNotFound({\n path: '*',\n name: 'notFound',\n meta: {\n noMatch: true,\n },\n});\n\n/**\n * Register new route\n *\n * @param {Object} route\n * @param {Object} [parent]\n * @param {boolean} exclude\n * @private\n */\nfunction _addRouteRecord(route, parent, exclude = false, ancestors = []) {\n const { path, name, handler } = route;\n const finalPath = _normalizePath(path, parent, ancestors);\n\n // Push path into ancestors array\n ancestors.push(path);\n\n const record = {\n name,\n parent,\n handler,\n path: finalPath,\n regex: PathToRegexp(finalPath),\n // redirect, TODO: Look into redirect functionality further\n before: route.before,\n init: route.init,\n update: route.update,\n after: route.after,\n unload: route.unload,\n pop: route.pop,\n meta: route.meta || {},\n };\n\n // Children should be mapped before parent in case of wildcard in parent\n if (route.children && route.children.length) {\n let i = 0;\n const length = route.children.length;\n\n for (; i < length; i++) {\n _addRouteRecord(route.children[i], route, exclude, ancestors);\n\n // After record is added, pop last ancestor off for the next set of paths\n ancestors.pop();\n }\n }\n\n // Exclude from main mapping/return created route record object\n if (exclude) {\n return record;\n }\n\n if (! pathMap[record.path]) {\n pathList.push(record.path);\n pathMap[record.path] = record;\n }\n\n if (name && ! nameMap[name]) {\n nameMap[name] = record;\n }\n}\n\n/**\n * Find full path of route\n *\n * @param {string} path\n * @param {Object} [parent]\n * @returns {*}\n * @private\n */\nfunction _normalizePath(path, parent, ancestors) {\n if (path === '/') {\n return path;\n }\n\n path = path.replace(/\\/$/, '');\n\n // If path begins with / then assume it is independent route\n if (path[0] === '/') {\n return path;\n }\n\n // If no parent, and route doesn't start with /, then prepend /\n if (! parent) {\n return `/${path}`;\n }\n\n if (ancestors) {\n return _cleanPath(`${ancestors.join('/')}/${path}`);\n }\n\n return _cleanPath(`${parent.path}/${path}`);\n}\n\n/**\n * Strip unnecessary forward slashes from path\n *\n * @param {string} path\n */\nfunction _cleanPath(path) {\n return path.replace(/\\/\\//g, '/');\n}\n\n/**\n * Retrieve current route mapping objects\n *\n * @returns {Object}\n */\nexport function getRouteMap() {\n return {\n pathList,\n pathMap,\n nameMap,\n notFound,\n };\n}\n\n/**\n * Generate mappings to be used in router\n *\n * @param {Array} routes\n * @returns {Object}\n */\nexport function mapRoutes(routes) {\n const count = routes.length;\n\n for (let i = 0; i < count; i++) {\n _addRouteRecord(routes[i]);\n }\n}\n\n/**\n * Reset all map objects\n */\nexport function resetRouteMap() {\n pathList = [];\n pathMap = {};\n nameMap = {};\n}\n\n/**\n * Set not found route\n *\n * @param {Object} route\n */\nexport function setNotFound(route) {\n notFound = _addRouteRecord(route, null, true);\n}\n","import { $each } from 'core/dom';\nimport { _doc } from 'core/variables';\nimport { _slice } from 'core/types';\nimport { $addClass, $removeClass } from 'dom/index';\nimport { warn } from 'core/warn';\n\n/**\n * Detect what transition property to listen for\n *\n * @returns {*}\n * @private\n */\nfunction _whichTransitionEvent() {\n const el = document.createElement('meta');\n const animations = {\n transition: 'transitionend',\n OTransition: 'oTransitionEnd',\n MozTransition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n };\n\n for (const t in animations) {\n if (el.style[t] !== undefined) {\n return animations[t];\n }\n }\n}\n\nconst transitionEvent = _whichTransitionEvent();\nconst supportsTransitionEvent = !!transitionEvent;\n\nexport default class Transition {\n constructor(config) {\n this.transitionEvent = transitionEvent;\n this.target = config.target || null;\n this.class = config.class || null;\n this.enterCallback = config.enter || null;\n this.leaveCallback = config.leave || null;\n this.timeout = typeof config.timeout === 'number' ? config.timeout : null;\n this.countEvents = null;\n this.completed = 0;\n }\n\n /**\n * Select DOM element(s)\n *\n * @param {string} target\n * @returns {*}\n * @private\n */\n _select(target) {\n return _slice.call(_doc.querySelectorAll(target));\n }\n\n /**\n * Remove class from target/execute enterCallback\n *\n * @param {Object} to\n * @param {Object} from\n */\n enter(to, from) {\n if (this.class && this.target) {\n const elements = this._select(this.target);\n\n if (! elements.length) {\n warn('routes', 'no elements found - cannot apply enter transition');\n }\n\n elements.forEach((el) => {\n if (supportsTransitionEvent) {\n el.removeEventListener(this.transitionEvent, this.countEvents);\n }\n\n $removeClass(el, this.class);\n });\n }\n\n if (this.enterCallback) {\n this.enterCallback(to, from);\n }\n }\n\n /**\n * Apply class to target/execute leaveCallback\n *\n * @param {Object} to\n * @param {Object} from\n * @returns {Promise}\n */\n leave(to, from) {\n const scope = this;\n\n return new Promise((resolve, reject) => {\n if (this.class && this.target) {\n const elements = this._select(this.target);\n\n if (! elements.length) {\n warn('routes', 'no elements found - cannot apply leave transition');\n return resolve(scope);\n }\n\n this.countEvents = function countEvents() {\n scope.completed += 1;\n\n if (elements.length === scope.completed) {\n resolve(scope);\n }\n };\n\n // Add class to targets\n $each(elements, (el) => {\n if (supportsTransitionEvent) {\n el.addEventListener(this.transitionEvent, this.countEvents);\n }\n\n $addClass(el, this.class);\n });\n\n if (! supportsTransitionEvent) {\n resolve(scope);\n }\n } else if (this.leaveCallback) {\n this.leaveCallback(to, from, (error) => {\n if (error instanceof Error) {\n return reject(error);\n }\n\n resolve(scope);\n });\n }\n\n if (this.timeout !== null) {\n setTimeout(() => {\n resolve(scope);\n }, this.timeout);\n }\n });\n }\n}\n","import { $isString, $isObject } from 'core/types';\nimport Transition from './transitions';\n\nexport const START = createRoute({ path: '/' });\n\n/**\n * Create final immutable route object\n *\n * @param {Object} location\n * @param {Object} record\n * @returns {Object}\n */\nexport function createRoute(location, record = {}) {\n const route = {\n name: record.name,\n meta: record.meta || {},\n path: location.path,\n hash: location.hash,\n query: location.query,\n search: location.search,\n segments: location.segments,\n params: location.params || {},\n fullPath: location.fullPath,\n // TODO: Revisit and remove the need for array here\n matched: [record],\n transition: record.transition ? new Transition(record.transition) : null,\n };\n\n return Object.freeze(route);\n}\n\n/**\n * Determine if value is intended to be redirect\n *\n * @param value\n * @returns {*}\n */\nexport function isRedirect(value) {\n return $isString(value) || ($isObject(value) && ($isString(value.path) || $isString(value.name)));\n}\n\n/**\n * Compare route equality\n *\n * @param {Object} a - route to be compared\n * @param {Object} b - route to be compared\n * @returns {boolean}\n */\nexport function isSameRoute(a, b) {\n if (b === START) {\n return a === b;\n }\n\n return a.fullPath === b.fullPath;\n}\n","import { getRouteMap } from './route-map';\nimport { parseLocation } from './location';\nimport { createRoute } from './route';\nimport { _castString } from '../core/types';\n\n/**\n * Match route against current path and assign params\n *\n * @param {RegExp} regex\n * @param {string} path\n * @param {Object} [params]\n * @returns {boolean}\n */\nexport function matchRoute(regex, path, params = {}) {\n const match = path.match(regex);\n let i = 0;\n let length;\n\n if (! match) {\n return false;\n }\n\n length = match.length;\n\n for (; i < length; i++) {\n const key = regex.keys[i - 1];\n const val = typeof match[i] === 'string' ? decodeURIComponent(match[i]) : match[i];\n\n if (key) {\n params[key.name] = _castString(val);\n }\n }\n\n return true;\n}\n\n/**\n * Evaluate given path against registered route records\n *\n * @param {string|Object} [path]\n * @returns {Object}\n */\nexport function match(path) {\n const { notFound, pathList, pathMap } = getRouteMap();\n const location = parseLocation(path);\n let i = 0;\n const routeCount = pathList.length;\n\n location.params = {};\n\n for (; i < routeCount; i++) {\n const record = pathMap[pathList[i]];\n\n // Add params to location object as part of check\n if (matchRoute(record.regex, location.path, location.params)) {\n return createRoute(location, record);\n }\n }\n\n // No match\n return createRoute(location, notFound);\n}\n\n/**\n * Evaluates if matched route is actually default notFound route\n * in which case we want route evaluation stopped\n *\n * @param {Object} route\n * @returns {boolean}\n */\nexport function noMatch(route) {\n return (route.meta && route.meta.noMatch);\n}\n","let beforeEach = [];\nlet afterEach = [];\nlet onError = [];\n\n/**\n * Add beforeEach function to registry\n *\n * @param {function} fn\n */\nexport function addBeforeEach(fn) {\n beforeEach.push(fn);\n}\n\n/**\n * Add beforeEach function to registry\n *\n * @param {function} fn\n */\nexport function addAfterEach(fn) {\n afterEach.push(fn);\n}\n\n/**\n * Add onError function to registry\n *\n * @param {function} fn\n */\nexport function addOnError(fn) {\n onError.push(fn);\n}\n\n/**\n * Get all registered functions\n *\n * @returns {Object}\n */\nexport function getHooks() {\n return {\n beforeEach,\n afterEach,\n };\n}\n\n/**\n * Get all registered error handlers\n *\n * @returns {Array}\n */\nexport function getErrorHandlers() {\n return onError;\n}\n\n/**\n * Reset all hooks\n */\nexport function resetHooks() {\n beforeEach = [];\n afterEach = [];\n onError = [];\n}\n","import { _win } from 'core/variables';\nimport { getStateKey } from './push-state';\nimport { $isObject } from 'core/types';\nimport { _doc } from 'core/variables';\nimport { $sel } from 'core/dom';\nimport { $scrollLeft, $scrollTop } from 'dom/index';\n\nconst positionStore = {};\n\nexport function _getPositionStore() {\n return positionStore;\n}\n\n/**\n * Scroll based on scrollBehavior evaluation\n *\n * @param {Object} to\n * @param {Object} from\n * @param {boolean} isPop\n */\nexport function handleScroll(to, from, behavior, isPop = false) {\n const shouldScroll = behavior(to, from, isPop ? getScrollPosition() : null);\n let position = shouldScroll;\n\n if ($isObject(shouldScroll) && shouldScroll.el) {\n position = getElementPosition(shouldScroll.el);\n }\n\n if (position) {\n $scrollLeft(_win, position.x);\n $scrollTop(_win, position.y);\n }\n}\n\n/**\n * Get x and y position of element\n *\n * @param {$|HTMLElement|string} sel\n * @returns {*}\n */\nexport function getElementPosition(sel) {\n let el;\n\n // Use typeof instead of $isObject - $isObject will evaluate false for DOM node\n if (typeof sel === 'object') {\n el = sel.sel ? sel[0] : sel;\n } else {\n el = _doc.querySelector(sel);\n }\n\n if (! el) {\n return false;\n }\n\n const docEl = _doc.documentElement;\n const docRect = docEl.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n\n return {\n el,\n x: elRect.left - docRect.left,\n y: elRect.top - docRect.top,\n };\n}\n\n/**\n * Get scroll position\n *\n * @returns {*}\n */\nexport function getScrollPosition() {\n const key = getStateKey();\n\n if (key) {\n return positionStore[key];\n }\n}\n\n/**\n * Save current scroll position\n */\nexport function saveScrollPosition() {\n const key = getStateKey();\n\n if (key) {\n positionStore[key] = {\n x: _win.pageXOffset,\n y: _win.pageYOffset,\n };\n }\n}\n","import { _win } from 'core/variables';\nimport { genTimeKey } from './key';\nimport { saveScrollPosition } from './scroll';\n\nlet _key = genTimeKey();\n\nexport function supportsPushState() {\n return _win.history && _win.history.pushState;\n}\n\n/**\n * Get state key\n *\n * @returns {string}\n */\nexport function getStateKey() {\n return _key;\n}\n\n/**\n * Set state key\n *\n * @param {string} key\n */\nexport function setStateKey(key) {\n _key = key;\n}\n\n/**\n * Either replace existing History entry or add new entry\n *\n * @param {string} url\n * @param {boolean} replace=false\n */\nexport function pushState(url, replace = false) {\n // Save scroll position for current URL before navigating elsewhere\n saveScrollPosition();\n\n try {\n if (replace) {\n _win.history.replaceState({ key: _key }, '', url);\n } else {\n _key = genTimeKey();\n _win.history.pushState({ key: _key }, '', url);\n }\n } catch (e) {\n // Fallback if something goes wrong\n let win = _win;\n\n if (this && this.location) {\n win = this;\n }\n\n win.location[replace ? 'replace' : 'assign'](url);\n }\n}\n\n/**\n * Replace entry in History\n *\n * @param {string} url\n */\nexport function replaceState(url) {\n pushState(url, true);\n}\n","export class QueueError extends Error {\n constructor(message) {\n super(message);\n\n this.errorType = 'QueueError';\n }\n}\n\nexport class SameRouteError extends Error {\n constructor(message) {\n super(message);\n\n this.errorType = 'SameRouteError';\n }\n}\n","/**\n * Process queue with async capability\n *\n * @param {Array} queue - Items to be processed (usually functions)\n * @param {Function} iterator - Process each item in queue\n */\nexport default function runQueue(queue, iterator) {\n return new Promise((resolve, reject) => {\n const queueCount = queue.length;\n const step = function step(index) {\n if (index >= queueCount) {\n resolve();\n } else if (queue[index]) {\n iterator(queue[index], (error) => {\n if (error instanceof Error) {\n reject(error);\n } else {\n step(index + 1);\n }\n });\n } else {\n step(index + 1);\n }\n };\n\n // Initiate recursive function call\n step(0);\n });\n}\n","// TODO: May need to move promise polyfill to an entry point file if building dist version of Wee\nimport 'es6-promise/auto';\nimport Transition from './transitions';\nimport $router from 'wee-routes';\nimport { _win } from 'core/variables';\nimport { warn } from 'core/warn';\nimport { destroyStore } from 'wee-store';\nimport { unbindEvents } from 'wee-events';\nimport { resetScreen } from 'wee-screen';\nimport { match, noMatch } from './route-matcher';\nimport { isSameRoute, START } from './route';\nimport { getErrorHandlers, getHooks } from './global-hooks';\nimport { $isFunction, $isString } from '../core/types';\nimport { pushState, replaceState } from './push-state';\nimport { QueueError, SameRouteError } from './error';\nimport { handleScroll, saveScrollPosition } from './scroll';\nimport { parseLocation } from './location';\nimport { setStateKey } from './push-state';\nimport RouteHandler from './route-handler';\nimport runQueue from './async-queue';\n\nexport default class History {\n constructor(settings) {\n this.ready = false;\n this.current = START;\n this.previous = null;\n this.begin = function (to, from, next) { next(); };\n this.replacePage = function () {};\n this.readyQueue = [];\n this.resetReady = function resetReady() {\n this.readyQueue = [];\n };\n this.scrollBehavior = settings.scrollBehavior;\n this.transition = settings.transition;\n this.popstate = (e) => {\n const location = parseLocation();\n const scroll = $router.settings.scrollBehavior;\n\n // Leave hash navigation alone\n if (location.path === this.current.path && location.search === this.current.search) {\n // TODO: Verbose\n // warn('routes', 'hash change caused popstate. popstate callback halted.');\n return;\n }\n\n if (scroll) {\n // Update scroll position for URL that was navigated away from\n saveScrollPosition();\n\n // Update state key now that we have navigated to different url\n if (e.state && e.state.key) {\n setStateKey(e.state.key);\n }\n }\n\n this.navigate(parseLocation().fullPath).then((route) => {\n this.ensureUrl();\n handleScroll(route, this.previous, $router.settings.scrollBehavior, true);\n }, (error) => {\n this.ensureUrl();\n getErrorHandlers().forEach(fn => fn(error));\n });\n };\n\n _win.addEventListener('popstate', this.popstate);\n }\n\n /**\n * Build out callback queues for processing\n *\n * @param {Object} records\n * \t@param {Array} records.updated\n * \t@param {Array} records.activated\n * \t@param {Array} records.deactivated\n * @param {Object} handlers\n * \t@param {Array} handlers.updated\n * \t@param {Array} handlers.activated\n * \t@param {Array} handlers.deactivated\n * @returns {Object}\n */\n buildQueues(records, handlers) {\n const { beforeEach, afterEach } = getHooks();\n const beforeQueue = beforeEach\n .concat(this.extract(records.updated, 'before'))\n .concat(this.extract(records.activated, 'before'))\n .concat(this.extract(handlers.updated, 'beforeUpdate'))\n .concat(this.extract(handlers.activated, 'beforeInit'));\n const unloadQueue = this.extract(handlers.deactivated, 'unload')\n .concat(this.extract(records.deactivated, 'unload'));\n const queue = this.extract(records.updated, 'update')\n .concat(this.extract(records.activated, 'init'))\n .concat(this.extract(handlers.updated, 'update'))\n .concat(this.extract(handlers.activated, 'init'));\n const afterQueue = this.extract(records.activated, 'after')\n .concat(afterEach);\n\n return {\n beforeQueue,\n queue,\n unloadQueue,\n afterQueue,\n };\n }\n\n /**\n * Ensure that the page is properly set up for viewing\n */\n ensureState(transitionPromise) {\n this.ensureUrl();\n\n if (transitionPromise) {\n transitionPromise.then((transition) => {\n transition.enter(this.current, this.previous);\n });\n }\n }\n\n /**\n * Make sure that URL matches history state\n */\n ensureUrl() {\n // In case URL gets out of sync with history's current route\n if (this.current !== START && this.current.fullPath !== parseLocation().fullPath) {\n console.warn('routes', this.current.fullPath, parseLocation().fullPath);\n replaceState(this.current.fullPath);\n }\n }\n\n /**\n * Extract specific callback from all objects provided\n *\n * @param {Array} records\n * @param {string} type\n * @returns {Array}\n */\n extract(records, type) {\n const recordCount = records.length;\n const result = [];\n let i = 0;\n\n for (; i < recordCount; i++) {\n if (records[i][type]) {\n result.push(records[i][type]);\n }\n }\n\n return result;\n }\n\n /**\n * Process routes against new path\n *\n * @param {string|Object} [path]\n */\n navigate(path) {\n return new Promise((resolve, reject) => {\n const route = match(path);\n const transition = route.transition || new Transition(this.transition || {});\n const asyncTasks = [];\n let transitionPromise = null;\n\n if (this.current !== START) {\n transitionPromise = transition.leave(route, this.current);\n\n asyncTasks.push(transitionPromise);\n }\n\n // Do not navigate if destination is same as current route\n if (isSameRoute(route, this.current)) {\n this.ensureState(transitionPromise);\n warn('routes', 'attempted to navigate to current URL');\n return reject(new SameRouteError(`Attempted to navigate to ${route.fullPath}`));\n } else if (noMatch(route)) {\n this.ensureState(transitionPromise);\n\n if (! this.ready) {\n this.setReady();\n }\n\n warn('routes', 'no route match was found and notFound has not been registered.');\n return;\n }\n\n this.resolveRecords(route.matched, this.current.matched).then((records) => {\n const handlers = this.resolveHandlers(records.updated, records.activated, records.deactivated);\n const queues = this.buildQueues(records, handlers);\n\n const iterator = (hook, next) => {\n hook(route, this.current, (to) => {\n if (to === false) {\n to = new QueueError('Queue stopped prematurely');\n }\n\n next(to);\n });\n };\n\n // Register global before hook, if necessary - PJAX\n queues.beforeQueue.unshift(this.begin);\n\n // Execute before hooks\n asyncTasks.push(runQueue(queues.beforeQueue, iterator));\n\n Promise.all(asyncTasks).then(() => {\n // Do not process unload hooks on initialization\n // No assets exist to be unloaded, and could cause errors\n if (this.ready) {\n // Unload hooks\n queues.unloadQueue.forEach((unload) => {\n if ($isString(unload)) {\n // Remove all namespaced entities\n destroyStore(unload);\n unbindEvents(unload);\n resetScreen(unload);\n } else if ($isFunction(unload)) {\n unload(route, this.current);\n }\n });\n }\n\n // Global DOM replacement, if needed\n this.replacePage();\n\n // Init/update hooks\n queues.queue.forEach(fn => fn(route, this.current));\n\n // Update route\n this.previous = this.current;\n this.current = route;\n\n // After hooks\n queues.afterQueue.forEach(fn => fn(this.current, this.previous));\n\n transition.enter(this.current, this.previous);\n\n // Execute ready callbacks\n if (! this.ready) {\n this.setReady();\n }\n\n resolve(route);\n }).catch((error) => {\n // Ensure we are where we started\n this.ensureState(transitionPromise);\n warn('routes', error.message);\n reject(error);\n });\n });\n });\n }\n\n /**\n * Execute callback(s) after history has been initialized\n *\n * @param {Function} success\n */\n onReady(success) {\n if (this.ready) {\n success();\n } else {\n this.readyQueue.push(success);\n }\n }\n\n /**\n * Navigate and add record to history\n *\n * @param {string|Object} path\n */\n push(path) {\n return this.navigate(path)\n .then((route) => {\n pushState(route.fullPath);\n handleScroll(route, this.previous, $router.settings.scrollBehavior);\n });\n }\n\n /**\n * Navigate and replace current history record\n *\n * @param {string|Object} [path]\n */\n replace(path) {\n return this.navigate(path)\n .then((route) => {\n replaceState(route.fullPath);\n handleScroll(route, this.previous, $router.settings.scrollBehavior);\n });\n }\n\n /**\n * Determine which route handlers should be updated, activated, or deactivated\n *\n * @param {Array} update\n * @param {Array} activate\n * @param {Array} deactivate\n * @returns {Object}\n */\n resolveHandlers(updatedRecords, activatedRecords, deactivatedRecords) {\n const handlers = {\n update: [],\n activate: [],\n deactivate: [],\n };\n const map = { update: {}, activate: {}, deactivate: {} };\n let i;\n const addHandler = function addHandler(h, type = 'update') {\n if (! map[type][h.id]) {\n map[type][h.id] = handlers[type].length;\n handlers[type].push(h);\n }\n };\n const resolveDeactivated = function resolveDeactivated(handler) {\n if (map.activate.hasOwnProperty(handler.id) && ! map.deactivate[handler.id]) {\n // Move from activate to update if handler exists in activated and deactivated records\n handlers.activate[map.activate[handler.id]] = false;\n addHandler(handler);\n } else {\n handlers.deactivate.push(handler);\n map.deactivate[handler.id] = handler;\n }\n };\n const resolveActivate = function resolveActivate() {\n // Remove all handlers that were changed to false by resolveDeactivated\n return handlers.activate.filter(h => h);\n };\n\n // Evaluate handlers in records to be updated\n for (i = 0; i < updatedRecords.length; i++) {\n const handler = updatedRecords[i].handler;\n\n if (Array.isArray(handler)) {\n handler.forEach(h => addHandler(h));\n } else if (handler instanceof RouteHandler) {\n addHandler(handler);\n }\n }\n\n // Evaluate handlers in records to be activated\n // If handler has already been mapped, it should only be updated\n for (i = 0; i < activatedRecords.length; i++) {\n const handler = activatedRecords[i].handler;\n\n if (Array.isArray(handler)) {\n handler.forEach((h) => {\n if (! map.update[h.id]) {\n addHandler(h, 'activate');\n }\n });\n } else if (handler instanceof RouteHandler) {\n if (! map.update[handler.id]) {\n addHandler(handler, 'activate');\n }\n }\n }\n\n // Evaluate handlers in records to be deactivated\n // If route handler is in activate and deactivate, move to update instead\n for (i = 0; i < deactivatedRecords.length; i++) {\n const handler = deactivatedRecords[i].handler;\n\n if (Array.isArray(handler)) {\n const handlerCount = handler.length;\n let j = 0;\n\n for (; j < handlerCount; j++) {\n resolveDeactivated(handler[j]);\n }\n } else if (handler instanceof RouteHandler) {\n resolveDeactivated(handler);\n }\n\n // Clean up activated handlers moved to updated\n handlers.activate = resolveActivate();\n }\n\n return {\n updated: handlers.update,\n activated: handlers.activate,\n deactivated: handlers.deactivate,\n };\n }\n\n /**\n * Determine which route records should be updated, activated, or deactivated\n *\n * @param {Object} to\n * @param {Object} from\n * @returns {Object}\n */\n async resolveRecords(to, from) {\n const max = Math.max(from.length, to.length);\n let i = 0;\n\n for (let i = 0; i < to.length; i++) {\n const handlers = to[i].handler;\n\n if (handlers && handlers.length) {\n for (let j = 0; j < handlers.length; j++) {\n if ($isFunction(handlers[j])) {\n handlers[j] = await handlers[j]();\n }\n }\n }\n }\n\n for (let i = 0; i < from.length; i++) {\n const handlers = from[i].handler;\n\n if (handlers && handlers.length) {\n for (let j = 0; j < handlers.length; j++) {\n if ($isFunction(handlers[j])) {\n handlers[j] = await handlers[j]();\n }\n }\n }\n }\n\n // Determine at what record the two sets of route records diverge\n for (; i < max; i++) {\n if (from[i] !== to[i]) {\n break;\n }\n }\n\n return {\n updated: to.slice(0, i),\n activated: to.slice(i),\n deactivated: from.slice(i),\n };\n }\n\n /**\n * Establish that router is initialized\n */\n setReady() {\n this.ready = true;\n this.readyQueue.forEach(cb => cb());\n this.resetReady();\n }\n}\n","import $events from 'wee-events';\nimport { _doc, _win } from 'core/variables';\nimport { $copy, $extend, $isObject, $isString } from 'core/types';\nimport { $exec } from 'core/core';\nimport { $each, $parseHTML, $setRef } from 'core/dom';\nimport { $serializeForm } from 'dom/index';\nimport { supportsPushState } from './push-state';\nimport $fetch from 'wee-fetch';\nimport $ from 'wee-dom';\nimport { warn } from 'core/warn';\nimport { parseLocation } from './location';\nimport { $setVar } from 'wee-store';\n\nlet defaults = {\n\taction: 'replace',\n\tbind: {\n\t\tclick: 'a'\n\t},\n\tcontext: 'document',\n\tfetch: $fetch.create(),\n\tpartials: ['title', 'main'],\n\trequest: {\n\t\tmethod: 'get',\n\t\tresponseType: 'text',\n\t\theaders: {\n\t\t\t'X-PJAX': 'true'\n\t\t}\n\t},\n\treplace: null\n};\nconst overrideDefaults = {\n\tpartials: false,\n\trequestCount: 0\n};\nlet overrides = $copy(overrideDefaults);\nexport let settings = $copy(defaults);\nlet response = null;\nlet paused = false;\n\n/**\n * Determine if path is valid for history navigation\n *\n * @param {HTMLElement} el\n * @param {string} [currentPath]\n * @returns {boolean}\n * @private\n */\nfunction _isValid(el, currentPath) {\n\t// Link has no destination URL\n\tif (! el.href) { return false; }\n\n\t// Link opens a new browser window\n\tif (el.target === '_blank') { return false; }\n\n\t// Link is not absolute URL\n\tif (! /https?:/.test(el.href)) { return false; }\n\n\t// Link is a download\n\tif (el.hasAttribute('download')) { return false; }\n\n\t// Link is supposed to be ignored\n\tif (el.hasAttribute('data-static')) { return false; }\n\n\t// Link is external URL\n\tif (el.host && el.host !== location.host) { return false; }\n\n\t// Link is current page, but with a hash added\n\tif (el.hash && el.pathname === currentPath) { return false; }\n\n\treturn true;\n}\n\n/**\n * Return current path\n *\n * @private\n * @param {object} [loc]\n * @returns {string}\n */\nfunction _path(loc) {\n\tloc = loc || location;\n\treturn loc.pathname + loc.search + loc.hash;\n}\n\n/**\n * Reset references and variables for a given selector\n *\n * @private\n * @param sel\n */\nfunction _reset(sel) {\n\tresponse = null;\n\t$setRef(sel);\n\t$setVar(sel);\n\n\tpjax.bind(sel);\n}\n\nconst pjax = {\n _setWindowLocation(location) {\n _win.location = location;\n },\n\n // Empty callbacks - will be defined by router.pjax\n onError() {},\n onTrigger() {},\n\n /**\n * Bind element events and form submit events to callback\n *\n * @param {($|HTMLElement|string)} [context=document]\n */\n bind(context) {\n const current = parseLocation();\n const events = settings.bind;\n context = context || settings.context;\n\n if (supportsPushState()) {\n const keys = Object.keys(events);\n let i = 0;\n\n // Iterate through events to be bound\n for (; i < keys.length; i++) {\n const event = keys[i];\n const sel = events[event];\n\n $each(sel, (el) => {\n const evts = event.split(' ').map(val => `${val}.pjax`).join(' ');\n\n // Retrieve data-url off of element\n // Used if element is not tag\n const loc = el.getAttribute('data-url');\n let destination = el;\n\n // Create tag for validation of URL\n if (loc) {\n const attrs = el.attributes;\n let j = 0;\n let attr;\n\n destination = _doc.createElement('a');\n\n // Clone attributes from bound element to new a tag\n for (; j < attrs.length; j++) {\n attr = attrs[j];\n destination.setAttribute(attr.name, attr.value);\n }\n\n // Set URL\n destination.href = loc;\n }\n\n // Ensure the path exists and is local\n if (! evts || ! _isValid(destination, current.path)) {\n // TODO: Make this print as verbose only\n // warn('routes', 'PJAX: no events provided or invalid destination URL ' + destination.href);\n return;\n }\n\n // TODO: Make this reset optional so we can use 'bind' dynamically\n // Remove existing pjax events\n $events.off(el, '.pjax');\n\n // Bind designated events\n $events.on(el, evts, (e) => {\n if (paused) {\n warn('routes', 'pjax has been paused - will not trigger navigation');\n return;\n }\n\n // Don't navigate with control keys\n if (e.metaKey || e.ctrlKey || e.shiftKey) { return; }\n\n // Don't navigate when preventDefault already called\n if (e.defaultPrevented) { return; }\n\n // Don't navigate on right click\n if (e.button !== undefined && e.button !== 0) { return; }\n\n const path = _path(destination);\n\n e.preventDefault();\n\n this.onTrigger(path);\n });\n }, {\n context,\n });\n }\n }\n },\n\n go(to, from, next) {\n if (paused) {\n warn('routes', 'pjax has been paused - will not request partials');\n return next();\n }\n\n const request = settings.request;\n settings.lastRequestUrl = to.fullPath;\n\n // Navigate to external URL or if history isn't supported\n const a = _doc.createElement('a');\n a.href = to.url;\n\n if (! supportsPushState() || ! _isValid(a, from.fullPath)) {\n // Will trigger full page reload\n this._setWindowLocation(to.fullPath);\n return false;\n }\n\n request.url = to.fullPath;\n\n settings.fetch(request)\n .then((res) => {\n response = res;\n next();\n })\n .catch((error) => {\n next(error);\n });\n },\n\n /**\n * Apply configuration\n *\n * @param {Object} options\n */\n init(options = {}) {\n if (supportsPushState()) {\n if (options.onError) {\n this.onError = options.onError;\n delete options.onError;\n }\n\n settings = $extend(settings, options);\n\n // https://developers.google.com/web/updates/2015/09/history-api-scroll-restoration\n if ('scrollRestoration' in _win.history) {\n _win.history.scrollRestoration = 'manual';\n }\n\n // Bind all designated elements to trigger navigation\n this.bind();\n\n return true;\n }\n\n return false;\n },\n\n /**\n * Inform if pjax is currently paused\n *\n * @returns {boolean}\n */\n isPaused() {\n return paused;\n },\n\n /**\n * Override partials to be replaced\n *\n * @param partials\n */\n override(options) {\n if (options.partials) {\n overrides.partials = options.partials;\n }\n\n overrides.requestCount += 1;\n },\n\n /**\n * Pause previously bound pjax from triggering\n */\n pause() {\n paused = true;\n },\n\n /**\n * Replace target partials on DOM\n */\n replace() {\n const partials = overrides.partials || settings.partials;\n\n if (paused) {\n warn('routes', 'pjax has been paused - will not replace partials');\n return;\n }\n\n if (! response) {\n warn('routes', 'no response to use for partial replacement');\n return;\n }\n\n let html = response.data;\n\n if (settings.replace) {\n $exec(settings.replace, {\n args: [html, settings],\n });\n }\n\n html = $parseHTML(`${html}`).firstChild;\n\n // Make partial replacements from response\n $each(partials, (sel) => {\n $each(sel, (el) => {\n const target = $(sel)[0];\n\n // Retain any classes added dynamically to container\n // Check if className is a string so that it doesn't attempt\n // to add classes to SVG tittles\n if ($isString(el.className)) {\n el.className = target.className;\n }\n\n if (target) {\n const parent = target.parentNode;\n\n target.innerHTML = el.innerHTML;\n\n _reset(parent);\n }\n }, {\n context: html,\n });\n });\n },\n\n /**\n * Reset module back to default settings\n */\n reset() {\n settings = $copy(defaults);\n },\n\n /**\n * Resume pjax to normal operating status\n */\n resume() {\n if (overrides.requestCount > 0) {\n overrides.requestCount -= 1;\n }\n\n if (overrides.requestCount === 0) {\n paused = false;\n overrides = $copy(overrideDefaults);\n }\n },\n};\n\nexport default pjax;\n","import Handler from 'routes/route-handler';\nimport { getRouteMap, mapRoutes, resetRouteMap, setNotFound } from 'routes/route-map';\nimport History from './routes/history';\nimport { addAfterEach, addBeforeEach, addOnError, getErrorHandlers, resetHooks } from './routes/global-hooks';\nimport pjax from './routes/pjax';\nimport { $ready } from 'core/dom';\nimport { $copy, $extend, $isObject, $toArray } from 'core/types';\nimport { uri } from 'wee-location';\n\nconst defaults = {\n scrollBehavior(to, from, savedPosition) {\n if (savedPosition) {\n return savedPosition;\n }\n return { x: 0, y: 0 };\n },\n transition: {\n timeout: 0,\n },\n};\nlet settings = $copy(defaults);\nlet hasPjax = false;\n\nexport let history = new History(settings);\n\n/**\n * Set base configurations for router\n *\n * @param {Object} config\n * @returns {router}\n */\nfunction router(config = {}) {\n $extend(settings, config);\n\n // Update scrollBehavior property in case that was changed\n history.scrollBehavior = settings.scrollBehavior;\n history.transition = settings.transition;\n\n return router;\n}\n\nrouter.settings = settings;\n\n/**\n * Register global after hook\n *\n * @param {Function} fn\n * @returns {router}\n */\nrouter.afterEach = function registerAfterEach(fn) {\n addAfterEach(fn);\n\n return this;\n};\n\n/**\n * Register global before hook\n *\n * @param {Function} fn\n * @returns {router}\n */\nrouter.beforeEach = function registerBeforeEach(fn) {\n addBeforeEach(fn);\n\n return this;\n};\n\n/**\n * Retrieve current route\n *\n * @returns {Object}\n */\nrouter.currentRoute = function currentRoute() {\n return history.current;\n};\n\n/**\n * Register routes\n *\n * @param {Array} routes\n * @returns {router}\n */\nrouter.map = function routerMap(routes) {\n mapRoutes(routes);\n\n return this;\n};\n\n/**\n * Set the catch all route that is matched if no other routes match\n *\n * @param {Object} route\n * @returns {router}\n */\nrouter.notFound = function notFound(route) {\n route.path = '*';\n route.name = 'notFound';\n\n setNotFound(route);\n\n return this;\n};\n\n/**\n * Register one or more error handlers\n *\n * @param {Function|Array} handlers\n */\nrouter.onError = function addRouterError(handlers) {\n $toArray(handlers).forEach(fn => addOnError(fn));\n\n return this;\n};\n\n/**\n * Configure and initialize pjax navigation\n *\n * @param {Object} config\n * @returns {router}\n */\nrouter.pjax = function initPjax(config = {}) {\n // Prevent initializing pjax multiple times\n if (! hasPjax) {\n hasPjax = pjax.init(config);\n\n if (hasPjax) {\n // Prep pjax after initialization of routes\n this.onReady(() => {\n pjax.onTrigger = function onPjaxTrigger(destination) {\n history.push(destination)\n .catch((error) => {\n getErrorHandlers().forEach(fn => fn(error));\n pjax.onError(error);\n });\n };\n\n history.begin = pjax.go;\n history.replacePage = pjax.replace;\n });\n }\n }\n\n return this;\n};\n\n/**\n * Register callbacks to be executed on ready\n *\n * @param {Function} success\n */\nrouter.onReady = function onReady(success) {\n history.onReady(success);\n\n return this;\n};\n\n/**\n * Navigate to URL and add item to history\n *\n * @param {string|Object} path\n * @param {boolean|Object} modifyPjax\n */\nrouter.push = function push(path, modifyPjax = false) {\n if (modifyPjax === true) {\n pjax.pause();\n } else if ($isObject(modifyPjax)) {\n pjax.override(modifyPjax);\n }\n\n return history.push(path)\n .then(pjax.resume, pjax.resume);\n};\n\n/**\n * Navigate to URL and replace item in history\n *\n * @param {string|Object} path\n * @param {boolean|Ojbect} modifyPjax\n */\nrouter.replace = function replace(path, modifyPjax = false) {\n if (modifyPjax === true) {\n pjax.pause();\n } else if ($isObject(modifyPjax)) {\n pjax.override(modifyPjax);\n }\n\n return history.replace(path)\n .then(pjax.resume, pjax.resume);\n};\n\n/**\n * Reset all routes - mainly for testing purposes\n */\nrouter.reset = function reset() {\n resetRouteMap();\n resetHooks();\n hasPjax = false;\n pjax.reset();\n window.removeEventListener('popstate', history.popstate);\n settings = $copy(defaults);\n history = new History(settings);\n};\n\n/**\n * Retrieve all routes or specific route by name/path\n *\n * @param {string} [value]\n * @param {string} keyType\n * @returns {Object|Array}\n */\nrouter.routes = function routes(key, keyType = 'path') {\n const routeMaps = getRouteMap();\n let map;\n\n if (key) {\n if (routeMaps.pathMap.hasOwnProperty(key)) {\n return routeMaps.pathMap[key];\n } else if (routeMaps.nameMap.hasOwnProperty(key)) {\n return routeMaps.nameMap[key];\n }\n return null;\n }\n\n if (keyType === 'path') {\n map = routeMaps.pathMap;\n } else if (keyType === 'name') {\n map = routeMaps.nameMap;\n } else if (keyType === 'list') {\n map = routeMaps.pathList;\n }\n\n return map;\n};\n\n/**\n * Evaluate mapped routes against current or provided URL\n *\n * @returns {router}\n */\nrouter.run = function runRoutes() {\n return $ready().then(() => history.navigate(uri().fullPath)\n .catch((error) => {\n getErrorHandlers().forEach(fn => fn(error));\n }));\n};\n\nexport default router;\nexport const RouteHandler = Handler;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _inherits(t, e) {\n if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function\");\n t.prototype = Object.create(e && e.prototype, {\n constructor: {\n value: t,\n writable: !0,\n configurable: !0\n }\n }), Object.defineProperty(t, \"prototype\", {\n writable: !1\n }), e && setPrototypeOf(t, e);\n}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default class StoreError extends Error {\n constructor(message) {\n super(message);\n\n this.errorType = 'StoreError';\n }\n}\n","import { $exec } from 'core/core';\nimport { _castString, $copy, $extend, $isObject, $isFunction, $toArray, $type } from 'core/types';\nimport { $each } from 'core/dom';\nimport { U } from 'core/variables';\nimport { warn } from 'core/warn';\nimport StoreError from 'store/error';\n\nlet instances = {};\n\n/**\n * Create wrapper for browser storage api\n *\n * @param {string} type\n * @returns {*}\n * @private\n */\nfunction _storageFactory(type) {\n\tlet storage;\n\n\tif (type === 'local') {\n\t\tstorage = window.localStorage;\n\t} else if (type === 'session') {\n\t\tstorage = window.sessionStorage;\n\t}\n\n\treturn {\n\t\tgetItem(key) {\n\t\t\treturn JSON.parse(storage.getItem(key));\n\t\t},\n\t\tsetItem(key, value) {\n\t\t\tvalue = JSON.stringify(value);\n\n\t\t\treturn storage.setItem(key, value);\n\t\t},\n\t\tremoveItem(key) {\n\t\t\treturn storage.removeItem(key);\n\t\t}\n\t};\n}\n\nexport class Store {\n\tconstructor(name, options = {}) {\n\t\tthis.localStorage = _storageFactory('local');\n\t\tthis.sessionStorage = _storageFactory('session');\n\n\t\tthis._setBrowserStorage(options.browserStorage, false);\n\n\t\tthis.name = name;\n\t\tthis.keepInMemory = options.keepInMemory || true;\n\t\tthis.prefix = options.prefix || 'wee';\n\t\tthis.browserStoreKey = `${this.prefix}_${this.name}`;\n\n\t\tif (this.browserStore && this.browserStore.getItem(this.browserStoreKey)) {\n\t\t\tthis.store = this.browserStore.getItem(this.browserStoreKey)\n\t\t} else {\n\t\t\tthis._syncStore({ $: {} });\n\t\t}\n\n\t\tthis.observe = {\n\t\t\t$: {}\n\t\t};\n\t}\n\n\t/**\n\t * Push or concatenate values into array\n\t *\n\t * @param {string} type - 'concat' or 'push'\n\t * @param {Object} store\n\t * @param {Object} obs\n\t * @param {string} key\n\t * @param {Array|*} val\n\t * @param {boolean} prepend\n\t * @param {boolean} [sync = true]\n\t * @returns {*}\n\t * @private\n\t */\n\t_add(type, store, obs, key, val, prepend, sync = true) {\n\t\tif (prepend === U) {\n\t\t\tprepend = val;\n\t\t\tval = key;\n\t\t}\n\n\t\tconst stored = this._storage(store, key, true);\n\t\tconst seg = stored[1];\n\t\tconst orig = $copy(stored[2]);\n\t\tlet root = stored[0];\n\n\t\t// If store property is not already an array, set to empty array\n\t\tif (! Array.isArray(orig)) {\n\t\t\troot[seg] = [];\n\t\t}\n\n\t\tif (type === 'concat') {\n\t\t\troot[seg] = prepend ?\n\t\t\t\t$toArray(val).concat(root[seg]) :\n\t\t\t\troot[seg].concat(val);\n\t\t} else {\n\t\t\tprepend ?\n\t\t\t\troot[seg].unshift(val) :\n\t\t\t\troot[seg].push(val);\n\t\t}\n\n\t\tif (sync) {\n\t\t\tthis._syncStore(store);\n\t\t}\n\n\t\treturn root[seg];\n\t}\n\n\t/**\n\t * Get variable\n\t *\n\t * @param {Object} store\n\t * @param {Object} obs\n\t * @param {string} key\n\t * @param {*} fallback\n\t * @param {boolean} [set=false]\n\t * @param {Object} [options={}]\n\t * @returns {*}\n\t * @private\n\t */\n\t_get(store, obs, key, fallback, set = false, options = {}) {\n\t\tconst resp = this._storage(store, key)[2];\n\n\t\tif (resp !== U) {\n\t\t\treturn resp;\n\t\t}\n\n\t\tif (fallback !== U) {\n\t\t\treturn set ?\n\t\t\t\tthis._set(store, obs, key, fallback, options) :\n\t\t\t\tthis._val(fallback, options);\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Ensure that in memory store is up to date\n\t *\n\t * @param {Object} store\n\t * @private\n\t */\n\t_syncStore(store) {\n\t\tif (this.browserStore) {\n\t\t\tthis.browserStore.setItem(this.browserStoreKey, store);\n\t\t}\n\n\t\tif (this.keepInMemory) {\n\t\t\tthis.store = store;\n\t\t}\n\t}\n\n\t/**\n\t * Determine data storage root, key, and value\n\t *\n\t * @param {Object} obj\n\t * @param {string} key\n\t * @param {boolean} [create=false]\n\t * @returns {Array} value\n\t */\n\t_storage(obj, key, create = false) {\n\t\tlet data = obj;\n\t\tlet\ttype = $type(key);\n\t\tlet num = type == 'number';\n\t\tlet val;\n\n\t\tif (num || type == 'string') {\n\t\t\tlet segs = key.toString().split('.');\n\t\t\tkey = segs.pop();\n\t\t\tdata = data.$;\n\n\t\t\tsegs.forEach(function(key) {\n\t\t\t\tdata = data.hasOwnProperty(key) ?\n\t\t\t\t\tdata[key] :\n\t\t\t\t\t(create ? data[key] = {} : []);\n\t\t\t});\n\t\t} else {\n\t\t\tkey = '$';\n\t\t}\n\n\t\tif (num && Array.isArray(data)) {\n\t\t\tvar arr = data.slice(key);\n\n\t\t\tif (arr.length) {\n\t\t\t\tval = arr[0];\n\t\t\t}\n\t\t} else {\n\t\t\tkey = key.toString();\n\n\t\t\tif (data.hasOwnProperty(key)) {\n\t\t\t\tval = data[key];\n\t\t\t}\n\t\t}\n\n\t\treturn [data, key, val];\n\t}\n\n\t/**\n\t * Set variable\n\t *\n\t * @param {Object} store\n\t * @param {Object} obs\n\t * @param {string} key\n\t * @param {*} val\n\t * @param {Object} [options={}]\n\t * @param {boolean} [sync=true]\n\t * @returns {*}\n\t * @private\n\t */\n\t_set(store, obs, key, val, options = {}, sync = true) {\n\t\tlet stored = this._storage(store, key, true);\n\t\tlet seg = stored[1];\n\t\tlet data = seg === '$' ?\n\t\t\t\tthis._val(key, val) :\n\t\t\t\tthis._val(val, options);\n\n\t\tstored[0][seg] = data;\n\n\t\tif (sync) {\n\t\t\tthis._syncStore(store);\n\t\t}\n\n\t\treturn data;\n\t}\n\n\t/**\n\t * Set a browser storage to be used for persistence of data\n\t *\n\t * @param {string} storageType\n\t * @param {boolean} [sync=true]\n\t */\n\t_setBrowserStorage(storageType, sync = true) {\n\t\tif (typeof storageType === 'string') {\n\t\t\tthis.browserStore = storageType === 'local' ?\n\t\t\t\tthis.localStorage :\n\t\t\t\tthis.sessionStorage;\n\n\t\t\t// If store already contains data that needs to be saved to browser storage\n\t\t\tif (sync) {\n\t\t\t\tthis.browserStore.setItem(this.browserStoreKey, this.store);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.browserStore = null;\n\t\t}\n\t}\n\n\t/**\n\t * Get value from function or directly\n\t *\n\t * @private\n\t * @param {*} val\n\t * @param {Object} [options]\n\t * @returns {*}\n\t */\n\t_val(val, options) {\n\t\treturn $isFunction(val) ?\n\t\t\t$exec(val, options) :\n\t\t\tval;\n\t}\n\n\t/**\n\t * Configure instance after initial creation\n\t *\n\t * @param {Object} options\n\t */\n\tconfigure(options) {\n\t\tif (options.hasOwnProperty('browserStorage')) {\n\t\t\tthis._setBrowserStorage(options.browserStorage);\n\t\t}\n\n\t\tif (options.hasOwnProperty('keepInMemory')) {\n\t\t\tthis.keepInMemory = options.keepInMemory;\n\t\t}\n\t}\n\n\t/**\n\t * Get variable\n\t *\n\t * @param {string} key\n\t * @param {*} [fallback]\n\t * @param {boolean} [set=false]\n\t * @param {Object} [options] - available for fallback functions\n\t * @param {Array} [options.args]\n\t * @param {Object} [options.scope]\n\t * @returns {*} value\n\t */\n\tget(key, fallback, set = false, options) {\n\t\treturn this._get(this.getStore(), this.observe, key, fallback, set, options);\n\t}\n\n\t/**\n\t * Return storage object from either memory or localStorage/sessionStorage\n\t *\n\t * @returns {Object}\n\t * @private\n\t */\n\tgetStore() {\n\t\tif (! this.keepInMemory && this.browserStore) {\n\t\t\treturn this.browserStore.getItem(this.browserStoreKey);\n\t\t}\n\n\t\treturn this.store;\n\t}\n\n\t/**\n\t * Set variable\n\t *\n\t * @param {string} key\n\t * @param {*} val\n\t * @param {Object} [options] - applicable if value is a callback\n\t * @param {Array} [options.args]\n\t * @param {Object} [options.scope]\n\t * @returns {*} value\n\t */\n\tset(key, val, options) {\n\t\treturn this._set(this.getStore(), this.observe, key, val, options);\n\t}\n\n\t/**\n\t * Check if storage criteria is set\n\t *\n\t * @param {string} key\n\t * @param {*} [val]\n\t * @returns {boolean}\n\t */\n\thas(key, val) {\n\t\tconst resp = this._storage(this.getStore(), key)[2];\n\n\t\tif (resp === U) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (val !== U) {\n\t\t\tif ($isObject(resp)) {\n\t\t\t\treturn resp.hasOwnProperty(val);\n\t\t\t}\n\n\t\t\tif (Array.isArray(resp)) {\n\t\t\t\treturn resp.indexOf(val) > -1;\n\t\t\t}\n\n\t\t\treturn resp === val;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Push value into global array\n\t *\n\t * @param {string} key\n\t * @param {*} val\n\t * @param {boolean} [prepend=false]\n\t * @returns {Array|Object} value\n\t */\n\tpush(key, val, prepend = false) {\n\t\treturn this._add('push', this.getStore(), this.observe, key, val, prepend);\n\t}\n\n\t/**\n\t * Concatenate values into global storage\n\t *\n\t * @param {string} key\n\t * @param {*} val\n\t * @param {boolean} [prepend=false]\n\t * @returns {Array|Object} value\n\t */\n\tconcat(key, val, prepend = false) {\n\t\treturn this._add('concat', this.getStore(), this.observe, key, val, prepend);\n\t}\n\n\t/**\n\t * Extend object into global storage\n\t *\n\t * @param {string} key\n\t * @param {Object} val\n\t * @returns {Object} value\n\t */\n\tmerge(key, val) {\n\t\tconst store = this.getStore();\n\t\tval = $extend(true, {}, this._get(store, this.observe, key, {}), val);\n\n\t\treturn this._set(store, this.observe, key, val);\n\t}\n\n\t/**\n\t * Remove top-level store property\n\t *\n\t * @param {string} key\n\t * @returns {*}\n\t */\n\tdrop(key) {\n\t\tconst store = this.getStore();\n\t\tconst stored = this._storage(store, key);\n\t\tlet root = stored[0];\n\t\tlet seg = stored[1];\n\t\tlet orig = $copy(stored[2]);\n\t\tlet arr = Array.isArray(root);\n\n\t\tarr ?\n\t\t\troot.splice(seg, 1) :\n\t\t\tdelete root[seg];\n\n\t\tthis._syncStore(store);\n\n\t\treturn orig;\n\t}\n\n\t/**\n\t * Set variables from DOM\n\t *\n\t * @param {string} store\n\t * @param {($|HTMLElement|string)} context\n\t */\n\tsetVar(context) {\n\t\tconst store = this.getStore();\n\t\tconst storeFilter = this.name !== 'default' ?\n\t\t\t`[data-store=\"${this.name}\"]` :\n\t\t\t':not([data-store])';\n\n\t\t$each(`[data-set]${storeFilter}`, (el) => {\n\t\t\t_setVar(this, el);\n\t\t}, {\n\t\t\tcontext: context\n\t\t});\n\n\t\t// Prevented _syncStore in _add and _set inside $each for performance\n\t\tthis._syncStore(store);\n\t}\n\n\t/**\n\t * Remove reference to store instance\n\t */\n\tdestroy() {\n\t\tdelete instances[this.name];\n\n\t\tif (this.browserStore) {\n\t\t\tthis.browserStore.removeItem(this.browserStoreKey);\n\t\t}\n\t}\n}\n\nconst store = new Store('default');\n\nfunction _setVar(instance, el) {\n\tconst key = el.getAttribute('data-set');\n\tconst val = _castString(el.getAttribute('data-value'));\n\tconst store = instance.getStore();\n\n\tkey.slice(-2) == '[]' ?\n\t\tinstance._add('push', store, instance.observe, key.slice(0, -2), val, false, false) :\n\t\tinstance._set(store, instance.observe, key, val, {}, false);\n}\n\n/**\n * Refresh all stores\n *\n * @param context\n */\nexport function $setVar(context) {\n\t$each('[data-set]', (el) => {\n\t\tconst name = el.getAttribute('data-store');\n\t\tconst instance = name && instances[name] ? instances[name] : store;\n\n\t\t_setVar(instance, el);\n\t}, {\n\t\tcontext,\n\t});\n}\n\n/**\n * Instantiate new Store instance\n *\n * @param {string} name\n * @param {Object} options\n * @returns {*}\n */\nstore.create = function createStore(name, options = {}) {\n\tif (! name) {\n\t\tthrow new StoreError('No name provided when creating new store instance');\n\t}\n\n\tif (instances[name]) {\n\t\twarn('store', `creation of a store instance named ${name} was attempted but already exists`);\n\t\treturn instances[name];\n\t}\n\n\tconst instance = new Store(name, options);\n\n\tinstances[instance.name] = instance;\n\n\treturn instance;\n}\n\n/**\n * Return all store instances\n *\n * @param {string} name\n * @returns {*}\n */\nstore.instances = function getInstances(name) {\n\tif (name) {\n\t\treturn instances[name];\n\t}\n\n\treturn instances;\n}\n\n/**\n * Destroy store instance\n *\n * @param {string} name\n */\nexport function destroyStore(name) {\n\tif (instances[name]) {\n\t\tinstances[name].destroy();\n\t}\n}\n\nexport default store;\n","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { isBrowser } from './core';\n\nconst D = isBrowser ? window.document : {};\nconst scope = isBrowser ? window : global;\n\n// Export globals for use in other modules\nexport const _$ = scope.WeeAlias || '$';\nexport const _doc = D;\nexport const _body = D.body;\nexport const _html = D.documentElement;\nexport const _win = scope;\nexport const U = undefined;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Print warning to console if under development and condition is not met\n *\n * @param {*} condition\n * @param {string} module\n * @param {string} message\n */\nexport function warn(module, message) {\n if (process.env.NODE_ENV !== 'production') {\n typeof console.warn(`[wee-${module}] ${message}`);\n }\n}\n","import { $exec } from '../core/core';\nimport { _castString, _slice, $extend, $isFunction, $isNumber, $isObject, $isString, $serialize, $toArray } from '../core/types';\nimport { _doc, _html, _win, U } from '../core/variables';\nimport { $each, $map, $parseHTML, $sel, $setRef, $unique, _selArray } from '../core/dom';\n\n/**\n * Get class value of element\n *\n * @private\n * @param {HTMLElement} el\n * @returns {string}\n */\nfunction _getClass(el) {\n return el instanceof SVGElement ?\n el.getAttribute('class') :\n el.className;\n}\n\n/**\n * Set class value of element\n *\n * @private\n * @param {HTMLElement} el\n * @param {string} className\n */\nfunction _setClass(el, className) {\n el instanceof SVGElement ?\n el.setAttribute('class', className) :\n el.className = className;\n}\n\n/**\n * Convert dash-separated string to camel-case\n *\n * @private\n * @param {string} name\n * @returns {string}\n */\nfunction _toCamel(name) {\n return name.toLowerCase()\n .replace(/-(.)/g, (match, val) => val.toUpperCase());\n}\n\n/**\n * Convert camel-cased string to dash-separated\n *\n * @private\n * @param {string} name\n * @returns {string}\n */\nfunction _toDashed(name) {\n return name.replace(/[A-Z]/g, match => `-${match[0].toLowerCase()}`);\n}\n\n/**\n * Get the selected options from a select\n *\n * @private\n * @param {HTMLElement} select\n * @returns {Array} selected\n */\nfunction _getSelected(select) {\n const arr = [];\n\n _slice.call(select.options).map((el) => {\n if (el.selected) {\n arr.push(el.value);\n }\n });\n\n return arr;\n}\n\n/**\n * Return either direct previous or next sibling\n *\n * @private\n * @param {($|HTMLElement|string)} target\n * @param {number} dir\n * @param filter\n * @param {Object} [options]\n * @returns {HTMLElement}\n */\nfunction _getSibling(target, dir, filter, options) {\n let match;\n\n $each(target, (el) => {\n const index = $index(el) + dir;\n\n $children($parent(el)).forEach((el, i) => {\n if (i === index &&\n (! filter || filter && $is(el, filter, options))) {\n match = el;\n }\n });\n });\n\n return match;\n}\n\n/**\n * Add classes to each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} value\n */\nexport function $addClass(target, value) {\n const func = $isFunction(value);\n\n $each(target, (el, i) => {\n let cn = _getClass(el),\n name = func ?\n $exec(value, {\n args: [i, cn],\n scope: el,\n }) :\n value;\n\n if (name) {\n let names = cn.split(' '),\n upd = name.split(' ').filter(val => names.indexOf(val) < 0);\n\n upd.unshift(cn);\n\n _setClass(el, upd.join(' '));\n }\n });\n}\n\n/**\n * Insert selection or markup after each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|function|HTMLElement|string)} source\n * @param {boolean} [remove=false]\n */\nexport function $after(target, source, remove) {\n const func = $isFunction(source);\n\n $each(target, (el, i) => {\n let aft = func ?\n $exec(source, {\n args: [i, el.innerHTML],\n scope: el,\n }) :\n source;\n\n if ($isString(aft)) {\n aft = $parseHTML(aft);\n }\n\n if (aft) {\n const par = el.parentNode;\n\n $each(aft, (cel) => {\n if (i > 0) {\n cel = $clone(cel)[0];\n }\n\n par.insertBefore(cel, el.nextSibling);\n\n $setRef(par);\n }, {\n reverse: true,\n });\n }\n\n if (remove) {\n $remove(el);\n }\n });\n}\n\n/**\n * Append selection or markup after each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|function|HTMLElement|string)} source\n */\nexport function $append(target, source) {\n const func = $isFunction(source);\n\n $each(target, (el, i) => {\n let app = func ?\n $exec(source, {\n args: [i, el.innerHTML],\n scope: el,\n }) :\n source;\n\n if ($isString(app)) {\n app = $parseHTML(app);\n }\n\n if (app) {\n $each(app, (cel) => {\n el.appendChild(cel);\n });\n\n $setRef(el);\n }\n });\n}\n\n/**\n * Get attribute of first matching selection or set attribute\n * of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param a\n * @param b\n * @returns {(string|undefined)}\n */\nexport function $attr(target, a, b) {\n const obj = $isObject(a);\n\n if (b !== U || obj) {\n const func = ! obj && $isFunction(b);\n\n $each(target, (el, i) => {\n obj ?\n Object.keys(a).forEach((key) => {\n el.setAttribute(key, a[key]);\n }) :\n el.setAttribute(a, func ?\n $exec(b, {\n args: [i, el],\n scope: el,\n }) :\n b);\n });\n } else {\n return $sel(target)[0].getAttribute(a);\n }\n}\n\n/**\n * Insert selection or markup before each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|function|HTMLElement|string)} source\n * @param {boolean} [remove=false]\n */\nexport function $before(target, source, remove) {\n const func = $isFunction(source);\n\n $each(target, (el, i) => {\n let bef = func ?\n $exec(source, {\n args: [i, el.innerHTML],\n scope: el,\n }) :\n source;\n\n if ($isString(bef)) {\n bef = $parseHTML(bef);\n }\n\n if (bef) {\n const par = el.parentNode;\n\n $each(bef, (cel) => {\n if (i > 0) {\n cel = $clone(cel)[0];\n }\n\n par.insertBefore(cel, el);\n\n $setRef(par);\n }, {\n reverse: true,\n });\n }\n\n if (remove) {\n $remove(el);\n }\n });\n}\n\n/**\n * Get unique direct children of each matching selection\n *\n * @param {($|HTMLElement|string)} parent\n * @param filter\n * @returns {Array}\n */\nexport function $children(parent, filter) {\n let arr = [];\n\n $each(parent, (el) => {\n const children = _slice.call(el.children);\n\n arr = arr.concat(filter ?\n $filter(children, filter) :\n children);\n });\n\n return $unique(arr);\n}\n\n/**\n * Clone each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @returns {Array}\n */\nexport function $clone(target) {\n return $map(target, el => el.cloneNode(true));\n}\n\n/**\n * Get unique closest ancestors of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @param context\n * @returns {HTMLElement|boolean}\n */\nexport function $closest(target, filter, context) {\n return $unique($map(target, (el) => {\n if ($is(el, filter)) {\n return el;\n }\n\n while (el !== null) {\n el = el.parentNode;\n\n if (el === _html || el === document) {\n return false;\n }\n\n if ($is(el, filter)) {\n return el;\n }\n }\n }, {\n context,\n }));\n}\n\n/**\n * Determine if any matching parent contains descendant selection\n *\n * @param {($|HTMLElement|string)} parent\n * @param descendant\n * @returns {boolean}\n */\nexport function $contains(parent, descendant) {\n let b = false;\n\n $each(parent, (el) => {\n if ($sel(descendant, el).length) {\n b = true;\n return false;\n }\n });\n\n return b;\n}\n\n/**\n * Get unique content of each matching selection\n *\n * @param {($|HTMLElement|string)} parent\n * @returns {Array}\n */\nexport function $contents(parent) {\n let arr = [];\n\n $each(parent, (el) => {\n arr = arr.concat(_slice.call(el.childNodes));\n });\n\n return $unique(arr);\n}\n\n/**\n * Get CSS value of first matching selection or set value\n * of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(object|string)} a\n * @param {(function|string)} [b]\n * @returns {(string|undefined)}\n */\nexport function $css(target, a, b) {\n const obj = $isObject(a);\n\n if (b !== U || obj) {\n const func = ! obj && $isFunction(b);\n\n $each(target, (el, i) => {\n obj ?\n Object.keys(a).forEach((key) => {\n el.style[key] = a[key];\n }) :\n el.style[a] = func ?\n $exec(b, {\n args: [i, el.style[a]],\n scope: el,\n }) :\n b;\n });\n } else {\n const el = $sel(target)[0];\n\n return getComputedStyle(el, null)[a];\n }\n}\n\n/**\n * Get data of first matching selection or set data\n * of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param a\n * @param [b]\n * @returns {(object|string|undefined)}\n */\nexport function $data(target, a, b) {\n if (a === U) {\n let el = $sel(target)[0],\n arr = {};\n\n _slice.call(el.attributes).forEach((attr) => {\n if (attr.name.substr(0, 5) == 'data-') {\n arr[_toCamel(attr.name.substr(5))] =\n _castString(attr.value);\n }\n });\n\n return arr;\n }\n\n if ($isObject(a)) {\n const obj = {};\n\n Object.keys(a).forEach((key) => {\n obj[`data-${_toDashed(key)}`] = a[key];\n });\n\n a = obj;\n } else {\n a = `data-${_toDashed(a)}`;\n }\n\n return _castString($attr(target, a, b));\n}\n\n/**\n * Remove child nodes from each matching selection\n *\n * @param {($|HTMLElement|string)} target\n */\nexport function $empty(target) {\n $each(target, (el) => {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n $setRef(el);\n });\n}\n\n/**\n * Get indexed node of matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {number} index\n * @param {($|HTMLElement|string)} [context=document]\n * @returns {HTMLElement}\n */\nexport function $eq(target, index, context) {\n const el = $sel(target, context);\n\n return el[index < 0 ? el.length + index : index];\n}\n\n/**\n * Return a filtered subset of elements from a matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @param [options]\n * @returns {Array} elements\n */\nexport function $filter(target, filter, options) {\n const func = $isFunction(filter);\n\n return $map(target, (el, i) => {\n const match = func ?\n $exec(filter, {\n args: [i, el],\n scope: el,\n }) :\n $is(el, filter, options);\n\n return match ? el : false;\n });\n}\n\n/**\n * Get unique filtered descendants from each matching selection\n *\n * @param {($|HTMLElement|string)} parent\n * @param filter\n * @returns {Array} elements\n */\nexport function $find(parent, filter) {\n let arr = [];\n\n $each(parent, (el) => {\n arr = arr.concat($sel(filter, el));\n });\n\n return $unique(arr);\n}\n\n/**\n * Get the first element of a matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|HTMLElement|string)} [context=document]\n * @returns {HTMLElement}\n */\nexport function $first(target, context) {\n return $sel(target, context)[0];\n}\n\n/**\n * Determine if the matching selection has a class\n *\n * @param {($|HTMLElement|string)} target\n * @param {string} className\n * @returns {boolean}\n */\nexport function $hasClass(target, className) {\n return $sel(target).some(el => new RegExp(`(^| )${className}($| )`, 'gim')\n .test(_getClass(el)));\n}\n\n/**\n * Hide each matching selection\n *\n * @param {($|HTMLElement|string)} target\n */\nexport function $hide(target) {\n $addClass(target, 'js-hide');\n}\n\n/**\n * Get inner HTML of first selection or set each matching selection HTML\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} value\n * @returns {(string|undefined)}\n */\nexport function $html(target, value) {\n if (value === U) {\n return $sel(target)[0].innerHTML;\n }\n\n const func = $isFunction(value);\n\n $each(target, (el, i) => {\n const html = func ?\n $exec(value, {\n args: [el, i, el.innerHTML],\n scope: el,\n }) :\n value;\n\n if (html !== false && html !== U) {\n if (el.nodeName == 'SELECT' && ! _win.atob) {\n el.outerHTML = el.outerHTML.replace(`${el.innerHTML} {\n const par = el.parentNode;\n\n $each(source, (cel) => {\n if (i > 0) {\n cel = $clone(cel)[0];\n }\n\n par.insertBefore(cel, el.nextSibling);\n\n $setRef(par);\n });\n });\n}\n\n/**\n * Insert each matching source selection element before\n * each matching target selection\n *\n * @param {($|HTMLElement|string)} source\n * @param {($|HTMLElement|string)} target\n */\nexport function $insertBefore(source, target) {\n $each(target, (el) => {\n $each(source, (cel) => {\n el.parentNode.insertBefore(cel, el);\n });\n });\n}\n\n/**\n * Get or set the height of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(boolean|function|number|string)} value\n * @returns {number}\n */\nexport function $height(target, value) {\n let func = value && $isFunction(value),\n height;\n\n if (value === U || value === true || func) {\n const el = $sel(target)[0];\n\n if (el === _win) {\n height = el.innerHeight;\n } else if (el === _doc) {\n height = el.documentElement.scrollHeight;\n } else {\n height = el.offsetHeight;\n\n if (value === true) {\n const style = getComputedStyle(el);\n height += parseFloat(style.marginTop) +\n parseFloat(style.marginBottom);\n }\n }\n\n if (! func) {\n return height;\n }\n }\n\n $each(target, (el, i) => {\n value = func ?\n $exec(value, {\n args: [i, height],\n scope: el,\n }) :\n value;\n\n if ($isNumber(value)) {\n value += 'px';\n }\n\n $css(el, 'height', value);\n });\n}\n\n/**\n * Determine if at least one matching selection matches\n * a specified criteria\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @param [options]\n * @returns {boolean}\n */\nexport function $is(target, filter, options) {\n return $map(target, (el, i) => {\n if ($isString(filter) &&\n (filter.slice(0, 4) == 'ref:' || filter.slice(0, 1) == ':')) {\n return $sel(filter).indexOf(el) > -1;\n }\n\n if ($isObject(filter)) {\n for (const key in filter) {\n if (filter[key] === el) {\n return true;\n }\n }\n\n return false;\n }\n\n if (Array.isArray(filter)) {\n return filter.indexOf(el) > -1;\n }\n\n if ($isFunction(filter)) {\n return $exec(filter, $extend({\n args: [i, el],\n scope: el,\n }, options));\n }\n\n return (\n el.matches ||\n el.msMatchesSelector ||\n el.webkitMatchesSelector ||\n el.mozMatchesSelector\n ).call(el, filter);\n }).length > 0;\n}\n\n/**\n * Get the last element of a matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|HTMLElement|string)} [context=document]\n * @returns {HTMLElement}\n */\nexport function $last(target, context) {\n return $eq(target, -1, context);\n}\n\n/**\n * Get the unique next sibling of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @param {object} [options]\n * @returns {Array} elements\n */\nexport function $next(target, filter, options) {\n return $unique($map(target, el => _getSibling(el, 1, filter, options)));\n}\n\n/**\n * Returns elements not matching the filtered selection\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @param {object} [options]\n * @returns {Array} elements\n */\nexport function $not(target, filter, options) {\n const func = $isFunction(filter);\n\n return $map(target, (el, i) => ((func ?\n $exec(filter, {\n args: [i, el],\n scope: el,\n }) :\n $is(el, filter, options)) ? false : el));\n}\n\n/**\n * Get the position of a matching selection relative to the document\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|number)} value\n * @returns {{top: number, left: number}}\n */\nexport function $offset(target, value) {\n let rect = $sel(target)[0].getBoundingClientRect(),\n offset = {\n top: rect.top + _win.pageYOffset,\n left: rect.left + _win.pageXOffset,\n };\n\n if (value) {\n const func = $isFunction(value);\n\n $each(target, (el, i) => {\n const set = func ?\n $exec(value, {\n args: [i, offset],\n scope: el,\n }) :\n value;\n\n if ($isNumber(set.top)) {\n set.top = `${set.top}px`;\n }\n\n if ($isNumber(set.left)) {\n set.left = `${set.left}px`;\n }\n\n $css(el, set);\n });\n } else {\n return offset;\n }\n}\n\n/**\n * Get unique parent from each matching selection\n *\n * @param {($|HTMLElement|string)} child\n * @param filter\n * @returns {Array} elements\n */\nexport function $parent(child, filter) {\n return $unique($map(child, (el) => {\n const parent = el.parentNode;\n return ! filter || $is(parent, filter) ? parent : false;\n }));\n}\n\n/**\n * Get the position of the first matching selection relative\n * to its offset parent\n *\n * @param {($|HTMLElement|string)} target\n * @returns {{top: number, left: number}}\n */\nexport function $position(target) {\n const el = $sel(target)[0];\n\n return {\n top: el.offsetTop,\n left: el.offsetLeft,\n };\n}\n\n/**\n * Prepend selection or markup before each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|function|HTMLElement|string)} source\n */\nexport function $prepend(target, source) {\n const func = $isFunction(source);\n\n $each(target, (el, i) => {\n let pre = func ?\n $exec(source, {\n args: [i, el.innerHTML],\n scope: el,\n }) :\n source;\n\n if ($isString(pre)) {\n pre = $parseHTML(pre);\n }\n\n if (pre) {\n $each(pre, (cel) => {\n el.insertBefore(cel, el.firstChild);\n });\n\n $setRef(el);\n }\n });\n}\n\n/**\n * Get the unique previous sibling of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @param {object} [options]\n * @returns {Array} elements\n */\nexport function $prev(target, filter, options) {\n return $unique($map(target, el => _getSibling(el, -1, filter, options)));\n}\n\n/**\n * Get property of first matching selection or set property of\n * each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param a\n * @param b\n * @returns {*}\n */\nexport function $prop(target, a, b) {\n const obj = $isObject(a);\n\n if (b !== U || obj) {\n const func = ! obj && $isFunction(b);\n\n $each(target, (el, i) => {\n obj ?\n Object.keys(a).forEach((key) => {\n el[key] = a[key];\n }) :\n el[a] = func ?\n $exec(b, {\n args: [i, el],\n scope: el,\n }) :\n b;\n });\n } else {\n const el = $sel(target)[0];\n\n return el[a];\n }\n}\n\n/**\n * Get unique ancestors of each matching selection\n *\n * @param {($|HTMLElement|string)} child\n * @param filter\n * @returns {Array} elements\n */\nexport function $parents(child, filter) {\n const arr = [];\n\n $each(child, (el) => {\n while (el !== null) {\n el = el.parentNode;\n\n if (! filter || (filter && $is(el, filter))) {\n arr.push(el);\n }\n\n if (el === _html) {\n return false;\n }\n }\n });\n\n return $unique(arr);\n}\n\n/**\n * Remove each matching selection from the document\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|HTMLElement|string)} [context=document]\n */\nexport function $remove(target, context) {\n const arr = [];\n\n $each(target, (el) => {\n const par = el.parentNode;\n\n arr.push(el);\n\n par.removeChild(el);\n\n $setRef(par);\n }, {\n context,\n });\n\n return arr;\n}\n\n/**\n * Remove specified attribute of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {string} name\n */\nexport function $removeAttr(target, name) {\n $each(target, (el) => {\n name.split(/\\s+/).forEach((value) => {\n el.removeAttribute(value);\n });\n });\n}\n\n/**\n * Remove classes from each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} value\n */\nexport function $removeClass(target, value) {\n const func = $isFunction(value);\n\n $each(target, (el, i) => {\n let cn = _getClass(el),\n name = func ?\n $exec(value, {\n args: [i, cn],\n scope: el,\n }) :\n value;\n\n if (name) {\n const names = name.split(' ');\n\n _setClass(el, cn.split(' ').filter(val => names.indexOf(val) < 0).join(' '));\n }\n });\n}\n\n/**\n * Remove specified style property of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {string} name\n */\nexport function $removeStyle(target, name) {\n $each(target, el => {\n name.split(/\\s+/).forEach(value => {\n el.style.removeProperty(value);\n });\n });\n}\n\n/**\n * Replace each matching selection with selection or markup\n *\n * @param {($|HTMLElement|string)} target\n * @param {($|HTMLElement|string)} source\n */\nexport function $replaceWith(target, source) {\n $after(target, source, true);\n}\n\n/**\n * Get or set the X scroll position of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {number} value\n * @returns {number}\n */\nexport function $scrollLeft(target, value) {\n if (value === U) {\n let el = target ? $sel(target)[0] : _win;\n\n if (el.nodeType === 9) {\n el = el.defaultView;\n }\n\n return el === _win ?\n el.pageXOffset :\n el.scrollLeft;\n }\n\n $each(target, (el) => {\n if (el.nodeType === 9) {\n el = el.defaultView;\n }\n\n if (el === _win) {\n el.scrollTo(value, el.pageYOffset);\n } else {\n el.scrollLeft = value;\n }\n });\n}\n\n/**\n * Get or set the Y scroll position of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {number} value\n * @returns {number}\n */\nexport function $scrollTop(target, value) {\n if (value === U) {\n let el = target ? $sel(target)[0] : _win;\n\n if (el.nodeType === 9) {\n el = el.defaultView;\n }\n\n return el === _win ?\n el.pageYOffset :\n el.scrollTop;\n }\n\n $each(target, (el) => {\n if (el.nodeType === 9) {\n el = el.defaultView;\n }\n\n if (el === _win) {\n el.scrollTo(el.pageXOffset, value);\n } else {\n el.scrollTop = value;\n }\n });\n}\n\n/**\n * Serialize input values from first matching form selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {boolean} json\n * @returns {string}\n */\nexport function $serializeForm(target, json) {\n let el = $sel(target)[0],\n obj = {},\n i = 0;\n\n if (el.nodeName != 'FORM') {\n return '';\n }\n\n for (; i < el.elements.length; i++) {\n let child = el.elements[i],\n name = child.name,\n type = child.type;\n\n if (name && type != 'file' && type != 'reset') {\n const arr = name.slice(-2) == '[]';\n\n if (arr) {\n name = name.slice(0, -2);\n }\n\n if (type == 'select-multiple') {\n obj[name] = _getSelected(child);\n } else if (\n type == 'hidden' && (child.value === 'true' || child.value === 'false')\n ) {\n obj[name] = child.value === 'true';\n } else if (\n type != 'submit' && type != 'button' &&\n ((type != 'checkbox' && type != 'radio') ||\n child.checked)) {\n if (arr || (type == 'checkbox' && obj[name])) {\n obj[name] = $toArray(obj[name]);\n obj[name].push(child.value);\n } else {\n obj[name] = child.value;\n }\n }\n }\n }\n\n return json ? obj : $serialize(obj);\n}\n\n/**\n * Show each matching selection\n *\n * @param {($|HTMLElement|string)} target\n */\nexport function $show(target) {\n $removeClass(target, 'js-hide');\n}\n\n/**\n * Get unique siblings of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param filter\n * @returns {Array} elements\n */\nexport function $siblings(target, filter) {\n let arr = [];\n\n $each(target, (el) => {\n const siblings = _slice.call(el.parentNode.children)\n .filter(a => a !== el);\n\n arr = arr.concat(filter ?\n $filter(siblings, filter) :\n siblings);\n });\n\n return $unique(arr);\n}\n\n/**\n * Get subset of selection matches from specified range\n *\n * @param {($|HTMLElement|string)} target\n * @param {number} start\n * @param {number} end\n * @returns {Array} elements\n */\nexport function $slice(target, start, end) {\n if (! target._$) {\n target = _selArray(target);\n }\n\n return _slice.call(target, start, end);\n}\n\n/**\n * Get inner text of first selection or set each matching selection text\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} value\n * @returns {string}\n */\nexport function $text(target, value) {\n if (value === U) {\n return $map(target, el => el.textContent.trim()).join('');\n }\n\n const func = $isFunction(value);\n\n $each(target, (el, i) => {\n el.textContent = func ?\n $exec(value, {\n args: [i, el.textContent.trim()],\n scope: el,\n }) :\n value;\n });\n}\n\n/**\n * Toggle the display of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n */\nexport function $toggle(target) {\n $each(target, (el) => {\n ! $hasClass(el, 'js-hide') ?\n $hide(el) :\n $show(el);\n });\n}\n\n/**\n * Toggle adding and removing class(es) from the specified element\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} className\n * @param {boolean} [state]\n */\nexport function $toggleClass(target, className, state) {\n const func = $isFunction(className);\n\n $each(target, (el, i) => {\n if (func) {\n className = $exec(className, {\n args: [i, _getClass(el), state],\n scope: el,\n });\n }\n\n if (className) {\n className.split(/\\s+/).forEach((value) => {\n state === false ||\n (state === U && $hasClass(el, value)) ?\n $removeClass(el, value) :\n $addClass(el, value);\n });\n }\n });\n}\n\n/**\n * Get value of first matching selection or set match values\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} value\n * @returns {(Array|string)}\n */\nexport function $val(target, value) {\n if (value === U) {\n const el = $sel(target)[0];\n\n if (el.type == 'select-multiple') {\n return _getSelected(el);\n }\n\n return el.value;\n }\n\n const func = $isFunction(value);\n\n $each(target, (el, i) => {\n if (el.type == 'select-multiple') {\n value = $toArray(value);\n\n _slice.call(el.options).forEach((a) => {\n if (value.indexOf(a.value) > -1) {\n a.selected = true;\n }\n });\n } else {\n el.value = func ?\n $exec(value, {\n args: [i, el.value],\n scope: el,\n }) :\n value;\n }\n });\n}\n\n/**\n * Get or set the width of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(boolean|function|number|string)} value\n * @returns {number}\n */\nexport function $width(target, value) {\n let func = value && $isFunction(value),\n width;\n\n if (value === U || value === true || func) {\n const el = $sel(target)[0];\n\n if (el === _win) {\n width = el.innerWidth;\n } else if (el === _doc) {\n width = el.documentElement.scrollWidth;\n } else {\n width = el.offsetWidth;\n\n if (value === true) {\n const style = getComputedStyle(el);\n width += parseFloat(style.marginLeft) +\n parseFloat(style.marginRight);\n }\n }\n\n if (! func) {\n return width;\n }\n }\n\n $each(target, (el, i) => {\n value = func ?\n $exec(value, {\n args: [i, width],\n scope: el,\n }) :\n value;\n\n if (typeof value === 'number') {\n value += 'px';\n }\n\n $css(el, 'width', value);\n });\n}\n\n/**\n * Wrap markup around each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} html\n */\nexport function $wrap(target, html) {\n const func = $isFunction(html);\n\n $each(target, (el, i) => {\n const wrap = $sel(func ?\n $exec(html, {\n args: i,\n scope: el,\n }) :\n html);\n\n if (wrap) {\n const par = el.parentNode;\n\n $each(wrap, (cel) => {\n cel = cel.cloneNode(true);\n\n par.insertBefore(cel, el);\n cel.appendChild(el);\n\n $setRef(par);\n });\n }\n });\n}\n\n/**\n * Wrap markup around the content of each matching selection\n *\n * @param {($|HTMLElement|string)} target\n * @param {(function|string)} html\n */\nexport function $wrapInner(target, html) {\n const func = $isFunction(html);\n\n $each(target, (el, i) => {\n let markup = func ?\n $exec(html, {\n args: i,\n scope: el,\n }) :\n html,\n wrap = markup ? $sel(markup)[0] : null;\n\n if (wrap) {\n let children = $children(el);\n\n if (! children.length) {\n children = $html(el);\n\n $empty(el);\n $html(wrap, children);\n } else {\n $each(children, (cel) => {\n wrap.appendChild(cel);\n });\n }\n\n $append(el, wrap);\n }\n });\n}\n","import { $, $chain } from './core/chain';\nimport { $isObject } from './core/types';\nimport { U } from './core/variables';\nimport * as W from './dom/index';\n\n// Add chainable methods to $\n$chain({\n /**\n * Add classes to each matching selection\n *\n * @param {(function|string)} value\n * @returns {$}\n */\n addClass(value) {\n W.$addClass(this, value);\n\n return this;\n },\n\n /**\n * Insert selection or markup after each matching selection\n *\n * @param {($|function|HTMLElement|string)} source\n * @param {boolean} [remove=false]\n * @returns {$}\n */\n after(source, remove) {\n W.$after(this, source, remove);\n\n return this;\n },\n\n /**\n * Append selection or markup after each matching selection\n *\n * @param {($|function|HTMLElement|string)} source\n * @returns {$}\n */\n append(source) {\n W.$append(this, source);\n\n return this;\n },\n\n /**\n * Append selection or markup to each matching selection\n *\n * @param {($|function|HTMLElement|string)} target\n * @returns {$}\n */\n appendTo(target) {\n W.$append(target, this);\n\n return this;\n },\n\n /**\n * Get attribute of first matching selection or set attribute\n * of each matching selection\n *\n * @param a\n * @param b\n * @returns {($|string)}\n */\n attr(a, b) {\n const resp = W.$attr(this, a, b);\n\n return b !== undefined || $isObject(a) ? this : resp;\n },\n\n /**\n * Insert selection or markup before each matching selection\n *\n * @param {($|function|HTMLElement|string)} source\n * @param {boolean} [remove=false]\n * @returns {$}\n */\n before(source, remove) {\n W.$before(this, source, remove);\n\n return this;\n },\n\n /**\n * Get unique direct children of each matching selection\n *\n * @param filter\n * @returns {$}\n */\n children(filter) {\n return $(W.$children(this, filter));\n },\n\n /**\n * Clone each matching selection\n *\n * @returns {$}\n */\n clone() {\n return $(W.$clone(this));\n },\n\n /**\n * Get unique closest ancestors of each matching selection\n *\n * @param filter\n * @param context\n * @returns {$}\n */\n closest(filter, context) {\n return $(W.$closest(this, filter, context));\n },\n\n /**\n * Determine if any matching parent selection contains descendant selection\n *\n * @param descendant\n * @returns {boolean}\n */\n contains(descendant) {\n return W.$contains(this, descendant);\n },\n\n /**\n * Get unique content of each matching selection\n *\n * @returns {$}\n */\n contents() {\n return $(W.$contents(this));\n },\n\n /**\n * Get CSS value of first matching selection or set value\n * of each matching selection\n *\n * @param {(Object|string)} a\n * @param {(function|string)} [b]\n * @returns {($|string)}\n */\n css(a, b) {\n const r = W.$css(this, a, b);\n\n return b !== U || $isObject(a) ? this : r;\n },\n\n /**\n * Get data of first matching selection or set data\n * of each matching selection\n *\n * @param a\n * @param [b]\n * @returns {($|string)}\n */\n data(a, b) {\n const resp = W.$data(this, a, b);\n\n return b !== U || $isObject(a) ? this : resp;\n },\n\n /**\n * Remove child nodes from each matching selection\n *\n * @returns {$}\n */\n empty() {\n W.$empty(this);\n\n return this;\n },\n\n /**\n * Get indexed node of matching selection\n *\n * @param index\n * @param {($|HTMLElement|string)} [context=document]\n * @returns {$}\n */\n eq(index, context) {\n return $(W.$eq(this, index, context));\n },\n\n /**\n * Return a filtered subset of elements from a matching selection\n *\n * @param filter\n * @param [options]\n * @returns {$}\n */\n filter(filter, options) {\n return $(W.$filter(this, filter, options));\n },\n\n /**\n * Get unique filtered descendants from each matching selection\n *\n * @param filter\n * @returns {$}\n */\n find(filter) {\n return $(W.$find(this, filter));\n },\n\n /**\n * Get the first element of a matching selection\n *\n * @returns {$}\n */\n first() {\n return this.eq(0);\n },\n\n /**\n * Return node from Wee object at specific index\n *\n * @returns {HTMLElement}\n */\n get(index) {\n return W.$eq(this, index);\n },\n\n /**\n * Determine if the matching selection has a class\n *\n * @param className\n * @returns {boolean}\n */\n hasClass(className) {\n return W.$hasClass(this, className);\n },\n\n /**\n * Hide each matching selection\n *\n * @returns {$}\n */\n hide() {\n W.$hide(this);\n\n return this;\n },\n\n /**\n * Get inner HTML of first selection or set each matching selection's HTML\n *\n * @param {(function|string)} value\n * @returns {($|string)}\n */\n html(value) {\n const r = W.$html(this, value);\n\n return value !== U ? this : r;\n },\n\n /**\n * Get the zero-based index of a matching selection relative\n * to it's siblings\n *\n * @returns {number}\n */\n index() {\n return W.$index(this);\n },\n\n /**\n * Insert each matching source selection element after\n * each matching target selection\n *\n * @param {($|HTMLElement|string)} target\n * @returns {$}\n */\n insertAfter(target) {\n W.$insertAfter(this, target);\n\n return this;\n },\n\n /**\n * Insert each matching source selection element before\n * each matching target selection\n *\n * @param {($|HTMLElement|string)} target\n * @returns {$}\n */\n insertBefore(target) {\n W.$insertBefore(this, target);\n\n return this;\n },\n\n /**\n * Get or set the height of each matching selection\n *\n * @param {(function|number|string)} value\n * @returns {($|number)}\n */\n height(value) {\n const r = W.$height(this, value);\n\n return value === U || value === true ? r : this;\n },\n\n /**\n * Determine if at least one matching selection matches\n * a specified criteria\n *\n * @param filter\n * @param [options]\n * @returns {boolean}\n */\n is(filter, options) {\n return W.$is(this, filter, options);\n },\n\n /**\n * Get the last element of a matching selection\n *\n * @param {($|HTMLElement|string)} [context=document]\n * @returns {$}\n */\n last(context) {\n return $(W.$last(this, context));\n },\n\n /**\n * Get the unique next sibling of each matching selection\n *\n * @param filter\n * @param {Object} [options]\n * @returns {$}\n */\n next(filter, options) {\n return $(W.$next(this, filter, options));\n },\n\n /**\n * Returns elements not matching the filtered selection\n *\n * @param filter\n * @param {Object} [options]\n * @returns {$}\n */\n not(filter, options) {\n return $(W.$not(this, filter, options));\n },\n\n /**\n * Get the offset position of a matching selection relative to the document\n *\n * @param {(function|number)} value\n * @returns {number}\n */\n offset(value) {\n return W.$offset(this, value);\n },\n\n /**\n * Get unique parent from each matching selection\n *\n * @returns {$}\n */\n parent(filter) {\n return $(W.$parent(this, filter));\n },\n\n /**\n * Get unique ancestors of each matching selection\n *\n * @param filter\n * @returns {$}\n */\n parents(filter) {\n return $(W.$parents(this, filter));\n },\n\n /**\n * Get the position of the first matching selection relative\n * to its offset parent\n *\n * @returns {{top, left}}\n */\n position() {\n return W.$position(this);\n },\n\n /**\n * Prepend selection or markup before each matching selection\n *\n * @param {($|function|HTMLElement|string)} source\n * @returns {$}\n */\n prepend(source) {\n W.$prepend(this, source);\n\n return this;\n },\n\n prependTo(target) {\n W.$prepend(target, this.reverse());\n\n return this;\n },\n\n /**\n * Get the unique previous sibling of each matching selection\n *\n * @param filter\n * @param {Object} [options]\n * @returns {$}\n */\n prev(filter, options) {\n return $(W.$prev(this, filter, options));\n },\n\n /**\n * Get property of first matching selection or set property of\n * each matching selection\n *\n * @param a\n * @param b\n * @returns {($|string)}\n */\n prop(a, b) {\n const r = W.$prop(this, a, b);\n\n return b !== U || $isObject(a) ? this : r;\n },\n\n /**\n * Remove each matching selection from the document\n *\n * @returns {$}\n * @param {($|HTMLElement|string)} [context=document]\n */\n remove(context) {\n W.$remove(this, context);\n\n return this;\n },\n\n /**\n * Remove specified attribute of each matching selection\n *\n * @param {string} name\n * @returns {$}\n */\n removeAttr(name) {\n W.$removeAttr(this, name);\n\n return this;\n },\n\n /**\n * Remove classes from each matching selection\n *\n * @param {(function|string)} value\n * @returns {$}\n */\n removeClass(value) {\n W.$removeClass(this, value);\n\n return this;\n },\n\n /**\n * Remove specified style property of each matching selection\n *\n * @param {string} name\n * @returns {$}\n */\n removeStyle(name) {\n W.$removeStyle(this, name);\n\n return this;\n },\n\n /**\n * Replace each matching selection with selection or markup\n *\n * @param {($|HTMLElement|string)} source\n * @returns {$}\n */\n replaceWith(source) {\n W.$replaceWith(this, source);\n\n return this;\n },\n\n /**\n * Get or set the X scroll position of each matching selection\n *\n * @param value\n * @returns {($|number)}\n */\n scrollLeft(value) {\n const r = W.$scrollLeft(this, value);\n\n return value === U || value === true ? r : this;\n },\n\n /**\n * Get or set the Y scroll position of each matching selection\n *\n * @param value\n * @returns {($|number)}\n */\n scrollTop(value) {\n const r = W.$scrollTop(this, value);\n\n return value === U || value === true ? r : this;\n },\n\n /**\n * Serialize input values from first matching form selection\n *\n * @param {boolean} json\n * @returns {string}\n */\n serialize(json) {\n return W.$serializeForm(this, json);\n },\n\n /**\n * Show each matching selection\n *\n * @returns {$}\n */\n show() {\n W.$show(this);\n\n return this;\n },\n\n /**\n * Get unique siblings of each matching selection\n *\n * @param filter\n * @returns {$}\n */\n siblings(filter) {\n return $(W.$siblings(this, filter));\n },\n\n /**\n * Get subset of selection matches from specified range\n *\n * @param start\n * @param end\n * @returns {$}\n */\n slice(start, end) {\n return $(W.$slice(this, start, end));\n },\n\n /**\n * Get inner text of first selection or set each matching selection's text\n *\n * @param {(function|string)} value\n * @returns {($|string)}\n */\n text(value) {\n const r = W.$text(this, value);\n return value !== U ? this : r;\n },\n\n /**\n * Toggle the display of each matching selection\n *\n * @returns {$}\n */\n toggle() {\n W.$toggle(this);\n\n return this;\n },\n\n /**\n * Toggle adding and removing class(es) from the specified element\n *\n * @param {(function|string)} className\n * @param {boolean} [state]\n * @returns {$}\n */\n toggleClass(className, state) {\n W.$toggleClass(this, className, state);\n\n return this;\n },\n\n /**\n * Get value of first matching selection or set values of\n * each matching selection\n *\n * @param {(function|string)} value\n * @returns {($|string)}\n */\n val(value) {\n const r = W.$val(this, value);\n\n return value !== U ? this : r;\n },\n\n /**\n * Get or set the width of each matching selection\n *\n * @param {(function|number|string)} value\n * @returns {($|number)}\n */\n width(value) {\n const r = W.$width(this, value);\n\n return value === U || value === true ? r : this;\n },\n\n /**\n * Wrap markup around each matching selection\n *\n * @param {(function|string)} html\n * @returns {$}\n */\n wrap(html) {\n W.$wrap(this, html);\n\n return this;\n },\n\n /**\n * Wrap markup around the content of each matching selection\n *\n * @param {(function|string)} html\n * @returns {$}\n */\n wrapInner(html) {\n W.$wrapInner(this, html);\n\n return this;\n },\n});\n\nexport default $;\n","import { $exec } from 'core/core';\nimport { $toArray } from 'core/types';\nimport { _win, _html } from 'core/variables';\n\nlet events = [];\nlet id = 0;\nlet bound;\nlet current;\n\n/**\n * Bind individual rule\n *\n * @private\n * @param {Object} conf - breakpoint rules\n * @param {Array} [conf.args] - callback arguments\n * @param {Function} conf.callback\n * @param {boolean} [conf.each=false] - execute for each matching breakpoint\n * @param {boolean} [conf.init=true] - check event on load\n * @param {number} [conf.max] - maximum breakpoint value\n * @param {number} [conf.min] - minimum breakpoint value\n * @param {boolean} [conf.once=false] - only execute the callback once\n * @param {Object} [conf.scope] - callback scope\n * @param {number} [conf.size] - specific breakpoint value\n * @param {boolean} [conf.watch=true] - check event on screen resize\n * @param {string} [conf.namespace] - namespace the event\n */\nfunction _addRule(conf) {\n // Attach unique identifier\n conf.i = id++;\n\n // Only setup watching when enabled\n if (conf.watch !== false) {\n events.push(conf);\n\n // Only attach event once\n if (! bound) {\n const run = _run.bind(this, false, 0, null);\n bound = 1;\n events = [conf];\n\n // Attach resize event\n _win.addEventListener('resize', run);\n }\n }\n\n // Evaluate rule immediately if not disabled\n if (conf.init !== false) {\n _run(true, [conf]);\n }\n}\n\n/**\n * Compare event rules against current size\n *\n * @private\n * @param {Object} evt\n * @param {number} size\n * @param {boolean} init\n * @returns {boolean}\n */\nfunction _eq(evt, size, init) {\n const sz = evt.size;\n const mn = evt.min;\n const mx = evt.max;\n const ex = evt.each || init;\n\n // Check match against rules\n return (! sz && ! mn && ! mx) ||\n (sz && sz === size) ||\n (mn && size >= mn && (ex || current < mn) && (! mx || size <= mx)) ||\n (mx && size <= mx && (ex || current > mx) && (! mn || size >= mn));\n}\n\n/**\n * Check mapped rules for matching conditions\n *\n * @private\n * @param {boolean} [init=false] - initial page load\n * @param {Array} [rules] - breakpoint rules\n * @param {string} [namespace] - namespace for map object\n */\nfunction _run(init, rules, namespace) {\n const size = _size();\n let evts = rules || events;\n let\ti;\n\n // If breakpoint has been hit or resize logic initialized\n if (size && (init || size !== current)) {\n if (namespace) {\n evts = evts.filter(obj => obj.namespace === namespace);\n }\n\n i = evts.length;\n\n while (i--) {\n const evt = evts[i];\n\n if (_eq(evt, size, init)) {\n const f = init && ! current;\n const data = {\n dir: f ? 0 : (size > current ? 1 : -1),\n init: f,\n prev: current,\n size,\n };\n\n $exec(evt.callback, {\n args: evt.args ? [data].concat(evt.args) : [data],\n scope: evt.scope,\n });\n\n // Disable future execution if once\n if (evt.once) {\n events = events.filter(obj => obj.i !== evt.i);\n }\n }\n }\n\n // Cache current value\n current = size;\n }\n}\n\nfunction _size() {\n return parseFloat(getComputedStyle(_html, null)\n .getPropertyValue('font-family')\n .replace(/[^0-9\\.]+/g, ''));\n}\n\nconst screenModule = {\n /**\n * Retrieve bound mappings\n *\n * @param {string} namespace\n * @returns {*}\n */\n bound(namespace) {\n if (! namespace) {\n return events;\n }\n\n return events.filter(obj => obj.namespace === namespace);\n },\n\n /**\n * Get current breakpoint value\n *\n * @returns {number} size\n */\n size() {\n return _size();\n },\n\n /**\n * Map conditional events to breakpoint values\n *\n * @param {(Array|Object)} rules - breakpoint rules\n * @param {Array} [rules.args] - callback arguments\n * @param {Function} rules.callback\n * @param {boolean} [rules.each=false] - execute for each matching breakpoint\n * @param {boolean} [rules.init=true] - check event on load\n * @param {number} [rules.max] - maximum breakpoint value\n * @param {number} [rules.min] - minimum breakpoint value\n * @param {string} [rules.namespace] - namespace the event\n * @param {boolean} [rules.once=false] - only execute the callback once\n * @param {Object} [rules.scope] - callback scope\n * @param {number} [rules.size] - specific breakpoint value\n * @param {boolean} [rules.watch=true] - check event on screen resize\n */\n map(rules) {\n const sets = $toArray(rules);\n let i = sets.length;\n\n while (i--) {\n _addRule(sets[i]);\n }\n },\n\n /**\n * Evaluate the current breakpoint\n */\n run(namespace) {\n _run(true, null, namespace);\n },\n\n /**\n * Remove events from bound rules\n *\n * @param {string} [namespace] - remove screen events in this namespace\n */\n reset(namespace) {\n events = events.filter((obj) => {\n if (namespace) {\n return obj.namespace !== namespace;\n }\n\n return false;\n });\n },\n};\n\nexport const resetScreen = screenModule.reset;\n\nexport default screenModule;\n","function _getPrototypeOf(t) {\n return (module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {\n return t.__proto__ || Object.getPrototypeOf(t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _getPrototypeOf(t);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","exports.nextTick = function nextTick(fn) {\n var args = Array.prototype.slice.call(arguments);\n args.shift();\n setTimeout(function () {\n fn.apply(null, args);\n }, 0);\n};\n\nexports.platform = exports.arch = \nexports.execPath = exports.title = 'browser';\nexports.pid = 1;\nexports.browser = true;\nexports.env = {};\nexports.argv = [];\n\nexports.binding = function (name) {\n\tthrow new Error('No such module. (Possibly not yet loaded)')\n};\n\n(function () {\n var cwd = '/';\n var path;\n exports.cwd = function () { return cwd };\n exports.chdir = function (dir) {\n if (!path) path = require('path');\n cwd = path.resolve(dir, cwd);\n };\n})();\n\nexports.exit = exports.kill = \nexports.umask = exports.dlopen = \nexports.uptime = exports.memoryUsage = \nexports.uvCounters = function() {};\nexports.features = {};\n","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(t, e) {\n return (module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _setPrototypeOf(t, e);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\nfunction _possibleConstructorReturn(t, e) {\n if (e && (\"object\" == _typeof(e) || \"function\" == typeof e)) return e;\n if (void 0 !== e) throw new TypeError(\"Derived constructors may only return object or undefined\");\n return assertThisInitialized(t);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n try {\n var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n } catch (t) {}\n return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {\n return !!t;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","!function(){\"use strict\";if(\"undefined\"!=typeof window){var t=window.navigator.userAgent.match(/Edge\\/(\\d{2})\\./),e=t?parseInt(t[1],10):null,n=!!e&&(16<=e&&e<=18);if(!(\"objectFit\"in document.documentElement.style!=!1)||n){var o=function(t,e,i){var n,o,l,a,d;if((i=i.split(\" \")).length<2&&(i[1]=i[0]),\"x\"===t)n=i[0],o=i[1],l=\"left\",a=\"right\",d=e.clientWidth;else{if(\"y\"!==t)return;n=i[1],o=i[0],l=\"top\",a=\"bottom\",d=e.clientHeight}if(n!==l&&o!==l){if(n!==a&&o!==a)return\"center\"===n||\"50%\"===n?(e.style[l]=\"50%\",void(e.style[\"margin-\"+l]=d/-2+\"px\")):void(0<=n.indexOf(\"%\")?(n=parseInt(n,10))<50?(e.style[l]=n+\"%\",e.style[\"margin-\"+l]=d*(n/-100)+\"px\"):(n=100-n,e.style[a]=n+\"%\",e.style[\"margin-\"+a]=d*(n/-100)+\"px\"):e.style[l]=n);e.style[a]=\"0\"}else e.style[l]=\"0\"},l=function(t){var e=t.dataset?t.dataset.objectFit:t.getAttribute(\"data-object-fit\"),i=t.dataset?t.dataset.objectPosition:t.getAttribute(\"data-object-position\");e=e||\"cover\",i=i||\"50% 50%\";var n=t.parentNode;return function(t){var e=window.getComputedStyle(t,null),i=e.getPropertyValue(\"position\"),n=e.getPropertyValue(\"overflow\"),o=e.getPropertyValue(\"display\");i&&\"static\"!==i||(t.style.position=\"relative\"),\"hidden\"!==n&&(t.style.overflow=\"hidden\"),o&&\"inline\"!==o||(t.style.display=\"block\"),0===t.clientHeight&&(t.style.height=\"100%\"),-1===t.className.indexOf(\"object-fit-polyfill\")&&(t.className=t.className+\" object-fit-polyfill\")}(n),function(t){var e=window.getComputedStyle(t,null),i={\"max-width\":\"none\",\"max-height\":\"none\",\"min-width\":\"0px\",\"min-height\":\"0px\",top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\",\"margin-top\":\"0px\",\"margin-right\":\"0px\",\"margin-bottom\":\"0px\",\"margin-left\":\"0px\"};for(var n in i)e.getPropertyValue(n)!==i[n]&&(t.style[n]=i[n])}(t),t.style.position=\"absolute\",t.style.width=\"auto\",t.style.height=\"auto\",\"scale-down\"===e&&(e=t.clientWidthn.clientWidth||\"contain\"===e&&t.clientWidth= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(t) {\n var r = \"function\" == typeof Map ? new Map() : void 0;\n return (module.exports = _wrapNativeSuper = function _wrapNativeSuper(t) {\n if (null === t || !isNativeFunction(t)) return t;\n if (\"function\" != typeof t) throw new TypeError(\"Super expression must either be null or a function\");\n if (void 0 !== r) {\n if (r.has(t)) return r.get(t);\n r.set(t, Wrapper);\n }\n function Wrapper() {\n return construct(t, arguments, getPrototypeOf(this).constructor);\n }\n return Wrapper.prototype = Object.create(t.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: !1,\n writable: !0,\n configurable: !0\n }\n }), setPrototypeOf(Wrapper, t);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _wrapNativeSuper(t);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { _extend, _slice, $isFunction, $toArray, $type } from './types';\n\nexport const isBrowser = typeof window === 'object';\n\nlet env;\n\n/**\n * Get value from function or directly\n *\n * @private\n * @param {*} val\n * @param {Object} [options]\n * @returns {*}\n */\nfunction _val(val, options) {\n return $isFunction(val) ?\n $exec(val, options) :\n val;\n}\n\n/**\n * Get current environment or set current environment against\n * specified Object\n *\n * @param {Object} [rules]\n * @param {string} [fallback=local]\n * @returns {string} environment\n */\nexport function $env(rules, fallback = 'local') {\n if (rules) {\n const host = location.hostname;\n\n for (const rule in rules) {\n const val = rules[rule];\n\n if (val == host || _val(val, {\n args: host,\n }) === true) {\n env = rule;\n break;\n }\n }\n\n if (! env) {\n env = fallback;\n }\n }\n\n return env || fallback;\n}\n\n/**\n * Determine if the current environment is SSL encrypted\n *\n * @returns {boolean} secure\n */\nexport function $envSecure() {\n return location.protocol == 'https:';\n}\n\n/**\n * Reset env variable - used for testing\n */\nexport function $envReset() {\n env = undefined;\n}\n\n/**\n * Execute specified function or Array of functions\n *\n * @param {Array|function} fn\n * @param {Object} [options]\n * @param {Array} [options.args]\n * @param {Object} [options.scope]\n * @returns {*} [response]\n */\nexport function $exec(fn, options = {}) {\n let fns = $toArray(fn),\n len = fns.length,\n i = 0,\n response;\n\n for (; i < len; i++) {\n const conf = _extend({\n args: [],\n }, options);\n\n response = fns[i].apply(\n conf.scope,\n $toArray(conf.args),\n );\n\n if (len === 1) {\n return response;\n }\n }\n}\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","var isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nfunction _construct(t, e, r) {\n if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);\n var o = [null];\n o.push.apply(o, e);\n var p = new (t.bind.apply(t, o))();\n return r && setPrototypeOf(p, r.prototype), p;\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.5+7f2b526d\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n TRY_CATCH_ERROR.error = error;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === TRY_CATCH_ERROR) {\n reject(promise, TRY_CATCH_ERROR.error);\n TRY_CATCH_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = void 0,\n failed = void 0;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","import { _slice, $copy, $toArray } from './types';\nimport { $sel, $each, $map } from './dom';\n\n/**\n * Cast selection as Wee object\n *\n * @private\n * @param {($|HTMLElement|string)} sel\n * @param {($|HTMLElement|string)} [context=document]\n */\nconst Get = function (sel, context) {\n if (sel) {\n let els = Array.isArray(sel) ?\n sel :\n $toArray($sel(sel, context)),\n i = 0;\n\n for (; i < els.length; i++) {\n const el = els[i];\n\n if (el) {\n [].push.call(this, el);\n }\n }\n\n this.sel = sel;\n }\n};\n\n/**\n * Create chainable Wee Object from selection\n *\n * @param {(HTMLElement|string)} sel\n * @param {Object} [context=document]\n */\nexport function $(sel, context) {\n return new Get(sel, context);\n}\n\n// Bind core chainable methods\n$.fn = Get.prototype = {\n _$: true,\n length: 0,\n\n /**\n * Execute function for each Object element\n *\n * @param {Function} fn\n * @param {Object} [options]\n * @param {Array} [options.args]\n * @param {HTMLElement} [options.context=document]\n * @param {boolean} [options.reverse=false]\n * @param {Array} [options.scope]\n */\n each(fn, options) {\n $each(this, fn, options);\n\n return this;\n },\n\n /**\n * Translate Object elements to a new array\n *\n * @param {Function} fn\n * @param {Object} [options]\n * @param {Array} [options.args]\n * @param {Object} [options.scope]\n * @returns {Array}\n */\n map(fn, options) {\n return $map(this, fn, options);\n },\n\n /**\n * Reverse the order of Object elements\n *\n * @returns {$}\n */\n reverse() {\n let copy = $copy(this),\n x = this.length,\n total = x,\n i = 0;\n\n for (; i < total; i++) {\n x--;\n this[i] = copy[x];\n }\n\n return this;\n },\n\n /**\n * Convert selection to standard array\n */\n toArray() {\n return _slice.call(this);\n },\n};\n\n/**\n * Register a new chainable method\n *\n * @param {(Object|string)} a - method name or Object\n * @param {Function} [b]\n */\nexport function $chain(a, b) {\n if (typeof a === 'string') {\n $.fn[a] = b;\n } else {\n for (const key in a) {\n $.fn[key] = a[key];\n }\n }\n}\n","import { parseLocation } from 'routes/location';\n\n/**\n * Retrieve information about current location or provided URL\n *\n * @param {string} [value]\n * @returns {Object}\n */\nexport function uri(value) {\n return parseLocation(value);\n}\n\n/**\n * Retrieve the current path's segments as an array or segment by index\n *\n * @param index\n * @returns {Array|string}\n */\nexport function segments(index) {\n const segments = uri().segments;\n\n if (index >= 0 && segments[index]) {\n return segments[index];\n }\n\n return segments;\n}\n\nexport default {\n uri,\n segments,\n};\n","export const _slice = [].slice;\n\n/**\n * Compare two arrays for equality\n *\n * @private\n * @param {Array} a\n * @param {Array} b\n * @returns {boolean}\n */\nfunction _arrEquals(a, b) {\n return a.length == b.length &&\n a.every((el, i) => _equals(el, b[i]));\n}\n\n/**\n * Cast string to most applicable data type\n *\n * @protected\n * @param {*} val\n */\nexport function _castString(val) {\n if (typeof val === 'string') {\n try {\n val = val === 'true' ? true :\n val === 'false' ? false :\n val === 'null' ? null :\n parseInt(val).toString() === val ? parseInt(val) :\n /^(?:\\{[\\w\\W]*}|\\[[\\w\\W]*])$/.test(val) ? JSON.parse(val) :\n val;\n } catch (e) {}\n }\n\n return val;\n}\n\n/**\n * Clone value to a new instance\n *\n * @private\n * @param {*} val\n * @returns {*}\n */\nfunction _copy(val) {\n const type = $type(val);\n\n if (type == 'object') {\n val = _extend({}, val, true);\n } else if (type == 'array') {\n val = val.slice(0);\n }\n\n return val;\n}\n\n/**\n * Compare two values for equality\n *\n * @private\n * @param {*} a\n * @param {*} b\n * @returns {boolean}\n */\nfunction _equals(a, b) {\n if (a === b) {\n return true;\n }\n\n const aType = $type(a);\n\n if (aType != $type(b)) {\n return false;\n }\n\n if (aType == 'array') {\n return _arrEquals(a, b);\n }\n\n if (aType == 'object') {\n return _objEquals(a, b);\n }\n\n if (aType == 'date') {\n return +a == +b;\n }\n\n return false;\n}\n\n/**\n * Extend target object with source object(s)\n *\n * @private\n * @param {Object} target\n * @param {Object} object\n * @param {boolean} [deep=false]\n * @param {Array} [_set=[]]\n * @returns {Object}\n */\nexport function _extend(target, object, deep, _set = []) {\n if (! object) {\n return target;\n }\n\n for (const key in object) {\n let src = object[key],\n type = $type(src);\n\n if (deep && type == 'object') {\n let len = _set.length,\n i = 0,\n val;\n\n for (; i < len; i++) {\n if (_set[i] === src) {\n val = src;\n break;\n }\n }\n\n if (val) {\n target[key] = val;\n } else {\n _set.push(src);\n target[key] = _extend(target[key] || {}, src, deep, _set);\n }\n } else if (src !== undefined) {\n target[key] = type == 'array' ? src.slice(0) : src;\n }\n }\n\n return target;\n}\n\n/**\n * Compare two objects for equality\n *\n * @private\n * @param {Object} a\n * @param {Object} b\n * @returns {boolean}\n */\nfunction _objEquals(a, b) {\n const aKeys = Object.keys(a);\n\n return _arrEquals(aKeys.sort(), Object.keys(b).sort()) &&\n aKeys.every(i => _equals(a[i], b[i]));\n}\n\n/**\n * Clone value to a new instance\n *\n * @private\n * @param {*} val\n * @returns {*}\n */\nexport function $copy(val) {\n return _copy(val);\n}\n\n/**\n * Compare two values for strict equality\n *\n * @param {*} a\n * @param {*} b\n * @returns {boolean}\n */\nexport function $equals(a, b) {\n return _equals(a, b);\n}\n\n/**\n * Extend target object with source object(s)\n *\n * @param {(boolean|Object)} deep - extend nested properties else target object\n * @param {Object} [obj] - target object\n * @param {...Object} [obj] - merged objects\n * @returns {Object}\n */\nexport function $extend(deep) {\n let bool = typeof deep === 'boolean',\n args = _slice.call(arguments).slice(bool ? 1 : 0),\n target = args[0] || {};\n deep = bool ? deep : false;\n\n args.slice(1).forEach((source) => {\n target = _extend(target, source, deep);\n });\n\n return target;\n}\n\n/**\n * Determine if value is an array\n *\n * @param {*} obj\n * @returns {boolean}\n */\nexport function $isArray(obj) {\n return Array.isArray(obj);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nexport function $isArrayBuffer(val) {\n return $type(val) === 'arraybuffer';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nexport function $isArrayBufferView(val) {\n let result;\n\n // IE10 support and up\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n }\n\n return result;\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nexport function $isBlob(val) {\n return $type(val) === 'blob';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nexport function $isDate(val) {\n return $type(val) === 'date';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nexport function $isFile(val) {\n return $type(val) === 'file';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nexport function $isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if value is a function\n *\n * @param {*} obj\n * @returns {boolean}\n */\nexport function $isFunction(obj) {\n return $type(obj) === 'function';\n}\n\n/**\n * Determine if value is a number (optional loose match)\n *\n * @param {*} obj\n * @param {boolean} [strict]\n * @returns {boolean}\n */\nexport function $isNumber(obj, strict = true) {\n if (! strict) {\n if (! obj.match(/^\\d*\\.?\\d*$/g)) {\n return false;\n }\n\n const value = parseFloat(obj);\n\n // If value = NaN, will not be equal\n return value === value;\n }\n\n return $type(obj) === 'number';\n}\n\n/**\n * Determine if value is an object\n *\n * @param {*} obj\n * @returns {boolean}\n */\nexport function $isObject(obj) {\n return $type(obj) === 'object';\n}\n\n/**\n * Determine if value is a string\n *\n * @param {*} obj\n * @returns {boolean}\n */\nexport function $isString(obj) {\n return typeof obj === 'string';\n}\n\n/**\n * Serialize object\n *\n * @param {Object} obj\n * @returns {string} value\n */\nexport function $serialize(obj) {\n const arr = [];\n\n Object.keys(obj || {}).forEach((key) => {\n const val = obj[key];\n key = encodeURIComponent(key);\n\n if (typeof val !== 'object') {\n arr.push(`${key}=${encodeURIComponent(val)}`);\n } else if (Array.isArray(val)) {\n val.forEach((el) => {\n arr.push(`${key}[]=${encodeURIComponent(el)}`);\n });\n }\n });\n\n return arr.length ? arr.join('&').replace(/%20/g, '+') : '';\n}\n\n/**\n * Cast value to array if it isn't one\n *\n * @param {*} val\n * @returns {Array} value\n */\nexport function $toArray(val) {\n return val !== undefined ? (Array.isArray(val) ? val : [val]) : [];\n}\n\n/**\n * Determine the JavaScript type of an object\n *\n * @param {*} obj\n * @returns string\n */\nexport function $type(obj) {\n return obj === undefined ? 'undefined' :\n Object.prototype.toString.call(obj)\n .replace(/^\\[object (.+)]$/, '$1')\n .toLowerCase();\n}\n\n/**\n * Convert serialized string back into an object\n *\n * @param {string} str\n * @returns {Object} value\n */\nexport function $unserialize(str) {\n const obj = {};\n\n decodeURIComponent(str)\n .replace(/^\\?/, '')\n .split('&').forEach((el) => {\n let split = el.split('='),\n key = split[0].replace('[]', ''),\n val = (split[1] || '').replace(/\\+/g, ' ') || '',\n isArrayProp = /\\[\\]/.test(split[0]);\n\n if (obj.hasOwnProperty(key)) {\n obj[key] = $toArray(obj[key]);\n obj[key].push(_castString(val));\n } else {\n obj[key] = isArrayProp ? [_castString(val)] : _castString(val);\n }\n });\n\n return obj;\n}\n","import 'es6-promise/auto';\nimport { _$, _body, _doc, _html, _win, U } from './variables';\nimport { $exec } from './core';\nimport { _extend, _slice, $toArray } from './types';\n\nlet range;\nlet refs = {};\n\n/**\n * Check if a node contains another node\n *\n * @private\n * @param {HTMLElement} source\n * @param {HTMLElement} target\n * @returns {boolean} match\n */\nfunction _contains(source, target) {\n return (source === _doc ? _html : source)\n .contains(target);\n}\n\n/**\n * Convert selection to Array\n *\n * @param {($|HTMLElement|string)} selector\n * @param {Object} [options]\n * @param {(HTMLElement|string)} [options.context=document]\n * @returns {($|Array)} nodes\n */\nexport function _selArray(selector, options) {\n if (selector && selector._$) {\n return selector;\n }\n\n options = options || {};\n\n let el = typeof selector == 'string' ?\n $sel(selector, options.context) :\n selector;\n\n return $toArray(el);\n}\n\n/**\n * Get matches to specified selector or return parsed HTML\n *\n * @param {($|HTMLElement|string)} selector\n * @param {($|HTMLElement|string)} [context=document]\n * @returns {Array} elements\n */\nexport function $sel(selector, context) {\n let el = null,\n ref = [];\n\n if (typeof selector !== 'string') {\n el = selector;\n } else {\n if (selector === 'window') {\n return [_win];\n }\n\n if (selector === 'document') {\n return [_doc];\n }\n\n // Return nothing if context doesn't exist\n context = context !== U ? $sel(context)[0] : _doc;\n\n if (!context) {\n return ref;\n }\n\n // Check for pre-cached elements\n if (selector.indexOf(':') === 0 || selector.indexOf('ref:') > -1) {\n let split = selector.split(',').filter(function (sel) {\n sel = sel.trim();\n\n if (sel.slice(0, 1) === ':') {\n sel = sel.slice(1);\n } else if (sel.slice(0, 4) === 'ref:') {\n sel = sel.slice(4);\n } else {\n return true;\n }\n\n sel = refs[sel];\n\n // Apply context filter if not document\n if (sel) {\n ref = ref.concat(\n context === _doc ?\n sel :\n sel.filter(function (el) {\n return _contains(context, el);\n })\n );\n }\n\n return false;\n });\n\n if (split.length) {\n selector = split.join(',');\n } else {\n return ref;\n }\n }\n\n // Use third-party selector engine if defined\n if (_win.WeeSelector !== U) {\n el = _win.WeeSelector(selector, context);\n } else if (/^[#.]?[\\w-]+$/.test(selector)) {\n let pre = selector[0];\n\n if (pre == '#') {\n el = _doc.getElementById(selector.substr(1));\n } else if (pre == '.') {\n el = context.getElementsByClassName(selector.substr(1));\n } else {\n el = context.getElementsByTagName(selector);\n }\n } else {\n try {\n el = context.querySelectorAll(selector);\n } catch (e) {\n el = $parseHTML(selector).childNodes;\n }\n }\n }\n\n if (!el) {\n el = ref;\n } else if (el.nodeType !== U || el === _win) {\n el = [el];\n } else {\n el = _slice.call(el);\n }\n\n // Join references if available\n return ref.length ? el.concat(ref) : el;\n}\n\n/**\n * Execute function for each matching selection\n *\n * @param {($|Array|HTMLElement|string)} target\n * @param {Function} fn\n * @param {Object} [options]\n * @param {Array} [options.args]\n * @param {($|HTMLElement|string)} [options.context=document]\n * @param {boolean} [options.reverse=false]\n * @param {Object} [options.scope]\n */\nexport function $each(target, fn, options) {\n if (target) {\n let conf = _extend({\n args: []\n }, options),\n els = _selArray(target, conf),\n i = 0;\n\n if (conf.reverse && !els._$) {\n els = els.reverse();\n }\n\n for (; i < els.length; i++) {\n let el = els[i],\n val = $exec(fn, {\n args: [el, i].concat(conf.args),\n scope: conf.scope || el\n });\n\n if (val === false) {\n return;\n }\n }\n }\n}\n\n/**\n * Translate items in an array or selection to new Array\n *\n * @param {($|Array|HTMLElement|string)} target - array or selector\n * @param {Function} fn\n * @param {Object} [options]\n * @param {Array} [options.args]\n * @param {Object} [options.scope]\n * @returns {Array}\n */\nexport function $map(target, fn, options) {\n if (!Array.isArray(target)) {\n target = _selArray(target, options);\n }\n\n let conf = _extend({\n args: []\n }, options),\n res = [],\n i = 0;\n\n for (; i < target.length; i++) {\n let el = target[i],\n val = $exec(fn, {\n args: [el, i].concat(conf.args),\n scope: conf.scope || el\n });\n\n if (val !== false) {\n res.push(val);\n }\n }\n\n return res;\n}\n\n/**\n * Create document fragment from an HTML string\n *\n * @param {string} html\n * @returns {HTMLElement} element\n */\nexport function $parseHTML(html) {\n html = html.trim();\n\n if (!range) {\n range = _doc.createRange();\n range.selectNode(_body);\n }\n\n return range.createContextualFragment(html);\n}\n\n/**\n * Execute specified function when document is ready\n *\n * @param {(Array|function|string)} fn\n */\n/**\n* Execute specified function when document is ready\n*\n* @param {(Array|function|string)} fn\n*/\nexport function $ready() {\n return new Promise((resolve) => {\n let doc = _doc;\n\n // This is for testing only\n if (this && this.readyState) {\n doc = this;\n }\n\n if (doc.readyState === 'complete') {\n resolve();\n } else {\n doc.addEventListener('DOMContentLoaded', () => {\n resolve();\n });\n }\n });\n}\n\n/**\n * Add ref elements to datastore\n *\n * @param {(HTMLElement|string)} [context=document]\n */\nexport function $setRef(context) {\n context = context ? $sel(context)[0] : _doc;\n\n // Clear existing refs if reset\n Object.keys(refs).forEach(function (val) {\n refs[val] = refs[val].filter(function (el) {\n return !(\n !_contains(_doc, el) ||\n (_contains(context, el) && context !== el)\n );\n });\n });\n\n // Set refs from DOM\n $each('[data-ref]', function (el) {\n el.getAttribute('data-ref').split(/\\s+/)\n .forEach(function (val) {\n refs[val] = refs[val] || [];\n refs[val].push(el);\n });\n }, {\n context: context\n });\n}\n\n/**\n * Create new Array with only unique values from source Array\n *\n * @param {Array} array\n * @returns {Array} unique values\n */\nexport function $unique(array) {\n return array.reverse().filter((el, i, arr) => {\n return arr.indexOf(el, i + 1) < 0;\n }).reverse();\n}\n","function _isNativeFunction(t) {\n try {\n return -1 !== Function.toString.call(t).indexOf(\"[native code]\");\n } catch (n) {\n return \"function\" == typeof t;\n }\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","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","function asyncGeneratorStep(n, t, e, r, o, a, c) {\n try {\n var i = n[a](c),\n u = i.value;\n } catch (n) {\n return void e(n);\n }\n i.done ? t(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n return function () {\n var t = this,\n e = arguments;\n return new Promise(function (r, o) {\n var a = n.apply(t, e);\n function _next(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n);\n }\n function _throw(n) {\n asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n);\n }\n _next(void 0);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;"],"sourceRoot":""}