{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/src/views/blocks/knowledgeCheckBlock/js/knowledgeCheckBlock.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/scroll-js/dist/scroll.js"],"names":["CLS","CLS_BTN_CORRECT","concat","CLS_NAV_ACTIVE","KnowledgeCheckBlock","element","_classCallCheck","this","$element","$","$blocks","find","children","$navs","$activeBlock","$tracker","trackingId","data","textSubmit","textTryAgain","textSelectAnswer","textCorrect","textQuizComplete","textCorrectProceed","hasTrackingId","hasTracker","initNavItems","initBlockClasses","initCommandsMarkup","initInitialNavItem","initSubmitButtonEvent","initResetButtonEvent","scrollDuration","scrollEasing","$tplScroller","key","value","_this","each","index","blockListTemplate","before","_element","$navItems","on","event","navItemIndex","currentTarget","updateActiveBlock","length","hide","addClass","_this2","append","_this3","$buttonSubmit","$clickedButton","$block","parents","hasClass","next","handleNext","handleSubmit","_this4","correctAnswersCSV","correctAnswers","toString","split","forEach","trim","$answerBlocks","$selectedMultiChoiceAnswerBlocks","removeClass","selectedCorrectAnswersCount","blockIndex","isSelected","val","isCorrectAnswer","_","correctAnswer","prop","attr","text","css","display","siblings","filter","eq","section","scrollIntoView","duration","easing","then","updateTrackingCompleteStatus","nextBlockIndex","_this5","$buttonReset","$input","isBoolean","updateTrackingIncompleteStatus","isNil","trigger","parent","scrollTo","el","options","thisArg","_arguments","generator","Element","Window","Error","sanitizeScrollOptions","scroll","from","to","startTime","easeFunc","callback","window","requestAnimationFrame","currentTime","Date","now","time","Math","min","document","utils","getDocument","body","documentElement","scrollTop","setScrollPosition","currentScrollPosition","getScrollPosition","scrollProperty","props","y","x","getScrollPropertyByElement","Promise","resolve","top","getEasing","P","reject","fulfilled","step","e","rejected","result","done","apply","scroller","undefined","errorMsg","HTMLElement","validateElement","currentContainerScrollYPos","elementScrollYPos","offsetTop","pageYOffset","getBoundingClientRect","left","behavior","__webpack_require__","d","__webpack_exports__","easingMap","linear","t","ease-in","ease-out","ease-in-out","Object","keys","join"],"mappings":"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","file":"block-37.2f662a3aa586e55a56ca.js","sourcesContent":["const NS = 'KnowledgeCheckBlock';\nconst CLS = 'knowledgeCheckBlock';\nconst CLS_BTN_CORRECT = `${CLS}-commands-button--correct`;\nconst CLS_NAV_ACTIVE = `${CLS}-nav-item--active`;\n\nimport { scrollIntoView } from 'scroll-js';\n\nexport class KnowledgeCheckBlock {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\n\t\tthis.$blocks = this.$element.find('.Form__Element.FormChoice').children('[class*=\"Block\"]');\n\t\tthis.$navs;\n\t\tthis.$activeBlock;\n\t\tthis.$tracker = $('[data-pg][data-tracker=\"true\"]');\n\t\tthis.trackingId = this.$element.data('trackingId');\n\t\tthis.textSubmit = this.$element.data('textSubmit') || 'Submit';\n\t\tthis.textTryAgain = this.$element.data('textTryAgain') || 'Try Again';\n\t\tthis.textSelectAnswer = this.$element.data('textSelectAnswer') || 'Please select an answer.';\n\t\tthis.textCorrect = this.$element.data('textCorrect') || 'Correct';\n\t\tthis.textQuizComplete = this.$element.data(\"textQuizComplete\") || \"Quiz Complete, Continue\";\n\t\tthis.textCorrectProceed = this.$element.data('textCorrectProceed') || 'Correct, proceed to next question';\n\n\t\tif(this.hasTrackingId()) {\n\t\t\tif(!this.hasTracker()) {\n\t\t\t\tconsole.error(`${NS}::Error`, 'Please ensure that the \"[data-pg][data-tracker=\"true\"]\" element exists.');\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tthis.initNavItems();\n\t\tthis.initBlockClasses();\n\t\tthis.initCommandsMarkup();\n\t\tthis.initInitialNavItem();\n\t\tthis.initSubmitButtonEvent();\n\t\tthis.initResetButtonEvent();\n\n\t\tthis.scrollDuration = 750;\n this.scrollEasing = 'ease-in-out';\n this.$tplScroller = $('.tpl-scroller');\n\t}\n\n\tinitNavItems() {\n\t\tlet getBlockListMarkup = () => {\n\t\t\treturn `
\n\t\t\t\t${(() => {\n\t\t\t\t\tlet blockListTemplate = '';\n\t\t\t\t\tthis.$blocks.each((index, _element) => {\n\t\t\t\t\t\tblockListTemplate += ``;\n\t\t\t\t\t});\n\t\t\t\t\treturn blockListTemplate;\n\t\t\t\t})()}\n\t\t\t
`;\n\t\t};\n\n\t\tthis.$blocks.each((index, element) => {\n\t\t\t$(element).find('[class*=\"-inner-content\"]').children('.container').find('h2[class*=\"Block-title\"]').before(getBlockListMarkup());\n\t\t});\n\n\t\tthis.$navs = this.$element.find(`.${CLS}-nav`);\n\t\tthis.$navItems = this.$navs.find(`.${CLS}-nav-item`);\n\t\tthis.$navItems.on('click', (event) => {\n\t\t\tlet navItemIndex = $(event.currentTarget).data('index');\n\t\t\tthis.updateActiveBlock(navItemIndex);\n\t\t});\n\n\t\t// Hide navigation if there is only a single Block element\n\t\tif(this.$blocks.length <= 1) {\n\t\t\tthis.$navs.hide();\n\t\t}\n\t}\n\n\tinitBlockClasses() {\n\t\tthis.$blocks.each((index, element) => {\n\t\t\t$(element).addClass(`${CLS}-question`);\n\t\t});\n\t}\n\n\tinitCommandsMarkup() {\n\t\tlet commandsElementMarkup = () => {\n\t\t\treturn `
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t${this.textSelectAnswer}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
`;\n\t\t};\n\n\t\tthis.$blocks.each((index, element) => {\n\t\t\t$(element).find('[class*=\"-inner-content\"]').children('.container').append(commandsElementMarkup());\n\t\t});\n\t}\n\n\tinitInitialNavItem() {\n\t\tthis.updateActiveBlock(0);\n\t}\n\n\tinitSubmitButtonEvent() {\n\t\tthis.$buttonSubmit = this.$blocks.find(`.${CLS}-commands-button--submit`);\n\n\t\tthis.$buttonSubmit.on('click', (event) => {\n\t\t\tlet $clickedButton = $(event.currentTarget);\n\t\t\tlet $block = $clickedButton.parents(`.Form__Element.FormChoice`);\n\t\t\tif($clickedButton.hasClass(CLS_BTN_CORRECT) && $block.next('.Form__Element.FormChoice').length > 0) {\n\t\t\t\tthis.handleNext($clickedButton);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.handleSubmit($clickedButton);\n\t\t\t}\n\t\t});\n\t}\n\n\thandleSubmit($clickedButton) {\n\t\tlet $block = $clickedButton.parents(`.${CLS}-question`);\n\n\t\tlet correctAnswersCSV = $block.data('answers'); // CSV formatted answers\n\t\tlet correctAnswers = [];\n\n\t\tif(correctAnswersCSV) {\n\t\t\tcorrectAnswersCSV = correctAnswersCSV.toString();\n\t\t\tcorrectAnswers = correctAnswersCSV.split(',');\n\n\t\t\tcorrectAnswers.forEach((value, index) => {\n\t\t\t\tcorrectAnswers[index] = value.trim();\n\t\t\t});\n\t\t}\n\n\t\tlet $answerBlocks = $block.find('[class*=\"AnswerBlock\"]');\n\n\t\tif(correctAnswers && correctAnswers.length > 0) {\n\t\t\tlet $selectedMultiChoiceAnswerBlocks = $block.find('[class*=\"AnswerBlock--selected\"]');\n\n\t\t\tif($selectedMultiChoiceAnswerBlocks && $selectedMultiChoiceAnswerBlocks.length > 0) {\n\t\t\t\t$clickedButton.parents(`.${CLS}-commands`).find('.error-messages').removeClass('is-active'); // Hides the validation error\n\n\t\t\t\tlet selectedCorrectAnswersCount = 0;\n\t\t\t\tlet blockIndex = this.$blocks.index($clickedButton.parents(`.${CLS}-question`));\n\n\t\t\t\t// Iterate through multiChoiceAnswerBlocks to mark as correct/incorrect.\n\t\t\t\t$answerBlocks.each((index, element) => {\n\t\t\t\t\tlet isSelected;\n\n\t\t\t\t\tif($(element).hasClass('multiChoiceAnswerBlock')) {\n\t\t\t\t\t\tisSelected = $(element).hasClass('multiChoiceAnswerBlock--selected');\n\t\t\t\t\t}\n\t\t\t\t\telse if($(element).hasClass('imageSelectAnswerBlock')) {\n\t\t\t\t\t\tisSelected = $(element).hasClass('imageSelectAnswerBlock--selected');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// skip the span or label element\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet value = $(element).find('input').val();\n\n\t\t\t\t\tlet isCorrectAnswer = _.find(correctAnswers, (correctAnswer) => {\n\t\t\t\t\t\treturn correctAnswer === value;\n\t\t\t\t\t});\n\n\t\t\t\t\tif(isSelected) {\n\t\t\t\t\t\tif(isCorrectAnswer) {\n\t\t\t\t\t\t\tselectedCorrectAnswersCount++; // Count the amount of selected correct answers\n\t\t\t\t\t\t\tif($(element).hasClass('multiChoiceAnswerBlock')) {\n\t\t\t\t\t\t\t\t$(element).addClass('multiChoiceAnswerBlock--correct');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if($(element).hasClass('imageSelectAnswerBlock')) {\n\t\t\t\t\t\t\t\t$(element).addClass('imageSelectAnswerBlock--correct');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif($(element).hasClass('multiChoiceAnswerBlock')) {\n\t\t\t\t\t\t\t\t$(element).addClass('multiChoiceAnswerBlock--incorrect');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if($(element).hasClass('imageSelectAnswerBlock')) {\n\t\t\t\t\t\t\t\t$(element).addClass('imageSelectAnswerBlock--incorrect');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t$(element).find('input').prop('disabled', true);\n\t\t\t\t});\n\n\t\t\t\t// Mark block navigation item as correct/incorrect\n\t\t\t\tif(selectedCorrectAnswersCount === correctAnswers.length) {\n\t\t\t\t\tthis.$navs.find(`.${CLS}-nav-item--${blockIndex}`).addClass(`${CLS}-nav-item--correct`);\n\t\t\t\t\t$block.attr('data-answers-correct', true);\n\t\t\t\t\t$clickedButton.addClass(CLS_BTN_CORRECT);\n\t\t\t\t\t$clickedButton.text(this.$blocks.length <= 1 ? this.textCorrect : this.textCorrectProceed);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.$navs.find(`.${CLS}-nav-item--${blockIndex}`).addClass(`${CLS}-nav-item--incorrect`);\n\t\t\t\t\t$block.attr('data-answers-correct', false);\n\n\t\t\t\t\t// Hides the submit button\n\t\t\t\t\t$clickedButton.css({ display: 'none' });\n\t\t\t\t\t$clickedButton.siblings(`.${CLS}-commands-button--reset`).css({ display: 'block' });\n\t\t\t\t}\n\n\t\t\t\t// if it's the last block and already answered all question\n\t\t\t\tif(this.$blocks.filter('[data-answers-correct=\"true\"]').length === this.$blocks.length) {\n\t\t\t\t\tlet $lastBlock = this.$blocks.eq(this.$blocks.length - 1);\n\t\t\t\t\t$lastBlock.find(`.${CLS}-commands-button--submit`).text(this.textQuizComplete);\n\t\t\t\t\t\t\n\t\t\t\t\tthis.$buttonSubmit = this.$blocks.find(`.knowledgeCheckBlock-commands-button--submit`);\n\t\t\t\t\tthis.$buttonSubmit.on('click', (event) => {\n\t\t\t\t\t\tlet section = $($(\".sectionNavigatorWidget-item--knowledgeCheck\").next().find(\".sectionNavigatorWidget-link\").attr(\"data-block\"))[0];\n\t\t\t\t\t\tscrollIntoView(section, this.$tplScroller[0], { duration: this.scrollDuration, easing: this.scrollEasing }).then();\n\t\t\t\t\t});\t\n\t\t\t\t}\n\n\t\t\t\t// Tracking code\n\t\t\t\tthis.updateTrackingCompleteStatus();\n\t\t\t}\n\t\t\telse {\n\t\t\t\t$clickedButton.parents(`.${CLS}-commands`).find('.error-messages').addClass('is-active'); // Displays the validation error\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tconsole.error(`${NS}::Error`, 'Please ensure there is an answer supplied for this block.');\n\t\t}\n\t}\n\n\thandleNext($clickedButton) {\n\t\tlet $block = $clickedButton.parents(`.${CLS}-question`);\n\t\tlet blockIndex = this.$blocks.index($block);\n\n\t\tif(blockIndex < this.$blocks.length) {\n\t\t\tlet nextBlockIndex = blockIndex + 1;\n\t\t\tthis.updateActiveBlock(nextBlockIndex);\n\t\t\tthis.$navs.find(`.${CLS}-nav-item--${nextBlockIndex}`);\n\t\t}\n\t}\n\n\tinitResetButtonEvent() {\n\t\tthis.$buttonReset = this.$blocks.find(`.${CLS}-commands-button--reset`);\n\t\tthis.$buttonReset.on('click', (event) => {\n\t\t\tlet $clickedButton = $(event.currentTarget);\n\t\t\tlet $block = $clickedButton.parents(`.${CLS}-question`);\n\t\t\tlet blockIndex = this.$blocks.index($block);\n\n\t\t\tlet $answerBlocks = $block.find('[class*=\"AnswerBlock\"]');\n\n\t\t\t$answerBlocks.each((index, element) => {\n\t\t\t\tlet $input = $(element).find('input');\n\t\t\t\tif(!($(element).hasClass('multiChoiceAnswerBlock') || $(element).hasClass('imageSelectAnswerBlock'))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t$input.prop('disabled', false);\n\t\t\t});\n\n\t\t\tthis.$navs.each((index, element) => {\n\t\t\t\t$(element).find(`.${CLS}-nav-item`).eq(blockIndex).removeClass(`${CLS}-nav-item--correct ${CLS}-nav-item--incorrect`);\n\t\t\t});\n\t\t\t$clickedButton.css({ display: 'none' });\n\t\t\t$clickedButton.siblings(`.${CLS}-commands-button--submit`).css({ display: 'block' });\n\t\t\t$block.attr('data-answers-correct', '');\n\t\t\tif(_.isBoolean(this.$element.data('trackingComplete')) && this.$element.data('trackingComplete')) {\n\t\t\t\tthis.updateTrackingIncompleteStatus();\n\t\t\t}\n\t\t});\n\t}\n\n\thasTrackingId() {\n\t\treturn !_.isNil(this.trackingId) && this.trackingId !== '';\n\t}\n\n\thasTracker() {\n\t\treturn this.$tracker && this.$tracker.length > 0;\n\t}\n\n\tupdateTrackingCompleteStatus() {\n\t\tif(this.hasTrackingId() && this.hasTracker()) {\n\t\t\tif(this.$blocks.filter('[data-answers-correct=\"true\"]').length === this.$blocks.length) {\n\t\t\t\tthis.$tracker.trigger('tracking.complete', { $element: this.$element, trackingId: this.trackingId } );\n\t\t\t\tthis.$element.attr('data-tracking-complete', true);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateTrackingIncompleteStatus() {\n\t\tif(this.hasTrackingId() && this.hasTracker()) {\n\t\t\tif(this.$blocks.filter('[data-answers-correct=\"true\"]').length < this.$blocks.length) {\n\t\t\t\tthis.$tracker.trigger('tracking.incomplete', { $element: this.$element, trackingId: this.trackingId } );\n\t\t\t\tthis.$element.attr('data-tracking-complete', false);\n\t\t\t}\n\t\t}\n\t}\n\n\tupdateActiveBlock(index) {\n\t\tif(this.$activeBlock) {\n\t\t\tthis.$activeBlock.parent().attr('data-active', false);\n\t\t}\n\t\tthis.$activeBlock = this.$blocks.eq(index);\n\n\t\tif(this.$activeBlock) {\n\t\t\tthis.$activeBlock.parent().attr('data-active', true);\n\t\t\tthis.$activeBlock.find(`.${CLS}-nav-item:eq(${index})`).addClass(CLS_NAV_ACTIVE);\n\t\t}\n\t}\n}\n","/*!\n * Scroll-js v2.3.2\n * https://github.com/mkay581/scroll-js\n *\n * Copyright (c) 2019 Mark Kennedy\n * Licensed under the MIT license\n */\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nfunction scrollTo(el, options = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!(el instanceof Element) && !(el instanceof Window)) {\r\n throw new Error(`element passed to scrollTo() must be either the window or a DOM element, you passed ${el}!`);\r\n }\r\n options = sanitizeScrollOptions(options);\r\n const scroll = (from, to, prop, startTime, duration = 300, easeFunc, callback) => {\r\n window.requestAnimationFrame(() => {\r\n const currentTime = Date.now();\r\n const time = Math.min(1, (currentTime - startTime) / duration);\r\n if (from === to) {\r\n return callback ? callback() : null;\r\n }\r\n setScrollPosition(el, easeFunc(time) * (to - from) + from);\r\n /* prevent scrolling, if already there, or at end */\r\n if (time < 1) {\r\n scroll(from, to, prop, startTime, duration, easeFunc, callback);\r\n }\r\n else if (callback) {\r\n callback();\r\n }\r\n });\r\n };\r\n const currentScrollPosition = getScrollPosition(el);\r\n const scrollProperty = getScrollPropertyByElement(el);\r\n return new Promise(resolve => {\r\n scroll(currentScrollPosition, typeof options.top === 'number'\r\n ? options.top\r\n : currentScrollPosition, scrollProperty, Date.now(), options.duration, getEasing(options.easing), resolve);\r\n });\r\n });\r\n}\r\nfunction scrollIntoView(element, scroller, options) {\r\n validateElement(element);\r\n if (scroller && !(scroller instanceof Element)) {\r\n options = scroller;\r\n scroller = undefined;\r\n }\r\n const { duration, easing } = sanitizeScrollOptions(options);\r\n scroller = scroller || utils.getDocument().body;\r\n let currentContainerScrollYPos = 0;\r\n let elementScrollYPos = element ? element.offsetTop : 0;\r\n const document = utils.getDocument();\r\n // if the container is the document body or document itself, we'll\r\n // need a different set of coordinates for accuracy\r\n if (scroller === document.body || scroller === document.documentElement) {\r\n // using pageYOffset for cross-browser compatibility\r\n currentContainerScrollYPos = window.pageYOffset;\r\n // must add containers scroll y position to ensure an absolute value that does not change\r\n elementScrollYPos =\r\n element.getBoundingClientRect().top + currentContainerScrollYPos;\r\n }\r\n return scrollTo(scroller, {\r\n top: elementScrollYPos,\r\n left: 0,\r\n duration,\r\n easing\r\n });\r\n}\r\nfunction validateElement(element) {\r\n if (element === undefined) {\r\n const errorMsg = 'The element passed to scrollIntoView() was undefined.';\r\n throw new Error(errorMsg);\r\n }\r\n if (!(element instanceof HTMLElement)) {\r\n throw new Error(`The element passed to scrollIntoView() must be a valid element. You passed ${element}.`);\r\n }\r\n}\r\nfunction getScrollPropertyByElement(el) {\r\n const props = {\r\n window: {\r\n y: 'scrollY',\r\n x: 'scrollX'\r\n },\r\n element: {\r\n y: 'scrollTop',\r\n x: 'scrollLeft'\r\n }\r\n };\r\n const axis = 'y';\r\n if (el instanceof Window) {\r\n return props.window[axis];\r\n }\r\n else {\r\n return props.element[axis];\r\n }\r\n}\r\nfunction sanitizeScrollOptions(options = {}) {\r\n if (options.behavior === 'smooth') {\r\n options.easing = 'ease-in-out';\r\n options.duration = 300;\r\n }\r\n if (options.behavior === 'auto') {\r\n options.duration = 0;\r\n options.easing = 'linear';\r\n }\r\n return options;\r\n}\r\nfunction getScrollPosition(el) {\r\n const document = utils.getDocument();\r\n if (el === document.body ||\r\n el === document.documentElement ||\r\n el instanceof Window) {\r\n return document.body.scrollTop || document.documentElement.scrollTop;\r\n }\r\n else {\r\n return el.scrollTop;\r\n }\r\n}\r\nfunction setScrollPosition(el, value) {\r\n const document = utils.getDocument();\r\n if (el === document.body ||\r\n el === document.documentElement ||\r\n el instanceof Window) {\r\n document.body.scrollTop = value;\r\n document.documentElement.scrollTop = value;\r\n }\r\n else {\r\n el.scrollTop = value;\r\n }\r\n}\r\nconst utils = {\r\n // we're really just exporting this so that tests can mock the document.documentElement\r\n getDocument() {\r\n return document;\r\n }\r\n};\r\nconst easingMap = {\r\n linear(t) {\r\n return t;\r\n },\r\n 'ease-in'(t) {\r\n return t * t;\r\n },\r\n 'ease-out'(t) {\r\n return t * (2 - t);\r\n },\r\n 'ease-in-out'(t) {\r\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\r\n }\r\n};\r\nconst getEasing = (easing) => {\r\n const defaultEasing = 'linear';\r\n const easeFunc = easingMap[easing || defaultEasing];\r\n if (!easeFunc) {\r\n const options = Object.keys(easingMap).join(',');\r\n throw new Error(`Scroll error: scroller does not support an easing option of \"${easing}\". Supported options are ${options}`);\r\n }\r\n return easeFunc;\r\n};\n\nexport { easingMap, scrollIntoView, scrollTo, utils };\n"],"sourceRoot":""}