{"version":3,"file":"ScrollAnimation.js","names":["define","$","gsap","ScrollTrigger","lottie1","morphSvg","ScrollTo","screenSizes","initialWidth","finalWidth","startTopPosition","finalBottomPosition","Number","MAX_SAFE_INTEGER","animation","allSteps","playhead","frame","ScrollAnimation","args","steps","registerPlugin","ScrollToPlugin","config","nullTargetWarn","scope","is","pinnedTL","lottiePos","i","length","Animation","getLottieIndex","shouldPin","hasClass","getTimeline","setupTimeline","loadAnimation","container","getSelector","renderer","loop","autoplay","path","LottieUrl","addEventListener","createTimeline","removeClass","timeline","scrollTrigger","trigger","pin","scrub","markers","start","end","Combined","setupCombinedStep","CombinedSteps","GroupedSteps","setupGroupedStep","setupAnimation","parentStep","duration","To","step","customDuration","JSON","parse","combinedSteps","pausePlayVideo","el","direction","videoElement","get","isPlaying","currentTime","paused","ended","readyState","HAVE_CURRENT_DATA","pause","play","selector","PanelName","Element","position","to","add","StepName","toField","totalFrames","ease","onUpdate","goToAndStop","fromTo","scale","opacity","y","x","color","From","stackedContainer","panels","values","startPositions","split","includes","startAndFinalPos","parseInt","isNaN","startPosition","updateScreenSizes","panelPositions","screenSize","screen","width","getPositions","startPositionTopOffset","window","innerHeight","availableSpaceForPanels","panel","create","id","endTrigger","pinSpacing","onStart","onStartParams","onReverseComplete","onReverseCompleteParams","morphSVG","click","e","preventDefault","jumpTo","st","getById","scrollTo","labelToScroll","isExperienceEditor","counter","scrollTriggerRefreshFunction","refresh","removeEventListener"],"sources":["site/Components/ScrollAnimation.js"],"mappings":"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","sourcesContent":["define([\"jquery\", \"gsap\", \"gsapScrollTrigger\", \"lottieReference\", \"morphSvg\", \"gsapScrollTo\"], function ($, { gsap }, { ScrollTrigger }, lottie1, { morphSvg }, { ScrollTo }) {\r\n const screenSizes = [\r\n {\r\n initialWidth: 0,\r\n finalWidth: 639,\r\n startTopPosition: 56,\r\n finalBottomPosition: 49,\r\n },\r\n {\r\n initialWidth: 640,\r\n finalWidth: 767,\r\n startTopPosition: 105,\r\n finalBottomPosition: 0\r\n },\r\n {\r\n initialWidth: 768,\r\n finalWidth: Number.MAX_SAFE_INTEGER,\r\n startTopPosition: 120,\r\n finalBottomPosition: 0\r\n }\r\n ];\r\n let playhead = { frame: 0 };\r\n let animation;\r\n let allSteps;\r\n function ScrollAnimation(args) {\r\n allSteps = args.steps;\r\n gsap.registerPlugin(ScrollTrigger, ScrollToPlugin);\r\n gsap.config({\r\n nullTargetWarn: false // Avoids warnings if the selector is null or empty (Pause and Half-Pause animations)\r\n });\r\n if (!$('.tek-scroll-animation', args.scope).is(\":hidden\")) {\r\n createTimeline(args.scope, args.steps);\r\n };\r\n $('.tek-scroll-animation', args.scope).removeClass(\"loading\");\r\n }\r\n\r\n function createTimeline(scope, steps) {\r\n let lottiePos = getLottieIndex(steps);\r\n let shouldPin = !$('.tek-scroll-animation', scope).hasClass(\"tek-scroll-animation--no-pin\");\r\n let pinnedTL;\r\n if (lottiePos == -1) {\r\n pinnedTL = getTimeline(scope, steps, shouldPin);\r\n setupTimeline(scope, steps, pinnedTL);\r\n }\r\n else {\r\n animation = lottie1.loadAnimation({\r\n container: getSelector(scope, steps[lottiePos])[0],\r\n renderer: \"svg\",\r\n loop: false,\r\n autoplay: false,\r\n path: steps[lottiePos].LottieUrl\r\n });\r\n animation.addEventListener(\"DOMLoaded\", function () {\r\n pinnedTL = getTimeline(scope, steps, shouldPin);\r\n setupTimeline(scope, steps, pinnedTL);\r\n });\r\n }\r\n }\r\n function getTimeline(scope, steps, shouldPin) {\r\n return gsap.timeline({\r\n scrollTrigger: {\r\n trigger: $('.tek-scroll-animation', scope),\r\n pin: shouldPin ? $('.tek-scroll-animation', scope) : false,\r\n scrub: 1,\r\n markers: false,\r\n start: \"center center\",\r\n end: '+=' + (steps.length * 100) + '%'\r\n }\r\n });\r\n }\r\n function setupTimeline(scope, steps, timeline) {\r\n for (var i = 0; i < steps.length; i++) {\r\n if (steps[i].Combined) {\r\n setupCombinedStep(scope, steps[i].CombinedSteps, timeline, null);\r\n } else if (steps[i].GroupedSteps) {\r\n setupGroupedStep(scope, steps[i], timeline, null);\r\n }\r\n else {\r\n setupAnimation(steps[i], timeline, scope, null, null);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n function setupGroupedStep(scope, parentStep, timeline) {\r\n if (parentStep.GroupedSteps != null && parentStep.GroupedSteps.length > 0) {\r\n let duration = 0;\r\n for (var i = 0; i < parentStep.GroupedSteps.length; i++) {\r\n if (!parentStep.GroupedSteps[i].To) {\r\n duration += 1;\r\n } else {\r\n let step = parentStep.GroupedSteps[i];\r\n let customDuration = JSON.parse(step.To);\r\n if (!customDuration.duration) {\r\n duration += 1;\r\n } else {\r\n duration += customDuration.duration;\r\n }\r\n }\r\n }\r\n setupAnimation(parentStep, timeline, scope, null, duration);\r\n setupAnimation(parentStep.GroupedSteps[0], timeline, scope, \"<\", null);\r\n for (var i = 1; i < parentStep.GroupedSteps.length; i++) {\r\n setupAnimation(parentStep.GroupedSteps[i], timeline, scope, \">\", null);\r\n }\r\n }\r\n }\r\n\r\n function setupCombinedStep(scope, combinedSteps, timeline) {\r\n // First step doesn't go at same time because \r\n // It could conflict with previous step NOT COMBINED\r\n // So that the last parameter (position) is null. It means sequential step\r\n if (combinedSteps.length > 0) {\r\n setupAnimation(combinedSteps[0], timeline, scope, null, null);\r\n }\r\n // It starts from 1 becuase the first step was setup before\r\n for (var i = 1; i < combinedSteps.length; i++) {\r\n // Position = \"<\" means the animation will be executed at same time than previous\r\n setupAnimation(combinedSteps[i], timeline, scope, \"<\", null);\r\n }\r\n }\r\n\r\n function pausePlayVideo(el, direction) {\r\n let videoElement = el.get(0);\r\n\r\n if (videoElement) {\r\n let isPlaying = videoElement.currentTime > 0 && !videoElement.paused && !videoElement.ended &&\r\n videoElement.readyState > videoElement.HAVE_CURRENT_DATA;\r\n\r\n if (direction === \"start\" && !isPlaying) {\r\n videoElement.play();\r\n }\r\n else if (direction === \"pause\" && isPlaying) {\r\n videoElement.pause();\r\n }\r\n }\r\n }\r\n\r\n function getSelector(scope, step) {\r\n var selector = \".tek-scroll-animation-panel[data-name='\" + step.PanelName + \"']\";\r\n if (step.Element) {\r\n selector = selector + \" \" + step.Element;\r\n }\r\n return $(selector, scope);\r\n }\r\n\r\n function setupAnimation(step, timeline, scope, position, customDuration) {\r\n if (step.Animation == \"pause\") {\r\n timeline.to({}, { duration: 1 }).add(step.StepName);\r\n return;\r\n }\r\n if (step.Animation == \"half-pause\") {\r\n timeline.to({}, { duration: 0.5 }).add(step.StepName);\r\n return;\r\n }\r\n let selector = getSelector(scope, step);\r\n if (selector.is(\":hidden\")) {\r\n return;\r\n }\r\n let duration = customDuration ? customDuration : 1;\r\n switch (step.Animation) {\r\n case 'lottie':\r\n if (step.To) {\r\n let toField = JSON.parse(step.To);\r\n duration = toField[\"duration\"] ? toField[\"duration\"] : 1;\r\n }\r\n timeline.to(playhead, {\r\n frame: animation.totalFrames - 1,\r\n duration: duration,\r\n ease: \"none\",\r\n onUpdate: () => animation.goToAndStop(playhead.frame, true),\r\n }).add(step.StepName);\r\n break;\r\n case 'expand': timeline.fromTo(selector, { scale: 1.5 }, { scale: 10, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-in': timeline.fromTo(selector, { opacity: 0 }, { opacity: 1, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-in-down': timeline.fromTo(selector, { opacity: 0, y: -100 }, { opacity: 1, y: 0, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-in-left': timeline.fromTo(selector, { opacity: 0, x: 100 }, { opacity: 1, x: 0, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-in-right': timeline.fromTo(selector, { opacity: 0, x: -100 }, { opacity: 1, x: 0, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-in-up': timeline.fromTo(selector, { opacity: 0, y: 100 }, { opacity: 1, y: 0, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-out': timeline.fromTo(selector, { opacity: 1 }, { opacity: 0, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-out-down': timeline.fromTo(selector, { opacity: 1, y: 0 }, { opacity: 0, y: 100, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-out-left': timeline.fromTo(selector, { opacity: 1, x: 0 }, { opacity: 0, x: -100, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-out-right': timeline.fromTo(selector, { opacity: 1, x: 0 }, { opacity: 0, x: 100, duration: duration }, position).add(step.StepName); break;\r\n case 'fade-out-up': timeline.fromTo(selector, { opacity: 1, y: 0 }, { opacity: 0, y: -100, duration: duration }, position).add(step.StepName); break;\r\n case 'move-down': timeline.fromTo(selector, { y: 0 }, { y: 100, duration: duration }, position).add(step.StepName); break;\r\n case 'move-left': timeline.fromTo(selector, { x: 0 }, { x: -100, duration: duration }, position).add(step.StepName); break;\r\n case 'move-right': timeline.fromTo(selector, { x: 0 }, { x: 100, duration: duration }, position).add(step.StepName); break;\r\n case 'move-up': timeline.fromTo(selector, { y: 0 }, { y: -100, duration: duration }, position).add(step.StepName); break;\r\n case 'text-color-change': timeline.fromTo(selector, { color: JSON.parse(step.From) }, { color: JSON.parse(step.To), duration: duration }, position).add(step.StepName); break;\r\n case 'shrink': timeline.fromTo(selector, { scale: 100 }, { scale: 1.5, duration: duration }, position).add(step.StepName); break;\r\n case 'stacked-panels':\r\n let stackedContainer = $(\".tek-scroll-animation-panel[data-name='\" + step.PanelName + \"']\");\r\n let panels = $(\".stacked-panel\", stackedContainer);\r\n if (panels.length >= 1) {\r\n updateScreenSizes(step.From);\r\n let panelPositions = getPositions();\r\n // Get percentage occupied by the header\r\n let startPositionTopOffset = ((panelPositions.startTopPosition + panelPositions.finalBottomPosition) / window.innerHeight) * 100;\r\n let availableViewPort = 100 - startPositionTopOffset;\r\n let availableSpaceForPanels = availableViewPort / panels.length;\r\n for (var i = 0; i < panels.length; i++) {\r\n let panel = panels[i];\r\n let startPosition = \"top \" + ((availableSpaceForPanels * i) + startPositionTopOffset) + \"%-=\" + panelPositions.finalBottomPosition + \"px\";\r\n if (i == 0) { // First panel \r\n startPosition = panelPositions.startTopPosition > 0 ? \"top top+=\" + panelPositions.startTopPosition : \"top top\";\r\n }\r\n ScrollTrigger.create({\r\n id: step.StepName,\r\n trigger: panel,\r\n start: startPosition,\r\n endTrigger: stackedContainer,\r\n end: \"bottom bottom-=\" + panelPositions.finalBottomPosition + \"px\",\r\n pin: true,\r\n pinSpacing: false,\r\n markers: false,\r\n scrub: 1\r\n });\r\n }\r\n }\r\n break;\r\n case 'custom':\r\n let toField = JSON.parse(step.To);\r\n if (customDuration) {\r\n toField[\"duration\"] = customDuration;\r\n }\r\n if (step.From === '') {\r\n timeline.to(selector, toField, position).add(step.StepName);\r\n }\r\n else {\r\n timeline.fromTo(selector, JSON.parse(step.From), toField, position).add(step.StepName);\r\n }\r\n break;\r\n case 'play-video': timeline.fromTo(\r\n selector, {\r\n opacity: 1\r\n }, {\r\n opacity: 1,\r\n duration: duration,\r\n onStart: pausePlayVideo,\r\n onStartParams: [$(\"video\", selector), \"start\"],\r\n onReverseComplete: pausePlayVideo,\r\n onReverseCompleteParams: [$(\"video\", selector), \"pause\"]\r\n },\r\n position\r\n ).add(step.StepName);\r\n break;\r\n case 'pause-video': timeline.fromTo(\r\n selector, {\r\n opacity: 1\r\n }, {\r\n opacity: 1,\r\n duration: duration,\r\n onStart: pausePlayVideo,\r\n onStartParams: [$(\"video\", selector), \"pause\"],\r\n onReverseComplete: pausePlayVideo,\r\n onReverseCompleteParams: [$(\"video\", selector), \"start\"]\r\n },\r\n position\r\n ).add(step.StepName);\r\n case 'morph-svg':\r\n timeline.to(\r\n $(step.From),\r\n {\r\n morphSVG: step.To,\r\n duration: duration\r\n },\r\n \"+=3\"\r\n ).add(step.StepName);\r\n break;\r\n case 'jump-to':\r\n if (!step.Element || !step.To) {\r\n break;\r\n }\r\n $(step.Element).click(function (e) {\r\n e.preventDefault();\r\n let jumpTo = JSON.parse(step.To);\r\n // Look for stacked panels\r\n let st = ScrollTrigger.getById(jumpTo.animation);\r\n if (st) {\r\n gsap.to(window, {\r\n duration: 1, scrollTo: st.end\r\n });\r\n }\r\n else {\r\n gsap.to(window, {\r\n duration: 1, scrollTo: timeline.scrollTrigger.labelToScroll(jumpTo.animation)\r\n });\r\n }\r\n });\r\n break;\r\n default: timeline.fromTo(selector, { opacity: 0 }, { opacity: 1 }, position).add(step.StepName); return;\r\n }\r\n }\r\n function getPositions() {\r\n for (const screenSize of screenSizes) {\r\n if (screen.width >= screenSize.initialWidth && screen.width <= screenSize.finalWidth) {\r\n return {\r\n startTopPosition: screenSize.startTopPosition,\r\n finalBottomPosition: screenSize.finalBottomPosition\r\n }\r\n }\r\n }\r\n return {\r\n startTopPosition: 0,\r\n finalBottomPosition: 0\r\n }\r\n }\r\n function updateScreenSizes(values) {\r\n if (values) {\r\n let startPositions = values.split(',');\r\n for (var i = 0; i < startPositions.length; i++) {\r\n if (startPositions[i].includes('-')) {\r\n let startAndFinalPos = startPositions[i].split('-');\r\n let startTopPosition = startAndFinalPos.length >= 1 ? parseInt(startAndFinalPos[0]) : 0;\r\n let finalBottomPosition = startAndFinalPos.length >= 2 ? parseInt(startAndFinalPos[1]) : 0;\r\n if (!isNaN(startTopPosition)) {\r\n screenSizes[i].startTopPosition = startTopPosition;\r\n }\r\n if (!isNaN(finalBottomPosition)) {\r\n screenSizes[i].finalBottomPosition = finalBottomPosition;\r\n }\r\n }\r\n else {\r\n let startPosition = parseInt(startPositions[i]);\r\n if (!isNaN(startPosition)) {\r\n screenSizes[i].startTopPosition = startPosition;\r\n }\r\n }\r\n if (i == 2) { // It should not have more than 3 items\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n function getLottieIndex(steps) {\r\n for (let i = 0; i < steps.length; i++) {\r\n if (steps[i].Animation == 'lottie') {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n return function init(args) {\r\n if (!args.isExperienceEditor) {\r\n ScrollAnimation(args);\r\n let counter = 0;\r\n const scrollTriggerRefreshFunction = function () {\r\n ScrollTrigger.refresh();\r\n counter++;\r\n //make sure it executes twice tops (once is not enough because sometimes\r\n //scrollTrigger refreshs before the page is fully loaded)\r\n if (counter >= 2) {\r\n ScrollTrigger.removeEventListener(\"scrollStart\", scrollTriggerRefreshFunction);\r\n }\r\n };\r\n ScrollTrigger.addEventListener(\"scrollStart\", scrollTriggerRefreshFunction);\r\n }\r\n };\r\n});"]}