{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/mithril/index.js","webpack:///./node_modules/oj-utils/dist/index.js","webpack:///./node_modules/mithril/pathname/parse.js","webpack:///./src/ts/components/Carousel/Carousel.tsx","webpack:///./node_modules/embla-carousel/embla-carousel.esm.js","webpack:///./src/ts/utils.ts","webpack:///./node_modules/mithril/render/hyperscript.js","webpack:///./node_modules/mithril/render/hyperscriptVnode.js","webpack:///./node_modules/mithril-tsx-component/index.js","webpack:///./node_modules/mithril/promise/promise.js","webpack:///./node_modules/mithril/promise/polyfill.js","webpack:///./node_modules/mithril/render.js","webpack:///./node_modules/mithril/querystring/build.js","webpack:///./node_modules/mithril/util/assign.js","webpack:///./node_modules/mithril/querystring/parse.js","webpack:///./node_modules/mithril/util/censor.js","webpack:///./src/ts/entries/productGridSlider.tsx","webpack:///./node_modules/mithril/render/vnode.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/mithril/hyperscript.js","webpack:///./node_modules/mithril/render/trust.js","webpack:///./node_modules/mithril/render/fragment.js","webpack:///./node_modules/mithril/request.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/mithril/render/render.js","webpack:///./node_modules/mithril/api/mount-redraw.js","webpack:///./node_modules/mithril/request/request.js","webpack:///./node_modules/mithril/route.js","webpack:///./node_modules/mithril/api/router.js","webpack:///./node_modules/mithril/pathname/compileTemplate.js","webpack:///./node_modules/oj-dom-utils/dist/index.js","webpack:///./node_modules/mithril/util/hasOwn.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/mithril/mount-redraw.js","webpack:///./node_modules/mithril/pathname/build.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","hyperscript","request","mountRedraw","apply","this","arguments","trust","fragment","Fragment","mount","route","render","redraw","jsonp","parseQueryString","buildQueryString","parsePathname","buildPathname","vnode","PromisePolyfill","censor","__assign","assign","length","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","pop","push","_this","getDynamicObj","getDynamicVal","imageUrlToB64","fileToB64","base64toBlob","getImageTypeFromB64","createImage","isIE","formatPrice","formatSize","clone","removeIfExists","createToggle","chunk","memoize","throttle","debounce","exec","diff","increment","repeatMap","arrToObj","objToArr","groupArr","groupObj","mapObj","reduceObj","filterObj","findObjKey","generateHashFromString","uniqueArray","pipe","getDpi","pxToMm","mmToPx","UUID","pause","cleanString","clamp","mapRange","randomList","randomDec","randomInt","min","max","Math","floor","random","list","source","target","x","_i","filter","map","trim","join","ms","_a","timeout","setTimeout","clearTimeout","Date","now","window","performance","replace","toString","mm","dpi","px","fn","arr","Array","from","Set","str","split","reduce","charCodeAt","obj","cb","k","ref","_b","gr","concat","copy","times","reset","last","curr","args","undefined","threshold","head","tail","hashFn","cache","hash","JSON","stringify","chunks","chunk_1","on","off","toggle","findIndex","splice","parse","bytes","log","size","pow","round","price","decimal","format","pre","dot","post","cents","padEnd","test","navigator","userAgent","indexOf","src","res","rej","img","Image","crossOrigin","onload","onerror","err","match","base64Data","contentType","byteCharacters","atob","bytesLength","slicesCount","ceil","byteArrays","begin","end","offset","i_1","Uint8Array","Blob","type","file","reader","FileReader","readAsDataURL","url","fetch","blob","fromEntries","entries","queryIndex","hashIndex","queryEnd","pathEnd","path","slice","params","view","canScrollPrev","attrs","navigation","embla","canScrollNext","className","children","CarouselNav","scrollPrev","scrollNext","oncreate","wrap","dom","viewPort","querySelector","align","containScroll","emblaOptions","forEach","disabled","onclick","viewBox","parallax","CarouselItem","loading","eager","_extends","Alignment","viewSize","predefined","start","center","measure","Number","Counter","limit","loop","withinLimit","counter","set","self","add","sign","abs","Vector1D","vector","divide","readNumber","multiply","normalize","subtract","Direction","direction","EventStore","listeners","node","handler","options","addEventListener","removeEventListener","removeAll","remove","Limit","reachedMin","reachedMax","reachedAny","constrain","removeOffset","DragHandler","scrollBody","dragFree","animation","axis","element","dragTracker","location","events","scrollAxis","scroll","crossAxis","cross","focusNodes","startScroll","startCross","dragStartPoint","activationEvents","interactionEvents","snapForceBoost","mouse","touch","freeForceBoost","baseSpeed","edgeLimit","pointerIsDown","preventScroll","preventClick","isMouse","down","evt","button","isMoving","delta","clearPreventClick","isNotFocusNode","nodeName","preventDefault","pointerDown","useDefaultMass","useSpeed","document","move","up","addInteractionEvents","readPoint","emit","cancelable","moveScroll","moveCross","diffScroll","diffCross","pointerMove","reachedLimit","resist","forceB","forceA","scrollTo","rawForce","pointerUp","force","scrollTarget","index","seekNext","byDistance","destination","byIndex","distance","edge","allowedForce","factor","pointB","pointA","click","addActivationEvents","clickAllowed","removeAllEvents","DragTracker","pxToPercent","coords","startDrag","diffDrag","lastDrag","pointValue","trackPoints","lastMoveTime","getTime","touches","point","nowTime","diffTime","currentPoint","trackPoint","sort","p1","p2","roundToDecimals","decimalPoints","arrayKeys","array","keys","removeClass","cl","classList","contains","addClass","ScrollBody","speed","mass","roundToTwoDecimals","velocity","acceleration","attraction","state","useMass","seek","iStart","iStop","oStart","oStop","magnitude","applyForce","settle","hasSettled","update","useDefaultSpeed","ScrollBounds","shouldConstrain","constraint","toggleActive","active","ScrollContain","alignment","contentSize","scrollBounds","alignedWithinView","contentExceedsView","scrollSnaps","containedSnaps","startSnap","endSnap","lastIndexOf","findDuplicates","ScrollLooper","vectors","shouldLoop","loopDistance","ScrollTarget","minDistance","d1","d2","shortcut","t1","t2","t3","shortest","snap","targetSnap","scrollSnap","diffToSnap","findTargetSnap","findTargetIndex","reachedBound","SlideLooper","gap","scrollLocation","slidesInView","slideSizes","ascItems","descItems","reverse","loopPoints","findLoopPoints","slidesInGap","endPoints","loopStyle","removeSlideSizes","indexes","a","isStartEdge","slideBounds","findSlideBounds","initial","altered","b","getTarget","canLoop","every","clear","slides","style","loopPoint","SlideFocus","slidesToScroll","root","eventStore","lastTabPressTime","registerTabPress","event","keyCode","addFocusEvent","slide","scrollLeft","selectedIndex","Translate","container","translateAxis","containerStyle","transform","to","getComputedStyle","Engine","viewInPx","scrollLength","startIndex","inViewThreshold","getBoundingClientRect","width","height","Axis","totalPercent","slideIndexes","snapSizes","groups","groupArray","alignments","distancesBetween","ScrollSnap","defaultSnaps","contain","shouldContain","trimSnaps","indexPrevious","ScrollLimit","callback","animationFrame","ifAnimating","requestAnimationFrame","proceed","stop","cancelAnimationFrame","Animation","engine","settled","dragHandler","scrollLooper","loopVectors","slideLooper","translate","startLocation","indexCurrent","targetDistance","distanceDiff","indexDiff","targetIndex","ScrollTo","loopOffset","thresholds","check","slideBound","SlidesInView","scrollProgress","slideFocus","defaultOptions","containerSelector","draggable","draggableClass","draggingClass","selectedClass","sliderRoot","userOptions","time","destroy","init","reInit","resize","select","EventEmitter","debouncedResize","activated","newRootElementSize","rootElementSize","reActivate","id","storeElements","Error","nodeList","selector","sliderContainer","activate","partialOptions","deActivate","toggleDraggingClass","toggleSelectedClass","inView","slidesNotInView","newOptions","selectedScrollSnap","containerNode","dangerouslyGetEngine","previousScrollSnap","scrollSnapList","slideNodes","isMobileViewport","innerWidth","mounter","inputs","querySelectorAll","data","HTMLInputElement","loadScript","script","createElement","appendChild","Vnode","hyperscriptVnode","hasOwn","selectorParser","selectorCache","isEmpty","compileSelector","tag","classes","attrValue","execSelector","hasClass","class","newAttrs","String","normalizeChildren","isArray","MithrilTsxComponent","finally","global","executor","resolvers","rejectors","resolveCurrent","rejectCurrent","instance","_instance","callAsync","setImmediate","shouldAbsorb","execute","console","error","retry","executeOnce","runs","run","onFulfilled","onRejection","resolveNext","rejectNext","handle","promise","catch","reason","all","total","count","values","consume","race","destructure","encodeURIComponent","decodeURIComponentSave","decodeURIComponent","string","charAt","counters","entry","levels","cursor","j","level","nextLevel","isNumber","isNaN","parseInt","desc","getOwnPropertyDescriptor","magic","RegExp","extras","hasDecimals","PriceArray","toFixed","oninit","overview","navigateUrl","href","title","products","hotspotBlockType","ProductBlock","ProductTipBlock","product","actionPrice","cats","category","listName","item","item_id","fujiId","productId","item_name","item_category","item_category2","item_category3","regularPrice","discount","discountPrice","editor_type","editorType","item_list_name","itemList","openInNewTab","ojtag","items","campaignLabel","promo","labelImageUrl","alt","labelRightTopImageUrl","image","imageUrls","srcset","media","itemprop","altText","subtextFirstLine","subtextSecondLine","buttonText","priceText","buttonType","backgroundColor","ProductGridSlider","text","domSize","input","isKeyed","cachedSetTimeout","cachedClearTimeout","process","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","len","marker","runClearTimeout","Item","noop","nextTick","browser","env","argv","version","versions","addListener","once","removeListener","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","dir","umask","html","Function","Timeout","clearFn","_id","_clearFn","scope","setInterval","clearInterval","close","unref","enroll","msecs","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","registerImmediate","channel","messagePrefix","onGlobalMessage","nextHandle","tasksByHandle","currentlyRunningATask","doc","attachTo","getPrototypeOf","runIfPresent","postMessage","importScripts","postMessageIsAsynchronous","oldOnMessage","onmessage","canUsePostMessage","MessageChannel","port1","port2","documentElement","onreadystatechange","removeChild","attachEvent","task","$window","currentRedraw","$doc","nameSpace","svg","math","getNameSpace","xmlns","checkState","original","callHook","activeElement","createNodes","parent","vnodes","hooks","nextSibling","createNode","initLifecycle","createTextNode","insertNode","createText","createHTML","createDocumentFragment","firstChild","childNodes","createFragment","is","createElementNS","setAttribute","isFileInput","setAttr","setAttrs","maybeSetContentEditable","normalized","setLateSelectAttrs","sentinel","$$reentrantLock$$","initComponent","createComponent","possibleParents","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","innerHTML","child","updateNodes","old","removeNodes","isOldKeyed","oldStart","oe","ve","topSibling","oldEnd","updateNode","getNextSibling","moveNodes","lisIndices","originalNextSibling","vnodesLength","oldIndices","li","pos","matched","getKeyMap","oldIndex","u","il","lisTemp","makeLisIndices","commonLength","removeNode","oldTag","onbeforeupdate","shouldNotUpdate","updateLifecycle","nodeValue","updateText","removeHTML","updateHTML","updateFragment","warn","val","removeAttr","updateAttrs","updateElement","updateComponent","frag","moveChildToFrag","parentNode","insertBefore","contenteditable","contentEditable","content","stateResult","attrsResult","mask","onbeforeremove","reallyRemove","onremove","isLifecycleMethod","attr","isFormAttribute","updateEvent","setAttributeNS","updateStyle","hasPropertyKey","removeAttribute","nsLastIndex","currentDOM","uppercaseRegex","toLowerCase","capital","normalizeKey","cssText","setProperty","removeProperty","EventDict","onupdate","handleEvent","ev","currentTarget","stopPropagation","prevRedraw","prevDOM","namespace","namespaceURI","textContent","focus","schedule","subscriptions","pending","sync","component","oncompletion","callbackCount","PromiseProxy","makeRequest","factory","background","complete","constructor","hasHeader","headers","__proto__","replacedAbort","method","toUpperCase","assumeJSON","serialize","FormData","URLSearchParams","responseType","extract","xhr","XMLHttpRequest","aborted","isTimeout","abort","open","async","user","password","setRequestHeader","deserialize","withCredentials","readyState","message","success","status","response","responseText","completeErrorResponse","code","ontimeout","config","send","callbackName","callbackKey","compileTemplate","compiled","fallbackRoute","currentPath","lastUpdate","scheduled","ready","currentResolver","RouterRoot","fireAsync","resolveRoute","SKIP","prefix","search","pathname","setPath","history","payload","matchedRoute","localComp","comp","onmatch","replaceState","pushState","defaultRoute","routes","SyntaxError","defaultData","some","ReferenceError","Link","Boolean","defaultPrevented","which","ctrlKey","metaKey","shiftKey","altKey","param","template","templateData","templateKeys","regexp","extra","appendDivTo","getRootData","jsonFromB64","jsonToB64","replaceElement","getRootElements","sanitizeHTML","getOffsetY","getOffsetX","getEventProps","childOf","withinViewport","getOffsetsOnPage","getOuterWidth","getOuterHeight","getTransitionDuration","deep","totalTime","transitionDuration","parseFloat","transitionDelay","sum","styles","marginTop","marginBottom","paddingTop","paddingBottom","marginLeft","marginRight","paddingLeft","paddingRight","_x","_y","offsetLeft","offsetTop","scrollTop","offsetParent","top","left","completely","rect","windowHeight","innerHeight","clientHeight","windowWidth","clientWidth","topVisible","bottomVisible","bottom","leftVisible","rightVisible","right","el","targetTouches","changedTouches","elem","pageX","pageY","ta","loaded","elements","getAttribute","parentElement","replaceChild","json","btoa","b64","query","resolved","variadic","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring"],"mappings":"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","file":"productGridSlider.bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/frontendWebpack/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 282);\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.Fragment = \"[\"\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.jsonp = request.jsonp\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.PromisePolyfill = require(\"./promise/polyfill\")\nm.censor = require(\"./util/censor\")\n\nmodule.exports = m\n","\"use strict\";\r\nvar __assign = (this && this.__assign) || function () {\r\n __assign = Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nvar _this = this;\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.getDynamicObj = exports.getDynamicVal = exports.imageUrlToB64 = exports.fileToB64 = exports.base64toBlob = exports.getImageTypeFromB64 = exports.createImage = exports.isIE = exports.formatPrice = exports.formatSize = exports.clone = exports.removeIfExists = exports.createToggle = exports.chunk = exports.memoize = exports.throttle = exports.debounce = exports.exec = exports.diff = exports.increment = exports.repeatMap = exports.arrToObj = exports.objToArr = exports.groupArr = exports.groupObj = exports.mapObj = exports.reduceObj = exports.filterObj = exports.findObjKey = exports.generateHashFromString = exports.uniqueArray = exports.pipe = exports.getDpi = exports.pxToMm = exports.mmToPx = exports.UUID = exports.pause = exports.cleanString = exports.clamp = exports.mapRange = exports.randomList = exports.randomDec = exports.randomInt = void 0;\r\nvar randomInt = function (min, max) {\r\n if (min === void 0) { min = 0; }\r\n if (max === void 0) { max = 9999; }\r\n return Math.floor(Math.random() * (max - min)) + min;\r\n};\r\nexports.randomInt = randomInt;\r\nvar randomDec = function (min, max) {\r\n if (min === void 0) { min = 0; }\r\n if (max === void 0) { max = 9999; }\r\n return (Math.random() * (max - min) + min);\r\n};\r\nexports.randomDec = randomDec;\r\nvar randomList = function (list) {\r\n return list[(0, exports.randomInt)(0, list.length)];\r\n};\r\nexports.randomList = randomList;\r\nvar mapRange = function (value, source, target) {\r\n return target[0] + (value - source[0]) * (target[1] - target[0]) / (source[1] - source[0]);\r\n};\r\nexports.mapRange = mapRange;\r\nvar clamp = function (value, min, max) {\r\n return Math.min(Math.max(value, min), max);\r\n};\r\nexports.clamp = clamp;\r\nvar cleanString = function () {\r\n var x = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n x[_i] = arguments[_i];\r\n }\r\n return x\r\n .filter(function (x) { return typeof x === \"string\"; })\r\n .map(function (x) { return x.trim(); })\r\n .join(\" \");\r\n};\r\nexports.cleanString = cleanString;\r\nvar pause = function (ms) { return __awaiter(void 0, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var timeout = setTimeout(resolve, ms);\r\n return function () {\r\n clearTimeout(timeout);\r\n reject(\"pause canceled\");\r\n };\r\n })];\r\n });\r\n}); };\r\nexports.pause = pause;\r\nvar UUID = function () {\r\n var d = Date.now();\r\n if (window.performance && typeof window.performance.now === \"function\")\r\n d += performance.now();\r\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, function (c) {\r\n var r = (d + Math.random() * 16) % 16 | 0;\r\n d = Math.floor(d / 16);\r\n return (c === \"x\" ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n};\r\nexports.UUID = UUID;\r\nvar mmToPx = function (mm, dpi) {\r\n if (dpi === void 0) { dpi = 200; }\r\n return (mm * dpi) / 25.4;\r\n};\r\nexports.mmToPx = mmToPx;\r\nvar pxToMm = function (px, dpi) {\r\n if (dpi === void 0) { dpi = 200; }\r\n return (px / dpi) * 25.4;\r\n};\r\nexports.pxToMm = pxToMm;\r\nvar getDpi = function (px, mm) {\r\n return px / mm * 25.4;\r\n};\r\nexports.getDpi = getDpi;\r\nvar pipe = function (value) {\r\n return ({\r\n map: function (fn) { return (0, exports.pipe)(fn(value)); },\r\n value: value\r\n });\r\n};\r\nexports.pipe = pipe;\r\nvar uniqueArray = function (arr) {\r\n return Array.from(new Set(arr));\r\n};\r\nexports.uniqueArray = uniqueArray;\r\nvar generateHashFromString = function (str) {\r\n return str.split(\"\").reduce(function (s, x) { return (((s << 5) - s) + x.charCodeAt(0)) | 0; }, 0);\r\n};\r\nexports.generateHashFromString = generateHashFromString;\r\nvar findObjKey = function (obj, cb) {\r\n for (var k in obj)\r\n if (cb(obj[k], k, obj))\r\n return k;\r\n};\r\nexports.findObjKey = findObjKey;\r\nvar filterObj = function (obj, cb) {\r\n var result = {};\r\n for (var k in obj)\r\n if (cb(obj[k], k, obj))\r\n result[k] = obj[k];\r\n return result;\r\n};\r\nexports.filterObj = filterObj;\r\nvar reduceObj = function (obj, cb, result) {\r\n for (var k in obj)\r\n result = cb(result, obj[k], k, obj);\r\n return result;\r\n};\r\nexports.reduceObj = reduceObj;\r\nvar mapObj = function (obj, cb) {\r\n var result = {};\r\n for (var k in obj)\r\n result[k] = cb(obj[k], k, obj);\r\n return result;\r\n};\r\nexports.mapObj = mapObj;\r\nvar groupObj = function (obj, key, ref) {\r\n var _a;\r\n var _b;\r\n if (ref === void 0) { ref = \"$key\"; }\r\n var result = {};\r\n for (var k in obj) {\r\n var gr = obj[k][key];\r\n (_b = result[gr]) !== null && _b !== void 0 ? _b : (result[gr] = []);\r\n result[gr].push(__assign((_a = {}, _a[ref] = k, _a), obj[k]));\r\n }\r\n return result;\r\n};\r\nexports.groupObj = groupObj;\r\nvar groupArr = function (arr, key, ref) {\r\n var _a;\r\n var _b;\r\n if (ref === void 0) { ref = \"$key\"; }\r\n var result = {};\r\n for (var i = 0; i < arr.length; i++) {\r\n var gr = arr[i][key];\r\n (_b = result[gr]) !== null && _b !== void 0 ? _b : (result[gr] = []);\r\n result[gr].push(__assign((_a = {}, _a[ref] = i, _a), arr[i]));\r\n }\r\n return result;\r\n};\r\nexports.groupArr = groupArr;\r\nvar objToArr = function (obj, ref) {\r\n if (ref === void 0) { ref = \"$key\"; }\r\n return (0, exports.reduceObj)(obj, function (r, x, k) {\r\n var _a;\r\n return r.concat(__assign(__assign({}, x), (_a = {}, _a[ref] = k, _a)));\r\n }, []);\r\n};\r\nexports.objToArr = objToArr;\r\nvar arrToObj = function (arr, key) {\r\n if (key === void 0) { key = \"$key\"; }\r\n return arr.reduce(function (r, x) {\r\n var copy = __assign({}, x);\r\n delete copy[key];\r\n r[x[key]] = copy;\r\n return r;\r\n }, {});\r\n};\r\nexports.arrToObj = arrToObj;\r\nvar repeatMap = function (times, fn) {\r\n var _a;\r\n var result = [];\r\n for (var i = 0; i < times; i++)\r\n result[i] = (_a = fn === null || fn === void 0 ? void 0 : fn(i)) !== null && _a !== void 0 ? _a : i;\r\n return result;\r\n};\r\nexports.repeatMap = repeatMap;\r\nvar increment = function () {\r\n var i = 0;\r\n return function () {\r\n return i++;\r\n };\r\n};\r\nexports.increment = increment;\r\nvar diff = function (cb, reset) {\r\n if (reset === void 0) { reset = false; }\r\n var last = cb();\r\n return function () {\r\n var curr = cb();\r\n var d = curr - last;\r\n if (reset)\r\n last = curr;\r\n return d;\r\n };\r\n};\r\nexports.diff = diff;\r\nvar exec = function (fn) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n return typeof fn === \"function\"\r\n ? fn.apply(_this, args)\r\n : undefined;\r\n};\r\nexports.exec = exec;\r\nvar debounce = function (threshold, fn, head) {\r\n if (head === void 0) { head = false; }\r\n var t;\r\n var c;\r\n return (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (t === undefined && head)\r\n c = fn.apply(void 0, args);\r\n clearTimeout(t);\r\n t = setTimeout(function () {\r\n c = fn.apply(void 0, args);\r\n }, threshold);\r\n return c;\r\n });\r\n};\r\nexports.debounce = debounce;\r\nvar throttle = function (threshold, fn, tail) {\r\n if (tail === void 0) { tail = false; }\r\n var t;\r\n var p;\r\n var c;\r\n return (function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n clearTimeout(t);\r\n var now = Date.now();\r\n if (!p || now - p >= threshold) {\r\n p = now;\r\n c = fn.apply(void 0, args);\r\n }\r\n else if (tail) {\r\n t = setTimeout(function () {\r\n c = fn.apply(void 0, args);\r\n }, threshold);\r\n }\r\n return c;\r\n });\r\n};\r\nexports.throttle = throttle;\r\nvar memoize = function (fn, hashFn) {\r\n var cache = {};\r\n return (function () {\r\n var _a, _b;\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n var hash = (_a = hashFn === null || hashFn === void 0 ? void 0 : hashFn.apply(void 0, args)) !== null && _a !== void 0 ? _a : JSON.stringify(args);\r\n if (cache[hash] === undefined)\r\n cache[hash] = (_b = fn.apply(void 0, args)) !== null && _b !== void 0 ? _b : null;\r\n return cache[hash];\r\n });\r\n};\r\nexports.memoize = memoize;\r\nvar chunk = function (n, arr) {\r\n var chunks = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n var chunk_1 = Math.floor(i / n);\r\n if (!chunks[chunk_1])\r\n chunks[chunk_1] = [];\r\n chunks[chunk_1].push(arr[i]);\r\n }\r\n return chunks;\r\n};\r\nexports.chunk = chunk;\r\nvar createToggle = function () {\r\n var value = false;\r\n return {\r\n get: function () { return value; },\r\n on: function () { return value = true; },\r\n off: function () { return value = false; },\r\n toggle: function () { return value = !value; },\r\n };\r\n};\r\nexports.createToggle = createToggle;\r\nvar removeIfExists = function (arr, cb) {\r\n var i = arr.findIndex(cb);\r\n if (i !== -1)\r\n arr.splice(i, 1);\r\n return arr;\r\n};\r\nexports.removeIfExists = removeIfExists;\r\nvar clone = function (obj) {\r\n return JSON.parse(JSON.stringify(obj));\r\n};\r\nexports.clone = clone;\r\nvar formatSize = function (bytes) {\r\n var sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\"];\r\n if (bytes == 0)\r\n return \"0 Byte\";\r\n var i = Math.floor(Math.floor(Math.log(bytes) / Math.log(1024)));\r\n var size = (bytes / Math.pow(1024, i));\r\n size = Math.round(size * 100) / 100;\r\n return size + sizes[i];\r\n};\r\nexports.formatSize = formatSize;\r\nvar formatPrice = function (price, decimal, format) {\r\n if (decimal === void 0) { decimal = true; }\r\n if (format === void 0) { format = {}; }\r\n var _a = \"\".concat(Math.round(price * 100) / 100).split(\".\"), n = _a[0], m = _a[1];\r\n var _b = Object.assign({ pre: \"€ \", dot: \",\", post: \"\" }, format), pre = _b.pre, dot = _b.dot, post = _b.post;\r\n var cents = \"\".concat(m !== null && m !== void 0 ? m : 0).padEnd(2, \"0\");\r\n return decimal ? \"\".concat(pre).concat(n).concat(dot).concat(cents).concat(post) : \"\".concat(pre).concat(Math.round(price)).concat(post);\r\n};\r\nexports.formatPrice = formatPrice;\r\nexports.isIE = (0, exports.memoize)(function () {\r\n return (/MSIE (\\d+\\.\\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf(\"Trident/\") > -1);\r\n}, function () { return navigator.userAgent; });\r\nvar createImage = function (src) {\r\n return new Promise(function (res, rej) {\r\n var img = new Image();\r\n img.crossOrigin = \"Anonymous\";\r\n img.onload = function () { return res(img); };\r\n img.onerror = function (err) { return rej(err); };\r\n img.src = src;\r\n });\r\n};\r\nexports.createImage = createImage;\r\nvar getImageTypeFromB64 = function (source) {\r\n var match = source.match(/(image\\/.*)?;/);\r\n return (match && match[1]) ? match[1] : \"image/png\";\r\n};\r\nexports.getImageTypeFromB64 = getImageTypeFromB64;\r\nvar base64toBlob = function (src) {\r\n var base64Data = src.replace(/^data:image\\/(.*?);base64,/, \"\");\r\n var contentType = (0, exports.getImageTypeFromB64)(src);\r\n var sliceSize = 1024;\r\n var byteCharacters = atob(base64Data);\r\n var bytesLength = byteCharacters.length;\r\n var slicesCount = Math.ceil(bytesLength / sliceSize);\r\n var byteArrays = new Array(slicesCount);\r\n for (var i = 0; i < slicesCount; ++i) {\r\n var begin = i * sliceSize;\r\n var end = Math.min(begin + sliceSize, bytesLength);\r\n var bytes = new Array(end - begin);\r\n for (var offset = begin, i_1 = 0; offset < end; ++i_1, ++offset)\r\n bytes[i_1] = byteCharacters[offset].charCodeAt(0);\r\n byteArrays[i] = new Uint8Array(bytes);\r\n }\r\n return new Blob(byteArrays, { type: contentType });\r\n};\r\nexports.base64toBlob = base64toBlob;\r\nvar fileToB64 = function (file) {\r\n return new Promise(function (res, rej) {\r\n var reader = new FileReader();\r\n reader.onload = function () { return res(reader.result); };\r\n reader.onerror = function (err) { return rej(err); };\r\n reader.readAsDataURL(file);\r\n });\r\n};\r\nexports.fileToB64 = fileToB64;\r\nvar imageUrlToB64 = function (url) {\r\n return fetch(url)\r\n .then(function (x) { return x.blob(); })\r\n .then(function (x) { return (0, exports.fileToB64)(x); });\r\n};\r\nexports.imageUrlToB64 = imageUrlToB64;\r\nvar getDynamicVal = function (x) {\r\n return typeof x === \"function\" ? x() : x;\r\n};\r\nexports.getDynamicVal = getDynamicVal;\r\nvar getDynamicObj = function (x) {\r\n return Object.fromEntries(Object.entries(x).map(function (_a) {\r\n var k = _a[0], v = _a[1];\r\n return [k, (0, exports.getDynamicVal)(v)];\r\n }));\r\n};\r\nexports.getDynamicObj = getDynamicObj;\r\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","import m from \"mithril\"\r\nimport { MithrilTsxComponent } from \"mithril-tsx-component\"\r\nimport { cleanString } from \"oj-utils\"\r\nimport EmblaCarousel, { EmblaCarouselType, EmblaOptionsType } from \"embla-carousel\"\r\n\r\nexport interface ICarousel {\r\n className?: string,\r\n navigation?: boolean,\r\n emblaOptions?: Partial,\r\n onload?: (data: { dom: HTMLElement, embla: EmblaCarouselType }) => void\r\n}\r\n\r\nexport class Carousel extends MithrilTsxComponent {\r\n embla: EmblaCarouselType\r\n\r\n view(v: m.Vnode) {\r\n const canScrollPrev = v.attrs.navigation && this.embla && this.embla.canScrollPrev()\r\n const canScrollNext = v.attrs.navigation && this.embla && this.embla.canScrollNext()\r\n\r\n return
\r\n
\r\n
\r\n {v.children}\r\n
\r\n
\r\n\r\n {v.attrs.navigation && this.embla &&\r\n \r\n }\r\n
\r\n }\r\n\r\n oncreate(v: m.VnodeDOM) {\r\n const wrap = v.dom as HTMLDivElement\r\n const viewPort = wrap.querySelector(\".embla__viewport\") as HTMLDivElement\r\n this.embla = EmblaCarousel(viewPort, {\r\n align: \"center\",\r\n containScroll: \"trimSnaps\",\r\n ...v.attrs.emblaOptions ?? {},\r\n })\r\n\r\n this.embla.on(\"init\", () => setTimeout(m.redraw, 80))\r\n this.embla.on(\"select\", () => setTimeout(m.redraw, 80))\r\n this.embla.on(\"resize\", () => setTimeout(m.redraw, 80))\r\n\r\n v.attrs.onload?.({ dom: wrap, embla: this.embla });\r\n [1000, 2000].forEach(x => setTimeout(m.redraw, x))\r\n }\r\n}\r\n\r\nexport interface ICarouselNav {\r\n canScrollPrev: boolean,\r\n scrollPrev: Function,\r\n canScrollNext: boolean,\r\n scrollNext: Function,\r\n}\r\n\r\nexport class CarouselNav extends MithrilTsxComponent {\r\n view(v: m.Vnode) {\r\n return [\r\n ,\r\n \r\n ]\r\n }\r\n}\r\n\r\nexport interface ICarouselItem {\r\n className?: string,\r\n parallax?: boolean,\r\n}\r\n\r\nexport class CarouselItem extends MithrilTsxComponent {\r\n view(v: m.Vnode) {\r\n return
\r\n
\r\n {v.attrs.parallax\r\n ?
\r\n {v.children}\r\n
\r\n : v.children\r\n }\r\n
\r\n
\r\n }\r\n}\r\n\r\nexport interface ICarouselImageItem extends ICarouselItem {\r\n eager?: boolean\r\n src: string\r\n}\r\n\r\nexport class CarouselImageItem extends MithrilTsxComponent {\r\n view(v: m.Vnode) {\r\n return \r\n \r\n \r\n }\r\n}","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction Alignment(params) {\n var viewSize = params.viewSize,\n align = params.align;\n var predefined = {\n start: start,\n center: center,\n end: end\n };\n\n function start() {\n return 0;\n }\n\n function center(n) {\n return end(n) / 2;\n }\n\n function end(n) {\n return viewSize - n;\n }\n\n function percent() {\n return viewSize * Number(align);\n }\n\n function measure(n) {\n if (typeof align === 'number') return percent();\n return predefined[align](n);\n }\n\n var self = {\n measure: measure\n };\n return self;\n}\n\nfunction Animation(callback) {\n var animationFrame = 0;\n\n function ifAnimating(active, cb) {\n return function () {\n if (active === !!animationFrame) cb();\n };\n }\n\n function start() {\n animationFrame = window.requestAnimationFrame(callback);\n }\n\n function stop() {\n window.cancelAnimationFrame(animationFrame);\n animationFrame = 0;\n }\n\n var self = {\n proceed: ifAnimating(true, start),\n start: ifAnimating(false, start),\n stop: ifAnimating(true, stop)\n };\n return self;\n}\n\nfunction Axis(axis) {\n var scroll = axis === 'y' ? 'y' : 'x';\n var cross = axis === 'y' ? 'x' : 'y';\n\n function measure(node) {\n var _a = node.getBoundingClientRect(),\n width = _a.width,\n height = _a.height;\n\n return scroll === 'x' ? width : height;\n }\n\n var self = {\n cross: cross,\n measure: measure,\n scroll: scroll\n };\n return self;\n}\n\nfunction Counter(params) {\n var start = params.start,\n limit = params.limit,\n loop = params.loop;\n var min = limit.min,\n max = limit.max;\n var type = loop ? 'loop' : 'constrain';\n var withinLimit = limit[type];\n var counter = withinLimit(start);\n\n function get() {\n return counter;\n }\n\n function set(n) {\n counter = withinLimit(n);\n return self;\n }\n\n function add(n) {\n if (n !== 0) {\n var sign = n / Math.abs(n);\n set(get() + sign);\n return add(n + sign * -1);\n }\n\n return self;\n }\n\n function clone() {\n return Counter({\n start: get(),\n limit: limit,\n loop: loop\n });\n }\n\n var self = {\n add: add,\n clone: clone,\n get: get,\n max: max,\n min: min,\n set: set\n };\n return self;\n}\n\nfunction Vector1D(value) {\n var vector = value;\n\n function get() {\n return vector;\n }\n\n function set(n) {\n vector = readNumber(n);\n return self;\n }\n\n function add(n) {\n vector += readNumber(n);\n return self;\n }\n\n function subtract(n) {\n vector -= readNumber(n);\n return self;\n }\n\n function multiply(n) {\n vector *= n;\n return self;\n }\n\n function divide(n) {\n vector /= n;\n return self;\n }\n\n function normalize() {\n if (vector !== 0) divide(vector);\n return self;\n }\n\n function readNumber(n) {\n return typeof n === 'number' ? n : n.get();\n }\n\n var self = {\n add: add,\n divide: divide,\n get: get,\n multiply: multiply,\n normalize: normalize,\n set: set,\n subtract: subtract\n };\n return self;\n}\n\nfunction Direction(value) {\n var direction = Vector1D(normalize(value));\n var get = direction.get;\n\n function normalize(n) {\n return n === 0 ? 0 : n / Math.abs(n);\n }\n\n function set(v) {\n var d = normalize(v.get());\n if (d !== 0) direction.set(d);\n return self;\n }\n\n var self = {\n get: get,\n set: set\n };\n return self;\n}\n\nfunction EventStore() {\n var listeners = [];\n\n function add(node, type, handler, options) {\n if (options === void 0) {\n options = false;\n }\n\n node.addEventListener(type, handler, options);\n listeners.push(function () {\n return node.removeEventListener(type, handler, options);\n });\n return self;\n }\n\n function removeAll() {\n listeners = listeners.filter(function (remove) {\n return remove();\n });\n return self;\n }\n\n var self = {\n add: add,\n removeAll: removeAll\n };\n return self;\n}\n\nfunction Limit(params) {\n var min = params.min,\n max = params.max;\n var length = Math.abs(min - max);\n\n function reachedMin(n) {\n return n < min;\n }\n\n function reachedMax(n) {\n return n > max;\n }\n\n function reachedAny(n) {\n return reachedMin(n) || reachedMax(n);\n }\n\n function removeOffset(n) {\n if (min === max) return n;\n\n while (reachedMin(n)) {\n n += length;\n }\n\n while (reachedMax(n)) {\n n -= length;\n }\n\n return n;\n }\n\n function loop(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? max : min;\n }\n\n function constrain(n) {\n if (!reachedAny(n)) return n;\n return reachedMin(n) ? min : max;\n }\n\n var self = {\n constrain: constrain,\n length: length,\n loop: loop,\n max: max,\n min: min,\n reachedAny: reachedAny,\n reachedMax: reachedMax,\n reachedMin: reachedMin,\n removeOffset: removeOffset\n };\n return self;\n}\n\nfunction DragHandler(params) {\n var target = params.target,\n scrollBody = params.scrollBody,\n dragFree = params.dragFree,\n animation = params.animation,\n axis = params.axis;\n var element = params.element,\n dragTracker = params.dragTracker,\n location = params.location,\n events = params.events,\n limit = params.limit;\n var scrollAxis = axis.scroll,\n crossAxis = axis.cross;\n var focusNodes = ['INPUT', 'SELECT', 'TEXTAREA'];\n var startScroll = Vector1D(0);\n var startCross = Vector1D(0);\n var dragStartPoint = Vector1D(0);\n var activationEvents = EventStore();\n var interactionEvents = EventStore();\n var snapForceBoost = {\n mouse: 2.5,\n touch: 3.5\n };\n var freeForceBoost = {\n mouse: 5,\n touch: 7\n };\n var baseSpeed = dragFree ? 5 : 12;\n var dragThreshold = 4;\n var edgeLimit = Limit({\n min: limit.min - 70,\n max: limit.max + 70\n });\n var pointerIsDown = false;\n var preventScroll = false;\n var preventClick = false;\n var isMouse = false;\n\n function addActivationEvents() {\n var node = element;\n activationEvents.add(node, 'touchmove', function () {\n return undefined;\n }).add(node, 'touchend', function () {\n return undefined;\n }).add(node, 'touchstart', down).add(node, 'mousedown', down).add(node, 'touchcancel', up).add(node, 'contextmenu', up).add(node, 'click', click);\n }\n\n function addInteractionEvents() {\n var node = !isMouse ? element : document;\n interactionEvents.add(node, 'touchmove', move).add(node, 'touchend', up).add(node, 'mousemove', move).add(node, 'mouseup', up);\n }\n\n function removeAllEvents() {\n activationEvents.removeAll();\n interactionEvents.removeAll();\n }\n\n function isFocusNode(node) {\n var name = node.nodeName || '';\n return focusNodes.indexOf(name) > -1;\n }\n\n function forceBoost() {\n var boost = dragFree ? freeForceBoost : snapForceBoost;\n var type = isMouse ? 'mouse' : 'touch';\n return boost[type];\n }\n\n function speedFactor(forceB, forceA) {\n var diff = delta(Math.abs(forceB), Math.abs(forceA));\n if (Math.abs(forceB) <= Math.abs(forceA)) return 0;\n if (forceB === 0 || forceA === 0) return 0;\n return Math.abs(diff / forceB);\n }\n\n function allowedForce(force) {\n var scrollTarget = params.scrollTarget,\n index = params.index;\n var currentLocation = scrollTarget.byDistance(0, false);\n var targetChanged = currentLocation.index !== index.get();\n var seekNext = !targetChanged && Math.abs(force) > dragThreshold;\n var destination = force + location.get();\n\n if (seekNext && !dragFree && !limit.reachedAny(destination)) {\n var next = index.clone().add(Direction(force).get() * -1);\n return scrollTarget.byIndex(next.get(), 0).distance;\n }\n\n if (!params.loop && edgeLimit.reachedAny(destination)) {\n var edge = edgeLimit.reachedMax(destination) ? 'max' : 'min';\n return edgeLimit[edge] - target.get();\n }\n\n return scrollTarget.byDistance(force, !dragFree).distance;\n }\n\n function down(evt) {\n isMouse = evt.type === 'mousedown';\n if (isMouse && evt.button !== 0) return;\n var isMoving = delta(target.get(), location.get()) >= 2;\n var clearPreventClick = isMouse || !isMoving;\n var isNotFocusNode = !isFocusNode(evt.target);\n var preventDefault = isMoving || isMouse && isNotFocusNode;\n pointerIsDown = true;\n dragTracker.pointerDown(evt);\n dragStartPoint.set(target);\n target.set(location);\n scrollBody.useDefaultMass().useSpeed(80);\n addInteractionEvents();\n startScroll.set(dragTracker.readPoint(evt, scrollAxis));\n startCross.set(dragTracker.readPoint(evt, crossAxis));\n events.emit('pointerDown');\n if (clearPreventClick) preventClick = false;\n if (preventDefault) evt.preventDefault();\n }\n\n function move(evt) {\n if (!preventScroll && !isMouse) {\n if (!evt.cancelable) return up();\n var moveScroll = dragTracker.readPoint(evt, scrollAxis).get();\n var moveCross = dragTracker.readPoint(evt, crossAxis).get();\n var diffScroll = delta(moveScroll, startScroll.get());\n var diffCross = delta(moveCross, startCross.get());\n preventScroll = diffScroll > diffCross;\n if (!preventScroll && !preventClick) return up();\n }\n\n var diff = dragTracker.pointerMove(evt);\n var reachedLimit = limit.reachedAny(location.get());\n var resist = !params.loop && reachedLimit ? 2 : 1;\n if (!preventClick && diff) preventClick = true;\n animation.start();\n target.add(diff / resist);\n evt.preventDefault();\n }\n\n function up() {\n var scrollTo = params.scrollTo;\n var rawForce = dragTracker.pointerUp() * forceBoost();\n var force = allowedForce(rawForce);\n var factor = speedFactor(rawForce, force);\n var isMoving = delta(target.get(), dragStartPoint.get()) >= 0.5;\n if (isMoving && !isMouse) preventClick = true;\n preventScroll = false;\n pointerIsDown = false;\n interactionEvents.removeAll();\n scrollBody.useSpeed(baseSpeed + baseSpeed * factor);\n scrollTo.distance(force, !dragFree);\n isMouse = false;\n events.emit('pointerUp');\n }\n\n function delta(pointB, pointA) {\n return Math.abs(pointB - pointA);\n }\n\n function click(evt) {\n if (preventClick) evt.preventDefault();\n }\n\n function clickAllowed() {\n return !preventClick;\n }\n\n function pointerDown() {\n return pointerIsDown;\n }\n\n var self = {\n addActivationEvents: addActivationEvents,\n clickAllowed: clickAllowed,\n pointerDown: pointerDown,\n removeAllEvents: removeAllEvents\n };\n return self;\n}\n\nfunction DragTracker(params) {\n var axis = params.axis,\n pxToPercent = params.pxToPercent;\n var scrollAxis = axis.scroll;\n var coords = {\n x: 'clientX',\n y: 'clientY'\n };\n var startDrag = Vector1D(0);\n var diffDrag = Vector1D(0);\n var lastDrag = Vector1D(0);\n var pointValue = Vector1D(0);\n var trackInterval = 10;\n var trackLength = 5;\n var trackTime = 100;\n var trackPoints = [];\n var lastMoveTime = new Date().getTime();\n var isMouse = false;\n\n function readPoint(evt, type) {\n isMouse = !evt.touches;\n var c = coords[type];\n var value = isMouse ? evt[c] : evt.touches[0][c];\n return pointValue.set(value);\n }\n\n function pointerDown(evt) {\n var point = readPoint(evt, scrollAxis);\n startDrag.set(point);\n lastDrag.set(point);\n return pxToPercent.measure(startDrag.get());\n }\n\n function pointerMove(evt) {\n var point = readPoint(evt, scrollAxis);\n var nowTime = new Date().getTime();\n var diffTime = nowTime - lastMoveTime;\n\n if (diffTime >= trackInterval) {\n if (diffTime >= trackTime) trackPoints = [];\n trackPoints.push(point.get());\n lastMoveTime = nowTime;\n }\n\n diffDrag.set(point).subtract(lastDrag);\n lastDrag.set(point);\n return pxToPercent.measure(diffDrag.get());\n }\n\n function pointerUp() {\n var nowTime = new Date().getTime();\n var diffTime = nowTime - lastMoveTime;\n var currentPoint = lastDrag.get();\n var force = trackPoints.slice(-trackLength).map(function (trackPoint) {\n return currentPoint - trackPoint;\n }).sort(function (p1, p2) {\n return Math.abs(p1) < Math.abs(p2) ? 1 : -1;\n })[0];\n lastDrag.set(diffTime > trackTime || !force ? 0 : force);\n trackPoints = [];\n return pxToPercent.measure(lastDrag.get());\n }\n\n var self = {\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n readPoint: readPoint\n };\n return self;\n}\n\nfunction PxToPercent(viewInPx) {\n var totalPercent = 100;\n\n function measure(n) {\n return n / viewInPx * totalPercent;\n }\n\n var self = {\n measure: measure,\n totalPercent: totalPercent\n };\n return self;\n}\n\nfunction map(value, iStart, iStop, oStart, oStop) {\n return oStart + (oStop - oStart) * ((value - iStart) / (iStop - iStart));\n}\nfunction arrayFromCollection(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\nfunction debounce(callback, time) {\n var timeout = {\n id: 0\n };\n return function () {\n window.clearTimeout(timeout.id);\n timeout.id = window.setTimeout(callback, time) || 0;\n };\n}\nfunction roundToDecimals(decimalPoints) {\n var pow = Math.pow(10, decimalPoints);\n return function (n) {\n return Math.round(n * pow) / pow;\n };\n}\nfunction groupArray(array, size) {\n var groups = [];\n\n for (var i = 0; i < array.length; i += size) {\n groups.push(array.slice(i, i + size));\n }\n\n return groups;\n}\nfunction arrayKeys(array) {\n return Object.keys(array).map(Number);\n}\nfunction removeClass(node, className) {\n var cl = node.classList;\n if (className && cl.contains(className)) cl.remove(className);\n}\nfunction addClass(node, className) {\n var cl = node.classList;\n if (className && !cl.contains(className)) cl.add(className);\n}\n\nfunction ScrollBody(params) {\n var location = params.location,\n speed = params.speed,\n mass = params.mass;\n var roundToTwoDecimals = roundToDecimals(2);\n var velocity = Vector1D(0);\n var acceleration = Vector1D(0);\n var attraction = Vector1D(0);\n var direction = Direction(0);\n var state = {\n speed: speed,\n mass: mass\n };\n\n function update() {\n velocity.add(acceleration);\n location.add(velocity);\n acceleration.multiply(0);\n }\n\n function applyForce(v) {\n v.divide(state.mass);\n acceleration.add(v);\n }\n\n function seek(v) {\n attraction.set(v).subtract(location);\n var magnitude = attraction.get();\n var m = map(magnitude, 0, 100, 0, state.speed);\n direction.set(attraction);\n attraction.normalize().multiply(m).subtract(velocity);\n applyForce(attraction);\n return self;\n }\n\n function settle(v) {\n var diff = v.get() - location.get();\n var diffRounded = roundToTwoDecimals(diff);\n var hasSettled = !diffRounded;\n if (hasSettled) location.set(v);\n return hasSettled;\n }\n\n function useSpeed(n) {\n state.speed = n;\n return self;\n }\n\n function useDefaultSpeed() {\n useSpeed(speed);\n return self;\n }\n\n function useMass(n) {\n state.mass = n;\n return self;\n }\n\n function useDefaultMass() {\n useMass(mass);\n return self;\n }\n\n var self = {\n direction: direction,\n location: location,\n seek: seek,\n settle: settle,\n update: update,\n useDefaultMass: useDefaultMass,\n useDefaultSpeed: useDefaultSpeed,\n useMass: useMass,\n useSpeed: useSpeed\n };\n return self;\n}\n\nfunction ScrollBounds(params) {\n var limit = params.limit,\n location = params.location,\n scrollBody = params.scrollBody,\n animation = params.animation;\n var min = limit.min,\n max = limit.max,\n reachedMin = limit.reachedMin,\n reachedMax = limit.reachedMax;\n var tolerance = 50;\n var disabled = false;\n var timeout = 0;\n\n function shouldConstrain(v) {\n if (disabled || timeout) return false;\n if (reachedMin(location.get())) return v.get() !== min;\n if (reachedMax(location.get())) return v.get() !== max;\n return false;\n }\n\n function constrain(v) {\n if (!shouldConstrain(v)) return;\n timeout = window.setTimeout(function () {\n var constraint = limit.constrain(v.get());\n v.set(constraint);\n scrollBody.useSpeed(10).useMass(3);\n animation.start();\n timeout = 0;\n }, tolerance);\n }\n\n function toggleActive(active) {\n disabled = !active;\n }\n\n var self = {\n constrain: constrain,\n toggleActive: toggleActive\n };\n return self;\n}\n\nfunction ScrollContain(params) {\n var alignment = params.alignment,\n contentSize = params.contentSize,\n viewSize = params.viewSize;\n var scrollBounds = Limit({\n min: -contentSize + viewSize,\n max: 0\n });\n var alignedWithinView = [alignment.measure(contentSize)];\n var contentExceedsView = contentSize > viewSize;\n\n function findDuplicates(scrollSnaps) {\n var startSnap = scrollSnaps[0];\n var endSnap = scrollSnaps[scrollSnaps.length - 1];\n var min = scrollSnaps.lastIndexOf(startSnap) + 1;\n var max = scrollSnaps.indexOf(endSnap);\n return Limit({\n min: min,\n max: max\n });\n }\n\n function measure(scrollSnaps, trim) {\n var containedSnaps = scrollSnaps.map(scrollBounds.constrain);\n\n var _a = findDuplicates(containedSnaps),\n min = _a.min,\n max = _a.max;\n\n if (!contentExceedsView) return alignedWithinView;\n if (!trim) return containedSnaps;\n return containedSnaps.slice(min - 1, max + 1);\n }\n\n var self = {\n measure: measure\n };\n return self;\n}\n\nfunction ScrollLimit(params) {\n var contentSize = params.contentSize,\n loop = params.loop;\n\n function measure(scrollSnaps) {\n var startSnap = scrollSnaps[0];\n var endSnap = scrollSnaps[scrollSnaps.length - 1];\n var min = loop ? startSnap - contentSize : endSnap;\n var max = startSnap;\n return Limit({\n min: min,\n max: max\n });\n }\n\n var self = {\n measure: measure\n };\n return self;\n}\n\nfunction ScrollLooper(params) {\n var contentSize = params.contentSize,\n location = params.location,\n limit = params.limit,\n pxToPercent = params.pxToPercent;\n var min = limit.min + pxToPercent.measure(0.1);\n var max = limit.max + pxToPercent.measure(0.1);\n\n var _a = Limit({\n min: min,\n max: max\n }),\n reachedMin = _a.reachedMin,\n reachedMax = _a.reachedMax;\n\n function shouldLoop(direction) {\n if (direction === 1) return reachedMax(location.get());\n if (direction === -1) return reachedMin(location.get());\n return false;\n }\n\n function loop(vectors, direction) {\n if (!shouldLoop(direction)) return;\n var loopDistance = contentSize * (direction * -1);\n vectors.forEach(function (v) {\n return v.add(loopDistance);\n });\n }\n\n var self = {\n loop: loop\n };\n return self;\n}\n\nfunction ScrollProgress(params) {\n var _a = params.limit,\n max = _a.max,\n scrollLength = _a.length;\n\n function get(n) {\n var currentLocation = n - max;\n return currentLocation / -scrollLength;\n }\n\n var self = {\n get: get\n };\n return self;\n}\n\nfunction ScrollSnap(params) {\n var snapSizes = params.snapSizes,\n alignment = params.alignment,\n loop = params.loop;\n var alignments = snapSizes.map(alignment.measure);\n var distancesBetween = distancesBetweenScrollSnaps();\n\n function distancesBetweenScrollSnaps() {\n var limit = Limit({\n min: 0,\n max: snapSizes.length - 1\n });\n var counter = Counter({\n limit: limit,\n start: 0,\n loop: loop\n });\n return snapSizes.map(function (size, index) {\n var next = counter.set(index + 1).get();\n return size + alignments[index] - alignments[next];\n });\n }\n\n function measure(index) {\n var sizes = distancesBetween.slice(0, index);\n return sizes.reduce(function (a, s) {\n return a - s;\n }, alignments[0]);\n }\n\n var self = {\n measure: measure\n };\n return self;\n}\n\nfunction ScrollTarget(params) {\n var loop = params.loop,\n limit = params.limit,\n scrollSnaps = params.scrollSnaps,\n contentSize = params.contentSize;\n var reachedMax = limit.reachedMax,\n reachedAny = limit.reachedAny,\n removeOffset = limit.removeOffset;\n\n function minDistance(d1, d2) {\n return Math.abs(d1) < Math.abs(d2) ? d1 : d2;\n }\n\n function findTargetSnap(target) {\n var distance = removeOffset(target);\n var ascDiffsToSnaps = scrollSnaps.map(function (scrollSnap) {\n return scrollSnap - distance;\n }).map(function (diffToSnap) {\n return shortcut(diffToSnap, 0);\n }).map(function (diff, i) {\n return {\n diff: diff,\n index: i\n };\n }).sort(function (d1, d2) {\n return Math.abs(d1.diff) - Math.abs(d2.diff);\n });\n var index = ascDiffsToSnaps[0].index;\n return {\n index: index,\n distance: distance\n };\n }\n\n function shortcut(target, direction) {\n var t1 = target;\n var t2 = target + contentSize;\n var t3 = target - contentSize;\n if (!loop) return t1;\n if (!direction) return minDistance(minDistance(t1, t2), t3);\n var shortest = minDistance(t1, direction === 1 ? t2 : t3);\n return Math.abs(shortest) * direction;\n }\n\n function findTargetIndex(target, index) {\n var reachedBound = !loop && reachedAny(target);\n if (!reachedBound) return index;\n var _a = params.index,\n min = _a.min,\n max = _a.max;\n return reachedMax(target) ? min : max;\n }\n\n function byIndex(index, direction) {\n var diffToSnap = scrollSnaps[index] - params.target.get();\n var distance = shortcut(diffToSnap, direction);\n return {\n index: index,\n distance: distance\n };\n }\n\n function byDistance(distance, snap) {\n var target = params.target.get() + distance;\n var targetSnap = findTargetSnap(target);\n var index = findTargetIndex(target, targetSnap.index);\n var reachedBound = !loop && reachedAny(target);\n if (!snap || reachedBound) return {\n index: index,\n distance: distance\n };\n var diffToSnap = scrollSnaps[index] - targetSnap.distance;\n var snapDistance = distance + shortcut(diffToSnap, 0);\n return {\n index: index,\n distance: snapDistance\n };\n }\n\n var self = {\n byDistance: byDistance,\n byIndex: byIndex,\n shortcut: shortcut\n };\n return self;\n}\n\nfunction ScrollTo(params) {\n var indexCurrent = params.index,\n scrollTarget = params.scrollTarget,\n animation = params.animation;\n var indexPrevious = params.indexPrevious,\n events = params.events,\n targetDistance = params.target;\n\n function scrollTo(target) {\n var distanceDiff = target.distance;\n var indexDiff = target.index !== indexCurrent.get();\n\n if (distanceDiff) {\n animation.start();\n targetDistance.add(distanceDiff);\n }\n\n if (indexDiff) {\n indexPrevious.set(indexCurrent.get());\n indexCurrent.set(target.index);\n events.emit('select');\n }\n }\n\n function distance(n, snap) {\n var target = scrollTarget.byDistance(n, snap);\n scrollTo(target);\n }\n\n function index(n, direction) {\n var targetIndex = indexCurrent.clone().set(n);\n var target = scrollTarget.byIndex(targetIndex.get(), direction);\n scrollTo(target);\n }\n\n var self = {\n distance: distance,\n index: index\n };\n return self;\n}\n\nfunction SlideLooper(params) {\n var axis = params.axis,\n scrollLocation = params.location,\n slidesInView = params.slidesInView;\n var contentSize = params.contentSize,\n viewSize = params.viewSize,\n slideSizes = params.slideSizes,\n scrollSnaps = params.scrollSnaps;\n var ascItems = arrayKeys(slideSizes);\n var descItems = arrayKeys(slideSizes).reverse();\n var loopPoints = startPoints().concat(endPoints());\n var loopStyle = axis.scroll === 'x' ? 'left' : 'top';\n\n function removeSlideSizes(indexes, from) {\n return indexes.reduce(function (a, i) {\n return a - slideSizes[i];\n }, from);\n }\n\n function slidesInGap(indexes, gap) {\n return indexes.reduce(function (a, i) {\n var remainingGap = removeSlideSizes(a, gap);\n return remainingGap > 0 ? a.concat([i]) : a;\n }, []);\n }\n\n function findLoopPoints(indexes, edge) {\n var isStartEdge = edge === 'start';\n var offset = isStartEdge ? -contentSize : contentSize;\n var slideBounds = slidesInView.findSlideBounds(offset);\n return indexes.map(function (index) {\n var initial = isStartEdge ? 0 : -contentSize;\n var altered = isStartEdge ? contentSize : 0;\n var bounds = slideBounds.filter(function (b) {\n return b.index === index;\n })[0];\n var point = bounds[isStartEdge ? 'end' : 'start'];\n\n var getTarget = function getTarget() {\n return scrollLocation.get() > point ? initial : altered;\n };\n\n return {\n point: point,\n getTarget: getTarget,\n index: index,\n location: -1\n };\n });\n }\n\n function startPoints() {\n var gap = scrollSnaps[0] - 1;\n var indexes = slidesInGap(descItems, gap);\n return findLoopPoints(indexes, 'end');\n }\n\n function endPoints() {\n var gap = viewSize - scrollSnaps[0] - 1;\n var indexes = slidesInGap(ascItems, gap);\n return findLoopPoints(indexes, 'start');\n }\n\n function canLoop() {\n return loopPoints.every(function (_a) {\n var index = _a.index;\n var otherIndexes = ascItems.filter(function (i) {\n return i !== index;\n });\n return removeSlideSizes(otherIndexes, viewSize) <= 0;\n });\n }\n\n function loop(slides) {\n loopPoints.forEach(function (loopPoint) {\n var getTarget = loopPoint.getTarget,\n location = loopPoint.location,\n index = loopPoint.index;\n var target = getTarget();\n\n if (target !== location) {\n slides[index].style[loopStyle] = target + \"%\";\n loopPoint.location = target;\n }\n });\n }\n\n function clear(slides) {\n loopPoints.forEach(function (_a) {\n var index = _a.index;\n slides[index].style[loopStyle] = '';\n });\n }\n\n var self = {\n canLoop: canLoop,\n clear: clear,\n loop: loop,\n loopPoints: loopPoints\n };\n return self;\n}\n\nfunction SlideFocus(params) {\n var scrollTo = params.scrollTo,\n slidesToScroll = params.slidesToScroll,\n root = params.root;\n var eventStore = EventStore();\n var removeAllEvents = eventStore.removeAll;\n var lastTabPressTime = 0;\n\n function registerTabPress(event) {\n if (event.keyCode !== 9) return;\n lastTabPressTime = new Date().getTime();\n }\n\n function addFocusEvent(slide, index) {\n var focus = function focus() {\n var nowTime = new Date().getTime();\n var diffTime = nowTime - lastTabPressTime;\n if (diffTime > 10) return;\n root.scrollLeft = 0;\n var selectedIndex = Math.floor(index / slidesToScroll);\n scrollTo.index(selectedIndex, 0);\n };\n\n eventStore.add(slide, 'focus', focus, true);\n }\n\n function addActivationEvents(slides) {\n eventStore.add(document, 'keydown', registerTabPress, false);\n slides.forEach(addFocusEvent);\n }\n\n var self = {\n addActivationEvents: addActivationEvents,\n removeAllEvents: removeAllEvents\n };\n return self;\n}\n\nfunction SlidesInView(params) {\n var contentSize = params.contentSize,\n slideSizes = params.slideSizes,\n viewSize = params.viewSize;\n var inViewThreshold = params.inViewThreshold,\n loop = params.loop;\n var threshold = Math.min(Math.max(inViewThreshold, 0.01), 0.99);\n var scrollSnaps = arrayKeys(slideSizes).map(scrollSnap);\n var offsets = loop ? [0, contentSize, -contentSize] : [0];\n var slideBounds = offsets.reduce(function (a, loopOffset) {\n return a.concat(findSlideBounds(loopOffset, threshold));\n }, []);\n\n function scrollSnap(index) {\n var span = slideSizes.slice(0, index);\n return span.reduce(function (a, s) {\n return a - s;\n }, 0);\n }\n\n function findSlideBounds(offset, threshold) {\n var thresholds = slideSizes.map(function (s) {\n return s * (threshold || 0);\n });\n return scrollSnaps.map(function (snap, index) {\n return {\n start: snap - slideSizes[index] + thresholds[index] + offset,\n end: snap + viewSize - thresholds[index] + offset,\n index: index\n };\n });\n }\n\n function check(location) {\n return slideBounds.reduce(function (list, slideBound) {\n var index = slideBound.index,\n start = slideBound.start,\n end = slideBound.end;\n var inList = list.indexOf(index) !== -1;\n var inView = start < location && end > location;\n return !inList && inView ? list.concat([index]) : list;\n }, []);\n }\n\n var self = {\n check: check,\n findSlideBounds: findSlideBounds\n };\n return self;\n}\n\nfunction Translate(params) {\n var axis = params.axis,\n container = params.container;\n var translates = {\n x: x,\n y: y\n };\n var translateAxis = translates[axis.scroll];\n var roundToTwoDecimals = roundToDecimals(2);\n var containerStyle = container.style;\n var disabled = false;\n var location = 0;\n\n function x(n) {\n return \"translate3d(\" + n + \"%,0px,0px)\";\n }\n\n function y(n) {\n return \"translate3d(0px,\" + n + \"%,0px)\";\n }\n\n function to(v) {\n if (disabled) return;\n var target = roundToTwoDecimals(v.get());\n\n if (location !== target) {\n getComputedStyle(container).transform;\n containerStyle.transform = translateAxis(target);\n location = target;\n }\n }\n\n function toggleActive(active) {\n disabled = !active;\n }\n\n function clear() {\n containerStyle.transform = '';\n location = 0;\n }\n\n var self = {\n clear: clear,\n to: to,\n toggleActive: toggleActive\n };\n return self;\n}\n\nfunction Engine(root, container, slides, options, events) {\n // Options\n var align = options.align,\n scrollAxis = options.axis,\n startIndex = options.startIndex,\n inViewThreshold = options.inViewThreshold,\n loop = options.loop,\n speed = options.speed,\n dragFree = options.dragFree,\n slidesToScroll = options.slidesToScroll,\n containScroll = options.containScroll; // Measurements\n\n var axis = Axis(scrollAxis);\n var pxToPercent = PxToPercent(axis.measure(container));\n var viewSize = pxToPercent.totalPercent;\n var slideSizes = slides.map(axis.measure).map(pxToPercent.measure);\n var slideIndexes = arrayKeys(slideSizes);\n var groupedSizes = groupArray(slideSizes, slidesToScroll);\n var snapSizes = groupedSizes.map(function (g) {\n return g.reduce(function (a, s) {\n return a + s;\n });\n });\n var contentSize = slideSizes.reduce(function (a, s) {\n return a + s;\n }, 0);\n var alignment = Alignment({\n align: align,\n viewSize: viewSize\n });\n var scrollSnap = ScrollSnap({\n snapSizes: snapSizes,\n alignment: alignment,\n loop: loop\n });\n var defaultSnaps = arrayKeys(snapSizes).map(scrollSnap.measure);\n var contain = ScrollContain({\n alignment: alignment,\n contentSize: contentSize,\n viewSize: viewSize\n });\n var shouldContain = !loop && containScroll !== '';\n var trimSnaps = containScroll === 'trimSnaps';\n var containedSnaps = contain.measure(defaultSnaps, trimSnaps);\n var scrollSnaps = shouldContain ? containedSnaps : defaultSnaps; // Index\n\n var indexMax = Math.max(0, scrollSnaps.length - 1);\n var indexSpan = Limit({\n min: 0,\n max: indexMax\n });\n var index = Counter({\n limit: indexSpan,\n start: startIndex,\n loop: loop\n });\n var indexPrevious = index.clone(); // ScrollLimit\n\n var scrollLimit = ScrollLimit({\n loop: loop,\n contentSize: contentSize\n });\n var limit = scrollLimit.measure(scrollSnaps); // Draw\n\n var update = function update() {\n engine.scrollBody.seek(target).update();\n var settled = engine.scrollBody.settle(target);\n\n if (!dragHandler.pointerDown()) {\n if (!loop) engine.scrollBounds.constrain(target);\n\n if (settled) {\n engine.animation.stop();\n events.emit('settle');\n }\n }\n\n if (loop) {\n var direction = engine.scrollBody.direction.get();\n engine.scrollLooper.loop(loopVectors, direction);\n engine.slideLooper.loop(slides);\n }\n\n if (!settled) events.emit('scroll');\n engine.translate.to(engine.scrollBody.location);\n engine.animation.proceed();\n }; // Shared\n\n\n var animation = Animation(update);\n var startLocation = scrollSnaps[index.get()];\n var location = Vector1D(startLocation);\n var target = Vector1D(startLocation);\n var loopVectors = [location, target];\n var scrollBody = ScrollBody({\n location: location,\n speed: speed,\n mass: 1\n });\n var scrollTarget = ScrollTarget({\n contentSize: contentSize,\n index: index,\n limit: limit,\n loop: loop,\n scrollSnaps: scrollSnaps,\n target: target\n });\n var scrollTo = ScrollTo({\n animation: animation,\n events: events,\n index: index,\n indexPrevious: indexPrevious,\n scrollTarget: scrollTarget,\n target: target\n });\n var slidesInView = SlidesInView({\n contentSize: contentSize,\n inViewThreshold: inViewThreshold,\n loop: loop,\n slideSizes: slideSizes,\n viewSize: viewSize\n }); // DragHandler\n\n var dragHandler = DragHandler({\n animation: animation,\n axis: axis,\n dragFree: dragFree,\n dragTracker: DragTracker({\n axis: axis,\n pxToPercent: pxToPercent\n }),\n element: root,\n events: events,\n index: index,\n limit: limit,\n location: location,\n loop: loop,\n scrollBody: scrollBody,\n scrollTo: scrollTo,\n scrollTarget: scrollTarget,\n target: target\n }); // Slider\n\n var engine = {\n animation: animation,\n axis: axis,\n dragHandler: dragHandler,\n pxToPercent: pxToPercent,\n index: index,\n indexPrevious: indexPrevious,\n limit: limit,\n location: location,\n options: options,\n scrollBody: scrollBody,\n scrollBounds: ScrollBounds({\n animation: animation,\n limit: limit,\n location: location,\n scrollBody: scrollBody\n }),\n scrollLooper: ScrollLooper({\n contentSize: contentSize,\n limit: limit,\n location: location,\n pxToPercent: pxToPercent\n }),\n scrollProgress: ScrollProgress({\n limit: limit\n }),\n scrollSnaps: scrollSnaps,\n scrollTarget: scrollTarget,\n scrollTo: scrollTo,\n slideFocus: SlideFocus({\n root: root,\n scrollTo: scrollTo,\n slidesToScroll: slidesToScroll\n }),\n slideLooper: SlideLooper({\n axis: axis,\n contentSize: contentSize,\n location: location,\n scrollSnaps: scrollSnaps,\n slideSizes: slideSizes,\n slidesInView: slidesInView,\n viewSize: viewSize\n }),\n slidesInView: slidesInView,\n slideIndexes: slideIndexes,\n target: target,\n translate: Translate({\n axis: axis,\n container: container\n })\n };\n return engine;\n}\n\nfunction EventEmitter() {\n var listeners = {\n destroy: [],\n pointerDown: [],\n pointerUp: [],\n init: [],\n reInit: [],\n resize: [],\n scroll: [],\n select: [],\n settle: []\n };\n\n function emit(evt) {\n listeners[evt].forEach(function (e) {\n return e(evt);\n });\n return self;\n }\n\n function on(evt, cb) {\n listeners[evt] = listeners[evt].concat([cb]);\n return self;\n }\n\n function off(evt, cb) {\n listeners[evt] = listeners[evt].filter(function (e) {\n return e !== cb;\n });\n return self;\n }\n\n var self = {\n emit: emit,\n off: off,\n on: on\n };\n return self;\n}\n\nvar defaultOptions = {\n align: 'center',\n axis: 'x',\n containScroll: '',\n containerSelector: '*',\n dragFree: false,\n draggable: true,\n draggableClass: 'is-draggable',\n draggingClass: 'is-dragging',\n inViewThreshold: 0,\n loop: false,\n selectedClass: 'is-selected',\n slidesToScroll: 1,\n speed: 10,\n startIndex: 0\n};\n\nfunction EmblaCarousel(sliderRoot, userOptions) {\n var events = EventEmitter();\n var eventStore = EventStore();\n var debouncedResize = debounce(resize, 500);\n var reInit = reActivate;\n var on = events.on,\n off = events.off;\n var engine;\n var activated = false;\n\n var options = _extends({}, defaultOptions);\n\n var rootElementSize = 0;\n var container;\n var slides;\n activate(userOptions);\n\n function storeElements() {\n if (!sliderRoot) throw new Error('Missing root node 😢');\n var selector = options.containerSelector;\n var sliderContainer = sliderRoot.querySelector(selector);\n if (!sliderContainer) throw new Error('Missing container node 😢');\n container = sliderContainer;\n slides = arrayFromCollection(container.children);\n }\n\n function activate(partialOptions) {\n storeElements();\n options = _extends(options, partialOptions);\n engine = Engine(sliderRoot, container, slides, options, events);\n rootElementSize = engine.axis.measure(sliderRoot);\n eventStore.add(window, 'resize', debouncedResize);\n engine.translate.to(engine.scrollBody.location);\n\n if (options.loop) {\n if (!engine.slideLooper.canLoop()) {\n deActivate();\n return activate({\n loop: false\n });\n }\n\n engine.slideLooper.loop(slides);\n }\n\n if (options.draggable && slides.length) {\n engine.dragHandler.addActivationEvents();\n\n if (options.draggableClass) {\n addClass(sliderRoot, options.draggableClass);\n }\n\n if (options.draggingClass) {\n events.on('pointerDown', toggleDraggingClass).on('pointerUp', toggleDraggingClass);\n }\n }\n\n if (slides.length) {\n engine.slideFocus.addActivationEvents(slides);\n }\n\n if (options.selectedClass) {\n toggleSelectedClass();\n events.on('select', toggleSelectedClass).on('pointerUp', toggleSelectedClass);\n }\n\n if (!activated) {\n setTimeout(function () {\n return events.emit('init');\n }, 0);\n activated = true;\n }\n }\n\n function toggleDraggingClass(evt) {\n var draggingClass = options.draggingClass;\n if (evt === 'pointerDown') addClass(sliderRoot, draggingClass);else removeClass(sliderRoot, draggingClass);\n }\n\n function toggleSelectedClass() {\n var selectedClass = options.selectedClass;\n var inView = slidesInView(true);\n var notInView = slidesNotInView(true);\n notInView.forEach(function (i) {\n return removeClass(slides[i], selectedClass);\n });\n inView.forEach(function (i) {\n return addClass(slides[i], selectedClass);\n });\n }\n\n function deActivate() {\n engine.dragHandler.removeAllEvents();\n engine.slideFocus.removeAllEvents();\n engine.animation.stop();\n eventStore.removeAll();\n engine.translate.clear();\n engine.slideLooper.clear(slides);\n removeClass(sliderRoot, options.draggableClass);\n slides.forEach(function (s) {\n return removeClass(s, options.selectedClass);\n });\n events.off('select', toggleSelectedClass);\n events.off('pointerUp', toggleSelectedClass);\n events.off('pointerDown', toggleDraggingClass);\n events.off('pointerUp', toggleDraggingClass);\n }\n\n function reActivate(partialOptions) {\n if (!activated) return;\n var startIndex = selectedScrollSnap();\n\n var newOptions = _extends({\n startIndex: startIndex\n }, partialOptions);\n\n deActivate();\n activate(newOptions);\n events.emit('reInit');\n }\n\n function destroy() {\n if (!activated) return;\n deActivate();\n activated = false;\n events.emit('destroy');\n }\n\n function resize() {\n if (!activated) return;\n var newRootElementSize = engine.axis.measure(sliderRoot);\n if (rootElementSize !== newRootElementSize) reActivate();\n events.emit('resize');\n }\n\n function slidesInView(target) {\n var location = engine[target ? 'target' : 'location'].get();\n var type = options.loop ? 'removeOffset' : 'constrain';\n return engine.slidesInView.check(engine.limit[type](location));\n }\n\n function slidesNotInView(target) {\n var inView = slidesInView(target);\n return engine.slideIndexes.filter(function (i) {\n return inView.indexOf(i) === -1;\n });\n }\n\n function scrollTo(index, direction) {\n engine.scrollBody.useDefaultMass().useDefaultSpeed();\n if (activated) engine.scrollTo.index(index, direction || 0);\n }\n\n function scrollNext() {\n var next = engine.index.clone().add(1);\n scrollTo(next.get(), -1);\n }\n\n function scrollPrev() {\n var prev = engine.index.clone().add(-1);\n scrollTo(prev.get(), 1);\n }\n\n function canScrollNext() {\n var next = engine.index.clone().add(1);\n return next.get() !== selectedScrollSnap();\n }\n\n function canScrollPrev() {\n var prev = engine.index.clone().add(-1);\n return prev.get() !== selectedScrollSnap();\n }\n\n function scrollSnapList() {\n return engine.scrollSnaps.map(engine.scrollProgress.get);\n }\n\n function scrollProgress() {\n return engine.scrollProgress.get(engine.location.get());\n }\n\n function selectedScrollSnap() {\n return engine.index.get();\n }\n\n function previousScrollSnap() {\n return engine.indexPrevious.get();\n }\n\n function clickAllowed() {\n return engine.dragHandler.clickAllowed();\n }\n\n function dangerouslyGetEngine() {\n return engine;\n }\n\n function containerNode() {\n return container;\n }\n\n function slideNodes() {\n return slides;\n }\n\n var self = {\n canScrollNext: canScrollNext,\n canScrollPrev: canScrollPrev,\n clickAllowed: clickAllowed,\n containerNode: containerNode,\n dangerouslyGetEngine: dangerouslyGetEngine,\n destroy: destroy,\n off: off,\n on: on,\n previousScrollSnap: previousScrollSnap,\n reInit: reInit,\n scrollNext: scrollNext,\n scrollPrev: scrollPrev,\n scrollProgress: scrollProgress,\n scrollSnapList: scrollSnapList,\n scrollTo: scrollTo,\n selectedScrollSnap: selectedScrollSnap,\n slideNodes: slideNodes,\n slidesInView: slidesInView,\n slidesNotInView: slidesNotInView\n };\n return self;\n}\n\nexport default EmblaCarousel;\n//# sourceMappingURL=embla-carousel.esm.js.map\n","import { getRootElements } from \"oj-dom-utils\"\r\n\r\nexport const isTouchDevice = () =>\r\n \"ontouchstart\" in window\r\n\r\nexport const isMobileViewport = (width = 768) =>\r\n window.innerWidth <= width\r\n\r\nexport const getFileExtensionFromString = (str: string) =>\r\n str.split(\".\")[1]\r\n\r\nexport const mounter = (selector: string, cb: (root: HTMLElement, data: T | null) => void) =>\r\n getRootElements(selector)\r\n .forEach(x => {\r\n const inputs = Array.from(x.querySelectorAll(\"input\"))\r\n let data: any = null\r\n if (inputs.length > 1)\r\n data = inputs.map(x => {\r\n try {\r\n return JSON.parse(x.value)\r\n } catch (err) {\r\n return x.value\r\n }\r\n })\r\n else if (inputs[0] instanceof HTMLInputElement)\r\n try {\r\n data = JSON.parse(inputs[0].value)\r\n } catch (err) {\r\n data = inputs[0].value\r\n }\r\n cb(x, data)\r\n })\r\n\r\nexport const downloadFile = (response: any, name: string) => {\r\n if (navigator.appVersion.toString().indexOf('.NET') > 0)\r\n window.navigator[\"msSaveBlob\"](response, name)\r\n else {\r\n const blob = new Blob([response], { type: response.type })\r\n const objectUrl = URL.createObjectURL(blob)\r\n const a = document.createElement(\"a\")\r\n a.style.display = \"none\"\r\n document.body.appendChild(a)\r\n a.href = objectUrl\r\n a.download = name\r\n a.click()\r\n URL.revokeObjectURL(objectUrl)\r\n }\r\n}\r\n\r\nexport const testMailAddress = (mail: string) =>\r\n /^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(mail)\r\n\r\nexport const loadScript = (src: string) =>\r\n new Promise((resolve, reject) => {\r\n const script = document.createElement(\"script\")\r\n script.type = \"text/javascript\"\r\n script.onload = resolve\r\n script.onerror = reject\r\n script.src = src\r\n document.body.appendChild(script)\r\n })\r\n\r\nexport const loadScriptSource = (txt: string) =>\r\n new Promise((resolve, reject) => {\r\n const script = document.createElement(\"script\")\r\n script.type = \"text/javascript\"\r\n script.onload = resolve\r\n script.onerror = reject\r\n script.innerHTML = txt\r\n document.body.appendChild(script)\r\n })","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = {}\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril.js requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar MithrilTsxComponent = /** @class */ (function () {\n function MithrilTsxComponent() {\n }\n return MithrilTsxComponent;\n}());\nexports.MithrilTsxComponent = MithrilTsxComponent;\n","/* global window */\n\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with 'new'.\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function.\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved with itself.\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(typeof window !== \"undefined\" ? window : null)\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","// This exists so I'm only saving it once.\n\"use strict\"\n\nvar hasOwn = require(\"./hasOwn\")\n\nmodule.exports = Object.assign || function(target, source) {\n\tfor (var key in source) {\n\t\tif (hasOwn.call(source, key)) target[key] = source[key]\n\t}\n}\n","\"use strict\"\n\nfunction decodeURIComponentSave(str) {\n\ttry {\n\t\treturn decodeURIComponent(str)\n\t} catch(err) {\n\t\treturn str\n\t}\n}\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponentSave(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponentSave(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\n// Note: this is mildly perf-sensitive.\n//\n// It does *not* use `delete` - dynamic `delete`s usually cause objects to bail\n// out into dictionary mode and just generally cause a bunch of optimization\n// issues within engines.\n//\n// Ideally, I would've preferred to do this, if it weren't for the optimization\n// issues:\n//\n// ```js\n// const hasOwn = require(\"./hasOwn\")\n// const magic = [\n// \"key\", \"oninit\", \"oncreate\", \"onbeforeupdate\", \"onupdate\",\n// \"onbeforeremove\", \"onremove\",\n// ]\n// module.exports = (attrs, extras) => {\n// const result = Object.assign(Object.create(null), attrs)\n// for (const key of magic) delete result[key]\n// if (extras != null) for (const key of extras) delete result[key]\n// return result\n// }\n// ```\n\nvar hasOwn = require(\"./hasOwn\")\n// Words in RegExp literals are sometimes mangled incorrectly by the internal bundler, so use RegExp().\nvar magic = new RegExp(\"^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$\")\n\nmodule.exports = function(attrs, extras) {\n\tvar result = {}\n\n\tif (extras != null) {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key) && extras.indexOf(key) < 0) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key)) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n","import m, { Vnode } from \"mithril\"\r\nimport { MithrilTsxComponent } from \"mithril-tsx-component\"\r\nimport { mounter, isMobileViewport } from \"../utils\"\r\nimport { debounce } from \"oj-utils\"\r\nimport { Carousel } from \"../components/Carousel/Carousel\"\r\nimport { IItem } from \"./trackingTypes\"\r\n\r\ninterface IOverview {\r\n navigateUrl?: string,\r\n title: string,\r\n products: IProduct[]\r\n}\r\n\r\ninterface IProduct {\r\n hotspotBlockType: number,\r\n navigateUrl: string,\r\n openInNewTab: boolean,\r\n title: string,\r\n labelImageUrl: string,\r\n labelRightTopImageUrl: string,\r\n image: IImage,\r\n subtextFirstLine: string,\r\n subtextSecondLine: string,\r\n actionPrice: number,\r\n price: number,\r\n priceText: string,\r\n buttonText: string,\r\n buttonType: string,\r\n backgroundColor?: string\r\n i?: number\r\n list?: string\r\n productId?: string\r\n editorType?: string\r\n category?: string\r\n fujiId?: string\r\n campaignLabel?: string\r\n regularPrice?: string\r\n discountPrice?: string\r\n}\r\n\r\ninterface IImage {\r\n title: string,\r\n altText: string,\r\n imageUrls: {\r\n 215: string,\r\n 445: string,\r\n 185: string,\r\n 400: string\r\n }\r\n}\r\n\r\nconst hasDecimals = (price) => {\r\n return price % 1 !== 0\r\n}\r\n\r\nconst formatPrice = (price) => {\r\n if (!hasDecimals(price)) return `${price}`\r\n\r\n const PriceArray = price.toFixed(2).split(\".\")\r\n return `${PriceArray[0]}.${PriceArray[1]}`\r\n}\r\n\r\nexport class ProductGridSlider extends MithrilTsxComponent {\r\n\r\n oninit(v) {\r\n window.addEventListener('resize', debounce(1000, () => {\r\n m.redraw()\r\n }))\r\n }\r\n\r\n view(v: Vnode) {\r\n const overview: IOverview = v.attrs\r\n\r\n return
\r\n
\r\n {overview.navigateUrl\r\n ?

{m.trust(overview.title)}

\r\n :

{m.trust(overview.title)}

\r\n }\r\n
\r\n\r\n {overview.products.length > 0 && (\r\n isMobileViewport(992)\r\n ? {overview.products.map((x, i) =>\r\n
\r\n {x.hotspotBlockType === 0\r\n ? \r\n : \r\n }\r\n
\r\n )}
\r\n :
\r\n {overview.products.map((x, i) =>\r\n
\r\n {x.hotspotBlockType === 0\r\n ? \r\n : \r\n }\r\n
\r\n )}\r\n
\r\n )}\r\n
\r\n }\r\n}\r\n\r\nexport class ProductBlock extends MithrilTsxComponent {\r\n view(v: Vnode) {\r\n const product: IProduct = v.attrs\r\n const price = product.actionPrice || product.price\r\n const cats = product.category.split(\"/\").filter(x => x && x !== \" \")\r\n const listName = product.list ?? v.attrs.list;\r\n\r\n const item: IItem = {\r\n item_id: product.fujiId ?? product.productId,\r\n item_name: product.title,\r\n item_category: cats.length > 0 ? cats[0] : null,\r\n item_category2: cats.length > 1 ? cats[1] : null,\r\n item_category3: cats.length > 2 ? cats[2] : null,\r\n price: product.regularPrice || null,\r\n discount: product.discountPrice || null,\r\n editor_type: product.editorType,\r\n }\r\n\r\n const list = {\r\n item_list_name: listName,\r\n index: (product.i + 1).toString()\r\n }\r\n\r\n const itemList = {...item, ...list}\r\n\r\n return
\r\n {\r\n window.ojtag(\"select_item\", { items: [{...itemList}] })\r\n\r\n if(product.campaignLabel)\r\n window.ojtag(\"select_promotion\", { items: [item], promo: [{ name: product.campaignLabel }] })\r\n }}\r\n >\r\n \r\n {product.labelImageUrl &&
\r\n \"label\"\r\n
}\r\n\r\n {product.labelRightTopImageUrl &&
\r\n \"label\"\r\n
}\r\n\r\n {product.image.imageUrls != null &&
\r\n \r\n \r\n \r\n \r\n {product.image.altText}\r\n \r\n
}\r\n\r\n

\r\n {product.title}\r\n {m.trust(product.subtextFirstLine)}\r\n {m.trust(product.subtextSecondLine)}\r\n\r\n {(price || product.buttonText) &&\r\n \r\n {price &&\r\n \r\n {product.actionPrice && {m.trust(formatPrice(product.price))}}\r\n {product.priceText && {product.priceText}}\r\n\r\n \r\n {m.trust(formatPrice(price))}\r\n \r\n \r\n }\r\n {product.buttonText &&\r\n {product.buttonText}\r\n }\r\n \r\n }\r\n

\r\n
\r\n
\r\n }\r\n}\r\n\r\nexport class ProductTipBlock extends MithrilTsxComponent {\r\n view(v: Vnode) {\r\n const product: IProduct = v.attrs\r\n\r\n return \r\n }\r\n}\r\n\r\nmounter(`[data-m-product-grid-slider]`, (r, d) => {\r\n m.mount(r, {\r\n view: v => \r\n })\r\n})","\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\tisKeyed && (input[i] != null || typeof input[i] === \"boolean\")\n\t\t\t\t\t\t? \"In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole.\"\n\t\t\t\t\t\t: \"In fragments, vnodes must either all have keys or none have keys.\"\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(typeof window !== \"undefined\" ? window : null, PromisePolyfill, mountRedraw.redraw)\n","var scope = (typeof global !== \"undefined\" && global) ||\n (typeof self !== \"undefined\" && self) ||\n window;\nvar apply = Function.prototype.apply;\n\n// DOM APIs, for completeness\n\nexports.setTimeout = function() {\n return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);\n};\nexports.setInterval = function() {\n return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);\n};\nexports.clearTimeout =\nexports.clearInterval = function(timeout) {\n if (timeout) {\n timeout.close();\n }\n};\n\nfunction Timeout(id, clearFn) {\n this._id = id;\n this._clearFn = clearFn;\n}\nTimeout.prototype.unref = Timeout.prototype.ref = function() {};\nTimeout.prototype.close = function() {\n this._clearFn.call(scope, this._id);\n};\n\n// Does not start the time, just sets up the members needed.\nexports.enroll = function(item, msecs) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = msecs;\n};\n\nexports.unenroll = function(item) {\n clearTimeout(item._idleTimeoutId);\n item._idleTimeout = -1;\n};\n\nexports._unrefActive = exports.active = function(item) {\n clearTimeout(item._idleTimeoutId);\n\n var msecs = item._idleTimeout;\n if (msecs >= 0) {\n item._idleTimeoutId = setTimeout(function onTimeout() {\n if (item._onTimeout)\n item._onTimeout();\n }, msecs);\n }\n};\n\n// setimmediate attaches itself to the global object\nrequire(\"setimmediate\");\n// On some exotic environments, it's not clear which object `setimmediate` was\n// able to install onto. Search each possibility in the same order as the\n// `setimmediate` library.\nexports.setImmediate = (typeof self !== \"undefined\" && self.setImmediate) ||\n (typeof global !== \"undefined\" && global.setImmediate) ||\n (this && this.setImmediate);\nexports.clearImmediate = (typeof self !== \"undefined\" && self.clearImmediate) ||\n (typeof global !== \"undefined\" && global.clearImmediate) ||\n (this && this.clearImmediate);\n","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a