{"version":3,"sources":["webpack://[name]/./src/js/components/AnchorLinkComponent.js","webpack://[name]/./src/js/libs/Logger.js","webpack://[name]/./src/js/utilities/Observer.js","webpack://[name]/./node_modules/ulog/browser.js","webpack://[name]/./node_modules/ulog/ulog.js"],"names":["Logger","AnchorLinkComponent","_BaseComponent","element","_this","_classCallCheck","_callSuper","observeAnchor","onScroll","_inherits","_createClass","key","get","anchorLink","mainSection","section","header","asideBar","active","scrollDown","value","el","preHeader","document","querySelector","this","SELECTORS","screenWidth","screen","width","headerHeight","offsetHeight","classList","contains","CLASSES","parseInt","window","mqObj","large","Math","floor","getBoundingClientRect","top","_this2","querySelectorAll","forEach","item","addEventListener","event","preventDefault","eventTarget","checkClickOnElement","target","targetID","getAttribute","targetAnchor","activateLink","calculatedTop","distanceToTop","scrollBy","left","behavior","tagName","parentNode","concat","remove","add","_this3","throttle","handleObserver","currentSize","match","func","limit","lastFunc","lastRan","context","args","arguments","clearTimeout","setTimeout","Date","now","apply","_this4","console","log","Observer","entries","observer","slideNum","entry","isIntersecting","id","unobserve","EMIT","CUSTOM_MESSAGES","CAROUSEL_EVENTS","goToSlide","slide","getMediaQuery","asideStickyBar","style","getComputedStyle","getPropertyValue","BaseComponent","ulog","level","DEBUG","selector","margin","conf","cb","observablesSelector","observables","IntersectionObserver","debug","rootMargin","outerHeight","root","threshold","_step2","_iterator2","_createForOfIteratorHelper","s","n","done","observable","observe","err","e","f","warn","_step","_iterator","disconnect","lvl","dbg","i","m","qs","location","search","substring","split","localStorage","getItem","con","enable","WARN","module","exports","name","mods","enhance","version","str","length","replace","skipMods","push","RegExp","substr","dbgMods","patch","enabled","test","disable","bind","LVL","ERROR","INFO","LOG","TRACE","names","Object","keys","map","x","toLowerCase","o","parent","NONE","defineProperty","undefined","set","Number","toUpperCase","mod","dir","bnd","nop","table","time","timeEnd","assert","a","ok","shift","error","max","print","c"],"mappings":"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","file":"js/component-AnchorLinkComponent-js.chunks.js","sourcesContent":["import BaseComponent from '../abstracts/BaseComponent';\nimport Observer from '../utilities/Observer';\nimport Logger from '../libs/Logger';\nimport {match} from '../utilities/ResolutionHandler';\n\nconst log = new Logger('AnchorLinkComponent');\n\nexport default class AnchorLinkComponent extends BaseComponent {\n  get SELECTORS() {\n    return {\n      anchorLink: \".js-anchor-link\",\n      mainSection: \".main-section\",\n      section: \".info-service\",\n      header: \".pre-header\",\n      asideBar: \".aside-sticky-bar\",\n    };\n  }\n\n  get CLASSES() {\n    return {\n      active: \"is-active\",\n      scrollDown: \"scroll-down\",\n    };\n  }\n\n  constructor(element) {\n    super(element);\n    this.observeAnchor();\n    this.onScroll();\n  }\n\n  distanceToTop(el) {\n    const preHeader = document.querySelector(this.SELECTORS.header);\n    const mainSection = document.querySelector(this.SELECTORS.mainSection);\n    const screenWidth = screen.width;\n    let headerHeight = preHeader\n      ? mainSection.offsetHeight + preHeader.offsetHeight\n      : mainSection.offsetHeight;\n\n    if (mainSection.classList.contains(this.CLASSES.scrollDown) && preHeader)\n      headerHeight -= preHeader.offsetHeight;\n\n    if (screenWidth < parseInt(window.mqObj.large)) {\n      const asideStickyBar = document.querySelector(this.SELECTORS.asideBar);\n      headerHeight += asideStickyBar.offsetHeight;\n    }\n    return Math.floor(el.getBoundingClientRect().top - headerHeight);\n  }\n\n  observeAnchor() {\n    const linksToAnchors = document.querySelectorAll(this.SELECTORS.anchorLink);\n\n    linksToAnchors.forEach((item) => {\n      item.addEventListener(\n        \"click\",\n        (event) => {\n          event.preventDefault();\n\n          const eventTarget = this.checkClickOnElement(event.target);\n          const targetID = eventTarget.getAttribute(\"href\");\n          const targetAnchor = document.querySelector(targetID);\n\n          if (!targetAnchor) return;\n\n          this.activateLink(eventTarget);\n\n          const calculatedTop = this.distanceToTop(targetAnchor);\n\n          window.scrollBy({ top: calculatedTop, left: 0, behavior: \"smooth\" });\n        },\n        true\n      );\n    });\n  }\n\n  checkClickOnElement(eventTarget) {\n    // fix click on span inside href\n    if (eventTarget && eventTarget.tagName !== \"A\")\n      eventTarget = eventTarget.parentNode;\n    return eventTarget;\n  }\n\n  activateLink(target) {\n    const active = document.querySelector(`.${this.CLASSES.active}`);\n    if (active) {\n      active.classList.remove(this.CLASSES.active);\n    }\n    target.classList.add(this.CLASSES.active);\n  }\n\n  onScroll() {\n    window.addEventListener(\n      \"scroll\",\n      this.throttle(() => this.handleObserver(), 100)\n    );\n  }\n\n  getMediaQuery(currentSize) {\n    if (match(\"medium\", \"small\")) {\n      currentSize = \"small\";\n    } else if (match(\"large\", \"medium\")) {\n      currentSize = \"medium\";\n    } else if (match(null, \"large\")) {\n      currentSize = \"large\";\n    }\n    return currentSize;\n  }\n\n  throttle(func, limit) {\n    let lastFunc;\n    let lastRan;\n    return function () {\n      const context = this;\n      const args = arguments;\n      if (!lastRan) {\n        func.apply(context, args);\n        lastRan = Date.now();\n      } else {\n        clearTimeout(lastFunc);\n        lastFunc = setTimeout(function () {\n          if (Date.now() - lastRan >= limit) {\n            func.apply(context, args);\n            lastRan = Date.now();\n          }\n        }, limit - (Date.now() - lastRan));\n      }\n    };\n  }\n\n  handleObserver() {\n    console.log(\"THROTTLE\");\n    new Observer(this.SELECTORS.section, 0, null, (entries, observer) => {\n      let slideNum;\n      entries.forEach((entry) => {\n        /*// TO DO: is only 4 debug delete this\n          entry.target.style.border = \"none\";*/\n        //if (entry.intersectionRatio > 0 && (this.distanceToTop(entry.target) <= 100 && this.distanceToTop(entry.target) > 0)) {\n\n        //console.log(this.distanceToTop(entry.target))\n\n        if (entry.isIntersecting && this.distanceToTop(entry.target) <= 100) {\n          // TO DO: is only 4 debug delete this\n          //entry.target.style.border = \"thick solid #BAD455\";\n\n          let targetID = `[href=\"#${entry.target.id}\"]`;\n          let target = document.querySelector(targetID);\n          slideNum = target ? target.getAttribute(\"data-slide-num\") : \"\";\n\n          if (target) {\n            this.activateLink(target);\n          }\n\n          observer.unobserve(entry.target);\n        }\n      });\n      this.EMIT(this.CUSTOM_MESSAGES.CAROUSEL_EVENTS.goToSlide, {\n        slide: slideNum,\n      });\n    });\n\n    let currentSize = this.getMediaQuery(currentSize);\n\n    if (currentSize !== \"large\") {\n      const mainSection = document.querySelector(this.SELECTORS.mainSection);\n      const asideStickyBar = document.querySelector(this.SELECTORS.asideBar);\n\n      if (mainSection.classList.contains(this.CLASSES.scrollDown)) {\n        asideStickyBar.style.top = `${mainSection.offsetHeight}px`;\n      } else {\n        const style = window.getComputedStyle(asideStickyBar);\n        const top = style.getPropertyValue(\"top\");\n        asideStickyBar.style.top = top;\n      }\n    }\n  }\n}\n","import ulog from 'ulog';\n\nulog.level = ulog.DEBUG;\n\nconst Logger = ulog;\n\nexport default Logger;\n","import Logger from '../libs/Logger';\n\nconst log = new Logger('Observer');\nconst debug = false;\n\nexport default class Observer {\n  constructor(selector, margin, conf, cb) {\n    const observablesSelector = selector || '.observe';\n    const observables = document.querySelectorAll(observablesSelector);\n    debug && console.log('Observer', 'observables', observables);\n\n    if (!window.IntersectionObserver) {\n      log.warn('IntersectionObserver not supported');\n      for (const el of observables) {\n        cb(el);\n      }\n    } else {\n      //log.d('IntersectionObserver supported');\n      log.debug('IntersectionObserver supported');\n      const rootMargin = margin || Math.floor(window.outerHeight / 3);\n      this.observer = new IntersectionObserver(cb, conf || {\n        root: null,\n        rootMargin: `${rootMargin}px 0px`,\n        threshold: 0.01\n      });\n\n      for (const observable of observables) {\n        this.observer.observe(observable);\n      }\n    }\n  }\n\n  disconnect() {\n    debug && console.log('Observer disconnect');\n\n    this.observer.disconnect();\n  }\n}\n","var log = require('./ulog')\r\nvar qs = location.search.substring(1),\r\n\t\targs = qs && qs.split('&'),\r\n\t\tlvl, dbg, i, m\r\n\r\ntry {\r\n\tlvl = localStorage.getItem('log')\r\n\tdbg = localStorage.getItem('debug')\r\n} catch(e) {}\r\n\r\nfor (i=0; m=args && args[i] && args[i].split('='); i++) {\r\n\tm[0] == 'log' ? lvl = m[1] : 0\r\n\tm[0] == 'debug' ? dbg = m[1] : 0\r\n}\r\n\r\nlog.con = function(){return window.console && console}\r\ndbg && log.enable(dbg)\r\nvar ulog = log()\r\nlog.level = lvl || log.WARN\r\n\r\nmodule.exports = ulog\r\n","\r\n// ulog - microscopically small universal logging library\r\n// © 2017 by Stijn de Witt, some rights reserved\r\n// License: CC-BY-4.0\r\n\r\nfunction log(name){\r\n\treturn name\r\n\t\t? (mods[name] ? mods[name] : (mods[name] = enhance({name:name}, log)))\r\n\t\t: (log.debug ? log : enhance(log))\r\n}\r\n\r\nlog.ulog = {version:'1.1.0'}\r\n\r\nlog.enable = function(str) {\r\n\tvar i, split = (str || '').split(/[\\s,]+/);\r\n\tfor (i=0; i<split.length; i++) {\r\n\t\tif (split[i]) {\r\n\t\t\tstr = split[i].replace(/\\*/g, '.*?')\r\n\t\t\tif (str[0] === '-') skipMods.push(new RegExp('^' + str.substr(1) + '$'))\r\n\t\t\telse dbgMods.push(new RegExp('^' + str + '$'))\r\n\t\t}\r\n\t}\r\n\tfor (i in mods) patch(mods[i])\r\n}\r\n\r\nlog.enabled = function(name) {\r\n\tvar i;\r\n\tfor (i=0; i<skipMods.length; i++)\r\n\t\tif (skipMods[i].test(name)) return\r\n\tfor (i=0; i<dbgMods.length; i++)\r\n\t\tif (dbgMods[i].test(name)) {return true}\r\n}\r\n\r\nlog.disable = log.enable.bind(log, '')\r\n\r\nvar LVL = {ERROR:1, WARN:2, INFO:3, LOG:4, DEBUG:5, TRACE:6},\r\n\t\tnames = Object.keys(LVL).map(function(x){return x.toLowerCase()}),\r\n\t\tmods = {}, dbgMods = [], skipMods = []\r\n\r\nfunction enhance(o, parent, level) {\r\n\to.NONE = 0\r\n\tfor (var key in LVL) {o[key] = LVL[key]}\r\n\tObject.defineProperty(o, 'level', {\r\n\t\tget: function(){return level !== undefined ? level : parent && parent.level},\r\n\t\tset: function(n) {\r\n\t\t\tif ((n === undefined) && parent) {level = undefined}\r\n\t\t\telse {\r\n\t\t\t\tvar lvl = n && (Number(n)!==Number(n) ? o[n.toUpperCase()] : Number(n))\r\n\t\t\t\tif (lvl >= 0 && lvl <= 6) {level = lvl}\r\n\t\t\t}\r\n\t\t\tpatch(o)\r\n\t\t\tif (!parent) {for (mod in mods) {patch(mods[mod])}}\r\n\t\t}\r\n\t})\r\n\tpatch(o, parent)\r\n\to.dir =  bnd('dir') || nop\r\n\to.table = bnd('table') || nop\r\n\to.time = bnd('time') || nop\r\n\to.timeEnd = bnd('timeEnd') || nop\r\n\t// makes Node behave like browsers \r\n\to.assert = typeof window == 'object' && bnd('assert') || function(){\r\n\t\tvar a=[].concat.apply([], arguments), ok=a.shift()\r\n\t\tif (!ok) {o.error.apply(o, a)}\r\n\t}\r\n\treturn o\r\n}\r\n\r\nfunction patch(o) {\r\n\tvar lvl = Math.max(o.name && log.enabled(o.name) && o.DEBUG || o.level, o.level)\r\n\tfor (var i=0,name; name=names[i]; i++) {\r\n\t\to[name] = lvl <= i\r\n\t\t\t? nop\r\n\t\t\t: (\r\n\t\t\t\tbnd(name) ||\r\n\t\t\t\t(typeof print == 'function' && print) ||\r\n\t\t\t\tnop\r\n\t\t\t)\r\n\t}\r\n}\r\n\r\nfunction bnd(n,c){return (c = log.con()) && (c[n]||c.log).bind(c)}\r\nfunction nop(){}\r\n\r\nmodule.exports = log\r\n"],"sourceRoot":""}