{"version":3,"sources":["webpack:///./node_modules/es6-promise/auto.js","webpack:///./node_modules/es6-promise/dist/es6-promise.js","webpack:///./EnBW.Vertrieb.Websites.Dsc/StaticResources/TypeScript/App.ts","webpack:///./EnBW.Vertrieb.Websites.Dsc/StaticResources/TypeScript/AppCommon.ts","webpack:///./EnBW.Vertrieb.Websites.Dsc/StaticResources/TypeScript/ImportView.ts","webpack:///./EnBW.Vertrieb.Websites.Dsc/StaticResources/TypeScript/ImportViewCommon.ts","webpack:///./node_modules/scroll-behavior-polyfill/dist/index.js"],"names":["module","exports","__webpack_require__","polyfill","process","global","isFunction","x","isArray","Array","Object","prototype","toString","call","len","vertxNext","customSchedulerFn","asap","callback","arg","queue","flush","scheduleFlush","browserWindow","window","undefined","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","setTimeout","i","then","onFulfillment","onRejection","parent","this","child","constructor","noop","PROMISE_ID","makePromise","_state","arguments","invokeCallback","_result","subscribe","resolve$1","object","promise","resolve","nextTick","iterations","observer","node","document","createTextNode","observe","characterData","data","useMutationObserver","channel","port1","onmessage","port2","postMessage","useMessageChannel","vertx","Function","require","runOnLoop","runOnContext","e","attemptVertx","Math","random","substring","PENDING","FULFILLED","REJECTED","tryThen","then$$1","value","fulfillmentHandler","rejectionHandler","handleMaybeThenable","maybeThenable","thenable","fulfill","reject","reason","handleOwnThenable","sealed","error","_label","handleForeignThenable","TypeError","type","objectOrFunction","publishRejection","_onerror","publish","_subscribers","length","subscribers","settled","detail","hasCallback","succeeded","id","Enumerator","Constructor","input","_instanceConstructor","_remaining","_enumerate","Error","_eachEntry","entry","c","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","state","enumerator","Promise","resolver","needsResolver","initializePromise","needsNew","catch","finally","all","entries","race","_","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","local","P","promiseToString","cast","factory","_super","App","AppCommon_1","default","__extends","setup","supportsWebP","img","Image","src","onload","width","height","onerror","webPSupported","root","documentElement","classList","replace","scrollify","console","debug","DscTracking_1","startAutomaticTracking","entryPointModuleName","RequireConfigAccessor_1","getPageOption","viewName","importPromise","ImportView_1","initView","addEventListener","ex","message","stack","componentId","encodedModel","modelString","decodeURIComponent","JSON","parse","AppCommon","querySelectorAll","forEach","element","OneTrust","ToggleInfoDisplay","initComponent","selector","elements","_a","sent","m","err","errorPageUrl","getWebsiteOption","location","href","ImportViewCommon_1","resolve_1","reject_1","__WEBPACK_AMD_REQUIRE_ARRAY__","apply","bind","UNSUPPORTED_ENVIRONMENT","SUPPORTS_SCROLL_BEHAVIOR","style","__assign","assign","t","s","n","p","hasOwnProperty","__read","o","Symbol","iterator","r","ar","next","done","push","getScrollingElement","scrollingElement","STYLE_ATTRIBUTE_PROPERTY_NAME","STYLE_ATTRIBUTE_PROPERTY_REGEXP","RegExp","appendScrollBehaviorToStyleAttribute","behavior","addition","attributeValue","getAttribute","existingValueForProperty","parseScrollBehaviorFromStyleAttribute","replacementProperty","setAttribute","endsWith","styleAttributeValue","includes","match","styleDeclarationPropertyName","getScrollBehavior","inputTarget","options","target","scrollBehaviorPropertyValue","computedStyleValue","getComputedStyle","getPropertyValue","HALF","ease","k","cos","PI","NOOP","reset","map","WeakMap","SCROLL_TIME","smoothScroll","startTime","startX","startY","endX","endY","method","scroller","timeLapsed","distanceX","distanceY","speed","max","abs","scrollSnapFix","cachedScrollSnapValue","cachedScrollBehaviorStyleAttributeValue","secondaryScroller","secondaryScrollerCachedScrollSnapValue","secondaryScrollerCachedScrollBehaviorStyleAttributeValue","existingResult","get","release","scrollSnapType","body","cachedComputedScrollSnapValue","secondaryScrollerCachedComputedScrollSnapValue","hasReleased","eventTarget","removeEventListener","resetHandler","set","disableScrollSnap","requestAnimationFrame","animate","timestamp","percentage","min","positionX","floor","positionY","ELEMENT_ORIGINAL_SCROLL","Element","scroll","WINDOW_ORIGINAL_SCROLL","ELEMENT_ORIGINAL_SCROLL_BY","scrollBy","WINDOW_ORIGINAL_SCROLL_BY","ELEMENT_ORIGINAL_SCROLL_TO","scrollTo","WINDOW_ORIGINAL_SCROLL_TO","elementPrototypeScrollFallback","y","__adjustingScrollPosition","scrollLeft","scrollTop","elementPrototypeScrollToFallback","elementPrototypeScrollByFallback","getOriginalScrollMethodForKind","kind","getSmoothScrollOptions","performance","now","Date","scrollX_1","scrollX","pageXOffset_1","pageXOffset","scrollY_1","scrollY","pageYOffset_1","pageYOffset","ensureNumeric","parseFloat","isScrollToOptions","handleScrollMethod","optionsOrX","left","top","onScrollWithOptions","normalizeScrollCoordinates","getScrollToOptionsWithValidation","getParent","currentElement","nodeType","parentNode","ShadowRoot","host","Node","canOverflow","overflow","isScrollable","clientHeight","scrollHeight","clientWidth","scrollWidth","overflowY","overflowX","findNearestAncestorsWithScrollBehavior","getLocationOrigin","locationLike","origin","port","protocol","hostname","ID_WITH_LEADING_DIGIT_REGEXP","catchNavigation","isTrusted","HTMLAnchorElement","pathname","search","hash","parent_1","findNearestRoot","elementMatch","getElementById","slice","querySelector","preventDefault","scrollIntoView","ELEMENT_ORIGINAL_SCROLL_INTO_VIEW","alignNearest","scrollingEdgeStart","scrollingEdgeEnd","scrollingSize","scrollingBorderStart","scrollingBorderEnd","elementEdgeStart","elementEdgeEnd","elementSize","computeScrollIntoView","block","inline","viewportWidth","visualViewport","innerWidth","viewportHeight","innerHeight","viewportX","viewportY","getBoundingClientRect","targetHeight","targetWidth","targetTop","targetRight","right","targetBottom","bottom","targetLeft","targetBlock","targetInline","_b","frameStyle","borderLeft","parseInt","borderLeftWidth","borderTop","borderTopWidth","borderRight","borderRightWidth","borderBottom","borderBottomWidth","blockScroll","inlineScroll","scrollbarWidth","offsetWidth","scrollbarHeight","offsetHeight","ELEMENT_ORIGINAL_SCROLL_TOP_SET_DESCRIPTOR","getOwnPropertyDescriptor","ELEMENT_ORIGINAL_SCROLL_LEFT_SET_DESCRIPTOR","SUPPORTS_ELEMENT_PROTOTYPE_SCROLL_METHODS","normalizedOptions","ancestorWithScroll","ancestorWithScrollBehavior","top_1","HTMLElement","defineProperty"],"mappings":"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","file":"main.d625e7e3b784b1722379.chunk.js","sourcesContent":["// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it: require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\n","import AppCommon from './AppCommon';\r\nimport RequireConfigAccessor from './Foundation/RequireConfigAccessor';\r\nimport ImportView from './ImportView';\r\nimport DscTracking from './Site/DscTracking';\r\nimport * as scrollify from 'scroll-behavior-polyfill';\r\n\r\nexport class App extends AppCommon {\r\n async setup(): Promise {\r\n const supportsWebP = (callback: (boolean) => void): void => {\r\n const img = new Image();\r\n\r\n img.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\r\n img.onload = () => {\r\n callback((img.width > 0) && (img.height > 0));\r\n };\r\n img.onerror = () => {\r\n callback(false);\r\n };\r\n };\r\n\r\n super.setup();\r\n\r\n supportsWebP((webPSupported) => {\r\n const root: HTMLElement = document.documentElement;\r\n if (!webPSupported) {\r\n root.classList.replace('webp', 'no-webp');\r\n }\r\n });\r\n\r\n if (!scrollify) {\r\n console.debug('no scrollify enabled!');\r\n }\r\n DscTracking.startAutomaticTracking();\r\n\r\n const entryPointModuleName = RequireConfigAccessor.getPageOption('entryPointModuleName');\r\n const viewName: string = entryPointModuleName as string;\r\n if (viewName) {\r\n const importPromise: Promise = ImportView(viewName);\r\n App.initView(viewName, importPromise);\r\n }\r\n }\r\n}\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n try {\r\n const app = new App();\r\n app.setup();\r\n } catch (ex) {\r\n if (window.console && window.console.error && ex) {\r\n window.console.error(`Exception: ${ex.message}`, ex.stack);\r\n }\r\n }\r\n});\r\n\r\nwindow['setViewModel'] = (componentId: string, encodedModel: string) => {\r\n if (!window['viewModels']) {\r\n // Console.debug('viewModel initialized...');\r\n window['viewModels'] = [];\r\n }\r\n // Console.debug(`viewModel for [${componentId}]`);\r\n\r\n const modelString = decodeURIComponent(encodedModel.replace(/\\+/g, ' '))\r\n .replace(/\\\\n/g, '\\\\n')\r\n .replace(/\\\\'/g, '\\\\\\'')\r\n .replace(/\\\\\"\"/g, '\\\\\"\"')\r\n .replace(/\\\\&/g, '\\\\&')\r\n .replace(/\\\\r/g, '\\\\r')\r\n .replace(/\\\\t/g, '\\\\t')\r\n .replace(/\\\\b/g, '\\\\b')\r\n .replace(/\\\\f/g, '\\\\f');\r\n\r\n window['viewModels'][`${componentId}`] = JSON.parse(modelString);\r\n};","import { IJavascriptComponent } from './Foundation/Interfaces/IJavascriptComponent';\r\nimport RequireConfigAccessor from './Foundation/RequireConfigAccessor';\r\n\r\nexport class AppCommon {\r\n public async setup() {\r\n // �ffnen des Cookie Modal an Clicks binden\r\n document.querySelectorAll('.js_show-cookie-overlay').forEach((element) => {\r\n element.addEventListener('click', () => {\r\n OneTrust.ToggleInfoDisplay();\r\n }, false);\r\n });\r\n }\r\n\r\n public static async initComponent(selector: string, module: () => Promise): Promise {\r\n const elements = document.querySelectorAll(selector);\r\n\r\n if (elements.length) {\r\n (await module()).setup(elements);\r\n }\r\n }\r\n\r\n public static async initView(viewName: string, importPromise: Promise): Promise {\r\n\r\n if (importPromise) {\r\n importPromise.then((m) => {\r\n if (m.setup) {\r\n m.setup();\r\n }\r\n }).catch((err) => {\r\n const errorPageUrl = RequireConfigAccessor.getWebsiteOption('errorPageUrl');\r\n\r\n if (window.console && window.console.error && err) {\r\n window.console.error(`Exception: ${err.message}`, err.stack);\r\n }\r\n\r\n window.location.href = errorPageUrl;\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default AppCommon;","import ImportViewCommon from './ImportViewCommon';\r\n\r\nexport function initView(viewName: string): Promise {\r\n const importPromise: Promise = ImportViewCommon(viewName);\r\n\r\n return importPromise;\r\n}\r\n\r\nexport default initView;","export function initView(viewName: string): Promise {\r\n // Areas/Dsc\r\n switch (viewName) {\r\n case 'Site/Areas/Dsc/Views/Page/Anzeige':\r\n return import('./Areas/Dsc/Views/Anzeige');\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default initView;","(function () {\n 'use strict';\n\n var UNSUPPORTED_ENVIRONMENT = typeof window === \"undefined\";\n\n /**\n * Is true if the browser natively supports the 'scroll-behavior' CSS-property.\n * @type {boolean}\n */\n var SUPPORTS_SCROLL_BEHAVIOR = UNSUPPORTED_ENVIRONMENT ? false : \"scrollBehavior\" in document.documentElement.style;\n\n \n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(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)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n }\n\n function getScrollingElement() {\n if (document.scrollingElement != null) {\n return document.scrollingElement;\n }\n else {\n return document.documentElement;\n }\n }\n\n var STYLE_ATTRIBUTE_PROPERTY_NAME = \"scroll-behavior\";\n var STYLE_ATTRIBUTE_PROPERTY_REGEXP = new RegExp(STYLE_ATTRIBUTE_PROPERTY_NAME + \":\\\\s*([^;]*)\");\n /**\n * Given an Element, this function appends the given ScrollBehavior CSS property value to the elements' 'style' attribute.\n * If it doesnt already have one, it will add it.\n * @param {Element} element\n * @param {ScrollBehavior} behavior\n */\n function appendScrollBehaviorToStyleAttribute(element, behavior) {\n var addition = STYLE_ATTRIBUTE_PROPERTY_NAME + \":\" + behavior;\n var attributeValue = element.getAttribute(\"style\");\n if (attributeValue == null || attributeValue === \"\") {\n element.setAttribute(\"style\", addition);\n return;\n }\n // The style attribute may already include a 'scroll-behavior:' in which case that should be replaced\n var existingValueForProperty = parseScrollBehaviorFromStyleAttribute(element);\n if (existingValueForProperty != null) {\n var replacementProperty = STYLE_ATTRIBUTE_PROPERTY_NAME + \":\" + existingValueForProperty;\n // Replace the variant that ends with a semi-colon which it may\n attributeValue = attributeValue.replace(replacementProperty + \";\", \"\");\n // Replace the variant that *doesn't* end with a semi-colon\n attributeValue = attributeValue.replace(replacementProperty, \"\");\n }\n // Now, append the behavior to the string.\n element.setAttribute(\"style\", attributeValue.endsWith(\";\") ? \"\" + attributeValue + addition : \";\" + attributeValue + addition);\n }\n /**\n * Given an Element, this function attempts to parse its 'style' attribute (if it has one)' to extract\n * a value for the 'scroll-behavior' CSS property (if it is given within that style attribute)\n * @param {Element} element\n * @returns {ScrollBehavior?}\n */\n function parseScrollBehaviorFromStyleAttribute(element) {\n var styleAttributeValue = element.getAttribute(\"style\");\n if (styleAttributeValue != null && styleAttributeValue.includes(STYLE_ATTRIBUTE_PROPERTY_NAME)) {\n var match = styleAttributeValue.match(STYLE_ATTRIBUTE_PROPERTY_REGEXP);\n if (match != null) {\n var _a = __read(match, 2), behavior = _a[1];\n if (behavior != null && behavior !== \"\") {\n return behavior;\n }\n }\n }\n return undefined;\n }\n\n var styleDeclarationPropertyName = \"scrollBehavior\";\n /**\n * Determines the scroll behavior to use, depending on the given ScrollOptions and the position of the Element\n * within the DOM\n * @param {Element|HTMLElement|Window} inputTarget\n * @param {ScrollOptions} [options]\n * @returns {ScrollBehavior}\n */\n function getScrollBehavior(inputTarget, options) {\n // If the given 'behavior' is 'smooth', apply smooth scrolling no matter what\n if (options != null && options.behavior === \"smooth\")\n return \"smooth\";\n var target = \"style\" in inputTarget ? inputTarget : getScrollingElement();\n var value;\n if (\"style\" in target) {\n // Check if scroll-behavior is set as a property on the CSSStyleDeclaration\n var scrollBehaviorPropertyValue = target.style[styleDeclarationPropertyName];\n // Return it if it is given and has a proper value\n if (scrollBehaviorPropertyValue != null && scrollBehaviorPropertyValue !== \"\") {\n value = scrollBehaviorPropertyValue;\n }\n }\n if (value == null) {\n var attributeValue = target.getAttribute(\"scroll-behavior\");\n if (attributeValue != null && attributeValue !== \"\") {\n value = attributeValue;\n }\n }\n if (value == null) {\n // Otherwise, check if it is set as an inline style\n value = parseScrollBehaviorFromStyleAttribute(target);\n }\n if (value == null) {\n // Take the computed style for the element and see if it contains a specific 'scroll-behavior' value\n var computedStyle = getComputedStyle(target);\n var computedStyleValue = computedStyle.getPropertyValue(\"scrollBehavior\");\n if (computedStyleValue != null && computedStyleValue !== \"\") {\n value = computedStyleValue;\n }\n }\n // In all other cases, use the value from the CSSOM\n return value;\n }\n\n \n\n \n\n var HALF = 0.5;\n /**\n * The easing function to use when applying the smooth scrolling\n * @param {number} k\n * @returns {number}\n */\n function ease(k) {\n return HALF * (1 - Math.cos(Math.PI * k));\n }\n\n var NOOP = {\n reset: function () { }\n };\n var map = typeof WeakMap === \"undefined\" ? undefined : new WeakMap();\n function disableScrollSnap(scroller) {\n // If scroll-behavior is natively supported, or if there is no native WeakMap support, there's no need for this fix\n if (SUPPORTS_SCROLL_BEHAVIOR || map == null) {\n return NOOP;\n }\n var scrollingElement = getScrollingElement();\n var cachedScrollSnapValue;\n var cachedScrollBehaviorStyleAttributeValue;\n var secondaryScroller;\n var secondaryScrollerCachedScrollSnapValue;\n var secondaryScrollerCachedScrollBehaviorStyleAttributeValue;\n var existingResult = map.get(scroller);\n if (existingResult != null) {\n cachedScrollSnapValue = existingResult.cachedScrollSnapValue;\n cachedScrollBehaviorStyleAttributeValue = existingResult.cachedScrollBehaviorStyleAttributeValue;\n secondaryScroller = existingResult.secondaryScroller;\n secondaryScrollerCachedScrollSnapValue = existingResult.secondaryScrollerCachedScrollSnapValue;\n secondaryScrollerCachedScrollBehaviorStyleAttributeValue = existingResult.secondaryScrollerCachedScrollBehaviorStyleAttributeValue;\n existingResult.release();\n }\n else {\n cachedScrollSnapValue = scroller.style.scrollSnapType === \"\" ? null : scroller.style.scrollSnapType;\n cachedScrollBehaviorStyleAttributeValue = parseScrollBehaviorFromStyleAttribute(scroller);\n secondaryScroller = scroller === scrollingElement && scrollingElement !== document.body ? document.body : undefined;\n secondaryScrollerCachedScrollSnapValue =\n secondaryScroller == null ? undefined : secondaryScroller.style.scrollSnapType === \"\" ? null : secondaryScroller.style.scrollSnapType;\n secondaryScrollerCachedScrollBehaviorStyleAttributeValue =\n secondaryScroller == null ? undefined : parseScrollBehaviorFromStyleAttribute(secondaryScroller);\n var cachedComputedScrollSnapValue = getComputedStyle(scroller).getPropertyValue(\"scroll-snap-type\");\n var secondaryScrollerCachedComputedScrollSnapValue = secondaryScroller == null ? undefined : getComputedStyle(secondaryScroller).getPropertyValue(\"scroll-snap-type\");\n // If it just so happens that there actually isn't any scroll snapping going on, there's no point in performing any additional work here.\n if (cachedComputedScrollSnapValue === \"none\" && secondaryScrollerCachedComputedScrollSnapValue === \"none\") {\n return NOOP;\n }\n }\n scroller.style.scrollSnapType = \"none\";\n if (secondaryScroller !== undefined) {\n secondaryScroller.style.scrollSnapType = \"none\";\n }\n if (cachedScrollBehaviorStyleAttributeValue !== undefined) {\n appendScrollBehaviorToStyleAttribute(scroller, cachedScrollBehaviorStyleAttributeValue);\n }\n if (secondaryScroller !== undefined && secondaryScrollerCachedScrollBehaviorStyleAttributeValue !== undefined) {\n appendScrollBehaviorToStyleAttribute(secondaryScroller, secondaryScrollerCachedScrollBehaviorStyleAttributeValue);\n }\n var hasReleased = false;\n var eventTarget = scroller === scrollingElement ? window : scroller;\n function release() {\n eventTarget.removeEventListener(\"scroll\", resetHandler);\n if (map != null) {\n map[\"delete\"](scroller);\n }\n hasReleased = true;\n }\n function resetHandler() {\n scroller.style.scrollSnapType = cachedScrollSnapValue;\n if (secondaryScroller != null && secondaryScrollerCachedScrollSnapValue !== undefined) {\n secondaryScroller.style.scrollSnapType = secondaryScrollerCachedScrollSnapValue;\n }\n if (cachedScrollBehaviorStyleAttributeValue !== undefined) {\n appendScrollBehaviorToStyleAttribute(scroller, cachedScrollBehaviorStyleAttributeValue);\n }\n if (secondaryScroller !== undefined && secondaryScrollerCachedScrollBehaviorStyleAttributeValue !== undefined) {\n appendScrollBehaviorToStyleAttribute(secondaryScroller, secondaryScrollerCachedScrollBehaviorStyleAttributeValue);\n }\n release();\n }\n function reset() {\n setTimeout(function () {\n if (hasReleased)\n return;\n eventTarget.addEventListener(\"scroll\", resetHandler);\n });\n }\n map.set(scroller, {\n release: release,\n cachedScrollSnapValue: cachedScrollSnapValue,\n cachedScrollBehaviorStyleAttributeValue: cachedScrollBehaviorStyleAttributeValue,\n secondaryScroller: secondaryScroller,\n secondaryScrollerCachedScrollSnapValue: secondaryScrollerCachedScrollSnapValue,\n secondaryScrollerCachedScrollBehaviorStyleAttributeValue: secondaryScrollerCachedScrollBehaviorStyleAttributeValue\n });\n return {\n reset: reset\n };\n }\n\n /**\n * The duration of a smooth scroll\n * @type {number}\n */\n var SCROLL_TIME = 15000;\n /**\n * Performs a smooth repositioning of the scroll\n * @param {ISmoothScrollOptions} options\n */\n function smoothScroll(options) {\n var startTime = options.startTime, startX = options.startX, startY = options.startY, endX = options.endX, endY = options.endY, method = options.method, scroller = options.scroller;\n var timeLapsed = 0;\n var distanceX = endX - startX;\n var distanceY = endY - startY;\n var speed = Math.max(Math.abs((distanceX / 1000) * SCROLL_TIME), Math.abs((distanceY / 1000) * SCROLL_TIME));\n // Temporarily disables any scroll snapping that may be active since it fights for control over the scroller with this polyfill\n var scrollSnapFix = disableScrollSnap(scroller);\n requestAnimationFrame(function animate(timestamp) {\n timeLapsed += timestamp - startTime;\n var percentage = Math.max(0, Math.min(1, speed === 0 ? 0 : timeLapsed / speed));\n var positionX = Math.floor(startX + distanceX * ease(percentage));\n var positionY = Math.floor(startY + distanceY * ease(percentage));\n method(positionX, positionY);\n if (positionX !== endX || positionY !== endY) {\n requestAnimationFrame(animate);\n }\n else {\n if (scrollSnapFix != null) {\n scrollSnapFix.reset();\n scrollSnapFix = undefined;\n }\n }\n });\n }\n\n /**\n * Returns a High Resolution timestamp if possible, otherwise fallbacks to Date.now()\n * @returns {number}\n */\n function now() {\n if (\"performance\" in window)\n return performance.now();\n return Date.now();\n }\n\n \n\n var ELEMENT_ORIGINAL_SCROLL = UNSUPPORTED_ENVIRONMENT ? undefined : Element.prototype.scroll;\n\n var WINDOW_ORIGINAL_SCROLL = UNSUPPORTED_ENVIRONMENT ? undefined : window.scroll;\n\n var ELEMENT_ORIGINAL_SCROLL_BY = UNSUPPORTED_ENVIRONMENT ? undefined : Element.prototype.scrollBy;\n\n var WINDOW_ORIGINAL_SCROLL_BY = UNSUPPORTED_ENVIRONMENT ? undefined : window.scrollBy;\n\n var ELEMENT_ORIGINAL_SCROLL_TO = UNSUPPORTED_ENVIRONMENT ? undefined : Element.prototype.scrollTo;\n\n var WINDOW_ORIGINAL_SCROLL_TO = UNSUPPORTED_ENVIRONMENT ? undefined : window.scrollTo;\n\n /**\n * A fallback if Element.prototype.scroll is not defined\n * @param {number} x\n * @param {number} y\n */\n function elementPrototypeScrollFallback(x, y) {\n this.__adjustingScrollPosition = true;\n this.scrollLeft = x;\n this.scrollTop = y;\n delete this.__adjustingScrollPosition;\n }\n /**\n * A fallback if Element.prototype.scrollTo is not defined\n * @param {number} x\n * @param {number} y\n */\n function elementPrototypeScrollToFallback(x, y) {\n return elementPrototypeScrollFallback.call(this, x, y);\n }\n /**\n * A fallback if Element.prototype.scrollBy is not defined\n * @param {number} x\n * @param {number} y\n */\n function elementPrototypeScrollByFallback(x, y) {\n this.__adjustingScrollPosition = true;\n this.scrollLeft += x;\n this.scrollTop += y;\n delete this.__adjustingScrollPosition;\n }\n /**\n * Gets the original non-patched prototype method for the given kind\n * @param {ScrollMethodName} kind\n * @param {Element|Window} element\n * @return {Function}\n */\n function getOriginalScrollMethodForKind(kind, element) {\n switch (kind) {\n case \"scroll\":\n if (element instanceof Element) {\n if (ELEMENT_ORIGINAL_SCROLL != null) {\n return ELEMENT_ORIGINAL_SCROLL;\n }\n else {\n return elementPrototypeScrollFallback;\n }\n }\n else {\n return WINDOW_ORIGINAL_SCROLL;\n }\n case \"scrollBy\":\n if (element instanceof Element) {\n if (ELEMENT_ORIGINAL_SCROLL_BY != null) {\n return ELEMENT_ORIGINAL_SCROLL_BY;\n }\n else {\n return elementPrototypeScrollByFallback;\n }\n }\n else {\n return WINDOW_ORIGINAL_SCROLL_BY;\n }\n case \"scrollTo\":\n if (element instanceof Element) {\n if (ELEMENT_ORIGINAL_SCROLL_TO != null) {\n return ELEMENT_ORIGINAL_SCROLL_TO;\n }\n else {\n return elementPrototypeScrollToFallback;\n }\n }\n else {\n return WINDOW_ORIGINAL_SCROLL_TO;\n }\n }\n }\n\n /**\n * Gets the Smooth Scroll Options to use for the step function\n * @param {Element|Window} element\n * @param {number} x\n * @param {number} y\n * @param {ScrollMethodName} kind\n * @returns {ISmoothScrollOptions}\n */\n function getSmoothScrollOptions(element, x, y, kind) {\n var startTime = now();\n if (!(element instanceof Element)) {\n // Use window as the scroll container\n var scrollX_1 = window.scrollX, pageXOffset_1 = window.pageXOffset, scrollY_1 = window.scrollY, pageYOffset_1 = window.pageYOffset;\n var startX = scrollX_1 == null || scrollX_1 === 0 ? pageXOffset_1 : scrollX_1;\n var startY = scrollY_1 == null || scrollY_1 === 0 ? pageYOffset_1 : scrollY_1;\n return {\n startTime: startTime,\n startX: startX,\n startY: startY,\n endX: Math.floor(kind === \"scrollBy\" ? startX + x : x),\n endY: Math.floor(kind === \"scrollBy\" ? startY + y : y),\n method: getOriginalScrollMethodForKind(\"scrollTo\", window).bind(window),\n scroller: getScrollingElement()\n };\n }\n else {\n var scrollLeft = element.scrollLeft, scrollTop = element.scrollTop;\n var startX = scrollLeft;\n var startY = scrollTop;\n return {\n startTime: startTime,\n startX: startX,\n startY: startY,\n endX: Math.floor(kind === \"scrollBy\" ? startX + x : x),\n endY: Math.floor(kind === \"scrollBy\" ? startY + y : y),\n method: getOriginalScrollMethodForKind(\"scrollTo\", element).bind(element),\n scroller: element\n };\n }\n }\n\n /**\n * Ensures that the given value is numeric\n * @param {number} value\n * @return {number}\n */\n function ensureNumeric(value) {\n if (value == null)\n return 0;\n else if (typeof value === \"number\") {\n return value;\n }\n else if (typeof value === \"string\") {\n return parseFloat(value);\n }\n else {\n return 0;\n }\n }\n\n /**\n * Returns true if the given value is some ScrollToOptions\n * @param {number | ScrollToOptions} value\n * @return {value is ScrollToOptions}\n */\n function isScrollToOptions(value) {\n return value != null && typeof value === \"object\";\n }\n\n /**\n * Handles a scroll method\n * @param {Element|Window} element\n * @param {ScrollMethodName} kind\n * @param {number | ScrollToOptions} optionsOrX\n * @param {number} y\n */\n function handleScrollMethod(element, kind, optionsOrX, y) {\n onScrollWithOptions(getScrollToOptionsWithValidation(optionsOrX, y), element, kind);\n }\n /**\n * Invoked when a 'ScrollToOptions' dict is provided to 'scroll()' as the first argument\n * @param {ScrollToOptions} options\n * @param {Element|Window} element\n * @param {ScrollMethodName} kind\n */\n function onScrollWithOptions(options, element, kind) {\n var behavior = getScrollBehavior(element, options);\n // If the behavior is 'auto' apply instantaneous scrolling\n if (behavior == null || behavior === \"auto\") {\n getOriginalScrollMethodForKind(kind, element).call(element, options.left, options.top);\n }\n else {\n smoothScroll(getSmoothScrollOptions(element, options.left, options.top, kind));\n }\n }\n /**\n * Normalizes the given scroll coordinates\n * @param {number?} x\n * @param {number?} y\n * @return {Required>}\n */\n function normalizeScrollCoordinates(x, y) {\n return {\n left: ensureNumeric(x),\n top: ensureNumeric(y)\n };\n }\n /**\n * Gets ScrollToOptions based on the given arguments. Will throw if validation fails\n * @param {number | ScrollToOptions} optionsOrX\n * @param {number} y\n * @return {Required}\n */\n function getScrollToOptionsWithValidation(optionsOrX, y) {\n // If only one argument is given, and it isn't an options object, throw a TypeError\n if (y === undefined && !isScrollToOptions(optionsOrX)) {\n throw new TypeError(\"Failed to execute 'scroll' on 'Element': parameter 1 ('options') is not an object.\");\n }\n // Scroll based on the primitive values given as arguments\n if (!isScrollToOptions(optionsOrX)) {\n return __assign(__assign({}, normalizeScrollCoordinates(optionsOrX, y)), { behavior: \"auto\" });\n }\n // Scroll based on the received options object\n else {\n return __assign(__assign({}, normalizeScrollCoordinates(optionsOrX.left, optionsOrX.top)), { behavior: optionsOrX.behavior == null ? \"auto\" : optionsOrX.behavior });\n }\n }\n\n /**\n * Patches the 'scroll' method on the Element prototype\n */\n function patchElementScroll() {\n Element.prototype.scroll = function (optionsOrX, y) {\n handleScrollMethod(this, \"scroll\", optionsOrX, y);\n };\n }\n\n /**\n * Patches the 'scrollBy' method on the Element prototype\n */\n function patchElementScrollBy() {\n Element.prototype.scrollBy = function (optionsOrX, y) {\n handleScrollMethod(this, \"scrollBy\", optionsOrX, y);\n };\n }\n\n /**\n * Patches the 'scrollTo' method on the Element prototype\n */\n function patchElementScrollTo() {\n Element.prototype.scrollTo = function (optionsOrX, y) {\n handleScrollMethod(this, \"scrollTo\", optionsOrX, y);\n };\n }\n\n /**\n * Patches the 'scroll' method on the Window prototype\n */\n function patchWindowScroll() {\n window.scroll = function (optionsOrX, y) {\n handleScrollMethod(this, \"scroll\", optionsOrX, y);\n };\n }\n\n /**\n * Patches the 'scrollBy' method on the Window prototype\n */\n function patchWindowScrollBy() {\n window.scrollBy = function (optionsOrX, y) {\n handleScrollMethod(this, \"scrollBy\", optionsOrX, y);\n };\n }\n\n /**\n * Patches the 'scrollTo' method on the Window prototype\n */\n function patchWindowScrollTo() {\n window.scrollTo = function (optionsOrX, y) {\n handleScrollMethod(this, \"scrollTo\", optionsOrX, y);\n };\n }\n\n // tslint:disable:no-any\n /**\n * Gets the parent of an element, taking into account DocumentFragments, ShadowRoots, as well as the root context (window)\n * @param {EventTarget} currentElement\n * @returns {EventTarget | null}\n */\n function getParent(currentElement) {\n if (\"nodeType\" in currentElement && currentElement.nodeType === 1) {\n return currentElement.parentNode;\n }\n if (\"ShadowRoot\" in window && currentElement instanceof window.ShadowRoot) {\n return currentElement.host;\n }\n else if (currentElement === document) {\n return window;\n }\n else if (currentElement instanceof Node)\n return currentElement.parentNode;\n return null;\n }\n\n /**\n * Returns true if the given overflow property represents a scrollable overflow value\n * @param {string | null} overflow\n * @return {boolean}\n */\n function canOverflow(overflow) {\n return overflow !== \"visible\" && overflow !== \"clip\";\n }\n /**\n * Returns true if the given element is scrollable\n * @param {Element} element\n * @return {boolean}\n */\n function isScrollable(element) {\n if (element.clientHeight < element.scrollHeight || element.clientWidth < element.scrollWidth) {\n var style = getComputedStyle(element, null);\n return canOverflow(style.overflowY) || canOverflow(style.overflowX);\n }\n return false;\n }\n /**\n * Finds the nearest ancestor of an element that can scroll\n * @param {Element} target\n * @returns {Element|Window?}\n */\n function findNearestAncestorsWithScrollBehavior(target) {\n var currentElement = target;\n var scrollingElement = getScrollingElement();\n while (currentElement != null) {\n var behavior = getScrollBehavior(currentElement);\n if (behavior != null && (currentElement === scrollingElement || isScrollable(currentElement))) {\n return [currentElement, behavior];\n }\n var parent_1 = getParent(currentElement);\n currentElement = parent_1;\n }\n // No such element could be found. Start over, but this time find the nearest ancestor that can simply scroll\n currentElement = target;\n while (currentElement != null) {\n if (currentElement === scrollingElement || isScrollable(currentElement)) {\n return [currentElement, \"auto\"];\n }\n var parent_2 = getParent(currentElement);\n currentElement = parent_2;\n }\n // Default to the scrolling element\n return [scrollingElement, \"auto\"];\n }\n\n // tslint:disable:no-any\n /**\n * Finds the nearest root from an element\n * @param {Element} target\n * @returns {Document|ShadowRoot}\n */\n function findNearestRoot(target) {\n var currentElement = target;\n while (currentElement != null) {\n if (\"ShadowRoot\" in window && currentElement instanceof window.ShadowRoot) {\n // Assume this is a ShadowRoot\n return currentElement;\n }\n var parent_1 = getParent(currentElement);\n if (parent_1 === currentElement) {\n return document;\n }\n currentElement = parent_1;\n }\n return document;\n }\n\n /**\n * Gets the origin of the given Location or HTMLAnchorElement if available in the runtime, and otherwise shims it. (it's a one-liner)\n * @returns {string}\n */\n function getLocationOrigin(locationLike) {\n if (locationLike === void 0) { locationLike = location; }\n if (\"origin\" in locationLike && locationLike.origin != null) {\n return locationLike.origin;\n }\n var port = locationLike.port != null && locationLike.port.length > 0 ? \":\" + locationLike.port : \"\";\n if (locationLike.protocol === \"http:\" && port === \":80\") {\n port = \"\";\n }\n else if (locationLike.protocol === \"https:\" && port === \":443\") {\n port = \"\";\n }\n return locationLike.protocol + \"//\" + locationLike.hostname + port;\n }\n\n /**\n * A Regular expression that matches id's of the form \"#[digit]\"\n * @type {RegExp}\n */\n var ID_WITH_LEADING_DIGIT_REGEXP = /^#\\d/;\n /**\n * Catches anchor navigation to IDs within the same root and ensures that they can be smooth-scrolled\n * if the scroll behavior is smooth in the first rooter within that context\n */\n function catchNavigation() {\n // Listen for 'click' events globally\n window.addEventListener(\"click\", function (e) {\n // Only work with trusted events on HTMLAnchorElements\n if (!e.isTrusted || !(e.target instanceof HTMLAnchorElement))\n return;\n var _a = e.target, pathname = _a.pathname, search = _a.search, hash = _a.hash;\n var pointsToCurrentPage = getLocationOrigin(e.target) === getLocationOrigin(location) && pathname === location.pathname && search === location.search;\n // Only work with HTMLAnchorElements that navigates to a specific ID on the current page\n if (!pointsToCurrentPage || hash == null || hash.length < 1) {\n return;\n }\n // Find the nearest root, whether it be a ShadowRoot or the document itself\n var root = findNearestRoot(e.target);\n // Attempt to match the selector from that root. querySelector' doesn't support IDs that start with a digit, so work around that limitation\n var elementMatch = hash.match(ID_WITH_LEADING_DIGIT_REGEXP) != null ? root.getElementById(hash.slice(1)) : root.querySelector(hash);\n // If no selector could be found, don't proceed\n if (elementMatch == null)\n return;\n // Find the nearest ancestor that can be scrolled\n var _b = __read(findNearestAncestorsWithScrollBehavior(elementMatch), 2), behavior = _b[1];\n // If the behavior isn't smooth, don't proceed\n if (behavior !== \"smooth\")\n return;\n // Otherwise, first prevent the default action.\n e.preventDefault();\n // Now, scroll to the element with that ID\n elementMatch.scrollIntoView({\n behavior: behavior\n });\n });\n }\n\n var ELEMENT_ORIGINAL_SCROLL_INTO_VIEW = UNSUPPORTED_ENVIRONMENT ? undefined : Element.prototype.scrollIntoView;\n\n /**\n * The majority of this file is based on https://github.com/stipsan/compute-scroll-into-view (MIT license),\n * but has been rewritten to accept a scroller as an argument.\n */\n /**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarly to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┐ ┏ ━ ━ ━ ┓\n * │ target │ frame\n * └────────┘ ┗ ━ ━ ━ ┛\n */\n function alignNearest(scrollingEdgeStart, scrollingEdgeEnd, scrollingSize, scrollingBorderStart, scrollingBorderEnd, elementEdgeStart, elementEdgeEnd, elementSize) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──┐\n * ┏━│━━│━┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * ┗━│━━│━┛\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐\n * │┃ ┃│ do nothing\n * └───────────┘\n * ┗ ━ ━ ━ ━ ┛\n */\n if ((elementEdgeStart < scrollingEdgeStart && elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)) {\n return 0;\n }\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──┐\n * ┏━│━━│━┓ ┏━┌━━┐━┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * ┗━ ━━ ━┛ ┗━ ━━ ━┛\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━┌━━┐━┓\n * │ │\n * from ┃ ┌──┐ ┃ to ┃ │ │ ┃\n * │ │ │ │\n * ┗━│━━│━┛ ┗━│━━│━┛\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n */\n if ((elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart;\n }\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━ ━━ ━┓\n *\n * from ┃ ┃ to ┃ ┌──┐ ┃\n * ┌──┐ │ │\n * ┗━│━━│━┛ ┗━└━━┘━┛\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──┐\n * │ │\n * │ │ ┌──┐\n * ┏━│━━│━┓ ┏━│━━│━┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * ┗━ ━━ ━┛ ┗━└━━┘━┛\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n */\n if ((elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) || (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd;\n }\n return 0;\n }\n function computeScrollIntoView(target, scroller, options) {\n var block = options.block, inline = options.inline;\n // Used to handle the top most element that can be scrolled\n var scrollingElement = getScrollingElement();\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n var viewportWidth = window.visualViewport != null ? visualViewport.width : innerWidth;\n var viewportHeight = window.visualViewport != null ? visualViewport.height : innerHeight;\n var viewportX = window.scrollX != null ? window.scrollX : window.pageXOffset;\n var viewportY = window.scrollY != null ? window.scrollY : window.pageYOffset;\n var _a = target.getBoundingClientRect(), targetHeight = _a.height, targetWidth = _a.width, targetTop = _a.top, targetRight = _a.right, targetBottom = _a.bottom, targetLeft = _a.left;\n // These values mutate as we loop through and generate scroll coordinates\n var targetBlock = block === \"start\" || block === \"nearest\" ? targetTop : block === \"end\" ? targetBottom : targetTop + targetHeight / 2; // block === 'center\n var targetInline = inline === \"center\" ? targetLeft + targetWidth / 2 : inline === \"end\" ? targetRight : targetLeft; // inline === 'start || inline === 'nearest\n var _b = scroller.getBoundingClientRect(), height = _b.height, width = _b.width, top = _b.top, right = _b.right, bottom = _b.bottom, left = _b.left;\n var frameStyle = getComputedStyle(scroller);\n var borderLeft = parseInt(frameStyle.borderLeftWidth, 10);\n var borderTop = parseInt(frameStyle.borderTopWidth, 10);\n var borderRight = parseInt(frameStyle.borderRightWidth, 10);\n var borderBottom = parseInt(frameStyle.borderBottomWidth, 10);\n var blockScroll = 0;\n var inlineScroll = 0;\n // The property existance checks for offset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n var scrollbarWidth = \"offsetWidth\" in scroller ? scroller.offsetWidth - scroller.clientWidth - borderLeft - borderRight : 0;\n var scrollbarHeight = \"offsetHeight\" in scroller ? scroller.offsetHeight - scroller.clientHeight - borderTop - borderBottom : 0;\n if (scrollingElement === scroller) {\n // Handle viewport logic (document.documentElement or document.body)\n if (block === \"start\") {\n blockScroll = targetBlock;\n }\n else if (block === \"end\") {\n blockScroll = targetBlock - viewportHeight;\n }\n else if (block === \"nearest\") {\n blockScroll = alignNearest(viewportY, viewportY + viewportHeight, viewportHeight, borderTop, borderBottom, viewportY + targetBlock, viewportY + targetBlock + targetHeight, targetHeight);\n }\n else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2;\n }\n if (inline === \"start\") {\n inlineScroll = targetInline;\n }\n else if (inline === \"center\") {\n inlineScroll = targetInline - viewportWidth / 2;\n }\n else if (inline === \"end\") {\n inlineScroll = targetInline - viewportWidth;\n }\n else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(viewportX, viewportX + viewportWidth, viewportWidth, borderLeft, borderRight, viewportX + targetInline, viewportX + targetInline + targetWidth, targetWidth);\n }\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY);\n inlineScroll = Math.max(0, inlineScroll + viewportX);\n }\n else {\n // Handle each scrolling frame that might exist between the target and the viewport\n if (block === \"start\") {\n blockScroll = targetBlock - top - borderTop;\n }\n else if (block === \"end\") {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight;\n }\n else if (block === \"nearest\") {\n blockScroll = alignNearest(top, bottom, height, borderTop, borderBottom + scrollbarHeight, targetBlock, targetBlock + targetHeight, targetHeight);\n }\n else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2;\n }\n if (inline === \"start\") {\n inlineScroll = targetInline - left - borderLeft;\n }\n else if (inline === \"center\") {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2;\n }\n else if (inline === \"end\") {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth;\n }\n else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(left, right, width, borderLeft, borderRight + scrollbarWidth, targetInline, targetInline + targetWidth, targetWidth);\n }\n var scrollLeft = scroller.scrollLeft, scrollTop = scroller.scrollTop;\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(0, Math.min(scrollTop + blockScroll, scroller.scrollHeight - height + scrollbarHeight));\n inlineScroll = Math.max(0, Math.min(scrollLeft + inlineScroll, scroller.scrollWidth - width + scrollbarWidth));\n }\n return {\n top: blockScroll,\n left: inlineScroll\n };\n }\n\n /**\n * Patches the 'scrollIntoView' method on the Element prototype\n */\n function patchElementScrollIntoView() {\n Element.prototype.scrollIntoView = function (arg) {\n var normalizedOptions = arg == null || arg === true\n ? {\n block: \"start\",\n inline: \"nearest\"\n }\n : arg === false\n ? {\n block: \"end\",\n inline: \"nearest\"\n }\n : arg;\n // Find the nearest ancestor that can be scrolled\n var _a = __read(findNearestAncestorsWithScrollBehavior(this), 2), ancestorWithScroll = _a[0], ancestorWithScrollBehavior = _a[1];\n var behavior = normalizedOptions.behavior != null ? normalizedOptions.behavior : ancestorWithScrollBehavior;\n // If the behavior isn't smooth, simply invoke the original implementation and do no more\n if (behavior !== \"smooth\") {\n // Assert that 'scrollIntoView' is actually defined\n if (ELEMENT_ORIGINAL_SCROLL_INTO_VIEW != null) {\n ELEMENT_ORIGINAL_SCROLL_INTO_VIEW.call(this, normalizedOptions);\n }\n // Otherwise, invoke 'scrollTo' instead and provide the scroll coordinates\n else {\n var _b = computeScrollIntoView(this, ancestorWithScroll, normalizedOptions), top_1 = _b.top, left = _b.left;\n getOriginalScrollMethodForKind(\"scrollTo\", this).call(this, left, top_1);\n }\n return;\n }\n ancestorWithScroll.scrollTo(__assign({ behavior: behavior }, computeScrollIntoView(this, ancestorWithScroll, normalizedOptions)));\n };\n // On IE11, HTMLElement has its own declaration of scrollIntoView and does not inherit this from the prototype chain, so we'll need to patch that one too.\n if (HTMLElement.prototype.scrollIntoView != null && HTMLElement.prototype.scrollIntoView !== Element.prototype.scrollIntoView) {\n HTMLElement.prototype.scrollIntoView = Element.prototype.scrollIntoView;\n }\n }\n\n var ELEMENT_ORIGINAL_SCROLL_TOP_SET_DESCRIPTOR = UNSUPPORTED_ENVIRONMENT\n ? undefined\n : Object.getOwnPropertyDescriptor(Element.prototype, \"scrollTop\").set;\n\n /**\n * Patches the 'scrollTop' property descriptor on the Element prototype\n */\n function patchElementScrollTop() {\n Object.defineProperty(Element.prototype, \"scrollTop\", {\n set: function (scrollTop) {\n if (this.__adjustingScrollPosition) {\n return ELEMENT_ORIGINAL_SCROLL_TOP_SET_DESCRIPTOR.call(this, scrollTop);\n }\n handleScrollMethod(this, \"scrollTo\", this.scrollLeft, scrollTop);\n return scrollTop;\n }\n });\n }\n\n var ELEMENT_ORIGINAL_SCROLL_LEFT_SET_DESCRIPTOR = UNSUPPORTED_ENVIRONMENT\n ? undefined\n : Object.getOwnPropertyDescriptor(Element.prototype, \"scrollLeft\").set;\n\n /**\n * Patches the 'scrollLeft' property descriptor on the Element prototype\n */\n function patchElementScrollLeft() {\n Object.defineProperty(Element.prototype, \"scrollLeft\", {\n set: function (scrollLeft) {\n if (this.__adjustingScrollPosition) {\n return ELEMENT_ORIGINAL_SCROLL_LEFT_SET_DESCRIPTOR.call(this, scrollLeft);\n }\n handleScrollMethod(this, \"scrollTo\", scrollLeft, this.scrollTop);\n return scrollLeft;\n }\n });\n }\n\n /**\n * Applies the polyfill\n */\n function patch() {\n // Element.prototype methods\n patchElementScroll();\n patchElementScrollBy();\n patchElementScrollTo();\n patchElementScrollIntoView();\n // Element.prototype descriptors\n patchElementScrollLeft();\n patchElementScrollTop();\n // window methods\n patchWindowScroll();\n patchWindowScrollBy();\n patchWindowScrollTo();\n // Navigation\n catchNavigation();\n }\n\n /**\n * Is true if the browser natively supports the Element.prototype.[scroll|scrollTo|scrollBy|scrollIntoView] methods\n * @type {boolean}\n */\n var SUPPORTS_ELEMENT_PROTOTYPE_SCROLL_METHODS = UNSUPPORTED_ENVIRONMENT\n ? false\n : \"scroll\" in Element.prototype && \"scrollTo\" in Element.prototype && \"scrollBy\" in Element.prototype && \"scrollIntoView\" in Element.prototype;\n\n if (!UNSUPPORTED_ENVIRONMENT && (!SUPPORTS_SCROLL_BEHAVIOR || !SUPPORTS_ELEMENT_PROTOTYPE_SCROLL_METHODS)) {\n patch();\n }\n\n}());\n//# sourceMappingURL=index.js.map\n"],"sourceRoot":""}