{"version":3,"file":"scripts/fakeScroll.js","mappings":"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","sources":["webpack://BokaWeb/./node_modules/@yaireo/fakescroll/fakescroll.js","webpack://BokaWeb/webpack/bootstrap","webpack://BokaWeb/webpack/runtime/compat get default export","webpack://BokaWeb/webpack/runtime/define property getters","webpack://BokaWeb/webpack/runtime/hasOwnProperty shorthand","webpack://BokaWeb/./src/js/components/fakeScrollbar.js"],"sourcesContent":[";(function(root, factory){\r\n var define = define || {};\r\n if( typeof define === 'function' && define.amd )\r\n define([], factory);\r\n else if( typeof exports === 'object' && typeof module === 'object' )\r\n module.exports = factory();\r\n else if(typeof exports === 'object')\r\n exports[\"FakeScroll\"] = factory()\r\n else\r\n root.FakeScroll = factory()\r\n }(this, function(){\r\n raf = window.requestAnimationFrame || function(cb) { return window.setTimeout(cb, 1000 / 60) };\r\n\r\n function FakeScroll(targetElm, settings){\r\n if( !targetElm ) return;\r\n\r\n this.settings = Object.assign({}, this.defaults, settings || {})\r\n\r\n this.state = {}\r\n this.listeners = {}\r\n\r\n this.DOM = this.build(targetElm)\r\n this.events.binding.call(this, this.DOM)\r\n\r\n // run \"moveBar\" once\r\n setTimeout(this.events.callbacks.onScrollResize.bind(this))\r\n }\r\n\r\n FakeScroll.prototype = {\r\n defaults : {\r\n classname : \"\",\r\n track : false // \"smooth\" will enable smooth scroll\r\n },\r\n\r\n /**\r\n * Build the DOM needed\r\n */\r\n build( targetElm ){\r\n var DOM = {};\r\n scopeHTML = `
\r\n
\r\n
\r\n
\r\n
\r\n
`,\r\n fragment = document.createDocumentFragment();\r\n\r\n // move all the children of the target element into a fragment\r\n while( targetElm.childNodes.length ){\r\n fragment.appendChild(targetElm.childNodes[0]);\r\n }\r\n\r\n targetElm.insertAdjacentHTML('afterbegin', scopeHTML);\r\n\r\n DOM.scope = targetElm;\r\n DOM.scrollWrap = targetElm.firstElementChild;\r\n DOM.scrollContent = DOM.scrollWrap.firstElementChild;\r\n DOM.scrollContent.appendChild(fragment);\r\n\r\n DOM.track = DOM.scrollWrap.nextElementSibling;\r\n DOM.bar = DOM.track.firstElementChild;\r\n\r\n DOM.scope.classList.add(\"fakeScroll\");\r\n\r\n return DOM;\r\n },\r\n\r\n destroy(){\r\n this.events.off.call(this, window, 'resize', 'onScrollResize');\r\n },\r\n\r\n get scrollRatio(){\r\n return this.state.scrollRatio\r\n },\r\n\r\n events : {\r\n on(elm, eName, cbName){\r\n // to be able tp unbind the events, callback refferece must be saved somewhere\r\n eName.split(' ').forEach(e => {\r\n if( !(cbName in this.events.callbacks) ) console.warn(cbName, \" doesn't exist in Callbacks: \", this.events.callbacks);\r\n\r\n this.listeners[e] = this.events.callbacks[cbName].bind(this);\r\n elm.addEventListener(e, this.listeners[e])\r\n });\r\n\r\n return this.events;\r\n },\r\n\r\n off(elm, eName, cbName){\r\n eName.split(' ').forEach(e => elm.removeEventListener(e, this.listeners[e]))\r\n return this.events;\r\n },\r\n\r\n binding(DOM){\r\n this.events.on.call(this, DOM.scrollContent, 'scroll', 'onScrollResize')\r\n .on.call(this, DOM.scope, 'mouseenter', 'onScrollResize')\r\n .on.call(this, DOM.bar, 'mousedown', 'onBarMouseDown')\r\n .on.call(this, window, 'resize', 'onScrollResize')\r\n\r\n if( this.settings.track )\r\n this.events.on.call(this, DOM.track, 'click', 'onTrackClick')\r\n },\r\n\r\n /**\r\n * events only binded when Bar element gets a \"mousedown\" event\r\n * @param {[type]} onOff [description]\r\n * @return {[type]} [description]\r\n */\r\n drag(onOff){\r\n this.events[onOff].call(this, document, 'mousemove', 'onDrag')\r\n [onOff].call(this, document, 'mouseup', 'onStopDrag')\r\n },\r\n\r\n callbacks : {\r\n onScrollResize(){\r\n this.moveBar.call(this);\r\n this.DOM.scope.classList.toggle('fakeScroll--hasBar', this.state.ratio < 1)\r\n\r\n // debounce - get track bounds\r\n clearTimeout(this.listeners.timeout__resize);\r\n this.listeners.timeout__resize = setTimeout(this.getTrackBounds.bind(this), 200)\r\n },\r\n\r\n onDrag(e){\r\n var delta = e.pageY - this.state.lastPageY;\r\n\r\n raf(() => {\r\n var sTop = document.documentElement.scrollTop,\r\n isDragWithinTrackBounds = e.pageY >= (this.state.trackBounds.top + sTop) && e.pageY <= (this.state.trackBounds.bottom + sTop);\r\n\r\n if( isDragWithinTrackBounds )\r\n this.DOM.scrollContent.scrollTop = this.state.drag + delta / this.state.ratio;\r\n // update variables when mouse position is outside the Track bounds\r\n else{\r\n this.state.drag = this.DOM.scrollContent.scrollTop;\r\n this.state.lastPageY = e.pageY;\r\n }\r\n });\r\n },\r\n\r\n onStopDrag(e){\r\n [this.DOM.bar, document.body].map(el => el.classList.remove('fakeScroll--grabbed'))\r\n this.events.drag.call(this, 'off');\r\n setTimeout(()=>{ this.state.drag = false })\r\n },\r\n\r\n onBarMouseDown(e){\r\n this.state.drag = this.DOM.scrollContent.scrollTop;\r\n this.state.lastPageY = e.pageY;\r\n\r\n [this.DOM.bar, document.body].map(el => el.classList.add('fakeScroll--grabbed'))\r\n this.events.drag.call(this, 'on');\r\n },\r\n\r\n onTrackClick(e){\r\n if( this.state.drag ) return;\r\n\r\n var perc = (e.clientY - this.state.trackBounds.top) / (this.state.trackBounds.height - this.state.trackBounds.topPad - this.state.trackBounds.bottomPad),\r\n scrollHeight = this.DOM.scrollContent.scrollHeight,\r\n ownHeight = this.DOM.scrollWrap.clientHeight,\r\n newScrollTop = perc * (scrollHeight - ownHeight);\r\n\r\n if( this.settings.track == 'smooth' ){\r\n this.DOM.scrollContent.style.scrollBehavior = 'smooth';\r\n setTimeout(()=>{ this.DOM.scrollContent.style.scrollBehavior = 'unset' }, 500)\r\n }\r\n\r\n this.DOM.scrollContent.scrollTop = newScrollTop;\r\n }\r\n }\r\n },\r\n\r\n getTrackBounds(){\r\n var bounds = this.DOM.track.getBoundingClientRect(),\r\n styles = window.getComputedStyle(this.DOM.track, null);\r\n\r\n bounds.topPad = parseInt(styles.paddingTop, 10);\r\n bounds.bottomPad = parseInt(styles.paddingBottom, 10);\r\n\r\n this.state.trackBounds = bounds;\r\n return bounds;\r\n },\r\n\r\n moveBar(){\r\n // if( !this.DOM.scrollContent ) return false;\r\n\r\n var _scrollContent = this.DOM.scrollContent,\r\n scrollHeight = _scrollContent.scrollHeight,\r\n ownHeight = this.DOM.scrollWrap.clientHeight;\r\n\r\n this.state.ratio = this.DOM.track.clientHeight / scrollHeight\r\n this.state.scrollRatio = this.DOM.scrollContent.scrollTop / (_scrollContent.scrollHeight - ownHeight)\r\n\r\n\r\n // update fake scrollbar location on the Y axis using requestAnimationFrame\r\n raf(()=> {\r\n var height = (ownHeight / scrollHeight) * 100,\r\n top = (_scrollContent.scrollTop / scrollHeight ) * 100;\r\n\r\n this.DOM.bar.style.cssText = `height : ${height}%;\r\n top : ${top}%;\r\n display : ${scrollHeight <= ownHeight ? 'none' : ''}`;\r\n\r\n this.settings.onChange && this.settings.onChange({scrollRatio:this.state.scrollRatio })\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Extend the DOM with \"fakeScroll\" method. The chances of the same name already be taken are slim to none,\r\n * But you should now; it's your code you're putting this into.\r\n */\r\n Element.prototype.fakeScroll = function( settings ){\r\n this._fakeScroll = this._fakeScroll || new FakeScroll(this, settings || {});\r\n return this._fakeScroll;\r\n }\r\n\r\n return FakeScroll\r\n}));","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import fakeScroll from \"@yaireo/fakescroll\";\r\n\r\nwindow.InitFakeScrollbar = function(classSelector) {\r\n var myScrollbar = document.querySelector(classSelector).fakeScroll({});\r\n}\r\n\r\n"],"names":["factory","define","FakeScroll","targetElm","settings","this","Object","assign","defaults","state","listeners","DOM","build","events","binding","call","setTimeout","callbacks","onScrollResize","bind","raf","window","requestAnimationFrame","cb","prototype","classname","track","scopeHTML","fragment","document","createDocumentFragment","childNodes","length","appendChild","insertAdjacentHTML","scope","scrollWrap","firstElementChild","scrollContent","nextElementSibling","bar","classList","add","destroy","off","scrollRatio","on","elm","eName","cbName","split","forEach","e","console","warn","addEventListener","removeEventListener","drag","onOff","moveBar","toggle","ratio","clearTimeout","timeout__resize","getTrackBounds","onDrag","delta","pageY","lastPageY","sTop","documentElement","scrollTop","trackBounds","top","bottom","onStopDrag","body","map","el","remove","onBarMouseDown","onTrackClick","newScrollTop","clientY","height","topPad","bottomPad","scrollHeight","clientHeight","style","scrollBehavior","bounds","getBoundingClientRect","styles","getComputedStyle","parseInt","paddingTop","paddingBottom","_scrollContent","ownHeight","cssText","onChange","Element","fakeScroll","_fakeScroll","amd","module","exports","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","obj","prop","hasOwnProperty","InitFakeScrollbar","classSelector","querySelector"],"sourceRoot":""}