{"version":3,"file":"index.es.js","sources":["../compiled/hooks/useLottie.js","../compiled/hooks/useLottieInteractivity.js","../compiled/components/Lottie.js"],"sourcesContent":["import lottie from \"lottie-web\";\nimport React, { useEffect, useRef, useState, } from \"react\";\nconst useLottie = (props, style) => {\n const { animationData, loop, autoplay, initialSegment, onComplete, onLoopComplete, onEnterFrame, onSegmentStart, onConfigReady, onDataReady, onDataFailed, onLoadedImages, onDOMLoaded, onDestroy, \n // Specified here to take them out from the 'rest'\n lottieRef, renderer, name, assetsPath, rendererSettings, \n // TODO: find a better way to extract the html props to avoid specifying\n // all the props that we want to exclude (as you can see above)\n ...rest } = props;\n const [animationLoaded, setAnimationLoaded] = useState(false);\n const animationInstanceRef = useRef();\n const animationContainer = useRef(null);\n /*\n ======================================\n INTERACTION METHODS\n ======================================\n */\n /**\n * Play\n */\n const play = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.play();\n };\n /**\n * Stop\n */\n const stop = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.stop();\n };\n /**\n * Pause\n */\n const pause = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.pause();\n };\n /**\n * Set animation speed\n * @param speed\n */\n const setSpeed = (speed) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSpeed(speed);\n };\n /**\n * Got to frame and play\n * @param value\n * @param isFrame\n */\n const goToAndPlay = (value, isFrame) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndPlay(value, isFrame);\n };\n /**\n * Got to frame and stop\n * @param value\n * @param isFrame\n */\n const goToAndStop = (value, isFrame) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.goToAndStop(value, isFrame);\n };\n /**\n * Set animation direction\n * @param direction\n */\n const setDirection = (direction) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setDirection(direction);\n };\n /**\n * Play animation segments\n * @param segments\n * @param forceFlag\n */\n const playSegments = (segments, forceFlag) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.playSegments(segments, forceFlag);\n };\n /**\n * Set sub frames\n * @param useSubFrames\n */\n const setSubframe = (useSubFrames) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setSubframe(useSubFrames);\n };\n /**\n * Get animation duration\n * @param inFrames\n */\n const getDuration = (inFrames) => { var _a; return (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.getDuration(inFrames); };\n /**\n * Destroy animation\n */\n const destroy = () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Removing the reference to the animation so separate cleanups are skipped.\n // Without it the internal `lottie-react` instance throws exceptions as it already cleared itself on destroy.\n animationInstanceRef.current = undefined;\n };\n /*\n ======================================\n LOTTIE\n ======================================\n */\n /**\n * Load a new animation, and if it's the case, destroy the previous one\n * @param {Object} forcedConfigs\n */\n const loadAnimation = (forcedConfigs = {}) => {\n var _a;\n // Return if the container ref is null\n if (!animationContainer.current) {\n return;\n }\n // Destroy any previous instance\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n // Build the animation configuration\n const config = {\n ...props,\n ...forcedConfigs,\n container: animationContainer.current,\n };\n // Save the animation instance\n animationInstanceRef.current = lottie.loadAnimation(config);\n setAnimationLoaded(!!animationInstanceRef.current);\n // Return a function that will clean up\n return () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();\n animationInstanceRef.current = undefined;\n };\n };\n /**\n * (Re)Initialize when animation data changed\n */\n useEffect(() => {\n const onUnmount = loadAnimation();\n // Clean up on unmount\n return () => onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [animationData, loop]);\n // Update the autoplay state\n useEffect(() => {\n if (!animationInstanceRef.current) {\n return;\n }\n animationInstanceRef.current.autoplay = !!autoplay;\n }, [autoplay]);\n // Update the initial segment state\n useEffect(() => {\n if (!animationInstanceRef.current) {\n return;\n }\n // When null should reset to default animation length\n if (!initialSegment) {\n animationInstanceRef.current.resetSegments(true);\n return;\n }\n // If it's not a valid segment, do nothing\n if (!Array.isArray(initialSegment) || !initialSegment.length) {\n return;\n }\n // If the current position it's not in the new segment\n // set the current position to start\n if (animationInstanceRef.current.currentRawFrame < initialSegment[0] ||\n animationInstanceRef.current.currentRawFrame > initialSegment[1]) {\n animationInstanceRef.current.currentRawFrame = initialSegment[0];\n }\n // Update the segment\n animationInstanceRef.current.setSegment(initialSegment[0], initialSegment[1]);\n }, [initialSegment]);\n /*\n ======================================\n EVENTS\n ======================================\n */\n /**\n * Reinitialize listener on change\n */\n useEffect(() => {\n const partialListeners = [\n { name: \"complete\", handler: onComplete },\n { name: \"loopComplete\", handler: onLoopComplete },\n { name: \"enterFrame\", handler: onEnterFrame },\n { name: \"segmentStart\", handler: onSegmentStart },\n { name: \"config_ready\", handler: onConfigReady },\n { name: \"data_ready\", handler: onDataReady },\n { name: \"data_failed\", handler: onDataFailed },\n { name: \"loaded_images\", handler: onLoadedImages },\n { name: \"DOMLoaded\", handler: onDOMLoaded },\n { name: \"destroy\", handler: onDestroy },\n ];\n const listeners = partialListeners.filter((listener) => listener.handler != null);\n if (!listeners.length) {\n return;\n }\n const deregisterList = listeners.map(\n /**\n * Handle the process of adding an event listener\n * @param {Listener} listener\n * @return {Function} Function that deregister the listener\n */\n (listener) => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener(listener.name, listener.handler);\n // Return a function to deregister this listener\n return () => {\n var _a;\n (_a = animationInstanceRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener(listener.name, listener.handler);\n };\n });\n // Deregister listeners on unmount\n return () => {\n deregisterList.forEach((deregister) => deregister());\n };\n }, [\n onComplete,\n onLoopComplete,\n onEnterFrame,\n onSegmentStart,\n onConfigReady,\n onDataReady,\n onDataFailed,\n onLoadedImages,\n onDOMLoaded,\n onDestroy,\n ]);\n /**\n * Build the animation view\n */\n const View = React.createElement(\"div\", { style: style, ref: animationContainer, ...rest });\n return {\n View,\n play,\n stop,\n pause,\n setSpeed,\n goToAndStop,\n goToAndPlay,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef: animationContainer,\n animationLoaded,\n animationItem: animationInstanceRef.current,\n };\n};\nexport default useLottie;\n","import { useEffect } from \"react\";\n// helpers\nexport function getContainerVisibility(container) {\n const { top, height } = container.getBoundingClientRect();\n const current = window.innerHeight - top;\n const max = window.innerHeight + height;\n return current / max;\n}\nexport function getContainerCursorPosition(container, cursorX, cursorY) {\n const { top, left, width, height } = container.getBoundingClientRect();\n const x = (cursorX - left) / width;\n const y = (cursorY - top) / height;\n return { x, y };\n}\nexport const useInitInteractivity = ({ wrapperRef, animationItem, mode, actions, }) => {\n useEffect(() => {\n const wrapper = wrapperRef.current;\n if (!wrapper || !animationItem || !actions.length) {\n return;\n }\n animationItem.stop();\n const scrollModeHandler = () => {\n let assignedSegment = null;\n const scrollHandler = () => {\n const currentPercent = getContainerVisibility(wrapper);\n // Find the first action that satisfies the current position conditions\n const action = actions.find(({ visibility }) => visibility &&\n currentPercent >= visibility[0] &&\n currentPercent <= visibility[1]);\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n if (action.type === \"seek\" &&\n action.visibility &&\n action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n const frameToGo = action.frames[0] +\n Math.ceil(((currentPercent - action.visibility[0]) /\n (action.visibility[1] - action.visibility[0])) *\n action.frames[1]);\n //! goToAndStop must be relative to the start of the current segment\n animationItem.goToAndStop(frameToGo - animationItem.firstFrame - 1, true);\n }\n if (action.type === \"loop\") {\n // Loop: Loop a given frames\n if (assignedSegment === null) {\n // if not playing any segments currently. play those segments and save to state\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n else {\n // if playing any segments currently.\n //check if segments in state are equal to the frames selected by action\n if (assignedSegment !== action.frames) {\n // if they are not equal. new segments are to be loaded\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n else if (animationItem.isPaused) {\n // if they are equal the play method must be called only if lottie is paused\n animationItem.playSegments(action.frames, true);\n assignedSegment = action.frames;\n }\n }\n }\n if (action.type === \"play\" && animationItem.isPaused) {\n // Play: Reset segments and continue playing full animation from current position\n animationItem.resetSegments(true);\n animationItem.play();\n }\n if (action.type === \"stop\") {\n // Stop: Stop playback\n animationItem.goToAndStop(action.frames[0] - animationItem.firstFrame - 1, true);\n }\n };\n document.addEventListener(\"scroll\", scrollHandler);\n return () => {\n document.removeEventListener(\"scroll\", scrollHandler);\n };\n };\n const cursorModeHandler = () => {\n const handleCursor = (_x, _y) => {\n let x = _x;\n let y = _y;\n // Resolve cursor position if cursor is inside container\n if (x !== -1 && y !== -1) {\n // Get container cursor position\n const pos = getContainerCursorPosition(wrapper, x, y);\n // Use the resolved position\n x = pos.x;\n y = pos.y;\n }\n // Find the first action that satisfies the current position conditions\n const action = actions.find(({ position }) => {\n if (position &&\n Array.isArray(position.x) &&\n Array.isArray(position.y)) {\n return (x >= position.x[0] &&\n x <= position.x[1] &&\n y >= position.y[0] &&\n y <= position.y[1]);\n }\n if (position &&\n !Number.isNaN(position.x) &&\n !Number.isNaN(position.y)) {\n return x === position.x && y === position.y;\n }\n return false;\n });\n // Skip if no matching action was found!\n if (!action) {\n return;\n }\n // Process action types:\n if (action.type === \"seek\" &&\n action.position &&\n Array.isArray(action.position.x) &&\n Array.isArray(action.position.y) &&\n action.frames.length === 2) {\n // Seek: Go to a frame based on player scroll position action\n const xPercent = (x - action.position.x[0]) /\n (action.position.x[1] - action.position.x[0]);\n const yPercent = (y - action.position.y[0]) /\n (action.position.y[1] - action.position.y[0]);\n animationItem.playSegments(action.frames, true);\n animationItem.goToAndStop(Math.ceil(((xPercent + yPercent) / 2) *\n (action.frames[1] - action.frames[0])), true);\n }\n if (action.type === \"loop\") {\n animationItem.playSegments(action.frames, true);\n }\n if (action.type === \"play\") {\n // Play: Reset segments and continue playing full animation from current position\n if (animationItem.isPaused) {\n animationItem.resetSegments(false);\n }\n animationItem.playSegments(action.frames);\n }\n if (action.type === \"stop\") {\n animationItem.goToAndStop(action.frames[0], true);\n }\n };\n const mouseMoveHandler = (ev) => {\n handleCursor(ev.clientX, ev.clientY);\n };\n const mouseOutHandler = () => {\n handleCursor(-1, -1);\n };\n wrapper.addEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.addEventListener(\"mouseout\", mouseOutHandler);\n return () => {\n wrapper.removeEventListener(\"mousemove\", mouseMoveHandler);\n wrapper.removeEventListener(\"mouseout\", mouseOutHandler);\n };\n };\n switch (mode) {\n case \"scroll\":\n return scrollModeHandler();\n case \"cursor\":\n return cursorModeHandler();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, animationItem]);\n};\nconst useLottieInteractivity = ({ actions, mode, lottieObj, }) => {\n const { animationItem, View, animationContainerRef } = lottieObj;\n useInitInteractivity({\n actions,\n animationItem,\n mode,\n wrapperRef: animationContainerRef,\n });\n return View;\n};\nexport default useLottieInteractivity;\n","import { useEffect } from \"react\";\nimport useLottie from \"../hooks/useLottie\";\nimport useLottieInteractivity from \"../hooks/useLottieInteractivity\";\nconst Lottie = (props) => {\n var _a, _b, _c;\n const { style, interactivity, ...lottieProps } = props;\n /**\n * Initialize the 'useLottie' hook\n */\n const { View, play, stop, pause, setSpeed, goToAndStop, goToAndPlay, setDirection, playSegments, setSubframe, getDuration, destroy, animationContainerRef, animationLoaded, animationItem, } = useLottie(lottieProps, style);\n /**\n * Make the hook variables/methods available through the provided 'lottieRef'\n */\n useEffect(() => {\n if (props.lottieRef) {\n props.lottieRef.current = {\n play,\n stop,\n pause,\n setSpeed,\n goToAndPlay,\n goToAndStop,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef,\n animationLoaded,\n animationItem,\n };\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [(_a = props.lottieRef) === null || _a === void 0 ? void 0 : _a.current]);\n return useLottieInteractivity({\n lottieObj: {\n View,\n play,\n stop,\n pause,\n setSpeed,\n goToAndStop,\n goToAndPlay,\n setDirection,\n playSegments,\n setSubframe,\n getDuration,\n destroy,\n animationContainerRef,\n animationLoaded,\n animationItem,\n },\n actions: (_b = interactivity === null || interactivity === void 0 ? void 0 : interactivity.actions) !== null && _b !== void 0 ? _b : [],\n mode: (_c = interactivity === null || interactivity === void 0 ? void 0 : interactivity.mode) !== null && _c !== void 0 ? _c : \"scroll\",\n });\n};\nexport default Lottie;\n"],"names":["useLottie","props","style","animationData","loop","autoplay","initialSegment","onComplete","onLoopComplete","onEnterFrame","onSegmentStart","onConfigReady","onDataReady","onDataFailed","onLoadedImages","onDOMLoaded","onDestroy","lottieRef","renderer","name","assetsPath","rendererSettings","rest","_excluded","useState","animationLoaded","setAnimationLoaded","animationInstanceRef","useRef","animationContainer","play","_a","current","stop","pause","setSpeed","speed","goToAndPlay","value","isFrame","goToAndStop","setDirection","direction","playSegments","segments","forceFlag","setSubframe","useSubFrames","getDuration","inFrames","destroy","undefined","loadAnimation","forcedConfigs","config","_objectSpread","container","lottie","useEffect","onUnmount","resetSegments","Array","isArray","length","currentRawFrame","setSegment","partialListeners","handler","listeners","filter","listener","deregisterList","map","addEventListener","removeEventListener","forEach","deregister","View","React","createElement","ref","animationContainerRef","animationItem","getContainerVisibility","getBoundingClientRect","top","height","window","innerHeight","max","getContainerCursorPosition","cursorX","cursorY","left","width","x","y","useInitInteractivity","wrapperRef","mode","actions","wrapper","scrollModeHandler","assignedSegment","scrollHandler","currentPercent","action","find","visibility","type","frames","frameToGo","Math","ceil","firstFrame","isPaused","document","cursorModeHandler","handleCursor","_x","_y","pos","position","Number","isNaN","xPercent","yPercent","mouseMoveHandler","ev","clientX","clientY","mouseOutHandler","useLottieInteractivity","lottieObj","Lottie","_b","_c","interactivity","lottieProps"],"mappings":"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"}