{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/YbkSqZ7STzW5WsMb1yan/7oWoX9MqdnxameM59dqC/Lottie.js"],
  "sourcesContent": ["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useRef, useCallback, useEffect } from \"react\";\nimport { motion, addPropertyControls, ControlType, RenderTarget } from \"framer\";\nimport { defaultEvents } from \"https://framer.com/m/framer/default-utils.js@^0.45.0\";\nimport { useAutoMotionValue } from \"https://framer.com/m/framer/useAutoMotionValue.js@0.3.0\";\nimport lottie from \"https://jspm.dev/lottie-web@5.7.8\";\nvar SrcType;\n(function (SrcType) {\n  SrcType[\"File\"] = \"Upload\";\n  SrcType[\"Url\"] = \"URL\";\n})(SrcType || (SrcType = {}));\nvar Poster;\n(function (Poster) {\n  Poster[\"Auto\"] = \"Auto\";\n  Poster[\"Custom\"] = \"Custom\";\n})(Poster || (Poster = {}));\nconst placeholderUrl = \"https://raw.githubusercontent.com/framer/Lottie/master/Lottie.framerfx/assets/logo.json\"; /**\n                                                                                                                  * LOTTIE\n                                                                                                                  *\n                                                                                                                  * @framerIntrinsicWidth 200\n                                                                                                                  * @framerIntrinsicHeight 350\n                                                                                                                  *\n                                                                                                                  * @framerSupportedLayoutWidth fixed\n                                                                                                                  * @framerSupportedLayoutHeight any-prefer-fixed\n                                                                                                                  */\nexport function Lottie(props) {\n  const {\n    style,\n    srcUrl,\n    srcFile,\n    srcType,\n    poster,\n    progress: progressRaw,\n    playing,\n    loop,\n    posterProgress,\n    pauseOnCanvas,\n    isForwardsDirection,\n    speed,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    onComplete\n  } = props;\n  const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n  const shouldPlay = (!pauseOnCanvas || !isOnCanvas) && playing;\n  const direction = isForwardsDirection ? 1 : -1;\n  const isCustomPoster = poster === Poster.Custom;\n  const el = useRef();\n  const didInitialMount = useRef(false);\n  const animationInfo = useRef({\n    data: null,\n    animation: null,\n    duration: null\n  });\n  const progress = useAutoMotionValue(progressRaw, {\n    transform: v => v * .01\n  });\n  const play = () => {\n    var ref, ref1;\n    return (ref = animationInfo.current) === null || ref === void 0 ? void 0 : (ref1 = ref.animation) === null || ref1 === void 0 ? void 0 : ref1.play();\n  };\n  const pause = () => {\n    var ref, ref1;\n    return (ref = animationInfo.current) === null || ref === void 0 ? void 0 : (ref1 = ref.animation) === null || ref1 === void 0 ? void 0 : ref1.pause();\n  };\n  const destroy = () => {\n    var ref, ref1;\n    return (ref = animationInfo.current) === null || ref === void 0 ? void 0 : (ref1 = ref.animation) === null || ref1 === void 0 ? void 0 : ref1.destroy();\n  };\n  const scrubTo = useCallback((normalizedProgress, shouldPlayAfter) => {\n    if (!animationInfo.current.duration || !animationInfo.current.animation) return; // Lottie gets weird when scrubbing to the exact last frame\n    const frameNumberTarget = normalizedProgress === 1 ? animationInfo.current.duration - 1 : normalizedProgress * animationInfo.current.duration;\n    if (shouldPlayAfter) animationInfo.current.animation.goToAndPlay(frameNumberTarget, true);else animationInfo.current.animation.goToAndStop(frameNumberTarget, true);\n  }, []);\n  const fetchLottieData = useCallback(async url => {\n    if (!url) return null;\n    const data = await fetch(url, {\n      method: \"GET\",\n      credentials: \"omit\",\n      redirect: \"follow\"\n    }).then(d => d.json());\n    return data;\n  }, []); // Fetch lottie animation & start setup\n  const init = useCallback(async () => {\n    // Clear current animation\n    destroy();\n    let dataUrl;\n    if (srcType === SrcType.Url) dataUrl = srcUrl;\n    if (srcType === SrcType.File) dataUrl = srcFile;\n    if (!dataUrl) {\n      console.warn(\"No valid Lottie animation provided\");\n      dataUrl = placeholderUrl;\n    }\n    const data = await fetchLottieData(dataUrl);\n    animationInfo.current.data = data;\n    return setup(didInitialMount.current);\n  }, [srcType, srcUrl, srcFile]); // Create Lottie animation\n  const setup = useCallback(shouldPlayAfter => {\n    if (!el.current) return;\n    destroy();\n    const options = {\n      container: el.current,\n      renderer: \"svg\",\n      loop: !isOnCanvas && loop,\n      autoplay: shouldPlay,\n      animationData: animationInfo.current.data,\n      rendererSettings: {\n        preserveAspectRatio: \"xMidYMid slice\"\n      }\n    };\n    const anim = animationInfo.current.animation = lottie.loadAnimation(options);\n    animationInfo.current.duration = anim.getDuration(true);\n    anim.setDirection(direction);\n    anim.setSpeed(speed);\n    didInitialMount.current = true;\n    if (isOnCanvas && isCustomPoster) scrubTo(posterProgress, false);else scrubTo(progress.get(), shouldPlay || shouldPlayAfter);\n    return () => {\n      anim.destroy();\n    };\n  }, [loop, shouldPlay, speed, direction, isOnCanvas, isCustomPoster, posterProgress]); // Initial setup or re-init when source changes\n  useEffect(() => {\n    let cleanup;\n    init().then(c => cleanup = c);\n    return () => {\n      if (cleanup) cleanup();\n    };\n  }, [srcType, srcFile, srcUrl]); // No run-time option for loop option, recreating anim\n  useEffect(() => {\n    if (!didInitialMount.current) return;\n    return setup(false);\n  }, [loop]); // Perf hack lets see if anyone notices\n  useEffect(() => lottie.setQuality(isOnCanvas ? \"low\" : \"medium\"), []); // useEffect(() => {\n  //     if (!isOnCanvas) return\n  //     const normalizedProgress = progress.get() * 0.01\n  //     if (shouldPlay) scrubTo(normalizedProgress, true)\n  //     else scrubTo(normalizedProgress, false)\n  // }, [progressRaw, shouldPlay])\n  useEffect(() => progress.onChange(val => {\n    if (isOnCanvas) return;\n    if (shouldPlay) scrubTo(val, true);else scrubTo(val, false);\n  }), []);\n  useEffect(() => {\n    const val = progress.get();\n    if (shouldPlay) scrubTo(val, true);else scrubTo(val, false);\n  }, [progressRaw]);\n  useEffect(() => {\n    if (!isOnCanvas) return;\n    const normalizedPosterProgress = posterProgress * .01;\n    if (isCustomPoster) scrubTo(normalizedPosterProgress, false);else scrubTo(progress.get(), false);\n  }, [isCustomPoster, posterProgress]);\n  useEffect(() => {\n    var ref;\n    if (!((ref = animationInfo.current) === null || ref === void 0 ? void 0 : ref.animation)) return;\n    animationInfo.current.animation.setSpeed(speed);\n    scrubTo(progress.get(), true);\n  }, [speed]);\n  useEffect(() => {\n    var ref;\n    if (!((ref = animationInfo.current) === null || ref === void 0 ? void 0 : ref.animation)) return;\n    animationInfo.current.animation.setDirection(direction);\n    scrubTo(progress.get(), true);\n  }, [direction]);\n  useEffect(() => {\n    if (shouldPlay) play();else pause();\n  }, [shouldPlay]);\n  return /*#__PURE__*/_jsx(motion.div, {\n    ref: el,\n    style: style,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp\n  });\n}\nLottie.defaultProps = {\n  height: 200,\n  width: 200,\n  srcType: SrcType.Url,\n  pauseOnCanvas: true,\n  srcUrl: placeholderUrl,\n  progress: 0,\n  poster: Poster.Auto,\n  posterProgress: 0\n};\naddPropertyControls(Lottie, {\n  srcType: {\n    type: ControlType.Enum,\n    displaySegmentedControl: true,\n    title: \"Source\",\n    options: [SrcType.Url, SrcType.File]\n  },\n  srcUrl: {\n    type: ControlType.String,\n    title: \" \",\n    placeholder: \"../example.json\",\n    hidden: props => props.srcType === SrcType.File\n  },\n  srcFile: {\n    type: ControlType.File,\n    title: \" \",\n    allowedFileTypes: [\"json\"],\n    hidden: props => props.srcType === SrcType.Url\n  },\n  playing: {\n    type: ControlType.Boolean,\n    title: \"Playing\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  // Temporarily disabling for perf\n  // pauseOnCanvas: {\n  //     type: ControlType.Boolean,\n  //     title: \"Canvas\",\n  //     disabledTitle: \"Play\",\n  //     enabledTitle: \"Pause\",\n  //     hidden: (props) => props.playing === false,\n  // },\n  loop: {\n    type: ControlType.Boolean,\n    title: \"Loop\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  isForwardsDirection: {\n    title: \"Direction\",\n    type: ControlType.Boolean,\n    enabledTitle: \"Normal\",\n    disabledTitle: \"Reverse\"\n  },\n  speed: {\n    type: ControlType.Number,\n    defaultValue: 1,\n    min: 0,\n    max: 10,\n    step: .5,\n    displayStepper: true,\n    unit: \"x\"\n  },\n  poster: {\n    title: \"Poster\",\n    type: ControlType.Enum,\n    options: [Poster.Auto, Poster.Custom],\n    displaySegmentedControl: true\n  },\n  posterProgress: {\n    title: \" \",\n    type: ControlType.Number,\n    max: 100,\n    min: 0,\n    unit: \"%\",\n    hidden: ({\n      poster\n    }) => poster === Poster.Auto\n  },\n  progress: {\n    title: \"Progress\",\n    type: ControlType.Number,\n    max: 100,\n    min: 0,\n    unit: \"%\",\n    description: \"This component is made for JSON files. [Learn more here](https://lottiefiles.com/what-is-lottie).\"\n  },\n  ...defaultEvents\n});\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"Lottie\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"Lottie\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerIntrinsicHeight\": \"350\",\n        \"framerSupportedLayoutHeight\": \"any-prefer-fixed\",\n        \"framerSupportedLayoutWidth\": \"fixed\",\n        \"framerIntrinsicWidth\": \"200\",\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./Lottie.map"],
  "mappings": "qNAMA,IAAIA,GACH,SAAUA,EAAS,CAClBA,EAAQ,KAAU,SAClBA,EAAQ,IAAS,KACnB,GAAGA,IAAYA,EAAU,CAAC,EAAE,EAC5B,IAAIC,GACH,SAAUA,EAAQ,CACjBA,EAAO,KAAU,OACjBA,EAAO,OAAY,QACrB,GAAGA,IAAWA,EAAS,CAAC,EAAE,EAC1B,IAAMC,EAAiB,0FAShB,SAASC,EAAOC,EAAO,CAC5B,GAAM,CACJ,MAAAC,EACA,OAAAC,EACA,QAAAC,EACA,QAAAC,EACA,OAAAC,EACA,SAAUC,EACV,QAAAC,EACA,KAAAC,EACA,eAAAC,EACA,cAAAC,EACA,oBAAAC,EACA,MAAAC,EACA,QAAAC,EACA,aAAAC,EACA,aAAAC,EACA,YAAAC,EACA,UAAAC,EACA,WAAAC,CACF,EAAIlB,EACEmB,EAAaC,EAAa,QAAQ,IAAMA,EAAa,OACrDC,GAAc,CAACX,GAAiB,CAACS,IAAeZ,EAChDe,EAAYX,EAAsB,EAAI,GACtCY,EAAiBlB,IAAWR,EAAO,OACnC2B,EAAKC,EAAO,EACZC,EAAkBD,EAAO,EAAK,EAC9BE,EAAgBF,EAAO,CAC3B,KAAM,KACN,UAAW,KACX,SAAU,IACZ,CAAC,EACKG,EAAWC,EAAmBvB,EAAa,CAC/C,UAAWwB,GAAKA,EAAI,GACtB,CAAC,EACKC,EAAO,IAAM,CACjB,IAAIC,EAAKC,EACT,OAAQD,EAAML,EAAc,WAAa,MAAQK,IAAQ,SAAmBC,EAAOD,EAAI,aAAe,MAAQC,IAAS,OAArD,OAAuEA,EAAK,KAAK,CACrJ,EACMC,EAAQ,IAAM,CAClB,IAAIF,EAAKC,EACT,OAAQD,EAAML,EAAc,WAAa,MAAQK,IAAQ,SAAmBC,EAAOD,EAAI,aAAe,MAAQC,IAAS,OAArD,OAAuEA,EAAK,MAAM,CACtJ,EACME,EAAU,IAAM,CACpB,IAAIH,EAAKC,EACT,OAAQD,EAAML,EAAc,WAAa,MAAQK,IAAQ,SAAmBC,EAAOD,EAAI,aAAe,MAAQC,IAAS,OAArD,OAAuEA,EAAK,QAAQ,CACxJ,EACMG,EAAUC,EAAY,CAACC,EAAoBC,IAAoB,CACnE,GAAI,CAACZ,EAAc,QAAQ,UAAY,CAACA,EAAc,QAAQ,UAAW,OACzE,IAAMa,EAAoBF,IAAuB,EAAIX,EAAc,QAAQ,SAAW,EAAIW,EAAqBX,EAAc,QAAQ,SACjIY,EAAiBZ,EAAc,QAAQ,UAAU,YAAYa,EAAmB,EAAI,EAAOb,EAAc,QAAQ,UAAU,YAAYa,EAAmB,EAAI,CACpK,EAAG,CAAC,CAAC,EACCC,EAAkBJ,EAAY,MAAMK,GACnCA,EACQ,MAAM,MAAMA,EAAK,CAC5B,OAAQ,MACR,YAAa,OACb,SAAU,QACZ,CAAC,EAAE,KAAKC,GAAKA,EAAE,KAAK,CAAC,EALJ,KAOhB,CAAC,CAAC,EACCC,EAAOP,EAAY,SAAY,CAEnCF,EAAQ,EACR,IAAIU,EACAzC,IAAYR,EAAQ,MAAKiD,EAAU3C,GACnCE,IAAYR,EAAQ,OAAMiD,EAAU1C,GACnC0C,IACH,QAAQ,KAAK,oCAAoC,EACjDA,EAAU/C,GAEZ,IAAMgD,EAAO,MAAML,EAAgBI,CAAO,EAC1C,OAAAlB,EAAc,QAAQ,KAAOmB,EACtBC,EAAMrB,EAAgB,OAAO,CACtC,EAAG,CAACtB,EAASF,EAAQC,CAAO,CAAC,EACvB4C,EAAQV,EAAYE,GAAmB,CAC3C,GAAI,CAACf,EAAG,QAAS,OACjBW,EAAQ,EACR,IAAMa,EAAU,CACd,UAAWxB,EAAG,QACd,SAAU,MACV,KAAM,CAACL,GAAcX,EACrB,SAAUa,EACV,cAAeM,EAAc,QAAQ,KACrC,iBAAkB,CAChB,oBAAqB,gBACvB,CACF,EACMsB,EAAOtB,EAAc,QAAQ,UAAYuB,EAAO,cAAcF,CAAO,EAC3E,OAAArB,EAAc,QAAQ,SAAWsB,EAAK,YAAY,EAAI,EACtDA,EAAK,aAAa3B,CAAS,EAC3B2B,EAAK,SAASrC,CAAK,EACnBc,EAAgB,QAAU,GACtBP,GAAcI,EAAgBa,EAAQ3B,EAAgB,EAAK,EAAO2B,EAAQR,EAAS,IAAI,EAAGP,GAAckB,CAAe,EACpH,IAAM,CACXU,EAAK,QAAQ,CACf,CACF,EAAG,CAACzC,EAAMa,EAAYT,EAAOU,EAAWH,EAAYI,EAAgBd,CAAc,CAAC,EACnF,OAAA0C,EAAU,IAAM,CACd,IAAIC,EACJ,OAAAR,EAAK,EAAE,KAAKS,GAAKD,EAAUC,CAAC,EACrB,IAAM,CACPD,GAASA,EAAQ,CACvB,CACF,EAAG,CAAChD,EAASD,EAASD,CAAM,CAAC,EAC7BiD,EAAU,IAAM,CACd,GAAKzB,EAAgB,QACrB,OAAOqB,EAAM,EAAK,CACpB,EAAG,CAACvC,CAAI,CAAC,EACT2C,EAAU,IAAMD,EAAO,WAAW/B,EAAa,MAAQ,QAAQ,EAAG,CAAC,CAAC,EAMpEgC,EAAU,IAAMvB,EAAS,SAAS0B,GAAO,CACnCnC,IACAE,EAAYe,EAAQkB,EAAK,EAAI,EAAOlB,EAAQkB,EAAK,EAAK,EAC5D,CAAC,EAAG,CAAC,CAAC,EACNH,EAAU,IAAM,CACd,IAAMG,EAAM1B,EAAS,IAAI,EACrBP,EAAYe,EAAQkB,EAAK,EAAI,EAAOlB,EAAQkB,EAAK,EAAK,CAC5D,EAAG,CAAChD,CAAW,CAAC,EAChB6C,EAAU,IAAM,CACd,GAAI,CAAChC,EAAY,OACjB,IAAMoC,EAA2B9C,EAAiB,IAC9B2B,EAAhBb,EAAwBgC,EAA8C3B,EAAS,IAAI,EAAjC,EAAK,CAC7D,EAAG,CAACL,EAAgBd,CAAc,CAAC,EACnC0C,EAAU,IAAM,CACd,IAAInB,EACG,GAAAA,EAAML,EAAc,WAAa,MAAQK,IAAQ,SAAkBA,EAAI,YAC9EL,EAAc,QAAQ,UAAU,SAASf,CAAK,EAC9CwB,EAAQR,EAAS,IAAI,EAAG,EAAI,EAC9B,EAAG,CAAChB,CAAK,CAAC,EACVuC,EAAU,IAAM,CACd,IAAInB,EACG,GAAAA,EAAML,EAAc,WAAa,MAAQK,IAAQ,SAAkBA,EAAI,YAC9EL,EAAc,QAAQ,UAAU,aAAaL,CAAS,EACtDc,EAAQR,EAAS,IAAI,EAAG,EAAI,EAC9B,EAAG,CAACN,CAAS,CAAC,EACd6B,EAAU,IAAM,CACV9B,EAAYU,EAAK,EAAOG,EAAM,CACpC,EAAG,CAACb,CAAU,CAAC,EACKmC,EAAKC,EAAO,IAAK,CACnC,IAAKjC,EACL,MAAOvB,EACP,QAAAY,EACA,aAAAC,EACA,aAAAC,EACA,YAAAC,EACA,UAAAC,CACF,CAAC,CACH,CACAlB,EAAO,aAAe,CACpB,OAAQ,IACR,MAAO,IACP,QAASH,EAAQ,IACjB,cAAe,GACf,OAAQE,EACR,SAAU,EACV,OAAQD,EAAO,KACf,eAAgB,CAClB,EACA6D,EAAoB3D,EAAQ,CAC1B,QAAS,CACP,KAAM4D,EAAY,KAClB,wBAAyB,GACzB,MAAO,SACP,QAAS,CAAC/D,EAAQ,IAAKA,EAAQ,IAAI,CACrC,EACA,OAAQ,CACN,KAAM+D,EAAY,OAClB,MAAO,IACP,YAAa,kBACb,OAAQ3D,GAASA,EAAM,UAAYJ,EAAQ,IAC7C,EACA,QAAS,CACP,KAAM+D,EAAY,KAClB,MAAO,IACP,iBAAkB,CAAC,MAAM,EACzB,OAAQ3D,GAASA,EAAM,UAAYJ,EAAQ,GAC7C,EACA,QAAS,CACP,KAAM+D,EAAY,QAClB,MAAO,UACP,aAAc,MACd,cAAe,IACjB,EASA,KAAM,CACJ,KAAMA,EAAY,QAClB,MAAO,OACP,aAAc,MACd,cAAe,IACjB,EACA,oBAAqB,CACnB,MAAO,YACP,KAAMA,EAAY,QAClB,aAAc,SACd,cAAe,SACjB,EACA,MAAO,CACL,KAAMA,EAAY,OAClB,aAAc,EACd,IAAK,EACL,IAAK,GACL,KAAM,GACN,eAAgB,GAChB,KAAM,GACR,EACA,OAAQ,CACN,MAAO,SACP,KAAMA,EAAY,KAClB,QAAS,CAAC9D,EAAO,KAAMA,EAAO,MAAM,EACpC,wBAAyB,EAC3B,EACA,eAAgB,CACd,MAAO,IACP,KAAM8D,EAAY,OAClB,IAAK,IACL,IAAK,EACL,KAAM,IACN,OAAQ,CAAC,CACP,OAAAtD,CACF,IAAMA,IAAWR,EAAO,IAC1B,EACA,SAAU,CACR,MAAO,WACP,KAAM8D,EAAY,OAClB,IAAK,IACL,IAAK,EACL,KAAM,IACN,YAAa,mGACf,EACA,GAAGC,CACL,CAAC",
  "names": ["SrcType", "Poster", "placeholderUrl", "Lottie", "props", "style", "srcUrl", "srcFile", "srcType", "poster", "progressRaw", "playing", "loop", "posterProgress", "pauseOnCanvas", "isForwardsDirection", "speed", "onClick", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "onComplete", "isOnCanvas", "RenderTarget", "shouldPlay", "direction", "isCustomPoster", "el", "pe", "didInitialMount", "animationInfo", "progress", "useAutoMotionValue", "v", "play", "ref", "ref1", "pause", "destroy", "scrubTo", "te", "normalizedProgress", "shouldPlayAfter", "frameNumberTarget", "fetchLottieData", "url", "d", "init", "dataUrl", "data", "setup", "options", "anim", "npm_lottie_web_5_7_default", "ue", "cleanup", "c", "val", "normalizedPosterProgress", "p", "motion", "addPropertyControls", "ControlType", "defaultEvents"]
}
