{"version":3,"file":"view-script.min.js","sources":["../../../../block-editor/blocks/timeline/view-script.js"],"sourcesContent":["class Timeline {\n\n\tstatic instances = [];\n\n\tconstructor( node, opts = {} ) {\n\n\t\tif ( ! node ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.node = node;\n\t\tthis.opts = {\n\t\t\tclasses: {\n\t\t\t\thideButton: 'timeline--hide-button',\n\t\t\t\topen: 'timeline--open',\n\t\t\t\topened: 'timeline--opened',\n\t\t\t\tfixMedia: 'timeline--fix-media',\n\t\t\t\tnextElement: '.timeline__after',\n\t\t\t\tpreviousElement: '.timeline__before',\n\t\t\t\tcontainer: '.timeline-items__inner',\n\t\t\t\tcovers: '.timeline-cover',\n\t\t\t\tcover: 'timeline-cover',\n\t\t\t\ttoggle: '.timeline__expand-and-explore button',\n\t\t\t\tcoverInView: 'timeline-cover--in-view',\n\t\t\t\tnav: '.timeline__nav',\n\t\t\t\tnavItem: 'timeline__nav-item',\n\t\t\t\tnavItemActive: 'timeline__nav-item--active',\n\t\t\t\tanchor: '.anchor',\n\t\t\t\tusingExpand: 'timeline--use-expand-and-explore',\n\t\t\t\tmasthead: 'masthead',\n\t\t\t\tfooter: 'footer',\n\t\t\t},\n\t\t}\n\n\t\tthis.opened = false;\n\t\tthis.buffer = 5;\n\t\tthis.usingExpand = this.node.classList.contains(this.opts.classes.usingExpand);\n\t\tthis.container = this.node.querySelector(this.opts.classes.container);\n\t\tthis.covers = this.node.querySelectorAll(this.opts.classes.covers) ?? [];\n\t\tthis.toggle = this.node.querySelector(this.opts.classes.toggle);\n\t\tthis.nextElement = this.node.querySelector(this.opts.classes.nextElement);\n\t\tthis.previousElement = this.node.querySelector(this.opts.classes.previousElement);\n\t\tthis.masthead = document.getElementById(this.opts.classes.masthead);\n\t\tthis.footer = document.getElementById(this.opts.classes.footer);\n\t\tthis.anchors = this.node.querySelectorAll(this.opts.classes.anchor);\n\t\tthis.nav = {\n\t\t\titem: this.node.querySelector(this.opts.classes.navItem),\n\t\t\tcontainer: this.node.querySelector(this.opts.classes.nav),\n\t\t\titems: []\n\t\t};\n\n\t\t[...this.anchors].forEach((anchor, i) => {\n\t\t\tconst el = document.createElement('button');\n\t\t\tel.classList.add(this.opts.classes.navItem);\n\t\t\tel.innerText = anchor.dataset.anchorText ?? anchor.id;\n\t\t\tel.dataset.href = anchor.id\n\t\t\tif (i === 0) {\n\t\t\t\tel.classList.add(this.opts.classes.navItemActive);\n\t\t\t}\n\n\t\t\tel.addEventListener('click', (event) => {\n\t\t\t\tconst panel = this.node.querySelector('#' + event.target.dataset.href);\n\t\t\t\tpanel.scrollIntoView({\n\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\tblock: 'center'\n\t\t\t\t});\n\t\t\t\t[...this.nav.container.children].forEach((a) => {\n\t\t\t\t\ta.classList.remove(this.opts.classes.navItemActive);\n\t\t\t\t});\n\n\n\t\t\t\tevent.target.classList.add(this.opts.classes.navItemActive);\n\t\t\t});\n\t\t\tthis.nav.container.appendChild(el);\n\t\t});\n\n\t\tthis.nav.items = [ ...this.nav.container.children];\n\n\n\n\t\tthis.observers = {\n\t\t\tchildInView: new IntersectionObserver(\n\t\t\t\t(entries) => this.childInView(entries),\n\t\t\t\t{\n\t\t\t\t\tthreshold: [0.1, 0.2, 0.3, 0.4, 0.5, 0.81, 0.85, 0.9, 0.95, 0.96, 0.97, 0.98, 0.99, 1]\n\t\t\t\t}\n\t\t\t),\n\t\t\tneighbor: new IntersectionObserver(\n\t\t\t\t(entries) => this.close(entries),\n\t\t\t\t{\n\t\t\t\t\tthreshold: 1,\n\t\t\t\t}\n\t\t\t),\n\t\t\tnode: new IntersectionObserver(\n\t\t\t\t(entries) => this.nodeInView(entries),\n\t\t\t\t{\n\t\t\t\t\tthreshold: 0.05,\n\t\t\t\t}\n\t\t\t),\n\t\t}\n\n\t\tthis.toggle.addEventListener( 'click', (e) => {\n\t\t\tthis.init();\n\t\t} );\n\n\n\t\tthis.observers.neighbor.observe(this.nextElement);\n\t\tthis.observers.neighbor.observe(this.previousElement);\n\t\tthis.observers.neighbor.observe(this.masthead);\n\t\tthis.observers.neighbor.observe(this.footer);\n\t\tthis.observers.node.observe(this.node);\n\t}\n\n\tnodeInView(entries) {\n\t\tentries.forEach((entry) => {\n\t\t\tif ( entry.isIntersecting ) {\n\n\t\t\t\tthis.interval = setInterval(() => {\n\t\t\t\t\tconst distanceFromTopOfViewport = this.node.getBoundingClientRect().y;\n\t\t\t\t\tif (distanceFromTopOfViewport < this.buffer) {\n\t\t\t\t\t\tif (!this.opened && !this.usingExpand) {\n\t\t\t\t\t\t\tthis.init();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearInterval(this.interval);\n\n\t\t\t\t\t}\n\t\t\t\t}, 33);\n\n\t\t\t} else {\n\t\t\t\tthis.close();\n\t\t\t}\n\t\t});\n\t}\n\n\tgetIndexOfCover(target) {\n\t\treturn [...this.covers].indexOf(target) ?? 0;\n\t}\n\n\tgetIndexOfItem(target) {\n\t\treturn [...this.container.children].indexOf(target) ?? 0;\n\t}\n\n\tinit() {\n\t\tthis.opened = true;\n\t\tif ( this.usingExpand ) {\n\t\t\tthis.node.scrollIntoView({\n\t\t\t\tbehavior: 'smooth',\n\t\t\t});\n\t\t}\n\n\t\tthis.node.classList.add(this.opts.classes.hideButton);\n\t\tthis.node.classList.add(this.opts.classes.opened);\n\t\tthis.node.classList.add(this.opts.classes.open);\n\t\tthis.node.classList.add(this.opts.classes.fixMedia);\n\t\t[ ...this.container.children].forEach((cover) => {\n\t\t\tthis.observers.childInView.observe(cover);\n\t\t});\n\n\t\tthis.activateCover();\n\t}\n\n\tchildInView(entries) {\n\n\t\tentries.forEach((entry) => {\n\t\t\tif ( entry.isIntersecting ) {\n\t\t\t\tconst isLastPanel = this.getIndexOfItem(entry.target) === this.container.children.length - 1;\n\t\t\t\tconst isFirstPanel = this.getIndexOfItem(entry.target) === 0;\n\t\t\t\tconst isCover = entry.target.classList.contains(this.opts.classes.cover);\n\n\n\t\t\t\tif ( entry.intersectionRatio > 0.4 ) {\n\n\t\t\t\t\tif (isCover) {\n\t\t\t\t\t\tthis.activateCover(entry.target);\n\t\t\t\t\t\tthis.adjustIndicator(entry.target);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!isFirstPanel && !isLastPanel) {\n\t\t\t\t\t\tthis.opened = true;\n\t\t\t\t\t\tthis.node.classList.add(this.opts.classes.fixMedia);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tactivateCover(target) {\n\t\tif (!target) {\n\t\t\ttarget = this.covers[0];\n\t\t}\n\t\tthis.deactivateCovers();\n\t\ttarget.classList.add(this.opts.classes.coverInView);\n\t}\n\n\tdeactivateCover(target) {\n\t\ttarget.classList.remove(this.opts.classes.coverInView);\n\t}\n\n\tdeactivateCovers() {\n\t\tthis.covers.forEach((item) => {\n\t\t\tthis.deactivateCover(item);\n\t\t});\n\t}\n\n\tadjustIndicator( target ) {\n\n\t\tconst anchor = target.querySelector(this.opts.classes.anchor);\n\t\tif (! anchor) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst navItem = this.nav.container.querySelector(`[data-href=\"${anchor.id}\"]`);\n\n\t\tthis.nav.items.forEach((item) => {\n\t\t\titem.classList.remove(this.opts.classes.navItemActive);\n\t\t});\n\n\t\tnavItem.classList.add(this.opts.classes.navItemActive);\n\t}\n\n\tclose(entries) {\n\t\tif (!entries) {\n\t\t\tthis.deactivateCovers();\n\t\t\tthis.node.classList.remove(this.opts.classes.fixMedia);\n\t\t\tthis.opened = false;\n\t\t\treturn;\n\t\t}\n\t\tentries.forEach((entry) => {\n\t\t\tif ( entry.isIntersecting ) {\n\t\t\t\tthis.deactivateCovers();\n\t\t\t\tthis.node.classList.remove(this.opts.classes.fixMedia);\n\t\t\t\tthis.opened = false;\n\t\t\t}\n\t\t});\n\t}\n}\n\nconst timelines = document.querySelectorAll( '.timeline' );\nexport const instances = [ ...timelines ].map( node => new Timeline( node ) );\n"],"names":["Timeline","static","constructor","node","opts","this","classes","hideButton","open","opened","fixMedia","nextElement","previousElement","container","covers","cover","toggle","coverInView","nav","navItem","navItemActive","anchor","usingExpand","masthead","footer","buffer","classList","contains","querySelector","querySelectorAll","document","getElementById","anchors","item","items","forEach","i","el","createElement","add","innerText","dataset","anchorText","id","href","addEventListener","event","target","scrollIntoView","behavior","block","children","a","remove","appendChild","observers","childInView","IntersectionObserver","entries","threshold","neighbor","close","nodeInView","e","init","observe","entry","isIntersecting","interval","setInterval","getBoundingClientRect","y","clearInterval","getIndexOfCover","indexOf","getIndexOfItem","activateCover","isLastPanel","length","isFirstPanel","isCover","intersectionRatio","adjustIndicator","deactivateCovers","deactivateCover","instances","map"],"mappings":"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"}