{"version":3,"sources":["webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/now.js","webpack:///./src/components/TextSlider.js","webpack:///./src/components/WithScrollAnimation.js","webpack:///./node_modules/lodash/debounce.js"],"names":["debounce","isObject","module","exports","func","wait","options","leading","trailing","TypeError","root","Date","now","Container","WithScrollAnimation","styled","div","screenSizes","desktop","props","entered","css","SlideNumberContainer","SectionIndicatorContainer","SliderContainer","SlideNumber","enteredOffset","p","tablet","desktopLarge","colors","primaryText","SlideTitle","h2","SlideDescription","SectionIndicator","SectionIndicatorBase","TextSlider","state","activeSlide","animate","swiperParams","timeout","swiper","container","onArrowClick","bind","setSlideTranslate","resetAnimation","setTranslate","window","scrollTo","top","pageYOffset","this","comp","getBoundingClientRect","y","clientHeight","behavior","componentWillUnmount","clearTimeout","destroy","componentDidMount","isSafari","test","navigator","userAgent","devicePixelRatio","useWaveEffect","innerWidth","containerClass","touchStartPreventDefault","slidesPerView","watchSlidesProgress","watchSlidesVisibility","virtualTranslate","effect","fadeEffect","crossFade","touchEventsTarget","pagination","el","clickable","renderBullet","index","className","on","slideChange","activeIndex","setState","slides","each","slideKey","slide","x","swiperSlideOffset","TweenLite","set","setTimeout","to","filter","attr","baseFrequency","opacity","Math","max","abs","progress","frequency","render","sectionTitle","height","id","width","filterUnits","primitiveUnits","colorInterpolationFilters","ref","type","numOctaves","seed","stitchTiles","result","in","in2","scale","xChannelSelector","yChannelSelector","onClick","node","map","key","title","body","description","length","Component","withScroll","ComposedComponent","useTop","animationProgress","animationFrameId","initState","onScroll","onResize","setAnimationPercentage","originalYOffset","undefined","startAnimation","addEventListener","requestAnimationFrame","cancelAnimationFrame","removeEventListener","windowTop","innerHeight","React","PureComponent","toNumber","nativeMax","nativeMin","min","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","apply","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","arguments","cancel","flush"],"mappings":"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","file":"d4ad233efeb1d959420253442063e6db7488fdeb-0d93997b7e069589f4a7.js","sourcesContent":["var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","import React, { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport styled, { css } from 'styled-components'\nimport SectionIndicatorBase from './SectionIndicator'\nimport Arrow from './Arrow'\n\nimport { screenSizes, colors } from '../theme'\nimport Swiper from 'react-id-swiper'\nimport { TweenLite } from 'gsap'\nimport WithScrollAnimation from './WithScrollAnimation'\n\nconst Container = WithScrollAnimation(\n styled.div`\n display: grid;\n margin: 50px 0;\n max-width: 100%;\n grid-template-columns: 100%;\n @media (min-width: ${screenSizes.desktop}px) {\n margin: 100px 0;\n grid-template-columns: minmax(1%, 20%) 30px 1fr 30px auto auto;\n }\n ul {\n margin-top: 15px;\n }\n\n li {\n text-transform: uppercase;\n margin-bottom: 0;\n list-style-type: none;\n }\n\n ${props =>\n props.entered &&\n css`\n ${SlideNumberContainer}, ${SectionIndicatorContainer} {\n transition-delay: 500ms;\n }\n\n ${SliderContainer} {\n transition-delay: 250ms;\n }\n\n ${SlideNumber} {\n transition-delay: 0ms;\n }\n\n ${SlideNumber}, ${SliderContainer}, ${SlideNumberContainer}, ${SectionIndicatorContainer} {\n opacity: 1;\n transform: translate(0, 0);\n }\n `}\n `,\n { enteredOffset: 0.1 }\n)\n\nconst SlideNumber = styled.p`\n span {\n font-family: 'TanMemories';\n }\n opacity: 0;\n transform: translate(100px, 0px);\n transition: all ease 500ms;\n transition-delay: 500ms;\n font-size: 16pt;\n display: none;\n line-height: 44px;\n @media (min-width: ${screenSizes.tablet}px) {\n font-size: 20pt;\n line-height: 15pt;\n }\n @media (min-width: ${screenSizes.desktop}px) {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n }\n @media (min-width: ${screenSizes.desktopLarge}px) {\n font-size: 22pt;\n line-height: 17pt;\n }\n`\n\nconst SliderContainer = styled.div`\n opacity: 0;\n transform: translate(100px, 0px);\n transition: all ease 500ms;\n transition-delay: 250ms;\n\n .swiper-wrapper,\n .swiper-container {\n overflow: visible;\n }\n\n .swiper-pagination {\n position: relative;\n text-align: left;\n margin-top: 10px;\n padding-left: 35px;\n\n &:before {\n position: absolute;\n left: 0;\n top: 0;\n font-size: 10pt;\n display: inline-block;\n content: '/';\n color: ${colors.primaryText};\n }\n\n span {\n margin-right: 25px !important;\n width: auto;\n height: auto;\n background-color: transparent;\n color: ${colors.primaryText};\n font-size: 10pt;\n\n &:last-child {\n margin-right: 0 !important;\n }\n }\n }\n\n .swiper-slide {\n filter: url(#filter);\n width: 100%;\n opacity: 0;\n }\n\n .swiper-slide-active {\n opacity: 1;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n grid-column: 2 / 4;\n\n .swiper-pagination {\n margin-top: 30px;\n padding-left: 50px;\n\n span {\n margin-right: 40px !important;\n }\n }\n }\n`\n\nconst SlideTitle = styled.h2`\n /* text-transform: uppercase; */\n font-family: 'TanMemories';\n font-size: 16pt;\n\n @media (min-width: ${screenSizes.tablet}px) {\n font-size: 20pt;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n font-size: 20pt;\n margin-bottom: calc(1.45rem + 8px + 5pt);\n line-height: 15pt;\n }\n\n @media (min-width: ${screenSizes.desktopLarge}px) {\n font-size: 24pt;\n line-height: 17pt;\n }\n`\n\nconst SlideDescription = styled.p`\n width: 100%;\n font-size: 11pt;\n @media (min-width: ${screenSizes.desktop}px) {\n margin-top: -8px;\n max-width: 600px;\n }\n`\n\nconst SlideNumberContainer = styled.div`\n opacity: 0;\n transform: translate(100px, 0px);\n transition: all ease 500ms;\n transition-delay: 0ms;\n display: none;\n @media (min-width: ${screenSizes.desktop}px) {\n grid-column: 5 / 6;\n display: block;\n text-align: right;\n\n p {\n line-height: 7pt;\n }\n }\n`\n\nconst SectionIndicatorContainer = styled.div`\n display: flex;\n justify-content: space-between;\n opacity: 0;\n transform: translate(100px, 0px);\n transition: all ease 500ms;\n transition-delay: 0ms;\n\n grid-row-start: 1;\n\n svg {\n display: none;\n }\n\n @media (min-width: ${screenSizes.desktop}px) {\n grid-row-start: auto;\n flex-direction: column;\n align-items: flex-end;\n\n svg {\n display: block;\n }\n }\n`\n\nconst SectionIndicator = styled(SectionIndicatorBase)`\n margin-bottom: 20px;\n @media (min-width: ${screenSizes.desktop}px) {\n margin-left: 40px;\n margin-bottom: 0;\n line-height: 7pt;\n }\n`\n\nclass TextSlider extends Component {\n constructor(props) {\n super(props)\n\n this.state = {\n activeSlide: 0,\n animate: false,\n swiperParams: null,\n }\n\n this.timeout = null\n this.swiper = null\n this.container = null\n this.onArrowClick = this.onArrowClick.bind(this)\n this.setSlideTranslate = this.setSlideTranslate.bind(this)\n this.resetAnimation = this.resetAnimation.bind(this)\n this.setTranslate = this.setTranslate.bind(this)\n }\n\n static propTypes = {\n sectionTitle: PropTypes.string,\n slides: PropTypes.array,\n className: PropTypes.string,\n }\n\n onArrowClick() {\n window.scrollTo({\n top:\n window.pageYOffset +\n this.container.comp.getBoundingClientRect().y +\n this.container.comp.clientHeight,\n behavior: 'smooth',\n })\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.timeout)\n if (this.swiper) {\n this.swiper.destroy()\n }\n }\n\n componentDidMount() {\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n const devicePixelRatio = window.devicePixelRatio\n const useWaveEffect =\n (isSafari == false || devicePixelRatio < 2) &&\n window.innerWidth > screenSizes.tablet\n\n const swiperParams = {\n containerClass: 'swiper-container swiper-container-text',\n touchStartPreventDefault: false,\n slidesPerView: 1,\n watchSlidesProgress: useWaveEffect ? true : false,\n watchSlidesVisibility: true,\n virtualTranslate: useWaveEffect ? true : false,\n effect: useWaveEffect ? 'wave' : 'fade',\n fadeEffect: {\n crossFade: useWaveEffect ? false : true,\n },\n touchEventsTarget: 'wrapper',\n pagination: {\n el: '.swiper-pagination',\n clickable: true,\n renderBullet: (index, className) => {\n return `${index + 1}`\n },\n },\n on: {\n slideChange: () => {\n let activeSlide = this.swiper.activeIndex\n this.setState({ activeSlide })\n if (useWaveEffect) {\n this.resetAnimation()\n }\n },\n setTranslate: useWaveEffect ? this.setTranslate : () => {},\n },\n }\n\n this.setState({ swiperParams }, () => {\n if (useWaveEffect) {\n this.setSlideTranslate()\n }\n })\n }\n\n setSlideTranslate() {\n if (this.swiper && this.swiper.slides) {\n this.swiper.slides.each(slideKey => {\n const slide = this.swiper.slides[slideKey]\n const offset = slide.swiperSlideOffset\n let x = -offset - 10\n let y = -10\n TweenLite.set(slide, {\n x,\n y,\n })\n })\n }\n }\n\n resetAnimation() {\n window.clearTimeout(this.timeout)\n this.timeout = window.setTimeout(() => {\n TweenLite.to(this.filter, 0.5, {\n attr: {\n baseFrequency: `0 0`,\n },\n })\n }, 250)\n }\n\n setTranslate() {\n if (this.swiper && this.swiper.slides) {\n this.setSlideTranslate()\n this.swiper.slides.each(slideKey => {\n const slide = this.swiper.slides[slideKey]\n\n const opacity = Math.max(1 - Math.abs(slide.progress), 0)\n\n TweenLite.to(slide, 0.5, {\n opacity,\n })\n })\n const frequency =\n 0.1 * Math.abs(this.swiper.slides[this.swiper.activeIndex].progress)\n TweenLite.to(this.filter, 0.5, {\n attr: {\n baseFrequency: `${frequency} ${frequency}`,\n },\n })\n }\n }\n\n render() {\n const { activeSlide, swiperParams } = this.state\n const { sectionTitle, slides, className } = this.props\n\n return (\n <>\n {swiperParams && swiperParams.effect === 'wave' && (\n \n \n (this.filter = ref)}\n type=\"turbulence\"\n baseFrequency=\"0 0\"\n numOctaves=\"1\"\n seed=\"2\"\n stitchTiles=\"noStitch\"\n x=\"0%\"\n y=\"0%\"\n width=\"100%\"\n height=\"100%\"\n result=\"turbulence\"\n />\n \n \n \n )}\n (this.container = container)}\n >\n \n \n {activeSlide >= 10 ? activeSlide + 1 : `0${activeSlide + 1}`}\n \n \n \n \n {swiperParams && (\n {\n if (node) this.swiper = node.swiper\n }}\n >\n {slides.map((slide, index) => {\n return (\n
\n {slide.title && {slide.title}}\n {slide.body}\n
\n )\n })}\n \n )}\n
\n \n

\n {slides[activeSlide].description ? (\n slides[activeSlide].description\n ) : (\n \n {activeSlide + 1} — {slides.length}\n \n )}\n

\n
\n \n {sectionTitle}\n \n \n \n )\n }\n}\n\nexport default TextSlider\n","import React from 'react'\nimport { screenSizes } from '../theme'\nimport _ from 'lodash'\n\nconst withScroll = (ComposedComponent, options = { useTop: false }) =>\n class ScrollDecorator extends React.PureComponent {\n constructor(props) {\n super(props)\n\n this.state = {\n animationProgress: 0,\n entered: false,\n }\n\n this.animationFrameId = null\n this.initState = this.initState.bind(this)\n this.onScroll = _.throttle(this.onScroll.bind(this), 50)\n this.onResize = _.throttle(this.onResize.bind(this), 50)\n this.setAnimationPercentage = this.setAnimationPercentage.bind(this)\n }\n\n initState() {\n const originalYOffset =\n this.comp.getBoundingClientRect().y + window.pageYOffset\n\n this.setState({\n enteredOffset:\n options.enteredOffset != undefined\n ? this.comp.clientHeight * options.enteredOffset\n : this.comp.clientHeight * 0.1,\n startAnimation: originalYOffset,\n })\n }\n\n componentDidMount() {\n if (window.innerWidth < screenSizes.tablet) {\n this.setState({\n animationProgress: 1,\n entered: true,\n })\n } else {\n this.initState()\n\n window.addEventListener('scroll', this.onScroll)\n window.addEventListener('resize', this.onResize)\n }\n }\n\n onScroll() {\n this.animationFrameId = window.requestAnimationFrame(\n this.setAnimationPercentage\n )\n }\n\n onResize() {\n this.initState()\n }\n\n componentWillUnmount() {\n window.cancelAnimationFrame(this.animationFrameId)\n window.removeEventListener('scroll', this.onScroll)\n window.removeEventListener('resize', this.onResize)\n }\n\n setAnimationPercentage() {\n this.windowTop = window.pageYOffset\n const { startAnimation, enteredOffset } = this.state\n const animationPoint = options.useTop\n ? window.pageYOffset\n : window.pageYOffset + window.innerHeight\n const entered = animationPoint >= startAnimation + enteredOffset\n\n this.setState({\n entered,\n })\n }\n\n render() {\n const { animationProgress, entered } = this.state\n\n return (\n \n (this.comp = comp && comp.container ? comp.container : comp)\n }\n {...this.props}\n animationProgress={animationProgress}\n entered={entered}\n />\n )\n }\n }\n\nexport default withScroll\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n"],"sourceRoot":""}