{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/src/views/widgets/sectionNavigatorWidget/js/sectionNavigatorWidget.js","webpack:////Users/owenli/Documents/workspace/awi-wlc-fe/node_modules/scroll-js/dist/scroll.js"],"names":["CLS","SectionNavigatorWidget","element","_classCallCheck","this","$element","$","$tplScroller","$blocks","children","$navigation","$navigationActiveItem","scrollDuration","scrollEasing","$knowledgeCheckBlock","length","createNavigator","setScrollEvent","setActiveNavigationItem","key","value","_this","each","index","addClass","concat","list","knowledgeCheckBlockIndex","filter","append","_element","find","on","event","section","target","attr","scrollIntoView","duration","easing","then","_this2","_","throttle","_this3","Math","floor","position","top","navigationItem","removeClass","scrollTo","el","options","thisArg","_arguments","generator","Element","Window","Error","sanitizeScrollOptions","scroll","from","to","prop","startTime","easeFunc","callback","window","requestAnimationFrame","currentTime","Date","now","time","min","document","utils","getDocument","body","documentElement","scrollTop","setScrollPosition","currentScrollPosition","getScrollPosition","scrollProperty","props","y","x","getScrollPropertyByElement","Promise","resolve","getEasing","P","reject","fulfilled","step","next","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":"widget-19.2f662a3aa586e55a56ca.js","sourcesContent":["const NS = 'SectionNavigatorWidget';\nconst CLS = 'sectionNavigatorWidget';\n\nimport { scrollIntoView } from 'scroll-js';\n\nexport class SectionNavigatorWidget {\n\tconstructor(element) {\n\t\tthis.element = element;\n\t\tthis.$element = $(this.element);\n\t\tthis.$tplScroller = $('.tpl-scroller');\n\t\tthis.$blocks = $('[data-section-navigator-container]').children();\n\n\t\tthis.$navigation;\n\t\tthis.$navigationActiveItem = null;\n\t\tthis.scrollDuration = 750;\n\t\tthis.scrollEasing = 'ease-in-out';\n\t\tthis.$knowledgeCheckBlock = $('[data-blk=\"KnowledgeCheckBlock\"]');\n\n\t\tif(this.$blocks.length > 0) {\n\t\t\tthis.createNavigator();\n\t\t\tthis.setScrollEvent();\n\t\t\tthis.setActiveNavigationItem();\n\t\t}\n\t}\n\n\tcreateNavigator() {\n\t\tthis.$blocks.each((index, element) => {\n\t\t\t$(element).addClass(`section section--${index + 1}`);\n\t\t});\n\n\t\tlet knowledgeCheckBlockIndex = this.$blocks.filter(this.$knowledgeCheckBlock).index();\n\t\tlet getNavigationItemsTemplate = () => {\n\t\t\tlet list = ``;\n\t\t\treturn list;\n\t\t};\n\n\t\tthis.$element.append(getNavigationItemsTemplate());\n\t\tthis.$navigation = this.$element.find(`.${CLS}-list`);\n\t\tthis.$navigation.find(`a.${CLS}-link`).on('click', (event) => {\n\t\t\tlet section = $($(event.target).attr('data-block'))[0];\n\t\t\tscrollIntoView(section, this.$tplScroller[0], { duration: this.scrollDuration, easing: this.scrollEasing }).then();\n\t\t});\n\n\t\tif(this.$knowledgeCheckBlock && this.$knowledgeCheckBlock.length > 0) {\n\t\t\tlet $knowledgeCheckLink = this.$element.find(`.${CLS}-knowledgeCheckLink`);\n\t\t\t$knowledgeCheckLink.on('click', () => {\n\t\t\t\tscrollIntoView(this.$knowledgeCheckBlock[0], this.$tplScroller[0], { duration: this.scrollDuration, easing: this.scrollEasing }).then();\n\t\t\t});\n\t\t}\n\t}\n\n\tsetScrollEvent() {\n\t\tthis.$tplScroller.on('scroll', _.throttle(() => {\n\t\t\tthis.setActiveNavigationItem();\n\t\t}, 250));\n\t}\n\n\tsetActiveNavigationItem() {\n\t\tthis.$blocks.each((index, element) => {\n\t\t\tif(0 >= Math.floor($(element).position().top)) {\n\t\t\t\tlet navigationItem = this.$navigation.find(`#${CLS}-link--${index + 1}`);\n\n\t\t\t\tif(this.$navigationActiveItem) {\n\t\t\t\t\tthis.$navigationActiveItem.removeClass(`active`);\n\t\t\t\t}\n\n\t\t\t\tif(this.$navigationActiveItem !== navigationItem) {\n\t\t\t\t\tthis.$navigationActiveItem = navigationItem;\n\t\t\t\t\tthis.$navigationActiveItem.addClass(`active`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tif(!this.$navigationActiveItem) {\n\t\t\tif(this.$navigation.find(`.${CLS}-link`).length > 0) {\n\t\t\t\tthis.$navigationActiveItem = this.$navigation.find(`#${CLS}-link--1`);\n\t\t\t\tthis.$navigationActiveItem.addClass('active');\n\t\t\t}\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":""}