{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/javascript/app/application.js","webpack:///./src/assets/javascript/app/featureVideoPlayer.js","webpack:///./src/assets/javascript/app/index.js","webpack:///./src/assets/javascript/app/nav.js","webpack:///./src/assets/javascript/app/schematic.js","webpack:///./src/assets/javascript/app/sectionManager.js","webpack:///./src/assets/javascript/app/utilities/index.js"],"names":["Application","params","prototype","_singletonInstance","initialize","currentSectionIndex","setCurrentSectionIndex","index","scrollTop","getScrollTop","sectionIndex","i","sectionMarkers","length","start","setSectionMarkers","end","firstContentPositions","setFirstContentPosition","position","self","schematic","Schematic","sectionManager","SectionManager","featureVideoPlayer","FeatureVideoPlayer","nav","Nav","parentWrapper","document","getElementById","contentElement","querySelector","videoPreviews","querySelectorAll","forEach","preview","sectionId","getAttribute","addEventListener","previewClicked","videoBlackout","featureVideo","closeButtonWrapper","closeButton","videoFadeDuration","featureVideoIsOpen","previewElement","toString","title","setAttribute","videoFile","console","log","posterFile","load","gsap","to","opacity","duration","onComplete","playVideo","videoWrapper","setVideoSize","videoWidth","videoHeight","maxWidth","getFullWidth","maxHeight","getFullHeight","widthScale","heightScale","scale","Math","max","style","width","round","height","currentSectionId","currentVideo","pause","window","display","fromTo","play","clickHandler","closeVideo","removeEventListener","scrollIntoView","__DEV__","__SRC__","__DIST__","scrollTo","top","body","overflowY","registerPlugin","ScrollTrigger","DrawSVGPlugin","bp3Application","e","markers","getQueryStringVariable","navButton","scrollProgress","set","drawSVG","scrollTrigger","id","trigger","scrub","ease","Linear","easeNone","navElement","navBlackout","circle1","circle2","circle1Tween","circle2Tween","blackoutTween","titleTween","isOpen","navClicked","closeNav","openNav","killTweens","undefined","kill","titles","classList","contains","add","targetDiameter","titleOpacity","delay","overflow","selectedTitle","titleH2","element","killTweensOf","backgroundImage","setActiveLink","setDepths","remove","overflowX","links","link","zIndex","linkClicked","event","target","schematicElement","marker","pin","dot","gradient","isTweening","positions","left","slideTween","dotTween","pinTween","markerTween","gradientTween","show","hidePin","x","dropPin","hide","y","removePin","progressLine","progressLineFixed","defaults","anticipatePin","section1Title","snap","toggleActions","sectionElement","sectionContents","sectionCount","quoteSplitText","quoteTimeline","content","sectionPin","logoHeight","getElementHeight","titleHeight","vh","getVH","startPin","startString","endTrigger","onEnter","quote","words","color","revert","SplitText","type","timeline","stagger","onLeaveBack","line","onLeave","targets","onEnterBack","onUpdate","progress","heightWrapper","lineHeight","offsetHeight","onRefresh","indexOf","textContent","videoContent","quoteContent","contentSplitText","contentSplitTimeline","contentAnimations","lines","rotationX","transformOrigin","perspective","split","force3D","oldBackground","newBackground","sectionTimeline","snapTo","value","direction","previousVideo","section1H2","step","newTitle","newTitleH2","newTitleH4","onReverseComplete","oldContainer","newContainer","lineTrigger","allContent","endContent","dots","endProgressLine","endLineTrigger","footerTrigger","titlePin","pinSpacing","arrowTween","repeat","yoyo","scrollArrow","introVideoBg","introSplitText1","introSplitText2","introTimeline","oldSectionId","timerId","setTimeout","resizeTimerId","resizeContent","random","clearTimeout","videoElement","backgroundList","videoClone","backgroundElement","cloneNode","autoplay","removeAttribute","src","poster","motionContainer","appendChild","debounce","func","wait","immediate","timeout","context","args","arguments","later","apply","callNow","shuffle","a","j","floor","getRandomInt","min","ceil","qsArray","selector","node","nodeList","array","push","numberMap","input","inputStart","inputStop","outputStart","outputStop","variable","query","location","search","substring","vars","pair","innerWidth","innerHeight","getVW","percent","vw","documentElement","elem","rect","getBoundingClientRect"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"./deploy/assets/javascript/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"vendor\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import SectionManager from './sectionManager';\r\nimport Nav from './nav';\r\nimport FeatureVideoPlayer from './featureVideoPlayer';\r\nimport Schematic from \"./schematic\";\r\nimport {getScrollTop} from \"./utilities\";\r\n\r\nlet Application = function (params) {\r\n if (Application.prototype._singletonInstance) {\r\n return Application.prototype._singletonInstance;\r\n }\r\n Application.prototype._singletonInstance = this;\r\n\r\n // this.initialize(params);\r\n};\r\n\r\nApplication.prototype.initialize = function (params) {\r\n // console.log('Application initalizing ' + params);\r\n\r\n // Application.tweenLength = 0.5;\r\n // Application.tweenStagger = \"-=0.25\";\r\n\r\n this.currentSectionIndex = 0;\r\n this.setCurrentSectionIndex = function(index) {\r\n // console.log('setting current section to ' + index);\r\n // console.log('this.sectionMarkers is ', this.sectionMarkers);\r\n this.currentSectionIndex = index;\r\n // TODO: calc from scrollTop and markers instead of using indexes\r\n let scrollTop = getScrollTop();\r\n let sectionIndex = 0;\r\n for(let i = this.sectionMarkers.length - 1; i >= 0; i--) {\r\n if (scrollTop > this.sectionMarkers[i].start) {\r\n sectionIndex = i;\r\n break;\r\n }\r\n }\r\n this.currentSectionIndex = sectionIndex;\r\n // console.log('Calculated current section is ' + sectionIndex);\r\n // let index = 0;\r\n // while (scrollTop < this.sectionMarkers[index].start) {\r\n // index++;\r\n // }\r\n }\r\n\r\n this.sectionMarkers = [];\r\n this.setSectionMarkers = function(index, start, end) {\r\n // console.log('setting section markers ' + index + \": \" + start + ', ' + end);\r\n this.sectionMarkers[index] = {start: start, end: end};\r\n // console.log('section markers are ', this.sectionMarkers);\r\n }\r\n\r\n this.firstContentPositions = [];\r\n // set the intro position by default, never changes or refreshes\r\n this.firstContentPositions[0] = 0;\r\n this.setFirstContentPosition = function(index, position) {\r\n // console.log('setting first content marker ' + index + \": \" + position);\r\n this.firstContentPositions[index] = position;\r\n // console.log('section first content ', this.firstContentPositions);\r\n }\r\n\r\n /**\r\n *\r\n */\r\n let self = this;\r\n this.schematic = new Schematic();\r\n this.sectionManager = new SectionManager({});\r\n this.featureVideoPlayer = new FeatureVideoPlayer();\r\n this.nav = new Nav({});\r\n\r\n\r\n\r\n\r\n // this.test = function () {\r\n // this.intro.open();\r\n // this.currentState = \"questions\";\r\n // document.getElementById('content').style.display = 'block';\r\n // this.questions.open();\r\n // };\r\n\r\n};\r\n\r\nexport default Application;\r\n\r\n","import {getQueryStringVariable, getFullHeight, getFullWidth} from \"./utilities\";\r\n\r\n/**\r\n * One Single video player that plays all of the featured videos on the site.\r\n *\r\n * TODO: add close button to feature video player\r\n * TODO: add controls to feature video player\r\n * TODO: remove click anywhere to close\r\n */\r\nlet FeatureVideoPlayer = function (params) {\r\n // console.log('FeatureVideoPlayer initalizing ' + params);\r\n\r\n let self = this;\r\n\r\n let parentWrapper = document.getElementById('bp3-wrapper');\r\n let contentElement = parentWrapper.querySelector('#content');\r\n // let videoPreviews = contentElement.querySelector('#section1-preview' );\r\n let videoPreviews = contentElement.querySelectorAll('.video-preview' );\r\n // videoPreviews.addEventListener('click', previewClicked);\r\n // let index = 0;\r\n videoPreviews.forEach(function(preview) {\r\n // index++;\r\n // copy for scope\r\n // let sectionIndex = index;\r\n let sectionId = preview.getAttribute('data-section-id');\r\n preview.addEventListener('click', function () {\r\n // previewClicked(sectionIndex);\r\n previewClicked(sectionId);\r\n });\r\n })\r\n\r\n let videoBlackout = parentWrapper.querySelector('#video-blackout');\r\n let featureVideoPlayer = parentWrapper.querySelector('#feature-video-player');\r\n let featureVideo = featureVideoPlayer.querySelector('#feature-video');\r\n let closeButtonWrapper = featureVideoPlayer.querySelector('#close-button-wrapper');\r\n let closeButton = featureVideoPlayer.querySelector('#close-button');\r\n let videoFadeDuration = 0.3;\r\n\r\n let featureVideoIsOpen = false;\r\n\r\n\r\n function previewClicked(sectionId) {\r\n // console.log('preview clicked ' + sectionId);\r\n // console.log('event target is ', event.target);\r\n if (featureVideoIsOpen === false) {\r\n // window.featureVideoIndex = index;\r\n //get the video data\r\n let previewElement = parentWrapper.querySelector('#' + sectionId.toString() + '-preview');\r\n // set the data-title attribute for analytics\r\n let title = previewElement.getAttribute('data-title');\r\n featureVideo.setAttribute('data-title', title);\r\n \r\n let videoFile = previewElement.getAttribute('data-video');\r\n console.log('video file is ' + videoFile);\r\n let posterFile = previewElement.getAttribute('data-poster');\r\n featureVideo.setAttribute('poster', posterFile);\r\n featureVideo.querySelector('source').setAttribute('src', videoFile);\r\n featureVideo.load();\r\n\r\n gsap.to('#content', {opacity: 0, duration: videoFadeDuration, onComplete: function () {\r\n playVideo(sectionId);\r\n }});\r\n featureVideoIsOpen = true;\r\n }\r\n }\r\n\r\n let videoWrapper = featureVideoPlayer.querySelector('#video-wrapper');\r\n // let resizeTimer = null;\r\n function setVideoSize() {\r\n // if (resizeTimer !== null) {\r\n // clearTimeout(resizeTimer);\r\n // resizeTimer = null;\r\n // }\r\n // resizeTimer = setTimeout( function() {\r\n // feature video dimensions\r\n const videoWidth = 1920;\r\n const videoHeight = 1080;\r\n const maxWidth = getFullWidth() * 0.90;\r\n const maxHeight = getFullHeight() * 0.90;\r\n // calc video scale based on full width\r\n let widthScale = videoWidth / maxWidth;\r\n let heightScale = videoHeight / maxHeight;\r\n let scale = Math.max(widthScale, heightScale);\r\n featureVideo.style.width = Math.round(videoWidth / scale).toString() + 'px';\r\n featureVideo.style.height = Math.round(videoHeight / scale).toString() + 'px';\r\n videoWrapper.style.width = Math.round(videoWidth / scale).toString() + 'px';\r\n videoWrapper.style.height = Math.round(videoHeight / scale).toString() + 'px';\r\n console.log('video sized to ' + videoWrapper.style.width + ' x ' + videoWrapper.style.height);\r\n // }, 500);\r\n }\r\n\r\n let currentSectionId = \"\";\r\n function playVideo(sectionId) {\r\n // console.log('play video ' + sectionId)\r\n currentSectionId = sectionId;\r\n\r\n // pause the bg video if it exists\r\n let currentVideo = parentWrapper.querySelector('#' + sectionId.toString() + '-video-bg');\r\n if (currentVideo !== null) {\r\n currentVideo.pause();\r\n // console.log('paused ', currentVideo);\r\n }\r\n\r\n setVideoSize();\r\n //TODO: debounce this?\r\n window.addEventListener('resize', setVideoSize);\r\n window.addEventListener('orientationchange', setVideoSize);\r\n featureVideoPlayer.style.display = \"flex\";\r\n videoBlackout.style.display = \"block\";\r\n\r\n gsap.fromTo(videoBlackout, {opacity: 0}, {opacity: 0.7, duration: videoFadeDuration});\r\n\r\n // featureVideo.play();\r\n gsap.to(featureVideoPlayer, {opacity: 1, duration: videoFadeDuration, onComplete: function () {\r\n featureVideo.play();\r\n window.clickHandler = function () {\r\n closeVideo(sectionId);\r\n }\r\n closeButton.addEventListener('click', window.clickHandler);\r\n // window.addEventListener('scroll', window.clickHandler);\r\n\r\n // close when the video ends\r\n featureVideo.addEventListener('ended', window.clickHandler,false);\r\n }\r\n });\r\n }\r\n\r\n function closeVideo(sectionId) {\r\n if (featureVideoIsOpen === true) {\r\n closeButton.removeEventListener('click', window.clickHandler);\r\n // window.removeEventListener('scroll', window.clickHandler);\r\n featureVideo.removeEventListener('ended', window.clickHandler,false);\r\n window.removeEventListener('resize', setVideoSize);\r\n window.removeEventListener('orientationchange', setVideoSize);\r\n featureVideo.pause();\r\n gsap.to(videoBlackout, {opacity: 0, duration: videoFadeDuration});\r\n gsap.to(featureVideoPlayer, {opacity: 0, duration: videoFadeDuration, onComplete: function () {\r\n featureVideoPlayer.style.display = \"none\";\r\n videoBlackout.style.display = \"none\";\r\n // set page to the right spot on close\r\n contentElement.querySelector('#' + currentSectionId + '-preview').scrollIntoView();\r\n gsap.to('#content', {opacity: 1, duration: videoFadeDuration});\r\n // play the bg video if it exists\r\n let currentVideo = parentWrapper.querySelector('#' + sectionId.toString() + '-video-bg')\r\n if (currentVideo !== null) {\r\n currentVideo.play();\r\n // console.log('played ', currentVideo);\r\n }\r\n }\r\n });\r\n featureVideoIsOpen = false;\r\n }\r\n }\r\n\r\n};\r\n\r\nexport default FeatureVideoPlayer;\r\n\r\n","import Application from './application';\r\n(function() {\r\n // your page initialization code here\r\n // the DOM will be available here\r\n\r\n if (__DEV__) {\r\n console.log('DEVELOPMENT ENVIRONMENT');\r\n }\r\n if (__SRC__) {\r\n console.log('SOURCE ENVIRONMENT');\r\n }\r\n if (__DIST__) {\r\n console.log('DISTRIBUTION ENVIRONMENT');\r\n }\r\n\r\n try {\r\n\r\n window.scrollTo({top: 0});\r\n document.body.style.overflowY = \"hidden\";\r\n\r\n gsap.registerPlugin(ScrollTrigger);\r\n gsap.registerPlugin(DrawSVGPlugin);\r\n\r\n window.bp3Application = new Application();\r\n window.bp3Application.initialize();\r\n // console.log('application is ', window.bp3Application);\r\n\r\n } catch (e) {\r\n console.log('Caught Error: ', e);\r\n } finally {\r\n document.body.style.opacity = '1';\r\n }\r\n\r\n})();\r\n","import {getQueryStringVariable, getFullWidth, getFullHeight} from \"./utilities\";\r\n\r\n/**\r\n * Main Hamburger Nav animations and open/close stuff, also scroll progress circle\r\n *\r\n * TODO: set circles to vw styles after animation completes?\r\n * TODO: close on scroll/resize? or reposition content scrollintoview on close?\r\n * TODO: need reisze listener to toggle titles visibility on mobile vs desktop\r\n *\r\n */\r\nlet Nav = function (params) {\r\n // console.log('Nav initalizing ' + params);\r\n\r\n let self = this;\r\n let markers = false;\r\n if (getQueryStringVariable('markers') === 'true') {\r\n markers = true;\r\n }\r\n\r\n // Progress circle around the button\r\n let parentWrapper = document.getElementById('bp3-wrapper');\r\n let navButton = parentWrapper.querySelector('#nav-button-wrapper');\r\n let scrollProgress = navButton.querySelector('#progress-path');\r\n gsap.set(scrollProgress, {drawSVG:0});\r\n gsap.fromTo(scrollProgress, 1.25, {drawSVG:\"0\"}, {\r\n scrollTrigger: {\r\n id: 'nav',\r\n trigger: '#content',\r\n start: '0% 0%',\r\n end: '100% 100%',\r\n markers: markers,\r\n scrub: true\r\n },\r\n drawSVG:'0 100%',\r\n ease: Linear.easeNone\r\n });\r\n\r\n // open and close clicks\r\n let navElement = parentWrapper.querySelector('#bp3-main-nav');\r\n let navBlackout = parentWrapper.querySelector('#nav-blackout');\r\n let circle1 = parentWrapper.querySelector('#red-circle1');\r\n let circle2 = parentWrapper.querySelector('#red-circle2');\r\n let circle1Tween, circle2Tween, blackoutTween, titleTween;\r\n let isOpen = false;\r\n navButton.addEventListener('click', navClicked);\r\n\r\n function navClicked(e) {\r\n if (isOpen) {\r\n closeNav();\r\n } else {\r\n openNav();\r\n }\r\n }\r\n\r\n function killTweens() {\r\n if (circle1Tween !== undefined) {\r\n circle1Tween.kill();\r\n }\r\n if (circle2Tween !== undefined) {\r\n circle2Tween.kill();\r\n }\r\n if (blackoutTween !== undefined) {\r\n blackoutTween.kill();\r\n }\r\n if (titleTween !== undefined) {\r\n titleTween.kill();\r\n }\r\n }\r\n\r\n let titles = parentWrapper.querySelector('#title-wrapper');\r\n // let titleElements = titles.querySelectorAll('h2');\r\n function openNav() {\r\n // toggle css classes\r\n if (navButton.classList.contains('is-active') === false) {\r\n navButton.classList.add('is-active');\r\n }\r\n // set open flag\r\n isOpen = true;\r\n killTweens();\r\n\r\n // calculate circle diameter\r\n let targetDiameter = getFullWidth();\r\n if (getFullHeight() > targetDiameter) {\r\n targetDiameter = getFullHeight() * 1.3;\r\n }\r\n\r\n // animate the circle\r\n gsap.set(navBlackout, {display: 'block'});\r\n gsap.set(navElement, {display: 'block'});\r\n blackoutTween = gsap.to(navBlackout, {opacity: 0.75, duration: 0.5});\r\n let titleOpacity = 1;\r\n if (getFullWidth() < 768) {\r\n titleOpacity = 0;\r\n }\r\n titleTween = gsap.to(titles, {opacity: titleOpacity, duration: 0.2});\r\n circle1Tween = gsap.to(circle1, {width: Math.round(targetDiameter * 1.5), height: Math.round(targetDiameter * 1.5), duration: 2, ease: 'elastic.out(0.9, 0.45)'});\r\n circle2Tween = gsap.to(circle2, {width: Math.round(targetDiameter * 1.3), height: Math.round(targetDiameter * 1.3), duration: 2, ease: 'elastic.out(0.9, 0.5)', delay: 0.1});\r\n gsap.fromTo(navElement, {opacity: 0}, {opacity: 1, delay: 0.5});\r\n\r\n // stop the body scroll? *Doesn't work on iOS\r\n let body = document.body;\r\n // body.style.position = \"fixed\";\r\n body.style.height = \"100%\";\r\n body.style.overflow = \"hidden\";\r\n\r\n // selected title gradient transition to dark\r\n let selectedTitle = parentWrapper.querySelector('#section' + window.bp3Application.currentSectionIndex.toString() + '-title');\r\n if (selectedTitle !== null) {\r\n // let titleH2 = selectedTitle.querySelector('h2');\r\n let titleH2 = parentWrapper.querySelectorAll('h2');\r\n // let titleH4 = selectedTitle.querySelector('h4');\r\n if (titleH2 !== null) {\r\n // gsap.killTweensOf(titleH2);\r\n titleH2.forEach(function(element) {\r\n gsap.killTweensOf(element, {backgroundImage:true});\r\n })\r\n // gsap.killTweensOf(titleH2, {backgroundImage:true});\r\n gsap.to(titleH2, {backgroundImage: '-webkit-linear-gradient(45deg, #525b5c, #000000)', duration: 0.5});\r\n }\r\n }\r\n\r\n setActiveLink();\r\n setDepths();\r\n }\r\n\r\n function closeNav() {\r\n navButton.classList.remove('is-active');\r\n isOpen = false;\r\n killTweens();\r\n blackoutTween = gsap.to(navBlackout, {opacity: 0, duration: 0.3, onComplete: function() {\r\n gsap.set(navBlackout, {display: 'none'});\r\n gsap.set(navElement, {display: 'none'});\r\n }});\r\n circle1Tween = gsap.to(circle1, {width: 0, height: 0, duration: 0.3, ease: 'power2.out'});\r\n circle2Tween = gsap.to(circle2, {width: 0, height: 0, duration: 0.3, ease: 'power2.out'});\r\n titleTween = gsap.to(titles, {opacity: 1, duration: 0.3});\r\n gsap.to(navElement, {opacity: 0, duration: 0.1});\r\n\r\n // // selected title gradient\r\n let selectedTitle = parentWrapper.querySelector('#section' + window.bp3Application.currentSectionIndex.toString() + '-title');\r\n if (selectedTitle !== null) {\r\n // let titleH2 = selectedTitle.querySelector('h2');\r\n let titleH2 = parentWrapper.querySelectorAll('h2');\r\n // let titleH4 = selectedTitle.querySelector('h4');\r\n if (titleH2 !== null) {\r\n // gsap.killTweensOf(titleH2);\r\n gsap.to(titleH2, {backgroundImage: '-webkit-linear-gradient(45deg, #525b5c, #FFFFFF)', duration: 0.5});\r\n }\r\n // if (titleH4 !== null) {\r\n // // gsap.killTweensOf(titleH2);\r\n // gsap.to(titleH4, {opacity: 1, duration: 0.2});\r\n // }\r\n }\r\n\r\n gsap.set(navElement, {opacity: 0});\r\n let body = document.body;\r\n // body.style.position = \"relative\";\r\n body.style.height = \"auto\";\r\n body.style.overflowY = \"scroll\";\r\n body.style.overflowX = \"hidden\";\r\n }\r\n\r\n // remove active class then add to current\r\n function setActiveLink () {\r\n // close on button link clicks\r\n let links = navElement.querySelectorAll('.link');\r\n for (const link of links) {\r\n if (link.classList.contains('is-active')) {\r\n link.classList.remove('is-active');\r\n }\r\n }\r\n\r\n if (window.bp3Application.currentSectionIndex === 0) {\r\n navElement.querySelector('#intro-link').classList.add('is-active');\r\n } else {\r\n navElement.querySelector('#section' + window.bp3Application.currentSectionIndex.toString() + '-link').classList.add('is-active');\r\n }\r\n }\r\n\r\n function setDepths() {\r\n // console.log('Nav.setDepths ' + window.bp3Application.currentSectionIndex);\r\n if (window.bp3Application.currentSectionIndex === 0) {\r\n parentWrapper.querySelector('#titles').style.zIndex = '0';\r\n } else {\r\n parentWrapper.querySelector('#titles').style.zIndex = '5';\r\n }\r\n }\r\n\r\n function linkClicked(event) {\r\n // console.log('clicked ', event);\r\n let index = event.target.getAttribute('data-section-id');\r\n let position = window.bp3Application.firstContentPositions[index];\r\n window.scrollTo({top: position});\r\n // console.log('scroll to ' + position);\r\n closeNav();\r\n }\r\n\r\n // close nav on button link clicks\r\n let links = navElement.querySelectorAll('.link');\r\n for (const link of links) {\r\n link.addEventListener('click', linkClicked);\r\n }\r\n};\r\n\r\nexport default Nav;\r\n\r\n","// import {getVW, getVH} from \"./utilities\";\r\n\r\n/**\r\n * One Single video player that plays all of the featured videos on the site.\r\n *\r\n * TODO: add close button to feature video player\r\n * TODO: add controls to feature video player\r\n * TODO: remove click anywhere to close\r\n */\r\nlet Schematic = function (params) {\r\n // console.log('Schematic initalizing ' + params);\r\n\r\n let self = this;\r\n\r\n let parentWrapper = document.getElementById('bp3-wrapper');\r\n let schematicElement = parentWrapper.querySelector('#schematic');\r\n let marker = schematicElement.querySelector('#marker');\r\n let pin = schematicElement.querySelector('#pin');\r\n let dot = schematicElement.querySelector('#dot');\r\n let gradient = parentWrapper.querySelector('#sections-gradient3');\r\n let isTweening = false;\r\n let positions = [\r\n { top: 163, left: 295 }, // section 1 - front door - 163, 295\r\n { top: 110, left: 80 }, // section 2 - mixing to molding - 110, 80\r\n { top: 110, left: 137 }, // section 3 - conditioning - 110, 137\r\n { top: 70, left: 135 }, // section 4 - extrusion - 70, 135\r\n { top: 60, left: 180 }, // section 5 - qa - 60, 180\r\n { top: 90, left: 145 }, // section 6 - core molding - 90, 145\r\n { top: 133, left: 218 }, // section 7 - dual core molding - 133, 218\r\n { top: 70, left: 240 }, // section 8 - operations - 70, 240\r\n { top: 90, left: 270 }, // section 9 - casing layer cover - 90, 270\r\n { top: 100, left: 270 }, // section 10 - casing layer molding - 100, 270\r\n { top: 43, left: 236 }, // section 11 - precision tooling - 43, 236\r\n { top: 15, left: 325 }, // section 12 - rd - 15, 325\r\n { top: 25, left: 260 }, // section 13 - casting - 25, 260\r\n { top: 48, left: 275 }, // section 14 - buffing - 48, 275\r\n { top: 56, left: 388 }, // section 15 - tumbling - 56, 388\r\n { top: 69, left: 330 }, // section 16 - primer paint - 69, 330\r\n { top: 94, left: 293 }, // section 17 - pad printing - 94, 293\r\n { top: 163, left: 295 }, // section 18 - front door - 163, 295\r\n { top: 163, left: 295 } // section 19 - front door - 163, 295\r\n ];\r\n let slideTween, dotTween, pinTween, markerTween, gradientTween;\r\n\r\n self.killTweens = function () {\r\n // if( slideTween !== null && slideTween !== undefined) {\r\n // slideTween.kill();\r\n // }\r\n if( dotTween !== null && dotTween !== undefined) {\r\n dotTween.kill();\r\n }\r\n if( pinTween !== null && pinTween !== undefined) {\r\n pinTween.kill();\r\n }\r\n if( markerTween !== null && markerTween !== undefined) {\r\n markerTween.kill();\r\n }\r\n if( gradientTween !== null && gradientTween !== undefined) {\r\n gradientTween.kill();\r\n }\r\n }\r\n\r\n self.show = function () {\r\n self.killTweens();\r\n self.hidePin();\r\n // console.log('show schematic');\r\n gsap.set([dot, pin], {opacity: 0});\r\n gradientTween = gsap.to(gradient, {opacity: 1, duration: 1, ease: 'power2.easein'});\r\n slideTween = gsap.fromTo(schematicElement, {x: 400, opacity: 0}, {x: 0, opacity: 1, duration: 0.75, onComplete: function () {\r\n self.dropPin();\r\n }});\r\n }\r\n\r\n self.hide = function () {\r\n self.killTweens();\r\n // console.log('hide schematic');\r\n gradientTween = gsap.to(gradient, {opacity: 0, duration: 0.5});\r\n slideTween = gsap.to(schematicElement, {x: 400, opacity: 0, duration: 0.5, onComplete: function () {\r\n self.hidePin();\r\n }});\r\n }\r\n\r\n self.hidePin = function () {\r\n gsap.set(marker, {top: positions[0].top, left: positions[0].left});\r\n gsap.set(pin, {opacity: 0, y: -50});\r\n gsap.set(dot, {opacity: 0, scale: 0});\r\n }\r\n\r\n self.removePin = function () {\r\n // console.log('remove pin ' + isTweening);\r\n self.killTweens();\r\n pinTween = gsap.to(pin, {opacity: 0, y: -50, duration: 0.3});\r\n dotTween = gsap.to(dot, {opacity: 0, scale: 0, duration: 0.3, delay: 0.15});\r\n }\r\n\r\n self.dropPin = function () {\r\n // console.log('drop pin ' + (window.bp3Application.currentSectionIndex - 1));\r\n self.killTweens();\r\n\r\n let index = window.bp3Application.currentSectionIndex - 1;\r\n if ( index < 0) {\r\n index = 0;\r\n }\r\n let position = positions[index];\r\n // gsap.set(marker, {top: position.top, left: position.left});\r\n // set in vw's instead\r\n // @function vw($pixels, $width: 1600) {\r\n // @return calc(#{$pixels} / #{$width} * 100vw);\r\n // }\r\n // get vw equivalent at 1600 pixels\r\n marker.style.top = (position.top / 16).toString() + 'vw';\r\n marker.style.left = (position.left / 16).toString() + 'vw';\r\n\r\n\r\n dotTween = gsap.to(dot, {opacity: 0.6, scale: 1, duration: 0.8, ease: 'elastic.out(1, 0.25)'});\r\n dotTween = gsap.to(pin, {opacity: 0.7, y: 0, duration: 0.3, delay: 0.5});\r\n }\r\n\r\n\r\n};\r\n\r\nexport default Schematic;\r\n\r\n","import {\r\n getQueryStringVariable,\r\n getVH,\r\n getVW,\r\n getElementHeight,\r\n getFullWidth,\r\n getFullHeight,\r\n getScrollTop, debounce\r\n} from \"./utilities\";\r\n\r\n/**\r\n * Controls the content, title, and background functionality for all sections in the site.\r\n *\r\n */\r\nlet SectionManager = function (params) {\r\n // console.log('SectionManager initalizing ' + params);\r\n\r\n let self = this;\r\n let parentWrapper = document.getElementById('bp3-wrapper');\r\n let progressLine = parentWrapper.querySelector('#progress-line');\r\n let progressLineFixed = parentWrapper.querySelector('#progress-line-fixed');\r\n // console.log('wrapped progress line is ', progressLine)\r\n // console.log('progress line fixed is ', progressLineFixed)\r\n // TODO: add a current section variable for play/pause bg video on nav open/close?\r\n\r\n let markers = false;\r\n if (getQueryStringVariable('markers') === 'true') {\r\n markers = true;\r\n }\r\n // markers = false;\r\n\r\n ScrollTrigger.defaults({\r\n // bg crossfade values\r\n // start: '0% 60%',\r\n // end: '0% 40%',\r\n // markers: markers,\r\n // scrub: true,\r\n // scroll: document.body,\r\n // invalidateOnRefresh: true,\r\n // scroller: '#scroll-wrapper',\r\n anticipatePin: 1\r\n });\r\n\r\n // section 1 title fade has to happen BEFORE the section loops\r\n let section1Title = parentWrapper.querySelector('#section1-title').querySelector('h2');\r\n gsap.fromTo(section1Title, {opacity: 0}, {\r\n scrollTrigger: {\r\n id: 'section 1 title',\r\n start: '0% 40%',\r\n end: '0% 20%',\r\n scrub: true,\r\n snap: false,\r\n trigger: '#section1-content',\r\n markers: markers,\r\n toggleActions: \"play none none complete\",\r\n // toggleActions: \"play reset reset reset\",\r\n },\r\n opacity: 1,\r\n onComplete: function () {\r\n let titleH2 = parentWrapper.querySelector('#section1-title').querySelector('h2');\r\n gsap.to(titleH2, {backgroundImage: '-webkit-linear-gradient(45deg, #525b5c, #FFFFFF)', duration: 3});\r\n }\r\n });\r\n // fade/slide in section 1 subtitle BEFORE the section loops\r\n gsap.fromTo('#section1-subtitle', {opacity: 0, x: -400}, {\r\n scrollTrigger: {\r\n id: 'section 1 subtitle',\r\n start: '0% 20%',\r\n end: '0% 00%',\r\n scrub: false,\r\n trigger: '#section1-content',\r\n markers: false,\r\n // toggleActions: \"play none none reverse\",\r\n toggleActions: \"play complete reverse reset\"\r\n },\r\n opacity: 1,\r\n x: 0,\r\n duration: 0.3\r\n });\r\n\r\n // loop through content-wrappers and pin them\r\n let sectionElement;\r\n let sectionContents;\r\n self.sectionCount = parentWrapper.querySelectorAll('.section-content').length;\r\n // NOTE: 2 content loops one for content pinning which adjusts section height, then a second for section bg/title transitions!\r\n for (let index = 1; index <= self.sectionCount; index++) {\r\n // console.log('section number ' + index);\r\n\r\n // get the section content reference, then loop through content-wrappers to pin them individually\r\n sectionElement = parentWrapper.querySelector('#section' + index.toString() + '-content');\r\n sectionContents = sectionElement.querySelectorAll(\".content-wrapper\");\r\n let quoteSplitText = null;\r\n let quoteTimeline = null;\r\n sectionContents.forEach(function(content) {\r\n let sectionPin = new ScrollTrigger({\r\n id: 'section ' + index.toString() + ' content',\r\n // use function for dynamic title height for subtitles and wrapping titles\r\n start: function (params) {\r\n // console.log('start ', params.pin.id);\r\n // get the dynamic height for the pin accounting for top pads, title wraps, and subtitles\r\n let logoHeight = getElementHeight('#logo-black');\r\n logoHeight = 0;\r\n let titleHeight = getElementHeight('#section' + index.toString() + '-title');\r\n let vh = getVH(10);\r\n let startPin = Math.round(logoHeight + titleHeight + vh);\r\n // Not Using this anymore? keeping just to be safe...\r\n // store this value on the window for later use with the side progress line\r\n // window['startPin' + index.toString()] = startPin;\r\n let startString = '0 ' + startPin.toString();\r\n // console.log('start string is now ' + startString);\r\n return startString;\r\n },\r\n // static pin value, using percents here contributes to resize bugs\r\n end: \"+=500\",\r\n pin: true,\r\n markers: markers,\r\n trigger: content,\r\n endTrigger: content,\r\n onEnter: function (params) {\r\n // console.log('content pin at ' + getScrollTop());\r\n // console.log('enter ', params.pin.id);\r\n // animate the quotes\r\n let quote = params.pin.querySelector('.quote');\r\n if (quote !== null) {\r\n // reset any running split texts\r\n if (quoteSplitText !== null && quoteTimeline !== null) {\r\n quoteTimeline.kill();\r\n gsap.killTweensOf(quoteSplitText.words);\r\n gsap.set(quoteSplitText.words, {scale: 1, color:\"#ffffff\"});\r\n quoteSplitText.revert();\r\n quoteSplitText = null;\r\n quoteTimeline = null;\r\n }\r\n // individual words\r\n quoteSplitText = new SplitText(quote, {type: 'words'});\r\n quoteTimeline = gsap.timeline({\r\n // onCompleteParams: [quoteSplitText],\r\n onComplete: function (params) {\r\n // console.log('quote split text revert ', quoteSplitText);\r\n if (quoteSplitText !== null && quoteTimeline !== null) {\r\n quoteTimeline.kill();\r\n gsap.killTweensOf(quoteSplitText.words);\r\n gsap.set(quoteSplitText.words, {scale: 1, color: \"#ffffff\"});\r\n quoteSplitText.revert();\r\n quoteSplitText = null;\r\n quoteTimeline = null;\r\n }\r\n }\r\n });\r\n quoteTimeline.to(quoteSplitText.words, {duration: 0.2, color:\"#8c9292\", scale:0.9, stagger: 0.2}, \"words\");\r\n quoteTimeline.to(quoteSplitText.words, {duration: 0.4, color:\"#ffffff\", scale:1, stagger: 0.2}, \"words+=0.2\");\r\n quoteTimeline.play();\r\n }\r\n\r\n // show the schematic\r\n let preview = params.pin.querySelector('#section1-preview')\r\n if (preview !== null) {\r\n window.bp3Application.schematic.show();\r\n }\r\n },\r\n onLeaveBack: function (params) {\r\n // console.log('leave back ', params.pin.id);\r\n // reset the red line\r\n let line = params.pin.querySelector('.line');\r\n gsap.to(line, {height: 15});\r\n // hide the schematic\r\n let preview = params.pin.querySelector('#section1-preview')\r\n if (preview !== null) {\r\n window.bp3Application.schematic.hide();\r\n }\r\n },\r\n onLeave: function (params) {\r\n // console.log('leave ', params.pin.id);\r\n\r\n if (index !== self.sectionCount) {\r\n // fade the content out\r\n let targets = params.pin.querySelectorAll('.fade');\r\n if (targets !== null) {\r\n gsap.to(targets, {opacity: 0});\r\n }\r\n let line = params.pin.querySelector('.line');\r\n gsap.to(line, {height: 15});\r\n } else {\r\n // fade the first one but not the second\r\n if (params.pin.id === 'section' + self.sectionCount.toString() + '-first-content') {\r\n // fade the content out\r\n let targets = params.pin.querySelectorAll('.fade');\r\n if (targets !== null) {\r\n gsap.to(targets, {opacity: 0});\r\n }\r\n let line = params.pin.querySelector('.line');\r\n gsap.to(line, {height: 15});\r\n // swap the subtitles\r\n // let sub1 = parentWrapper.querySelector('#section18-title').querySelector('.subtitle1');\r\n // let sub2 = parentWrapper.querySelector('#section18-title').querySelector('.subtitle2');\r\n // gsap.to(sub1, {opacity: 0, x: 400, duration: 0.25, onComplete: function () {\r\n // gsap.set(sub2, {opacity: 0, x: -200});\r\n // gsap.to(sub2, {opacity: 1, x: 0, duration: 0.25});\r\n // }});\r\n }\r\n }\r\n },\r\n onEnterBack: function (params) {\r\n // console.log('enter back ', params.pin.id);\r\n // fade the content back in\r\n let targets = params.pin.querySelectorAll('.fade');\r\n if (targets !== null) {\r\n gsap.to(targets, {opacity: 1});\r\n }\r\n\r\n // fade the first one but not the second\r\n // if (params.pin.id === 'section18-first-content') {\r\n // // swap the subtitles\r\n // let sub1 = parentWrapper.querySelector('#section18-title').querySelector('.subtitle1');\r\n // let sub2 = parentWrapper.querySelector('#section18-title').querySelector('.subtitle2');\r\n // gsap.to(sub2, {opacity: 0, x: 400, duration: 0.25, onComplete: function () {\r\n // gsap.set(sub1, {opacity: 0, x: -200});\r\n // gsap.to(sub1, {opacity: 1, x: 0, duration: 0.25});\r\n // }});\r\n // }\r\n },\r\n onUpdate: function ({progress}) {\r\n // console.log('update ', progress);\r\n // update the red progress line marker\r\n let line = content.querySelector('.line');\r\n let heightWrapper = content.querySelector('.height-wrapper');\r\n let lineHeight = Math.round((heightWrapper.offsetHeight * progress));\r\n if (lineHeight < 15) {\r\n lineHeight = 15;\r\n }\r\n gsap.set(line, {height: lineHeight});\r\n },\r\n onRefresh: function (params) {\r\n // console.log('Refresh ', params);\r\n if (params.trigger.id != null && params.trigger.id.indexOf('first-content') !== -1) {\r\n window.bp3Application.setFirstContentPosition(index, Math.round((params.start + params.end)/2));\r\n }\r\n }\r\n });\r\n\r\n\r\n // animate content as it enters screen\r\n let textContent = content.querySelectorAll('p');\r\n let videoContent = content.querySelector('.video-preview');\r\n // split text roll animation on content as it enters the screen\r\n if (textContent !== null && textContent.length > 0) {\r\n // remove quotes from the roll on animation to avoid embedded split text spacing bug\r\n let quoteContent = content.querySelectorAll('.quote');\r\n if (quoteContent !== null && quoteContent.length > 0) {\r\n // console.log('FOUND QUOTE skipping enter animation');\r\n } else {\r\n // console.log('textContent is ', textContent);\r\n let contentSplitText = null;\r\n let contentSplitTimeline = null;\r\n let contentAnimations = new ScrollTrigger({\r\n id: 'section ' + index.toString() + ' content',\r\n start: '0% 100%',\r\n end: '100% 50%',\r\n markers: markers,\r\n trigger: content,\r\n scrub: false,\r\n onEnter: function (params) {\r\n // console.log('enter ', params);\r\n // console.log('revert1 ' + index);\r\n if (contentSplitText !== null && contentSplitTimeline !== null) {\r\n contentSplitTimeline.kill();\r\n gsap.killTweensOf(contentSplitText.lines);\r\n gsap.set(contentSplitText.lines, {opacity: 1, rotationX: 0, transformOrigin: \"50% 50% 0\"});\r\n contentSplitText.revert();\r\n contentSplitText = null;\r\n contentSplitTimeline = null;\r\n }\r\n contentSplitText = new SplitText(textContent, {type: 'lines'});\r\n contentSplitTimeline = gsap.timeline({\r\n onComplete: function () {\r\n // console.log('revert2 ' + index);\r\n if (contentSplitText !== null && contentSplitTimeline !== null) {\r\n contentSplitTimeline.kill();\r\n gsap.killTweensOf(contentSplitText.lines);\r\n gsap.set(contentSplitText.lines, {opacity: 1, rotationX: 0, transformOrigin: \"50% 50% 0\"});\r\n contentSplitText.revert();\r\n contentSplitText = null;\r\n contentSplitTimeline = null;\r\n }\r\n }\r\n });\r\n // contentSplitTimeline.onComplete = function () {\r\n // console.log('revert2 ' + index);\r\n // if (contentSplitText !== null && contentSplitTimeline !== null) {\r\n // contentSplitTimeline.kill();\r\n // gsap.killTweensOf(contentSplitText.lines);\r\n // gsap.set(contentSplitText.lines, {opacity: 1, rotationX: 0, transformOrigin: \"50% 50% 0\"});\r\n // contentSplitText.revert();\r\n // contentSplitText = null;\r\n // contentSplitTimeline = null;\r\n // }\r\n // };\r\n gsap.set(textContent, {perspective: 400});\r\n contentSplitText.split({type: 'lines'});\r\n contentSplitTimeline.fromTo(contentSplitText.lines, {\r\n opacity: 0,\r\n rotationX: -120,\r\n force3D: true,\r\n transformOrigin: \"50% 0% -50\"\r\n }, {\r\n duration: 0.5,\r\n opacity: 1,\r\n rotationX: 0,\r\n force3D: true,\r\n // transformOrigin: \"50% 50% 0\",\r\n stagger: 0.05\r\n });\r\n contentSplitTimeline.play();\r\n }\r\n });\r\n }\r\n\r\n // video scale in animations\r\n } else if (videoContent !== null) {\r\n // console.log('video');\r\n gsap.set(videoContent, {scale: 0});\r\n gsap.fromTo(videoContent, {scale: 0}, {scale: 1, ease: 'back.out(1.2)', duration: 1.5,\r\n scrollTrigger: {\r\n id: 'section ' + index.toString() + ' video',\r\n start: '0% 100%',\r\n // TODO: make dynamic function based on bottom of content hit point?\r\n end: '0% 40%',\r\n scrub: false,\r\n markers: markers,\r\n trigger: content,\r\n toggleActions: \"play none none reset\",\r\n onEnter: function (params) {\r\n // console.log('enter ', params);\r\n gsap.fromTo(videoContent, {y: 100}, {y: 0, duration: 1.5, ease: 'power1.out'});\r\n }\r\n }\r\n });\r\n }\r\n\r\n }); // end foreach content loop in each section\r\n\r\n } // end forward section loop\r\n\r\n\r\n\r\n // TODO: make another loop that makes sure all pinned content-wrappers set opacity 0 when the bottom scrolls in the top edge?\r\n\r\n\r\n\r\n // second loop for section transitions\r\n for (let index = 1; index <= self.sectionCount; index++) {\r\n // console.log('section number ' + index);\r\n sectionElement = parentWrapper.querySelector('#section' + index.toString() + '-content');\r\n sectionContents = sectionElement.querySelectorAll(\".content-wrapper\");\r\n\r\n let oldBackground = '#section' + (index - 1).toString() + '-bg';\r\n let newBackground = '#section' + (index).toString() + '-bg';\r\n // new timeline section transition for bgs and titles\r\n if (index > 1) {\r\n let sectionTimeline = gsap.timeline({\r\n scrollTrigger: {\r\n id: 'section ' + index.toString() + ' transition',\r\n trigger: '#section' + index.toString() + '-content',\r\n markers: markers,\r\n start: '0% 95%',\r\n end: '0% 20%',\r\n snap: {\r\n snapTo: function(value, params) {\r\n if (params.direction > 0) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n },\r\n // duration: {min: 0.2, max: 1},\r\n // delay: 0\r\n },\r\n scrub: false,\r\n toggleActions: \"play complete reverse reset\",\r\n // toggleActions: \"play complete reverse reverse\",\r\n // toggleActions: \"play complete complete reset\",\r\n onEnter: function (params) {\r\n console.log('enter current ' + index.toString());\r\n let currentVideo = parentWrapper.querySelector('#section' + index.toString() + '-bg-video')\r\n if (currentVideo !== null) {\r\n currentVideo.play();\r\n // console.log('played ', currentVideo);\r\n }\r\n window.bp3Application.schematic.removePin();\r\n if (index === 18) {\r\n // console.log('hide schematic');\r\n window.bp3Application.schematic.hide();\r\n }\r\n // starting the section transition - turn on the next sections bg\r\n gsap.set(newBackground, {display: 'block'});\r\n },\r\n onEnterBack: function (params) {\r\n console.log('enter back ', index.toString());\r\n let previousVideo = parentWrapper.querySelector('#section' + (index - 1).toString() + '-bg-video')\r\n if (previousVideo !== null) {\r\n previousVideo.play();\r\n // console.log('played ', previousVideo);\r\n }\r\n // show intro bg\r\n if (index === 2) {\r\n // console.log('show intro bg');\r\n gsap.set('#intro-bg', {display: 'block'});\r\n }\r\n window.bp3Application.schematic.removePin();\r\n\r\n // starting the reverse section transition - turn on the previous sections bg\r\n gsap.set(oldBackground, {display: 'block'});\r\n },\r\n onLeave: function (params) {\r\n console.log('leave ' + index.toString());\r\n let previousVideo = parentWrapper.querySelector('#section' + (index - 1).toString() + '-bg-video')\r\n if (previousVideo !== null) {\r\n previousVideo.pause();\r\n // console.log('paused ', previousVideo);\r\n }\r\n window.bp3Application.setCurrentSectionIndex(index);\r\n // hide intro bg\r\n if (index === 2) {\r\n // console.log('hide intro bg');\r\n gsap.set('#intro-bg', {display: 'none'});\r\n }\r\n window.bp3Application.schematic.dropPin();\r\n\r\n // finishing the section transition - turn off the previous sections bg\r\n gsap.set(oldBackground, {display: 'none'});\r\n },\r\n onLeaveBack: function (params) {\r\n console.log('leave back ' + index.toString() + ' scroll is ' + getScrollTop());\r\n let currentVideo = parentWrapper.querySelector('#section' + index.toString() + '-bg-video')\r\n if (currentVideo !== null) {\r\n currentVideo.pause();\r\n // console.log('paused ', currentVideo);\r\n }\r\n window.bp3Application.setCurrentSectionIndex(index - 1);\r\n window.bp3Application.schematic.dropPin();\r\n if (index === 18) {\r\n // console.log('show schematic back');\r\n window.bp3Application.schematic.show();\r\n gsap.to('#sections-gradient2', {scale: 1, duration: 0.5, ease: 'power3.easeout'});\r\n }\r\n\r\n // finishing the reverse section transition - turn off the next sections bg\r\n gsap.set(newBackground, {display: 'none'});\r\n },\r\n onRefresh: function (params) {\r\n // console.log('*** REFRESH ' + index + ' ', params);\r\n // console.log('scrolls - ' + params.start + ' to ' + params.end + ' current ' + getScrollTop());\r\n // console.log('progress ' + params.progress);\r\n window.bp3Application.setSectionMarkers(index, params.start, params.end);\r\n // catch bug where section 1 title reappears after resize/orientation change\r\n if (window.bp3Application.currentSectionIndex !== 1) {\r\n let section1H2 = parentWrapper.querySelector('#section1-title').querySelector('h2');\r\n gsap.set(section1H2, {opacity: 0});\r\n }\r\n }\r\n }\r\n });\r\n\r\n let step = 0.25;\r\n // let oldBackground = '#section' + (index - 1).toString() + '-bg';\r\n if (index === 2) {\r\n oldBackground = '#intro-bg';\r\n }\r\n // let newBackground = '#section' + (index).toString() + '-bg';\r\n let newTitle = parentWrapper.querySelector('#section' + (index).toString() + '-title');\r\n let newTitleH2 = newTitle.querySelector('h2');\r\n let newTitleH4 = newTitle.querySelector('h4');\r\n\r\n sectionTimeline.to('h2', {x: 400, opacity: 0, duration: step, onReverseComplete: function () {\r\n // console.log('reverse complete on ' + index);\r\n gsap.set([newTitleH4, newTitleH2], {opacity: 0});\r\n }});\r\n sectionTimeline.to('h4', {x: 400, opacity: 0, duration: step}, \"-=\" + (step - 0.1).toString());\r\n\r\n sectionTimeline.to(oldBackground, {opacity: 0, duration: step}, \"-=\" + (step/2).toString());\r\n let oldContainer = parentWrapper.querySelector(oldBackground).querySelector('.motion-container');\r\n console.log('old container is ' + oldContainer);\r\n if (oldContainer !== null) {\r\n sectionTimeline.to(oldContainer, {scale: 0.8, y: -100, duration: step}, \"<\");\r\n }\r\n\r\n sectionTimeline.fromTo(newBackground, {opacity: 0}, {opacity: 1, duration: 1,\r\n onComplete: function () {\r\n if (index === 18) {\r\n gsap.to('#sections-gradient2', {scale: 1.35, duration: 2});\r\n }\r\n }\r\n }, \"-=\" + (step/2).toString());\r\n let newContainer = parentWrapper.querySelector(newBackground).querySelector('.motion-container');\r\n if (newContainer !== null) {\r\n sectionTimeline.fromTo(newContainer, {scale: 0.8, y: 100}, {scale: 1, y: 0, duration: 1}, \"<\");\r\n }\r\n\r\n sectionTimeline.to(newTitleH2, {backgroundImage: '-webkit-linear-gradient(45deg, #FFFFFF, #FFFFFF)', duration: 0.01});\r\n sectionTimeline.fromTo(newTitleH2, {x: -200, opacity: 0}, {x: 0, opacity: 1, duration: step}, \"-=\" + (step).toString());\r\n sectionTimeline.fromTo(newTitleH4, {x: -200, opacity: 0}, {x: 0, opacity: 1, duration: step, onComplete: function () {\r\n // console.log('section ' + index + ' + timeline last step complete current is ' + window.bp3Application.currentSectionIndex);\r\n gsap.to(newTitleH2, {backgroundImage: '-webkit-linear-gradient(45deg, #525b5c, #FFFFFF)', duration: 3});\r\n }}, \"-=\" + (step - 0.1).toString());\r\n\r\n }\r\n\r\n } // end backwards section loop\r\n\r\n\r\n\r\n\r\n\r\n // pin the progress line\r\n let lineTrigger = new ScrollTrigger({\r\n id: 'progress line',\r\n trigger: '#section2-content',\r\n start: '0% 60%',\r\n end: '0% 40%',\r\n markers: markers,\r\n scrub: false,\r\n onLeave: function (params) {\r\n progressLine.style.display = \"none\";\r\n progressLineFixed.style.display = 'block';\r\n // console.log('PIN THE LINE');\r\n },\r\n onLeaveBack: function (params) {\r\n progressLine.style.display = \"block\";\r\n progressLineFixed.style.display = 'none';\r\n // console.log('UNPIN THE LINE');\r\n }\r\n });\r\n // let endContent = parentWrapper.querySelector('#section19-content');\r\n let allContent = parentWrapper.querySelectorAll('.section-content');\r\n let endContent = allContent[allContent.length - 1];\r\n // get all the red dots and pull the progress line from the last one\r\n let dots = endContent.querySelectorAll('.red-dot');\r\n let endProgressLine = dots[dots.length -1].querySelector('.progress-line');\r\n // switch the progress line to a new line bottom aligned to the red dot on final content.\r\n let endLineTrigger = new ScrollTrigger({\r\n id: 'end progress line',\r\n trigger: endContent,\r\n start: '0% 100%',\r\n end: '100% 0%',\r\n markers: markers,\r\n onEnter: function () {\r\n // console.log('ENTER ', endProgressLine);\r\n endProgressLine.style.display = 'block';\r\n progressLineFixed.style.display = 'none';\r\n // console.log('hide bgs');\r\n // gsap.killTweensOf('#backgrounds');\r\n // gsap.to('#backgrounds', {opacity: 0, duration: 1});\r\n },\r\n onLeaveBack: function () {\r\n // console.log('LEAVE back ', endProgressLine);\r\n endProgressLine.style.display = 'none';\r\n progressLineFixed.style.display = 'block';\r\n // console.log('show bgs');\r\n // gsap.killTweensOf('#backgrounds');\r\n // gsap.to('#backgrounds', {opacity: 1, duration: 1});\r\n }\r\n });\r\n\r\n // switch the progress line to a new line bottom aligned to the red dot on final content.\r\n let footerTrigger = new ScrollTrigger({\r\n id: 'footer fade',\r\n trigger: endContent,\r\n start: '100% 80%',\r\n end: '100% 0%',\r\n markers: markers,\r\n onEnter: function () {\r\n // console.log('hide bgs');\r\n gsap.killTweensOf('#backgrounds');\r\n gsap.to('#backgrounds', {opacity: 0, duration: 0.5});\r\n },\r\n onLeaveBack: function () {\r\n // console.log('show bgs');\r\n gsap.killTweensOf('#backgrounds');\r\n gsap.to('#backgrounds', {opacity: 1, duration: 0.5});\r\n }\r\n });\r\n\r\n // pin the titles\r\n const titlePin = new ScrollTrigger({\r\n id: 'titles',\r\n trigger: '#logo-black',\r\n endTrigger: '#content',\r\n pin: '#titles',\r\n pinSpacing: false,\r\n start: '0% 2%',\r\n end: '100% 100%',\r\n markers: markers,\r\n scrub: false,\r\n onEnter: function () {\r\n gsap.to('#logo-black', {opacity: 0, duration: 0.25});\r\n },\r\n onLeaveBack: function () {\r\n gsap.to('#logo-black', {opacity: 1, duration: 0.25});\r\n }\r\n });\r\n\r\n // bouncing scroll arrow\r\n let arrowTween = gsap.to('.scroll-arrow', {y: \"+=10\", repeat: -1, yoyo: true, duration: 1});\r\n let scrollArrow = parentWrapper.querySelector('.scroll-arrow');\r\n scrollArrow.addEventListener('click', function () {\r\n console.log('arrow clicked');\r\n // window.scrollTo({top: Math.round(getFullHeight() / 1), behavior: 'smooth'});\r\n gsap.to(window, {duration: 2, scrollTo: Math.round(getFullHeight())});\r\n })\r\n // fade out intro gradient, scroll arrow, and dark logo\r\n gsap.fromTo('#intro-gradient1', {opacity: 1}, {\r\n scrollTrigger: {\r\n id: 'intro-gradient',\r\n trigger: '#intro-content',\r\n start: '5% 5%',\r\n end: '100% 25%',\r\n markers: markers,\r\n scrub: true,\r\n onEnter: function () {\r\n gsap.killTweensOf('#scroll-arrow');\r\n gsap.to('#scroll-arrow', {opacity: 0, duration: 0.5});\r\n // bring our nav in now that the titleist wrapper nav is out\r\n gsap.killTweensOf('#nav-button-wrapper');\r\n gsap.to('#nav-button-wrapper', {x: \"-200\", opacity: 1, duration: 0.5});\r\n },\r\n onLeaveBack: function () {\r\n gsap.killTweensOf('#scroll-arrow');\r\n gsap.to('#scroll-arrow', {opacity: 1, duration: 0.5});\r\n // take our nav away while titleist wrapper nav is in\r\n gsap.killTweensOf('#nav-button-wrapper');\r\n gsap.to('#nav-button-wrapper', {x: \"0\", duration: 0.5});\r\n },\r\n onLeave: function () {\r\n gsap.killTweensOf('#scroll-arrow');\r\n gsap.set('#scroll-arrow', {opacity: 0});\r\n arrowTween.pause();\r\n },\r\n onEnterBack: function () {\r\n arrowTween.play();\r\n }\r\n },\r\n opacity: 0\r\n });\r\n\r\n // fade out intro stuffs\r\n gsap.to('#intro-gradient2, #logo-black', {\r\n scrollTrigger: {\r\n id: 'white gradients',\r\n start: '0% 60%',\r\n end: '0% 40%',\r\n scrub: true,\r\n trigger: '#section1-content',\r\n markers: markers\r\n },\r\n opacity: 0\r\n });\r\n\r\n let introVideoBg = parentWrapper.querySelector('#intro-bg-video');\r\n // fade in section black gradients\r\n // gsap.to('#sections-gradient1, #sections-gradient2, #sections-gradient3', {\r\n gsap.to('#sections-gradient1, #sections-gradient2', {\r\n scrollTrigger: {\r\n id: 'black gradients',\r\n start: '0% 40%',\r\n end: '0% 20%',\r\n scrub: true,\r\n trigger: '#section1-content',\r\n markers: markers,\r\n toggleActions: \"play none none complete\",\r\n // toggleActions: \"play complete reverse reset\",\r\n onLeave: function () {\r\n // console.log('leave intro ' + getScrollTop());\r\n // pause the intro video\r\n if (introVideoBg !== null) {\r\n introVideoBg.pause();\r\n }\r\n gsap.set('#intro-title', {opacity: 0});\r\n window.bp3Application.setCurrentSectionIndex(1);\r\n },\r\n onEnter: function () {\r\n // console.log('enter intro');\r\n },\r\n onLeaveBack: function () {\r\n // console.log('leave back intro');\r\n },\r\n onEnterBack: function () {\r\n // console.log('enter back intro');\r\n // pause the intro video\r\n if (introVideoBg !== null) {\r\n introVideoBg.play();\r\n }\r\n gsap.set('#intro-title', {opacity: 1});\r\n window.bp3Application.setCurrentSectionIndex(0);\r\n },\r\n onRefresh: function (params) {\r\n // console.log('INTRO REFRESH ', params);\r\n window.bp3Application.setSectionMarkers(0, 0, params.end);\r\n window.bp3Application.setSectionMarkers(1, params.end, (params.end + 100));\r\n }\r\n },\r\n opacity: 1\r\n });\r\n\r\n // INTRO ANIMATION\r\n // let introSplitText2 = new SplitText('#intro-title', {type: 'words'});\r\n let introSplitText1 = new SplitText('#intro-words1', {type: 'words'});\r\n let introSplitText2 = new SplitText('#intro-words2', {type: 'words'});\r\n let introTimeline = gsap.timeline({\r\n onComplete: function () {\r\n // console.log('intro complete, unlock the scroll and show nav');\r\n document.body.style.overflowY = \"scroll\";\r\n gsap.set('#nav-button-wrapper', {display: 'block'});\r\n gsap.fromTo('#nav-button-wrapper', {opacity: 0}, {opacity: 1});\r\n }\r\n });\r\n introSplitText1.split({type: 'words'});\r\n introSplitText2.split({type: 'words'});\r\n gsap.set('#intro-title', {opacity: 1});\r\n introTimeline.fromTo('#logo-black', {opacity: 0}, {opacity: 1, duration: 1.5});\r\n // introTimeline.fromTo('#intro-title', {opacity: 0, y: '+=100'}, {opacity: 1, y: 0, duration: 1.5}, \"-=1\");\r\n introTimeline.fromTo(introSplitText1.words, {opacity: 0, y: '+=50'}, {opacity: 1, y: 0, duration: 0.75, stagger: 0.25, delay: 2}, \"-=1\");\r\n introTimeline.fromTo(introSplitText2.words, {opacity: 0, x: '+=400'}, {\r\n duration: 0.3,\r\n opacity: 1,\r\n x: 0,\r\n stagger: 0.4,\r\n // delay: '-0.5',\r\n onComplete: function() {\r\n introSplitText1.revert();\r\n introSplitText2.revert();\r\n // bug with scroll arrow stuck on quick scroll\r\n // document.body.style.overflowY = \"scroll\";\r\n }\r\n }, \"-=0.2\");\r\n introTimeline.fromTo('#scroll-arrow', {opacity: 0}, {opacity: 1, duration: 0.4});\r\n introTimeline.play();\r\n gsap.fromTo('#intro-gradient3', {opacity: 1}, {opacity: 0, duration: 3, delay: 1.5});\r\n window.scrollTo({top: 0});\r\n\r\n\r\n //TODO: try putting this on a refresh on a final empty scrolltrigger to remove the timer?\r\n window.addEventListener(\"orientationchange\", function(event) {\r\n // console.log(\"the orientation changed: scroll at \" + getScrollTop() + ' current section is ' + window.bp3Application.currentSectionIndex);\r\n let oldSectionId = window.bp3Application.currentSectionIndex;\r\n // let contentId = 'section' + window.bp3Application.currentSectionIndex.toString() + '-first-content';\r\n // let contentIndex = window.bp3Application.currentSectionIndex.toString();\r\n let timerId = setTimeout(function () {\r\n // console.log('ROTATION UPDATE current section is ' + window.bp3Application.currentSectionIndex);\r\n // console.log('ROTATION UPDATE old section id is ' + oldSectionId);\r\n window.bp3Application.setCurrentSectionIndex(oldSectionId);\r\n // TODO: scroll to a maintained/refresh reference to first content pin scroll position?\r\n // parentWrapper.getElementById(contentId).scrollIntoView();\r\n let position = window.bp3Application.firstContentPositions[oldSectionId];\r\n window.scrollTo({top: position});\r\n }, 1000);\r\n });\r\n\r\n let resizeTimerId;\r\n function resizeContent(){\r\n let position = window.bp3Application.firstContentPositions[ window.bp3Application.currentSectionIndex ];\r\n // make sure it updates?\r\n position = Math.round( position + (Math.random() * 13));\r\n window.scrollTo({top: position});\r\n // console.log('resize content ' + position);\r\n }\r\n window.addEventListener('resize', function () {\r\n clearTimeout(resizeTimerId);\r\n resizeTimerId = setTimeout(resizeContent, 300);\r\n });\r\n\r\n\r\n // after everything loads do video checks\r\n window.addEventListener('load', function () {\r\n console.log('LOADED CHECKING VIDEOS ' + getFullWidth());\r\n if (getFullWidth() > 768) {\r\n console.log('adding in background videos');\r\n let videoElement = parentWrapper.querySelector('#intro-bg-video');\r\n let backgroundList = parentWrapper.querySelectorAll('.background');\r\n let videoClone;\r\n backgroundList.forEach(function(backgroundElement) {\r\n if (backgroundElement.getAttribute('data-src') !== null && backgroundElement.getAttribute('data-src') !== '' && videoElement !== null) {\r\n // get a new clone and set attributes\r\n videoClone = videoElement.cloneNode(true);\r\n videoClone.autoplay = false;\r\n videoClone.removeAttribute('autoplay');\r\n videoClone.pause();\r\n videoClone.id = backgroundElement.id.toString() + '-video';\r\n videoClone.querySelector('source').src = backgroundElement.getAttribute('data-src')\r\n videoClone.poster = backgroundElement.getAttribute('data-poster')\r\n // console.log('video clone is ', videoClone);\r\n let motionContainer = backgroundElement.querySelector('.motion-container');\r\n if (motionContainer !== null) {\r\n motionContainer.appendChild(videoClone);\r\n }\r\n }\r\n });\r\n }\r\n });\r\n};\r\n\r\nexport default SectionManager;\r\n","/**\r\n * Returns a function, that, as long as it continues to be invoked, will not\r\n * be triggered. The function will be called after it stops being called for\r\n * N milliseconds. If `immediate` is passed, trigger the function on the\r\n * leading edge, instead of the trailing.\r\n *\r\n * @param {Function} func to be executed on debounce\r\n * @param {number} wait time in milliseconds\r\n * @param {boolean} immediate boolean\r\n *\r\n * */\r\nexport function debounce(func, wait, immediate) {\r\n let timeout;\r\n return function() {\r\n let context = this, args = arguments;\r\n let later = function() {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n let callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n}\r\n\r\n/**\r\n * Shuffles array in place. ES6 version\r\n * @param {Array} a items An array containing the items.\r\n */\r\nexport function shuffle(a) {\r\n for (let i = a.length - 1; i > 0; i--) {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [a[i], a[j]] = [a[j], a[i]];\r\n }\r\n return a;\r\n}\r\n\r\n/**\r\n * Returns a random integer between min (inclusive) and max (inclusive).\r\n * The value is no lower than min (or the next integer greater than min\r\n * if min isn't an integer) and no greater than max (or the next integer\r\n * lower than max if max isn't an integer).\r\n * Using Math.round() will give you a non-uniform distribution!\r\n */\r\nexport function getRandomInt(min, max) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n}\r\n\r\nexport function qsArray ( selector, node ) {\r\n node = node || document;\r\n let nodeList = node.querySelectorAll(selector);\r\n let array = [];\r\n for(let i = 0; i < nodeList.length; i++) {\r\n array.push(nodeList[i]);\r\n }\r\n return array;\r\n}\r\n\r\nexport function numberMap (input, inputStart, inputStop, outputStart, outputStop) {\r\n return outputStart + (outputStop - outputStart) * ((input - inputStart) / (inputStop - inputStart))\r\n}\r\n\r\n\r\nexport function getQueryStringVariable(variable)\r\n{\r\n var query = window.location.search.substring(1);\r\n var vars = query.split(\"&\");\r\n for (var i=0;i