{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/gh5xmpM9GHT9MXnnMpPc/yx3Yu3CvNlklDmNPtEF9/Animator.js", "ssg:https://framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/qXQVWG1AZxpdrbBmhE1U/Video.js", "ssg:https://framer.com/m/framer/audio-assets.js@0.2.0", "ssg:https://framer.com/m/framer/lodash.js@0.3.0", "ssg:https://framerusercontent.com/modules/AHY1z1xp5QsxaZBkEL9H/7Qvf2RhlgA8L1UHMchaV/Slider.js", "ssg:https://framerusercontent.com/modules/NRKVbMFYrBaqL0rx532t/kDypoRR2B1GRROQ0uGdY/Audio.js", "ssg:https://framerusercontent.com/modules/tf3Zp7hfk5C74VGHUj4H/6uBZ8qYUXngY4uNs9Gm6/rW0M7uZnx.js", "ssg:https://framerusercontent.com/modules/BVtYEPL77Ib21RYJN74c/Ax0zEHPeMplHeBfu1Sr8/w7B1ofEe0.js", "ssg:https://framerusercontent.com/modules/nYaxvreCxvRDip2VketF/j08070iUhFJ3hSkWLiGN/XXPBeOBP3.js"],
  "sourcesContent": ["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Children } from \"react\";\nimport { addPropertyControls, ControlType, RenderTarget } from \"framer\";\nimport { motion, useMotionValue, useTransform } from \"framer-motion\"; /**\n                                                                      * ANIMATOR\n                                                                      *\n                                                                      * @framerIntrinsicWidth 200\n                                                                      * @framerIntrinsicHeight 200\n                                                                      * @framerDisableUnlink\n                                                                      *\n                                                                      * @framerSupportedLayoutWidth fixed\n                                                                      * @framerSupportedLayoutHeight fixed\n                                                                      */\nexport default function Animator(props) {\n  /* Properties */const {\n    pathAnimation,\n    from,\n    to,\n    animate,\n    shouldLoop,\n    loopOptions,\n    slots = [],\n    endCircle\n  } = props; /* State */\n  const hasChildren = Children.count(slots) > 0; /* Empty State */\n  let customShape = /*#__PURE__*/_jsxs(\"div\", {\n    style: placeholderStyles,\n    children: [/*#__PURE__*/_jsx(\"div\", {\n      style: emojiStyles,\n      children: \"\u270D\uFE0F\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      style: titleStyles,\n      children: \"Connect to Graphic\"\n    }), /*#__PURE__*/_jsx(\"p\", {\n      style: subtitleStyles,\n      children: \"Animates single or joined paths on Web Pages only.\"\n    })]\n  });\n  if (hasChildren) {\n    /* Grab the SVG from the Graphic */const firstChild = getFirstChild(slots);\n    const svgChild = getFirstChild(firstChild.props.svg);\n    const isSpring = pathAnimation.type === \"spring\"; /* Shape transition properties */ /* Dividing stiffness and damping by 1000 is a trick I got from Matt \n                                                                                        which helps with pathLength animations, which otherwise are so fast \n                                                                                        you never even see them happen in the preview. */\n    const shapeTransition = {\n      pathLength: {\n        ...pathAnimation,\n        repeat: shouldLoop ? Infinity : 0,\n        repeatType: loopOptions,\n        stiffness: isSpring ? pathAnimation.stiffness / 1e3 : pathAnimation.stiffness,\n        damping: isSpring ? pathAnimation.damping / 1e3 : pathAnimation.damping\n      }\n    }; /* Add our own properties to the Path */\n    const pathLength = useMotionValue(0);\n    const opacity = useTransform(pathLength, [0, .025], [0, 1]);\n    const shapeProps = {\n      variants: {\n        start: {\n          pathLength: from / 100\n        },\n        end: {\n          pathLength: to / 100\n        }\n      },\n      transition: shapeTransition\n    }; /* Prevent animating or adjusting pathLength on the Canvas */\n    const isCanvas = RenderTarget.current() === RenderTarget.canvas; /* Just render the full connected Graphic on Canvas, when connected */\n    if (isCanvas) {\n      customShape = firstChild;\n    } /* If on a web page */\n    if (!isCanvas && svgChild) {\n      /* Pass Attributes */let attributes = svgChild.match(/[\\w-]+=\"[^\"]*\"/g);\n      let pathD;\n      let stroke;\n      let strokeWidth;\n      let strokeLinecap;\n      let strokeLinejoin;\n      for (const element of attributes) {\n        if (element.includes(\"d=\")) {\n          pathD = splitAndReplace(element);\n        }\n        if (element.includes(\"stroke=\")) {\n          stroke = splitAndReplace(element);\n        }\n        if (element.includes(\"stroke-width=\")) {\n          strokeWidth = splitAndReplace(element);\n        }\n        if (element.includes(\"stroke-linecap=\")) {\n          strokeLinecap = splitAndReplace(element);\n        }\n        if (element.includes(\"stroke-linejoin=\")) {\n          strokeLinejoin = splitAndReplace(element);\n        }\n      } /* Grab viewbox */\n      let svgViewbox;\n      svgViewbox = svgChild.split(\"viewBox=\")[1];\n      svgViewbox = svgViewbox.split(\">\")[0];\n      svgViewbox = svgViewbox.replace(/^\"(.+(?=\"$))\"$/, \"$1\");\n      customShape = /*#__PURE__*/_jsx(motion.div, {\n        initial: isCanvas || animate === false ? false : \"start\",\n        animate: isCanvas || animate === false ? false : \"end\",\n        style: {\n          width: \"100%\",\n          height: \"100%\",\n          display: \"flex\",\n          placeContent: \"center\",\n          placeItems: \"center\",\n          backgroundColor: \"transparent\",\n          overflow: \"hidden\"\n        },\n        children: /*#__PURE__*/_jsx(motion.svg, {\n          xmlns: \"http://www.w3.org/2000/svg\",\n          width: \"100%\",\n          height: \"100%\",\n          viewBox: svgViewbox,\n          children: /*#__PURE__*/_jsx(motion.path, {\n            ...shapeProps,\n            d: pathD,\n            stroke: stroke,\n            strokeWidth: strokeWidth,\n            strokeLinejoin: strokeLinejoin,\n            strokeLinecap: strokeLinecap,\n            fill: \"transparent\",\n            style: !endCircle && {\n              pathLength,\n              opacity\n            }\n          })\n        })\n      });\n    }\n  }\n  return customShape;\n}\n; /* Default Properties */\nAnimator.defaultProps = {\n  animate: true,\n  shouldLoop: false,\n  loopOptions: \"reverse\",\n  from: 0,\n  to: 100,\n  pathAnimation: {\n    type: \"tween\",\n    duration: 2\n  },\n  endCircle: true\n}; /* Property Controls */\naddPropertyControls(Animator, {\n  slots: {\n    type: ControlType.ComponentInstance,\n    title: \"Children\"\n  },\n  animate: {\n    title: \"Animate\",\n    type: ControlType.Boolean,\n    defaultValue: Animator.defaultProps.animate,\n    enabledTitle: \"True\",\n    disabledTitle: \"False\"\n  },\n  shouldLoop: {\n    title: \"Loop\",\n    type: ControlType.Boolean,\n    defaultValue: Animator.defaultProps.shouldLoop,\n    enabledTitle: \"True\",\n    disabledTitle: \"False\",\n    hidden(props) {\n      return props.animate === false;\n    }\n  },\n  loopOptions: {\n    type: ControlType.Enum,\n    title: \"Type\",\n    defaultValue: Animator.defaultProps.loopOptions,\n    options: [\"loop\", \"reverse\", \"mirror\"],\n    optionTitles: [\"Loop\", \"Reverse\", \"Mirror\"],\n    hidden(props) {\n      return props.shouldLoop === false;\n    }\n  },\n  endCircle: {\n    title: \"End Circle\",\n    type: ControlType.Boolean,\n    defaultValue: Animator.defaultProps.endCircle,\n    enabledTitle: \"Show\",\n    disabledTitle: \"Hide\",\n    hidden(props) {\n      return props.animate === false;\n    }\n  },\n  from: {\n    title: \"From\",\n    type: ControlType.Number,\n    min: 0,\n    max: 100,\n    displayStepper: true,\n    step: 1,\n    defaultValue: Animator.defaultProps.from,\n    unit: \"%\",\n    hidden(props) {\n      return props.animate === false;\n    }\n  },\n  to: {\n    title: \"To\",\n    type: ControlType.Number,\n    min: 0,\n    max: 100,\n    displayStepper: true,\n    step: 1,\n    defaultValue: Animator.defaultProps.to,\n    unit: \"%\",\n    hidden(props) {\n      return props.animate === false;\n    }\n  },\n  pathAnimation: {\n    title: \" \",\n    type: ControlType.Transition,\n    defaultValue: Animator.defaultProps.pathAnimation,\n    hidden(props) {\n      return props.animate === false;\n    }\n  }\n}); /* Method to get stringless attributes */\nconst splitAndReplace = string => {\n  return string.split(\"=\")[1].replace(/['\"]+/g, \"\");\n}; /* Method to get the first child */\nfunction getFirstChild(slots) {\n  let firstChild;\n  Children.map(slots, child => {\n    if (firstChild === undefined) {\n      firstChild = child;\n    }\n  });\n  return firstChild;\n} /* Styles */\nconst placeholderStyles = {\n  display: \"flex\",\n  width: \"100%\",\n  height: \"100%\",\n  placeContent: \"center\",\n  placeItems: \"center\",\n  flexDirection: \"column\",\n  color: \"#96F\",\n  background: \"rgba(136, 85, 255, 0.1)\",\n  fontSize: 11,\n  overflow: \"hidden\"\n};\nconst emojiStyles = {\n  fontSize: 32,\n  marginBottom: 10\n};\nconst titleStyles = {\n  margin: 0,\n  marginBottom: 10,\n  fontWeight: 600,\n  textAlign: \"center\"\n};\nconst subtitleStyles = {\n  margin: 0,\n  opacity: .7,\n  maxWidth: 150,\n  lineHeight: 1.5,\n  textAlign: \"center\"\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"default\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"Animator\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerIntrinsicWidth\": \"200\",\n        \"framerIntrinsicHeight\": \"200\",\n        \"framerDisableUnlink\": \"*\",\n        \"framerSupportedLayoutWidth\": \"fixed\",\n        \"framerSupportedLayoutHeight\": \"fixed\",\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./Animator.map", "import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType, useIsInCurrentNavigationTarget } from \"framer\";\nimport { isMotionValue, useInView } from \"framer-motion\";\nimport { borderRadiusControl, defaultEvents, useIsBrowserSafari, useIsOnCanvas, useOnEnter, useOnExit, useRadius } from \"https://framer.com/m/framer/default-utils.js@^0.45.0\";\nimport { memo, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nvar ObjectFitType;\n(function (ObjectFitType) {\n  ObjectFitType[\"Fill\"] = \"fill\";\n  ObjectFitType[\"Contain\"] = \"contain\";\n  ObjectFitType[\"Cover\"] = \"cover\";\n  ObjectFitType[\"None\"] = \"none\";\n  ObjectFitType[\"ScaleDown\"] = \"scale-down\";\n})(ObjectFitType || (ObjectFitType = {}));\nvar SrcType;\n(function (SrcType) {\n  SrcType[\"Video\"] = \"Upload\";\n  SrcType[\"Url\"] = \"URL\";\n})(SrcType || (SrcType = {})); // Reduce renders\nfunction getProps(props) {\n  const {\n    width,\n    height,\n    topLeft,\n    topRight,\n    bottomRight,\n    bottomLeft,\n    id,\n    children,\n    ...rest\n  } = props;\n  return rest;\n} /**\n  * VIDEO\n  *\n  * @framerIntrinsicWidth 200\n  * @framerIntrinsicHeight 112\n  *\n  * @framerSupportedLayoutWidth fixed\n  * @framerSupportedLayoutHeight any-prefer-fixed\n  */\nexport function Video(props) {\n  const newProps = getProps(props);\n  return /*#__PURE__*/_jsx(VideoMemo, {\n    ...newProps\n  });\n}\nfunction usePlaybackControls(videoRef) {\n  const isInCurrentNavigationTarget = useIsInCurrentNavigationTarget();\n  const requestingPlay = useRef(false);\n  const setProgress = useCallback(rawProgress => {\n    if (!videoRef.current) return;\n    const newProgress = (rawProgress === 1 ? .999 : rawProgress) * videoRef.current.duration;\n    const isAlreadySet = Math.abs(videoRef.current.currentTime - newProgress) < .1;\n    if (videoRef.current.duration > 0 && !isAlreadySet) {\n      videoRef.current.currentTime = newProgress;\n    }\n  }, []);\n  const play = useCallback(() => {\n    const isPlaying = videoRef.current.currentTime > 0 && videoRef.current.onplaying && !videoRef.current.paused && !videoRef.current.ended && videoRef.current.readyState > videoRef.current.HAVE_CURRENT_DATA;\n    if (!isPlaying && videoRef.current && !requestingPlay.current && isInCurrentNavigationTarget) {\n      requestingPlay.current = true;\n      videoRef.current.play().catch(e => {}) // It's likely fine, swallow error\n      .finally(() => requestingPlay.current = false);\n    }\n  }, []);\n  const pause = useCallback(() => {\n    if (!videoRef.current || requestingPlay.current) return;\n    videoRef.current.pause();\n  }, []);\n  return {\n    play,\n    pause,\n    setProgress\n  };\n}\nfunction useAutoplayBehavior({\n  playingProp,\n  muted,\n  loop,\n  playsinline,\n  controls\n}) {\n  const [initialPlayingProp] = useState(() => playingProp);\n  const [hasPlayingPropChanged, setHasPlayingPropChanged] = useState(false);\n  if (playingProp !== initialPlayingProp && !hasPlayingPropChanged) {\n    setHasPlayingPropChanged(true);\n  }\n  const behavesAsGif =\n  // passing `playing === true` on mount indicates that the video should\n  // autoplay, like a GIF\n  initialPlayingProp && muted && loop && playsinline && !controls &&\n  // Some users of the <Video> component use it by wrapping it with\n  // another smart component and adding their own controls on top. (The\n  // controls use transitions to control the video: e.g., when clicking\n  // the play button, the smart component will transition to a state with\n  // <Video playing={true} />.) In this case, we don't want the video to\n  // behave as a gif, as it will be weird if the video suddenly started\n  // acting as such (and auto-pausing when leaving the viewport) as soon\n  // as the site visitor mutes it and clicks \u201CPlay\u201D.\n  !hasPlayingPropChanged;\n  let autoplay;\n  if (behavesAsGif) autoplay = \"on-viewport\";else if (initialPlayingProp) autoplay = \"on-mount\";else autoplay = \"no-autoplay\";\n  return autoplay;\n} /**\n  * The Video component has some effects that sync the video element with props\n  * like `startTime`, `progress`, etc. React calls these effects whenever these\n  * props change. However, it also calls them on the first mount, and this is\n  * troublesome \u2013 if we\u2019re doing SSR, and the user changed the video state before\n  * the video was hydrated, the initial `useEffect` call will reset the video\n  * state. To avoid this, we use this flag.\n  */\nlet isMountedAndReadyForProgressChanges = false;\nconst VideoMemo = /*#__PURE__*/memo(function VideoInner(props) {\n  const {\n    srcType,\n    srcFile,\n    srcUrl,\n    playing: playingProp,\n    muted,\n    playsinline,\n    controls,\n    progress,\n    objectFit,\n    backgroundColor,\n    onSeeked,\n    onPause,\n    onPlay,\n    onEnd,\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    poster,\n    posterEnabled,\n    startTime: startTimeProp,\n    volume,\n    loop\n  } = props;\n  const videoRef = useRef();\n  const isSafari = useIsBrowserSafari();\n  const wasPausedOnLeave = useRef(null);\n  const wasEndedOnLeave = useRef(null);\n  const isOnCanvas = useIsOnCanvas();\n  const borderRadius = useRadius(props); // Hard-coding `autoplayBehavior` and `isInViewport` when on canvas as a\n  // tiny perf optimization. isOnCanvas won\u2019t change through the lifecycle of\n  // the component, so using these hooks conditionally should be safe\n  const autoplayBehavior = isOnCanvas ? \"no-autoplay\" : useAutoplayBehavior({\n    playingProp,\n    muted,\n    loop,\n    playsinline,\n    controls\n  });\n  const isInViewport = isOnCanvas ? true : useInView(videoRef); // Video elements behave oddly at 100% duration\n  const startTime = startTimeProp === 100 ? 99.9 : startTimeProp;\n  const {\n    play,\n    pause,\n    setProgress\n  } = usePlaybackControls(videoRef); // Pause/play via props\n  useEffect(() => {\n    if (isOnCanvas) return;\n    if (playingProp) play();else pause();\n  }, [playingProp]); // Pause/play via viewport\n  useEffect(() => {\n    if (isOnCanvas) return;\n    if (autoplayBehavior !== \"on-viewport\") return;\n    if (isInViewport) play();else pause();\n  }, [autoplayBehavior, isInViewport]); // Allow scrubbling via progress prop\n  // 1) Handle cases when the progress prop itself changes\n  useEffect(() => {\n    if (!isMountedAndReadyForProgressChanges) {\n      isMountedAndReadyForProgressChanges = true;\n      return;\n    }\n    const rawProgressValue = isMotionValue(progress) ? progress.get() : (progress !== null && progress !== void 0 ? progress : 0) * .01;\n    setProgress(\n    // When the progress value exists (e.g. <Video startTime={10}\n    // progress={50} />), we respect the `progress` value over\n    // `startTime`, even if `startTime` changes. That\u2019s because\n    // `startTime` == start == changing it shouldn\u2019t affect the current\n    // progress\n    (rawProgressValue !== null && rawProgressValue !== void 0 ? rawProgressValue : 0) ||\n    // Then why fall back to `startTime` when `progress` doesn\u2019t exist,\n    // you might ask? Now, that\u2019s for\n    // - canvas UX: we want the video progress to change when the user\n    //   is scrobbling the \u201CStart Time\u201D in component settings.\n    // - backwards compatibility: maybe some users *are* scrobbling\n    //   using `startTime` instead of `progress`? We don\u2019t know, and it\n    //   always supported it, so let\u2019s not break it\n    (startTime !== null && startTime !== void 0 ? startTime : 0) / 100);\n  }, [startTime, srcFile, srcUrl, progress]); // 2) Handle cases when the motion value inside the progress prop changes\n  useEffect(() => {\n    if (!isMotionValue(progress)) return;\n    return progress.on(\"change\", value => setProgress(value));\n  }, [progress]); // (Prototyping) Checking if we need to play on navigation enter\n  useOnEnter(() => {\n    if (wasPausedOnLeave.current === null) return;\n    if (videoRef.current) {\n      // if (restartOnEnter) setProgress(0)\n      if (!wasEndedOnLeave && loop || !wasPausedOnLeave.current) play();\n    }\n  }); // (Prototyping) Pausing & saving playing state on navigation exit\n  useOnExit(() => {\n    if (videoRef.current) {\n      wasEndedOnLeave.current = videoRef.current.ended;\n      wasPausedOnLeave.current = videoRef.current.paused;\n      pause();\n    }\n  });\n  const src = useMemo(() => {\n    let fragment = \"\"; // if (\n    //     startTime > 0 &&\n    //     videoRef.current &&\n    //     !isNaN(videoRef.current.duration) &&\n    //     !isOnCanvas\n    // ) {\n    //     console.log(startTime, videoRef.current.duration)\n    //     fragment = `#t=${startTime * videoRef.current.duration}`\n    // }\n    if (srcType === SrcType.Url) return srcUrl + fragment;\n    if (srcType === SrcType.Video) return srcFile + fragment;\n  }, [srcType, srcFile, srcUrl, startTime]); // Autoplay via JS to work in Safari\n  useEffect(() => {\n    if (isSafari && videoRef.current && autoplayBehavior === \"on-mount\") {\n      setTimeout(() => play(), 50);\n    }\n  }, []); // Volume Control\n  useEffect(() => {\n    if (videoRef.current && !muted) videoRef.current.volume = (volume !== null && volume !== void 0 ? volume : 0) / 100;\n  }, [volume]); // When video is ready, set start-time, then autoplay if needed\n  const handleReady = () => {\n    if (!videoRef.current) return;\n    if (videoRef.current.currentTime < .3) setProgress((startTime !== null && startTime !== void 0 ? startTime : 0) * .01);\n    if (autoplayBehavior === \"on-mount\") play();\n  };\n  return /*#__PURE__*/_jsx(\"video\", {\n    onClick,\n    onMouseEnter,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    src: src,\n    loop: loop,\n    ref: videoRef,\n    onSeeked: e => {\n      return onSeeked === null || onSeeked === void 0 ? void 0 : onSeeked(e);\n    },\n    onPause: e => {\n      return onPause === null || onPause === void 0 ? void 0 : onPause(e);\n    },\n    onPlay: e => {\n      return onPlay === null || onPlay === void 0 ? void 0 : onPlay(e);\n    },\n    onEnded: e => {\n      return onEnd === null || onEnd === void 0 ? void 0 : onEnd(e);\n    },\n    autoPlay: autoplayBehavior === \"on-mount\",\n    poster: posterEnabled ? poster : undefined,\n    onLoadedData: handleReady,\n    controls: controls,\n    muted: isOnCanvas ? true : muted,\n    playsInline: playsinline,\n    style: {\n      cursor: !!onClick ? \"pointer\" : \"auto\",\n      width: \"100%\",\n      height: \"100%\",\n      borderRadius,\n      display: \"block\",\n      objectFit: objectFit,\n      backgroundColor: backgroundColor,\n      objectPosition: \"50% 50%\"\n    }\n  });\n});\nVideo.displayName = \"Video\";\nVideo.defaultProps = {\n  srcType: SrcType.Url,\n  srcUrl: \"https://assets.mixkit.co/videos/preview/mixkit-ice-cream-glass-of-red-soda-5094-small.mp4\",\n  srcFile: \"\",\n  posterEnabled: false,\n  controls: false,\n  playing: true,\n  loop: true,\n  muted: true,\n  playsinline: true,\n  restartOnEnter: false,\n  objectFit: ObjectFitType.Cover,\n  backgroundColor: \"rgba(0,0,0,0)\",\n  radius: 0,\n  volume: 25,\n  startTime: 0\n};\nconst groupsRegex = /[A-Z]{2,}|[A-Z][a-z]+|[a-z]+|[A-Z]|\\d+/gu;\nfunction capitalizeFirstLetter(value) {\n  return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function titleCase(value) {\n  const groups = value.match(groupsRegex) || [];\n  return groups.map(capitalizeFirstLetter).join(\" \");\n}\nconst objectFitOptions = [ObjectFitType.Cover, ObjectFitType.Fill, ObjectFitType.Contain, ObjectFitType.ScaleDown, ObjectFitType.None];\naddPropertyControls(Video, {\n  srcType: {\n    type: ControlType.Enum,\n    displaySegmentedControl: true,\n    title: \"Source\",\n    options: [SrcType.Url, SrcType.Video]\n  },\n  srcUrl: {\n    type: ControlType.String,\n    title: \" \",\n    placeholder: \"../example.mp4\",\n    hidden(props) {\n      return props.srcType === SrcType.Video;\n    },\n    description: \"Hosted video file URL. For YouTube, use the YouTube component.\"\n  },\n  srcFile: {\n    type: ControlType.File,\n    title: \" \",\n    allowedFileTypes: [\"mp4\"],\n    hidden(props) {\n      return props.srcType === SrcType.Url;\n    }\n  },\n  playing: {\n    type: ControlType.Boolean,\n    title: \"Playing\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  posterEnabled: {\n    type: ControlType.Boolean,\n    title: \"Poster\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  poster: {\n    type: ControlType.Image,\n    title: \" \",\n    hidden: ({\n      posterEnabled\n    }) => !posterEnabled\n  },\n  backgroundColor: {\n    type: ControlType.Color,\n    title: \"Background\"\n  },\n  ...borderRadiusControl,\n  startTime: {\n    title: \"Start Time\",\n    type: ControlType.Number,\n    min: 0,\n    max: 100,\n    step: .1,\n    unit: \"%\"\n  },\n  loop: {\n    type: ControlType.Boolean,\n    title: \"Loop\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  objectFit: {\n    type: ControlType.Enum,\n    title: \"Fit\",\n    options: objectFitOptions,\n    optionTitles: objectFitOptions.map(titleCase)\n  },\n  // restartOnEnter: {\n  //     type: ControlType.Boolean,\n  //     title: \"On ReEnter\",\n  //     enabledTitle: \"Restart\",\n  //     disabledTitle: \"Resume\",\n  // },\n  controls: {\n    type: ControlType.Boolean,\n    title: \"Controls\",\n    enabledTitle: \"Show\",\n    disabledTitle: \"Hide\"\n  },\n  muted: {\n    type: ControlType.Boolean,\n    title: \"Muted\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  volume: {\n    type: ControlType.Number,\n    max: 100,\n    min: 0,\n    unit: \"%\",\n    hidden: ({\n      muted\n    }) => muted\n  },\n  onEnd: {\n    type: ControlType.EventHandler\n  },\n  onSeeked: {\n    type: ControlType.EventHandler\n  },\n  onPause: {\n    type: ControlType.EventHandler\n  },\n  onPlay: {\n    type: ControlType.EventHandler\n  },\n  ...defaultEvents\n});\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"VideoProps\": {\n      \"type\": \"tsType\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"titleCase\": {\n      \"type\": \"function\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"Video\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"Video\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerContractVersion\": \"1\",\n        \"framerIntrinsicWidth\": \"200\",\n        \"framerSupportedLayoutHeight\": \"any-prefer-fixed\",\n        \"framerSupportedLayoutWidth\": \"fixed\",\n        \"framerIntrinsicHeight\": \"112\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./Video.map", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { motion } from \"framer\";\nexport function PlayIcon(props) {\n    return(/*#__PURE__*/ _jsx(motion.svg, {\n        ...props,\n        xmlns: \"http://www.w3.org/2000/svg\",\n        viewBox: \"0 0 16 16\",\n        children: /*#__PURE__*/ _jsx(\"path\", {\n            d: \"M 5.379 1.292 C 4.968 1.033 4.449 1.017 4.023 1.251 C 3.598 1.486 3.334 1.933 3.333 2.419 L 3.333 13.581 C 3.334 14.067 3.598 14.514 4.023 14.749 C 4.449 14.983 4.968 14.967 5.379 14.708 L 14.215 9.127 C 14.602 8.883 14.836 8.457 14.836 8 C 14.836 7.543 14.602 7.117 14.215 6.873 Z\",\n            fill: \"#333\"\n        })\n    }));\n}\nexport function PauseIcon(props) {\n    return(/*#__PURE__*/ _jsxs(motion.svg, {\n        ...props,\n        xmlns: \"http://www.w3.org/2000/svg\",\n        viewBox: \"0 0 16 16\",\n        children: [\n            /*#__PURE__*/ _jsx(\"path\", {\n                d: \"M 3 3 C 3 2.448 3.448 2 4 2 L 6 2 C 6.552 2 7 2.448 7 3 L 7 13 C 7 13.552 6.552 14 6 14 L 4 14 C 3.448 14 3 13.552 3 13 Z\",\n                fill: \"#343434\"\n            }),\n            /*#__PURE__*/ _jsx(\"path\", {\n                d: \"M 9 3 C 9 2.448 9.448 2 10 2 L 12 2 C 12.552 2 13 2.448 13 3 L 13 13 C 13 13.552 12.552 14 12 14 L 10 14 C 9.448 14 9 13.552 9 13 Z\",\n                fill: \"#343434\"\n            })\n        ]\n    }));\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"PauseIcon\":{\"type\":\"reactComponent\",\"name\":\"PauseIcon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"PlayIcon\":{\"type\":\"reactComponent\",\"name\":\"PlayIcon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./audio.map", "/** Error message constants. */ var FUNC_ERROR_TEXT = \"Expected a function\";\n/* Built-in method references for those with the same name as other `lodash` methods. */ var nativeMax = Math.max, nativeMin = Math.min;\n/** Used as references for various `Number` constants. */ var NAN = 0 / 0;\n/** Used to match leading and trailing whitespace. */ var reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */ var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */ var reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */ var reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */ var freeParseInt = parseInt;\nvar now = function() {\n    return Date.now();\n};\nfunction isObject(value) {\n    var type = typeof value;\n    return value != null && (type == \"object\" || type == \"function\");\n}\nfunction isObjectLike(value) {\n    return value != null && typeof value == \"object\";\n}\nfunction toNumber(value) {\n    if (typeof value == \"number\") {\n        return value;\n    }\n    if (typeof value == \"symbol\") {\n        return NAN;\n    }\n    if (isObject(value)) {\n        var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n        value = isObject(other) ? other + \"\" : other;\n    }\n    if (typeof value != \"string\") {\n        return value === 0 ? value : +value;\n    }\n    value = value.replace(reTrim, \"\");\n    var isBinary = reIsBinary.test(value);\n    return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\nexport function debounce(func, wait, options) {\n    var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\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    function invokeFunc(time) {\n        var args = lastArgs, thisArg = lastThis;\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\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    function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;\n        return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;\n    }\n    function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\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 || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\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    function trailingEdge(time) {\n        timerId = undefined;\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    function cancel() {\n        if (timerId !== undefined) {\n            clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n    }\n    function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n    }\n    function debounced() {\n        var time = now(), isInvoking = shouldInvoke(time);\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n        if (isInvoking) {\n            if (timerId === undefined) {\n                return leadingEdge(lastCallTime);\n            }\n            if (maxing) {\n                // Handle invocations in a tight loop.\n                clearTimeout(timerId);\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}\nexport function throttle(func, wait, options) {\n    var leading = true, trailing = true;\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\nexport const __FramerMetadata__ = {\"exports\":{\"throttle\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"debounce\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./lodash.map", "import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { addPropertyControls, ControlType, RenderTarget, withCSS } from \"framer\";\nimport { animate, transform, motion, useTransform } from \"framer-motion\";\nimport { useRef, useState, useCallback } from \"react\";\nimport { isMotionValue, useOnChange, useAutoMotionValue } from \"https://framer.com/m/framer/default-utils.js@^0.45.0\";\nimport { throttle } from \"https://framer.com/m/framer/lodash.js@0.3.0\";\nvar KnobOptions;\n(function (KnobOptions) {\n  KnobOptions[\"Hide\"] = \"Hide\";\n  KnobOptions[\"Hover\"] = \"Hover\";\n  KnobOptions[\"Show\"] = \"Show\";\n})(KnobOptions || (KnobOptions = {})); /**\n                                       * SLIDER\n                                       *\n                                       * @framerIntrinsicWidth 200\n                                       * @framerIntrinsicHeight 20\n                                       *\n                                       * @framerSupportedLayoutWidth fixed\n                                       * @framerSupportedLayoutHeight any\n                                       */\nexport const Slider = withCSS(function Slider(props) {\n  const {\n    value: valueProp,\n    trackHeight,\n    fillColor,\n    focusColor,\n    min,\n    max,\n    onChange,\n    onChangeLive,\n    onMax,\n    onMin,\n    trackColor,\n    trackRadius,\n    knobSize,\n    knobColor,\n    constrainKnob,\n    shadow,\n    shouldAnimateChange,\n    transition,\n    overdrag,\n    knobSetting,\n    style\n  } = props;\n  const [hovered, setHovered] = useState(false);\n  const [focused, setFocused] = useState(false);\n  const onCanvas = RenderTarget.current() === RenderTarget.canvas;\n  const shouldAnimate = shouldAnimateChange && !onCanvas;\n  const isConstrained = constrainKnob && knobSetting === KnobOptions.Show;\n  const showKnob = knobSetting !== KnobOptions.Hide;\n  const input = useRef();\n  const knobPadding = 8; // Main setting function\n  const updateValue = useCallback((newVal, target) => {\n    throttledInputUpdate(newVal);\n    if (onChange) onChange(newVal);\n    if (shouldAnimate) animate(target, newVal, transition);else requestAnimationFrame(() => target.set(newVal));\n  }, [transition, shouldAnimate, onChange]); // \"value\" is the source of truth\n  // It can be controlled via props with a motionvalue or number 0.0 - 1.0\n  // Local changes are always allowed and are reported back up using \"onChange\" callback\n  const value = useAutoMotionValue(valueProp, {\n    onChange: updateValue,\n    transform: value => transform(value, [0, 100], [min, max])\n  });\n  const knobX = useTransform(value, [min, max], [\"0%\", \"100%\"]);\n  const normalizedValue = useTransform(value, [min, max], [0, 1]);\n  const throttledInputUpdate = useCallback(throttle(val => {\n    var ref;\n    if ((ref = input.current) === null || ref === void 0 ? void 0 : ref.value) input.current.value = val;\n  }, 100), [input]); // Live updating callback\n  useOnChange(value, val => {\n    if (isMotionValue(valueProp)) throttledInputUpdate(val);\n    if (onMax && val >= max) onMax();\n    if (onMin && val <= min) onMin();\n    if (onChangeLive) onChangeLive(val);\n  }); // Read changes from input element\n  const handleInputChange = e => {\n    updateValue(parseFloat(e.target.value), value);\n  }; // Handle tapping on the know to trigger update\n  const handleMouseDown = e => {\n    if (parseFloat(e.target.value) !== 0) updateValue(parseFloat(e.target.value), value);\n  };\n  const handleMouseUp = () => {};\n  const totalKnobWidth = showKnob ? knobSize + knobPadding : knobPadding;\n  const totalHeight = Math.max(knobSize + knobPadding, trackHeight);\n  return /*#__PURE__*/_jsxs(\"div\", {\n    className: \"framer-default-slider\",\n    onMouseEnter: () => setHovered(true),\n    onMouseLeave: () => setHovered(false),\n    style: {\n      position: \"relative\",\n      ...style,\n      alignItems: \"center\",\n      justifyContent: \"flex-start\",\n      border: `0px solid ${focusColor}`,\n      \"--framer-default-slider-height\": totalHeight,\n      \"--framer-default-slider-width\": totalKnobWidth\n    },\n    children: [/*#__PURE__*/_jsx(\"input\", {\n      ref: input,\n      style: {\n        flexShrink: 0,\n        minHeight: totalHeight,\n        opacity: 0,\n        margin: 0,\n        display: \"flex\",\n        ...style,\n        WebkitTapHighlightColor: \"rgba(0, 0, 0, 0)\",\n        ...(!isConstrained && {\n          width: `calc(100% + ${totalKnobWidth}px)`,\n          marginLeft: -totalKnobWidth / 2\n        })\n      },\n      onFocus: () => setFocused(true),\n      onBlur: () => setFocused(false),\n      type: \"range\",\n      min: min,\n      max: max,\n      defaultValue: -1,\n      step: \"any\",\n      onChange: handleInputChange,\n      onMouseDown: handleMouseDown,\n      onMouseUp: handleMouseUp\n    }), /*#__PURE__*/_jsx(\"div\", {\n      style: {\n        background: trackColor,\n        position: \"absolute\",\n        top: `calc(50% - ${Math.ceil(trackHeight / 2)}px)`,\n        borderRadius: trackRadius,\n        display: \"flex\",\n        height: trackHeight,\n        width: \"100%\",\n        transformOrigin: \"left\",\n        pointerEvents: \"none\",\n        overflow: \"hidden\"\n      },\n      children: /*#__PURE__*/_jsx(motion.div, {\n        style: {\n          height: trackHeight,\n          width: \"100%\",\n          background: fillColor,\n          scaleX: normalizedValue,\n          position: \"absolute\",\n          top: `calc(50% - ${Math.ceil(trackHeight / 2)}px)`,\n          transformOrigin: \"left\",\n          pointerEvents: \"none\"\n        }\n      })\n    }), /*#__PURE__*/_jsx(motion.div, {\n      style: {\n        x: knobX,\n        position: \"absolute\",\n        display: \"flex\",\n        top: `calc(50% - ${Math.floor(knobSize / 2)}px)`,\n        pointerEvents: \"none\",\n        ...(isConstrained ? {\n          width: `calc(100% - ${knobSize}px`,\n          left: 0\n        } : {\n          width: `100%`,\n          left: -knobSize / 2\n        })\n      },\n      children: /*#__PURE__*/_jsx(motion.div, {\n        initial: false,\n        animate: {\n          scale: hovered && knobSetting === KnobOptions.Hover || knobSetting === KnobOptions.Show ? 1 : 0\n        },\n        transition: {\n          type: \"spring\",\n          stiffness: 900,\n          damping: 40\n        },\n        style: {\n          transformOrigin: \"50% 50%\",\n          width: knobSize,\n          height: knobSize,\n          borderRadius: \"50%\",\n          background: knobColor,\n          pointerEvents: \"none\",\n          boxShadow: `0px 1px 2px 0px ${shadow}, \n                                0px 2px 4px 0px ${shadow}, \n                                0px 4px 8px 0px ${shadow}`\n        }\n      })\n    })]\n  });\n}, [\".framer-default-slider input[type=range] {  width: 100%; height: 100% background:transparent margin: 0;}\", \".framer-default-slider input[type=range]:focus { outline: none; }\", \".framer-default-slider input[type=range]::-ms-track { width: 100%; cursor: pointer; background: transparent; border-color: transparent; color: transparent; }\", \".framer-default-slider input[type=range]::-webkit-slider-thumb { height: var(--framer-default-slider-height, 0px); width: var(--framer-default-slider-width, 0px); border-radius: 0;  background: none; }\", \".framer-default-slider input[type=range]::-moz-range-thumb { height: var(--framer-default-slider-height, 0px); width: var(--framer-default-slider-width, 0px); border-radius: 0;  background: none; }\", \".framer-default-slider input[type=range]::-ms-thumb  { height: var(--framer-default-slider-height, 0px); width: var(--framer-default-slider-width, 0px); border-radius: 0;  background: none; }\"]);\nSlider.displayName = \"Slider\";\nSlider.defaultProps = {\n  height: 20,\n  width: 200,\n  trackHeight: 4,\n  fillColor: \"#09F\",\n  trackColor: \"#DDD\",\n  knobColor: \"#FFF\",\n  focusColor: \"rgba(0, 153, 255,0)\",\n  shadow: \"rgba(0,0,0,0.1)\",\n  knobSize: 20,\n  overdrag: true,\n  min: 0,\n  max: 100,\n  value: 50,\n  trackRadius: 5,\n  knobSetting: KnobOptions.Show,\n  constrainKnob: false,\n  transition: {\n    type: \"spring\",\n    delay: 0,\n    stiffness: 750,\n    damping: 50\n  },\n  shouldAnimateChange: true\n};\naddPropertyControls(Slider, {\n  fillColor: {\n    title: \"Tint\",\n    type: ControlType.Color\n  },\n  trackColor: {\n    title: \"Track\",\n    type: ControlType.Color\n  },\n  knobColor: {\n    title: \"Knob\",\n    type: ControlType.Color\n  },\n  shadow: {\n    type: ControlType.Color,\n    title: \"Shadow\"\n  },\n  // focusColor: {\n  //     title: \"Focus\",\n  //     type: ControlType.Color,\n  // },\n  shouldAnimateChange: {\n    type: ControlType.Boolean,\n    title: \"Changes\",\n    enabledTitle: \"Animate\",\n    disabledTitle: \"Instant\"\n  },\n  transition: {\n    type: ControlType.Transition,\n    defaultValue: Slider.defaultProps.transition\n  },\n  knobSetting: {\n    type: ControlType.Enum,\n    displaySegmentedControl: true,\n    title: \"Knob\",\n    options: [\"Hide\", \"Hover\", \"Show\"]\n  },\n  constrainKnob: {\n    type: ControlType.Boolean,\n    title: \"Constrain\",\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\",\n    hidden: ({\n      knobSetting\n    }) => knobSetting !== KnobOptions.Show\n  },\n  knobSize: {\n    type: ControlType.Number,\n    title: \"Knob\",\n    min: 10,\n    max: 100,\n    hidden: ({\n      knobSetting\n    }) => knobSetting === KnobOptions.Hide\n  },\n  value: {\n    type: ControlType.Number,\n    title: \"Value\",\n    min: 0,\n    max: 100,\n    unit: \"%\"\n  },\n  trackHeight: {\n    title: \"Height\",\n    type: ControlType.Number,\n    min: 0\n  },\n  min: {\n    title: \"Min\",\n    type: ControlType.Number,\n    displayStepper: true\n  },\n  trackRadius: {\n    type: ControlType.Number,\n    displayStepper: true,\n    min: 0,\n    max: 200,\n    title: \"Radius\"\n  },\n  max: {\n    title: \"Max\",\n    type: ControlType.Number,\n    displayStepper: true\n  },\n  onChange: {\n    type: ControlType.EventHandler\n  },\n  onMax: {\n    type: ControlType.EventHandler\n  },\n  onMin: {\n    type: ControlType.EventHandler\n  }\n});\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"Props\": {\n      \"type\": \"tsType\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"Slider\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"Slider\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerSupportedLayoutHeight\": \"any\",\n        \"framerIntrinsicWidth\": \"200\",\n        \"framerIntrinsicHeight\": \"20\",\n        \"framerContractVersion\": \"1\",\n        \"framerSupportedLayoutWidth\": \"fixed\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./Slider.map", "import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport { useRef, useState, useMemo, useEffect, useCallback } from \"react\";\nimport { addPropertyControls, ControlType, RenderTarget } from \"framer\";\nimport { MotionValue, animate, useMotionValueEvent } from \"framer-motion\";\nimport { useOnEnter, usePadding, useRadius, paddingControl, borderRadiusControl, useOnChange, containerStyles, secondsToMinutes, useAutoMotionValue, useOnExit, fontStack, useFontControls } from \"https://framer.com/m/framer/default-utils.js@^0.45.0\";\nimport { PlayIcon, PauseIcon } from \"https://framer.com/m/framer/audio-assets.js@0.2.0\";\nimport { Slider } from \"https://framerusercontent.com/modules/AHY1z1xp5QsxaZBkEL9H/7Qvf2RhlgA8L1UHMchaV/Slider.js\";\nconst isMotionValue = v => v instanceof MotionValue;\nvar SrcType;\n(function (SrcType) {\n  SrcType[\"Video\"] = \"Upload\";\n  SrcType[\"Url\"] = \"URL\";\n})(SrcType || (SrcType = {}));\nfunction PlayTime(props) {\n  const {\n    currentTime,\n    startTime\n  } = props;\n  const [playTime, setPlayTime] = useState(\"0:00\");\n  useEffect(() => {\n    setPlayTime(secondsToMinutes(startTime));\n  }, [startTime]);\n  useOnChange(currentTime, latest => {\n    setPlayTime(secondsToMinutes(latest));\n  });\n  return /*#__PURE__*/_jsx(_Fragment, {\n    children: playTime\n  });\n}\nconst checkIfPlaying = player => player.current && !player.current.paused && !player.current.ended && player.current.readyState > 2; /**\n                                                                                                                                     * AUDIO\n                                                                                                                                     *\n                                                                                                                                     * Audio player component optimized for smart components.\n                                                                                                                                     *\n                                                                                                                                     * @framerIntrinsicWidth 240\n                                                                                                                                     * @framerIntrinsicHeight 50\n                                                                                                                                     *\n                                                                                                                                     * @framerSupportedLayoutWidth fixed\n                                                                                                                                     * @framerSupportedLayoutHeight fixed\n                                                                                                                                     */\nexport function Audio(props) {\n  const {\n    playing,\n    background,\n    progressColor,\n    trackHeight,\n    gap,\n    trackColor,\n    srcUrl,\n    srcType,\n    srcFile,\n    loop,\n    font,\n    autoPlay,\n    progress,\n    volume,\n    showTime,\n    showTrack,\n    playPauseCursor,\n    showPlayPause,\n    onTimeUpdate,\n    onMetadata,\n    onPlay,\n    onPause,\n    onEnd,\n    pauseOnExit,\n    onPlayGlobalPauseOption\n  } = props; // Defaults to false, only switches to play if possible\n  const [isPlaying, setIsPlaying] = useState(false);\n  const [duration, setDuration] = useState(0); // Audio element ref and non-state info\n  const player = useRef();\n  const playerInfo = useRef({\n    ready: false,\n    animation: null\n  }); // Track progress in ms, always in sync with audio element\n  const trackProgress = useAutoMotionValue(progress, {\n    transform: value => value * .01,\n    onChange: (newValue, value) => {\n      if (player.current.duration) {\n        player.current.currentTime = newValue * player.current.duration;\n        handlePlayStateUpdate(\"motionHook\");\n      }\n    }\n  });\n  const padding = usePadding(props);\n  const borderRadius = useRadius(props);\n  const {\n    fontSize\n  } = useFontControls(props);\n  const shouldPlay = RenderTarget.current() === RenderTarget.preview;\n  const shouldPausePlayers = onPlayGlobalPauseOption === \"pause\";\n  const url = srcType === SrcType.Url ? srcUrl : srcFile;\n  const shouldAutoPlay = shouldPlay && playing; // Sync UI with state of the audio element\n  // TODO look into better more performant ways of doing this\n  const handlePlayStateUpdate = useCallback(_ => {\n    var ref, ref1;\n    const currentDuration = player.current.duration;\n    const currentTime = player.current.currentTime;\n    (ref = playerInfo.current) === null || ref === void 0 ? void 0 : (ref1 = ref.animation) === null || ref1 === void 0 ? void 0 : ref1.stop();\n    if (Math.abs(currentTime - trackProgress.get()) > .5) {\n      trackProgress.set(currentTime);\n    }\n    if (!shouldPlay) return;\n    const isNowPlaying = checkIfPlaying(player);\n    if (isPlaying !== isNowPlaying) setIsPlaying(isNowPlaying);\n    if (isNowPlaying && shouldPlay) {\n      playerInfo.current.animation = animate(trackProgress, currentDuration, {\n        type: \"tween\",\n        ease: \"linear\",\n        duration: currentDuration - currentTime\n      });\n    }\n  }, [shouldPlay, isPlaying]);\n  const pauseAllAudioPlayers = () => {\n    const audioPlayerElements = document.querySelectorAll(\".framer-audio\");\n    audioPlayerElements.forEach(el => {\n      el.pause();\n    });\n  }; // Always use this for playing audio\n  // No logic in here as it is async & can fail\n  const playAudio = () => {\n    if (shouldPlay) player.current.play().catch(e => {}) // It's likely fine, swallow error\n    ;\n  };\n  const pauseAudio = () => {\n    var ref, ref1;\n    player.current.pause();\n    (ref = playerInfo.current) === null || ref === void 0 ? void 0 : (ref1 = ref.animation) === null || ref1 === void 0 ? void 0 : ref1.stop();\n  };\n  const handleMetadata = () => {\n    if (onMetadata) onMetadata({\n      duration: player.current.duration\n    });\n    setDuration(player.current.duration);\n  };\n  const initProgress = () => {\n    if (!isMotionValue(progress)) player.current.currentTime = progress * .01 * player.current.duration;\n  };\n  const handleReady = () => {\n    // This tries to run on every pause\n    // We use playerInfo.ready to only call on initial load of a source\n    if (!playerInfo.current.ready) {\n      if (shouldAutoPlay) playAudio();\n      playerInfo.current.ready = true;\n      initProgress();\n    }\n  }; // Handle seek event from slider\n  const handleSeek = val => {\n    if (player.current.currentTime) {\n      player.current.currentTime = val;\n      handlePlayStateUpdate(\"handleSeek\");\n    }\n  };\n  const handleEnd = () => {\n    if (onEnd) onEnd();\n  };\n  const handlePlayClick = () => {\n    if (shouldPausePlayers) pauseAllAudioPlayers();\n    playAudio();\n  }; // Control audio via props\n  useEffect(() => {\n    if (shouldPlay) {\n      // In preview when prop changes, pause/play\n      if (playing === true) playAudio();else pauseAudio();\n    } else {\n      // Only set the state for canvas use\n      if (playing === true) setIsPlaying(true);else setIsPlaying(false);\n    }\n  }, [playing]);\n  useEffect(() => {\n    var ref; // Do this in an effect to correct on optimised sites\n    if ((ref = player.current) === null || ref === void 0 ? void 0 : ref.duration) setDuration(player.current.duration);\n  }, []); // Call event callbacks\n  useEffect(() => {\n    if (playerInfo.current.ready && isPlaying && onPlay) onPlay();else if (playerInfo.current.ready && onPause) onPause();\n  }, [isPlaying]); // Volume Control\n  useEffect(() => {\n    player.current.volume = volume / 100;\n  }, [volume]); // Reset ready state when src changes\n  useEffect(() => {\n    playerInfo.current.ready = false;\n  }, [srcFile, srcType, srcUrl]); // Play on navigation\n  useOnEnter(() => {\n    if (shouldAutoPlay) playAudio();\n  });\n  useOnExit(() => {\n    if (pauseOnExit) player.current.pause();\n  });\n  useMotionValueEvent(trackProgress, \"change\", val => {\n    var ref;\n    const progressPercent = ((ref = player.current) === null || ref === void 0 ? void 0 : ref.duration) ? val / player.current.duration * 100 : null;\n    if (onTimeUpdate) {\n      onTimeUpdate(val, progressPercent, secondsToMinutes(val));\n    }\n  });\n  const iconStyles = useMemo(() => ({\n    marginRight: showTime || showTrack ? gap : 0,\n    flexShrink: 0,\n    cursor: playPauseCursor\n  }), [playPauseCursor, showTime, showTrack, gap]);\n  return /*#__PURE__*/_jsxs(\"div\", {\n    style: {\n      ...containerStyles,\n      position: \"relative\",\n      overflow: \"hidden\",\n      background,\n      padding,\n      borderRadius\n    },\n    children: [/*#__PURE__*/_jsx(\"audio\", {\n      src: url,\n      loop: loop,\n      className: \"framer-audio\",\n      ref: player,\n      preload: \"metadata\",\n      autoPlay: shouldAutoPlay,\n      onLoadedMetadata: handleMetadata,\n      onCanPlayThrough: handleReady,\n      // Listen to all events for status changes\n      onPlaying: () => handlePlayStateUpdate(\"playingEvent\"),\n      onPlay: () => handlePlayStateUpdate(\"playEvent\"),\n      onSeeked: () => handlePlayStateUpdate(\"seekEvent\"),\n      onPause: () => handlePlayStateUpdate(\"pauseEvent\"),\n      onEnded: () => handleEnd()\n    }), showPlayPause && /*#__PURE__*/_jsx(_Fragment, {\n      children: isPlaying ? /*#__PURE__*/_jsx(PauseIcon, {\n        width: 16,\n        whileTap: {\n          scale: .9\n        },\n        onClick: () => pauseAudio(),\n        style: iconStyles,\n        \"aria-label\": \"pause audio\"\n      }) : /*#__PURE__*/_jsx(PlayIcon, {\n        width: 16,\n        whileTap: {\n          scale: .9\n        },\n        onClick: handlePlayClick,\n        style: iconStyles,\n        \"aria-label\": \"play audio\"\n      })\n    }), showTime && /*#__PURE__*/_jsxs(\"p\", {\n      style: {\n        userSelect: \"none\",\n        color: \"#333\",\n        fontWeight: 500,\n        letterSpacing: -.25,\n        margin: 0,\n        flexShrink: 0,\n        fontFamily: fontStack,\n        fontVariantNumeric: \"tabular-nums\",\n        marginRight: showTrack ? gap : 0,\n        ...font\n      },\n      children: [/*#__PURE__*/_jsx(PlayTime, {\n        startTime: duration * (isMotionValue(progress) ? progress.get() : progress * .01),\n        currentTime: trackProgress\n      }), /*#__PURE__*/_jsx(\"span\", {\n        style: {\n          padding: \"0 2px\"\n        },\n        children: \"/\"\n      }), duration > 0 ? secondsToMinutes(duration) : \"1:34\"]\n    }), showTrack && /*#__PURE__*/_jsx(Slider, {\n      style: {\n        width: \"100%\"\n      },\n      value: trackProgress,\n      fillColor: progressColor,\n      knobSetting: \"Hover\",\n      shadow: `rgba(0,0,0,0)`,\n      knobSize: 10,\n      knobColor: progressColor,\n      onChange: handleSeek,\n      shouldAnimateChange: false,\n      min: 0,\n      max: duration,\n      trackColor: trackColor\n    })]\n  });\n}\nAudio.defaultProps = {\n  background: \"#EBEBEB\",\n  trackColor: \"#FFFFFF\",\n  font: {\n    fontSize: 12\n  },\n  progressColor: \"#333333\",\n  srcUrl: \"https://assets.mixkit.co/music/preview/mixkit-tech-house-vibes-130.mp3\",\n  srcType: SrcType.Url,\n  pauseOnExit: true,\n  borderRadius: 8,\n  padding: 15,\n  progress: 0,\n  volume: 25,\n  loop: false,\n  playing: true,\n  autoPlay: true,\n  showTime: true,\n  showTrack: true,\n  showPlayPause: true,\n  onPlayGlobalPauseOption: \"continue\",\n  trackHeight: 4,\n  gap: 15,\n  height: 50,\n  width: 240\n};\naddPropertyControls(Audio, {\n  srcType: {\n    type: ControlType.Enum,\n    displaySegmentedControl: true,\n    title: \"Source\",\n    options: [SrcType.Url, SrcType.Video]\n  },\n  srcUrl: {\n    type: ControlType.String,\n    title: \" \",\n    placeholder: \".../example.mp4\",\n    hidden(props) {\n      return props.srcType === SrcType.Video;\n    }\n  },\n  srcFile: {\n    type: ControlType.File,\n    title: \" \",\n    allowedFileTypes: [\"mp4\", \"mp3\", \"wav\", \"m4a\"],\n    hidden(props) {\n      return props.srcType === SrcType.Url;\n    }\n  },\n  playing: {\n    title: \"Playing\",\n    type: ControlType.Boolean,\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  loop: {\n    title: \"Loop\",\n    type: ControlType.Boolean,\n    enabledTitle: \"Yes\",\n    disabledTitle: \"No\"\n  },\n  // autoPlay: {\n  //     type: ControlType.Boolean,\n  //     title: \"Autoplay\",\n  //     enabledTitle: \"Yes\",\n  //     disabledTitle: \"No\",\n  // },\n  progress: {\n    title: \"Progress\",\n    type: ControlType.Number,\n    max: 100,\n    min: 0,\n    unit: \"%\"\n  },\n  volume: {\n    type: ControlType.Number,\n    max: 100,\n    min: 0,\n    unit: \"%\"\n  },\n  progressColor: {\n    title: \"Progress\",\n    type: ControlType.Color,\n    defaultValue: Audio.defaultProps.progressColor\n  },\n  trackColor: {\n    title: \"Track\",\n    type: ControlType.Color,\n    defaultValue: Audio.defaultProps.trackColor\n  },\n  background: {\n    title: \"Player\",\n    type: ControlType.Color,\n    defaultValue: Audio.defaultProps.background\n  },\n  font: {\n    title: \"Font\",\n    // @ts-ignore \u2013 Internal\n    type: ControlType.Font,\n    displayFontSize: true\n  },\n  ...paddingControl,\n  ...borderRadiusControl,\n  gap: {\n    type: ControlType.Number,\n    min: 0,\n    max: 100,\n    displayStepper: true\n  },\n  showPlayPause: {\n    type: ControlType.Boolean,\n    title: \"Play/Pause\",\n    enabledTitle: \"Show\",\n    disabledTitle: \"Hide\"\n  },\n  playPauseCursor: {\n    type: ControlType.Enum,\n    title: \"Cursor\",\n    options: [\"default\", \"pointer\"],\n    optionTitles: [\"Default\", \"Pointer\"],\n    defaultValue: \"default\",\n    hidden(props) {\n      return !props.showPlayPause;\n    }\n  },\n  showTrack: {\n    type: ControlType.Boolean,\n    title: \"Track\",\n    enabledTitle: \"Show\",\n    disabledTitle: \"Hide\"\n  },\n  showTime: {\n    type: ControlType.Boolean,\n    title: \"Time\",\n    enabledTitle: \"Show\",\n    disabledTitle: \"Hide\"\n  },\n  pauseOnExit: {\n    type: ControlType.Boolean,\n    title: \"On Leave\",\n    enabledTitle: \"Pause\",\n    disabledTitle: \"Continue\"\n  },\n  onPlayGlobalPauseOption: {\n    type: ControlType.Enum,\n    title: \"On Play\",\n    options: [\"continue\", \"pause\"],\n    optionTitles: [\"Continue All\", \"Pause All\"]\n  },\n  onPlay: {\n    type: ControlType.EventHandler\n  },\n  onPause: {\n    type: ControlType.EventHandler\n  },\n  onEnd: {\n    type: ControlType.EventHandler\n  },\n  onTimeUpdate: {\n    type: ControlType.EventHandler\n  }\n});\nconst trackStyle = {\n  borderRadius: 10,\n  width: \"100%\",\n  overflow: \"hidden\"\n};\nconst trackParentStyle = {\n  position: \"relative\",\n  border: \"1px solid red\",\n  display: \"flex\",\n  alignItems: \"center\",\n  height: \"100%\",\n  width: \"100%\"\n};\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"Audio\": {\n      \"type\": \"reactComponent\",\n      \"name\": \"Audio\",\n      \"slots\": [],\n      \"annotations\": {\n        \"framerIntrinsicWidth\": \"240\",\n        \"framerSupportedLayoutWidth\": \"fixed\",\n        \"framerIntrinsicHeight\": \"50\",\n        \"framerContractVersion\": \"1\",\n        \"framerSupportedLayoutHeight\": \"fixed\"\n      }\n    },\n    \"Props\": {\n      \"type\": \"tsType\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};\n//# sourceMappingURL=./Audio.map", "import { fontStore } from \"framer\";\nfontStore.loadWebFontsFromSelectors([\"GF;Inter-600\"]);\nexport const fonts = [{\n  family: \"Inter\",\n  moduleAsset: {\n    localModuleIdentifier: \"local-module:css/rW0M7uZnx:default\",\n    url: \"https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYMZhrib2Bg-4.ttf\"\n  },\n  style: \"normal\",\n  url: \"https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuGKYMZhrib2Bg-4.ttf\",\n  weight: \"600\"\n}];\nexport const css = ['.framer-wxVCa .framer-styles-preset-1uptkqj:not(.rich-text-wrapper), .framer-wxVCa .framer-styles-preset-1uptkqj.rich-text-wrapper h3 { --framer-font-family: \"Inter\", sans-serif; --framer-font-size: 18px; --framer-font-style: normal; --framer-font-weight: 600; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 40px; --framer-text-alignment: start; --framer-text-color: #ffffff; --framer-text-decoration: none; --framer-text-transform: none; }'];\nexport const className = \"framer-wxVCa\";\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"css\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"fonts\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"className\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};", "import { fontStore } from \"framer\";\nfontStore.loadWebFontsFromSelectors([\"GF;DM Mono-regular\"]);\nexport const fonts = [{\n  family: \"DM Mono\",\n  moduleAsset: {\n    localModuleIdentifier: \"local-module:css/w7B1ofEe0:default\",\n    url: \"https://fonts.gstatic.com/s/dmmono/v11/aFTU7PB1QTsUX8KYhh2aBYyMcKw.ttf\"\n  },\n  style: \"normal\",\n  url: \"https://fonts.gstatic.com/s/dmmono/v11/aFTU7PB1QTsUX8KYhh2aBYyMcKw.ttf\",\n  weight: \"400\"\n}];\nexport const css = ['.framer-sXti5 .framer-styles-preset-dq87cm:not(.rich-text-wrapper), .framer-sXti5 .framer-styles-preset-dq87cm.rich-text-wrapper p { --framer-font-family: \"DM Mono\", monospace; --framer-font-size: 36px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #c1cbd1; --framer-text-decoration: none; --framer-text-transform: none; }'];\nexport const className = \"framer-sXti5\";\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"css\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"className\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"fonts\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};", "import { fontStore } from \"framer\";\nfontStore.loadWebFontsFromSelectors([\"GF;Inter-regular\"]);\nexport const fonts = [{\n  family: \"Inter\",\n  moduleAsset: {\n    localModuleIdentifier: \"local-module:css/XXPBeOBP3:default\",\n    url: \"https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf\"\n  },\n  style: \"normal\",\n  url: \"https://fonts.gstatic.com/s/inter/v12/UcCO3FwrK3iLTeHuS_fvQtMwCp50KnMw2boKoduKmMEVuLyfMZhrib2Bg-4.ttf\",\n  weight: \"400\"\n}];\nexport const css = ['.framer-DEYGx .framer-styles-preset-1xkra39:not(.rich-text-wrapper), .framer-DEYGx .framer-styles-preset-1xkra39.rich-text-wrapper p { --framer-font-family: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #cacfd3; --framer-text-decoration: none; --framer-text-transform: none; }', '@media (max-width: 1599px) and (min-width: 1000px) { .framer-DEYGx .framer-styles-preset-1xkra39:not(.rich-text-wrapper), .framer-DEYGx .framer-styles-preset-1xkra39.rich-text-wrapper p { --framer-font-family: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #cacfd3; --framer-text-decoration: none; --framer-text-transform: none; } }', '@media (max-width: 999px) and (min-width: 0px) { .framer-DEYGx .framer-styles-preset-1xkra39:not(.rich-text-wrapper), .framer-DEYGx .framer-styles-preset-1xkra39.rich-text-wrapper p { --framer-font-family: \"Inter\", \"Inter Placeholder\", sans-serif; --framer-font-size: 14px; --framer-font-style: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: #cacfd3; --framer-text-decoration: none; --framer-text-transform: none; } }'];\nexport const className = \"framer-DEYGx\";\nexport const __FramerMetadata__ = {\n  \"exports\": {\n    \"fonts\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"className\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"css\": {\n      \"type\": \"variable\",\n      \"annotations\": {\n        \"framerContractVersion\": \"1\"\n      }\n    },\n    \"__FramerMetadata__\": {\n      \"type\": \"variable\"\n    }\n  }\n};"],
  "mappings": "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",
  "names": ["Animator", "props", "pathAnimation", "from", "to", "animate", "shouldLoop", "loopOptions", "slots", "endCircle", "hasChildren", "j", "customShape", "u", "placeholderStyles", "p", "emojiStyles", "titleStyles", "subtitleStyles", "firstChild", "getFirstChild", "svgChild", "isSpring", "shapeTransition", "pathLength", "useMotionValue", "opacity", "useTransform", "shapeProps", "isCanvas", "RenderTarget", "attributes", "pathD", "stroke", "strokeWidth", "strokeLinecap", "strokeLinejoin", "element", "splitAndReplace", "svgViewbox", "motion", "addPropertyControls", "ControlType", "string", "child", "ObjectFitType", "SrcType", "getProps", "props", "width", "height", "topLeft", "topRight", "bottomRight", "bottomLeft", "id", "children", "rest", "Video", "newProps", "p", "VideoMemo", "usePlaybackControls", "videoRef", "isInCurrentNavigationTarget", "useIsInCurrentNavigationTarget", "requestingPlay", "pe", "setProgress", "te", "rawProgress", "newProgress", "isAlreadySet", "play", "e", "pause", "useAutoplayBehavior", "playingProp", "muted", "loop", "playsinline", "controls", "initialPlayingProp", "ye", "hasPlayingPropChanged", "setHasPlayingPropChanged", "behavesAsGif", "autoplay", "isMountedAndReadyForProgressChanges", "X", "srcType", "srcFile", "srcUrl", "progress", "objectFit", "backgroundColor", "onSeeked", "onPause", "onPlay", "onEnd", "onClick", "onMouseEnter", "onMouseLeave", "onMouseDown", "onMouseUp", "poster", "posterEnabled", "startTimeProp", "volume", "isSafari", "useIsBrowserSafari", "wasPausedOnLeave", "wasEndedOnLeave", "isOnCanvas", "useIsOnCanvas", "borderRadius", "useRadius", "autoplayBehavior", "isInViewport", "useInView", "startTime", "ue", "rawProgressValue", "isMotionValue", "value", "useOnEnter", "useOnExit", "src", "se", "fragment", "groupsRegex", "capitalizeFirstLetter", "titleCase", "objectFitOptions", "addPropertyControls", "ControlType", "borderRadiusControl", "defaultEvents", "PlayIcon", "props", "p", "motion", "PauseIcon", "u", "FUNC_ERROR_TEXT", "nativeMax", "nativeMin", "NAN", "reTrim", "reIsBadHex", "reIsBinary", "reIsOctal", "freeParseInt", "now", "isObject", "value", "type", "toNumber", "value", "NAN", "isObject", "other", "reTrim", "isBinary", "reIsBinary", "reIsOctal", "freeParseInt", "reIsBadHex", "debounce", "func", "wait", "options", "lastArgs", "lastThis", "maxWait", "result", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "trailing", "FUNC_ERROR_TEXT", "nativeMax", "invokeFunc", "time", "args", "thisArg", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "nativeMin", "shouldInvoke", "now", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "throttle", "KnobOptions", "Slider", "withCSS", "props", "valueProp", "trackHeight", "fillColor", "focusColor", "min", "max", "onChange", "onChangeLive", "onMax", "onMin", "trackColor", "trackRadius", "knobSize", "knobColor", "constrainKnob", "shadow", "shouldAnimateChange", "transition", "overdrag", "knobSetting", "style", "hovered", "setHovered", "ye", "focused", "setFocused", "onCanvas", "RenderTarget", "shouldAnimate", "isConstrained", "showKnob", "input", "pe", "knobPadding", "updateValue", "te", "newVal", "target", "throttledInputUpdate", "animate", "value", "useAutoMotionValue", "transform", "knobX", "useTransform", "normalizedValue", "throttle", "val", "ref", "useOnChange", "isMotionValue", "handleInputChange", "e", "handleMouseDown", "handleMouseUp", "totalKnobWidth", "totalHeight", "u", "p", "motion", "addPropertyControls", "ControlType", "isMotionValue", "v", "MotionValue", "SrcType", "PlayTime", "props", "currentTime", "startTime", "playTime", "setPlayTime", "ye", "ue", "secondsToMinutes", "useOnChange", "latest", "p", "l", "checkIfPlaying", "player", "Audio", "playing", "background", "progressColor", "trackHeight", "gap", "trackColor", "srcUrl", "srcType", "srcFile", "loop", "font", "autoPlay", "progress", "volume", "showTime", "showTrack", "playPauseCursor", "showPlayPause", "onTimeUpdate", "onMetadata", "onPlay", "onPause", "onEnd", "pauseOnExit", "onPlayGlobalPauseOption", "isPlaying", "setIsPlaying", "duration", "setDuration", "pe", "playerInfo", "trackProgress", "useAutoMotionValue", "value", "newValue", "handlePlayStateUpdate", "padding", "usePadding", "borderRadius", "useRadius", "fontSize", "useFontControls", "shouldPlay", "RenderTarget", "shouldPausePlayers", "url", "shouldAutoPlay", "te", "_", "ref", "ref1", "currentDuration", "isNowPlaying", "animate", "pauseAllAudioPlayers", "el", "playAudio", "e", "pauseAudio", "handleMetadata", "initProgress", "handleReady", "handleSeek", "val", "handleEnd", "handlePlayClick", "useOnEnter", "useOnExit", "useMotionValueEvent", "progressPercent", "iconStyles", "se", "u", "containerStyles", "PauseIcon", "PlayIcon", "fontStack", "Slider", "addPropertyControls", "ControlType", "paddingControl", "borderRadiusControl", "fontStore", "fonts", "css", "className", "fontStore", "fonts", "css", "className", "fontStore", "fonts", "css", "className"]
}
