{"version":3,"file":"microlink.min.mjs","sources":["../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/extends.js","../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/.pnpm/@babel+runtime@7.29.2/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/.pnpm/@microlink+react@5.5.24_react-dom@18.3.1_react@18.3.1__react@18.3.1_styled-components@6_be1851483edfcc258a07544e4f2f0cf6/node_modules/@microlink/react/dist/microlink.mjs","../src/index.js"],"sourcesContent":["function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n  var i = toPrimitive(t, \"string\");\n  return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n  if (\"object\" != _typeof(t) || !t) return t;\n  var e = t[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t, r || \"default\");\n    if (\"object\" != _typeof(i)) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n    value: t,\n    enumerable: !0,\n    configurable: !0,\n    writable: !0\n  }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nfunction _objectWithoutProperties(e, t) {\n  if (null == e) return {};\n  var o,\n    r,\n    i = objectWithoutPropertiesLoose(e, t);\n  if (Object.getOwnPropertySymbols) {\n    var n = Object.getOwnPropertySymbols(e);\n    for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);\n  }\n  return i;\n}\nexport { _objectWithoutProperties as default };","function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };","import _extends from '@babel/runtime/helpers/extends';\nimport _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';\nimport React, { useRef, useMemo, useCallback, createElement, useLayoutEffect, useState, useContext, forwardRef, useEffect } from 'react';\nimport { css, styled, keyframes } from 'styled-components';\nimport { getApiUrl as getApiUrl$1, fetchFromApi } from '@microlink/mql';\nexport { fetchFromApi } from '@microlink/mql';\n\nconst _excluded$8 = [\"accessibility\", \"debounce\", \"ellipsis\", \"is\", \"lines\", \"text\"];\nfunction ownKeys$4(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nconst i = _ref => {\n  let {\n      accessibility: i = true,\n      debounce: u = 300,\n      ellipsis: c = \"…\",\n      is: o = \"div\",\n      lines: s = 3,\n      text: f\n    } = _ref,\n    d = _objectWithoutProperties(_ref, _excluded$8);\n  const v = useRef(null),\n    a = useRef(\".\"),\n    m = _objectSpread$4(_objectSpread$4({\n      ref: v\n    }, i ? {\n      title: f\n    } : {}), d),\n    b = useMemo(() => \"string\" == typeof f && f.length > 0, [f]),\n    g = useCallback(() => {\n      if (!b) return;\n      const t = t => {\n          a.current = t, null != v.current && (v.current.textContent = t);\n        },\n        e = () => {\n          var t, e;\n          return null !== (e = null === (t = v.current) || void 0 === t ? void 0 : t.clientHeight) && void 0 !== e ? e : 0;\n        };\n      t(\".\");\n      const r = (e() + 1) * s + 1;\n      if (t(f), e() <= r) return;\n      let n = 0,\n        l = 0,\n        i = f.length;\n      for (; n <= i;) {\n        l = Math.floor((n + i) / 2);\n        t(f.slice(0, l).trim() + c), e() <= r ? n = l + 1 : i = l - 1;\n      }\n      t(f.slice(0, l - 1).trim() + c);\n    }, [c, b, s, f]);\n  return useLayoutEffect(() => {\n    if (g(), null == v.current) return;\n    const t = new ResizeObserver(((t, e) => {\n      let r;\n      const n = () => {\n        r = void 0, t();\n      };\n      return () => {\n        const l = null == r;\n        clearTimeout(r), r = setTimeout(n, e), l && t();\n      };\n    })(g, u));\n    return t.observe(v.current), () => t.disconnect();\n  }, [g, u]), b ? /*#__PURE__*/createElement(o, m, a.current) : null;\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar ipv4 = {exports: {}};\n\nvar hasRequiredIpv4;\n\nfunction requireIpv4 () {\n\tif (hasRequiredIpv4) return ipv4.exports;\n\thasRequiredIpv4 = 1;\n\n\tconst IP_RANGES = [\n\t// 10.0.0.0 - 10.255.255.255\n\t/^(:{2}f{4}:)?10(?:\\.\\d{1,3}){3}$/,\n\t// 127.0.0.0 - 127.255.255.255\n\t/^(:{2}f{4}:)?127(?:\\.\\d{1,3}){3}$/,\n\t// 169.254.1.0 - 169.254.254.255\n\t/^(::f{4}:)?169\\.254\\.([1-9]|1?\\d\\d|2[0-4]\\d|25[0-4])\\.\\d{1,3}$/,\n\t// 172.16.0.0 - 172.31.255.255\n\t/^(:{2}f{4}:)?(172\\.1[6-9]|172\\.2\\d|172\\.3[01])(?:\\.\\d{1,3}){2}$/,\n\t// 192.168.0.0 - 192.168.255.255\n\t/^(:{2}f{4}:)?192\\.168(?:\\.\\d{1,3}){2}$/,\n\t// fc00::/7\n\t/^f[cd][\\da-f]{2}(::1$|:[\\da-f]{1,4}){1,7}$/,\n\t// fe80::/10s\n\t/^fe[89ab][\\da-f](::1$|:[\\da-f]{1,4}){1,7}$/,\n\t// localhost in IPv4\n\t/^localhost$|^0\\.0\\.0\\.0$/];\n\tconst regex = new RegExp(`^(${IP_RANGES.map(re => re.source).join('|')})$`);\n\tipv4.exports = regex.test.bind(regex);\n\tipv4.exports.regex = regex;\n\treturn ipv4.exports;\n}\n\nvar ipv6 = {exports: {}};\n\nvar hasRequiredIpv6;\n\nfunction requireIpv6 () {\n\tif (hasRequiredIpv6) return ipv6.exports;\n\thasRequiredIpv6 = 1;\n\n\tconst IP_RANGES = [\n\t// localhost in IPv6\n\t/^\\[(::1|::)\\]$/];\n\tconst regex = new RegExp(`^(${IP_RANGES.map(re => re.source).join('|')})$`);\n\tipv6.exports = regex.test.bind(regex);\n\tipv6.exports.regex = regex;\n\treturn ipv6.exports;\n}\n\nvar src;\nvar hasRequiredSrc;\n\nfunction requireSrc () {\n\tif (hasRequiredSrc) return src;\n\thasRequiredSrc = 1;\n\n\tsrc = hostname => requireIpv4()(hostname) || requireIpv6()(hostname);\n\treturn src;\n}\n\nvar srcExports = requireSrc();\nvar isLocalAddress = /*@__PURE__*/getDefaultExportFromCjs(srcExports);\n\nconst isSSR = typeof window === 'undefined';\nconst castArray = value => [].concat(value);\nconst getPreferredMedia = (data, mediaProps) => {\n  let prefer;\n  for (let index = 0; index < mediaProps.length; index++) {\n    const key = mediaProps[index];\n    const value = data[key];\n    if (!isNil(value)) {\n      prefer = key;\n      break;\n    }\n  }\n  return prefer;\n};\nconst isFunction = fn => typeof fn === 'function';\nconst isObject = obj => typeof obj === 'object';\nconst isNil = value => value == null;\nconst getUrlPath = data => isObject(data) ? data.url : data;\nconst someProp = (data, props) => data[props.find(prop => !isNil(data[prop]))];\nconst media = {\n  mobile: function () {\n    return css`\n    @media (max-width: 48em) {\n      ${css(...arguments)};\n    }\n  `;\n  },\n  desktop: function () {\n    return css`\n    @media (min-width: 48em) {\n      ${css(...arguments)};\n    }\n  `;\n  }\n};\nconst getApiUrl = _ref => {\n  let {\n    apiKey,\n    contrast = false,\n    data,\n    endpoint,\n    force,\n    headers,\n    media,\n    prerender,\n    proxy,\n    ttl,\n    url\n  } = _ref;\n  return getApiUrl$1(url, {\n    apiKey,\n    audio: media.includes('audio'),\n    data,\n    endpoint,\n    force,\n    headers,\n    iframe: media.includes('iframe'),\n    palette: contrast,\n    prerender,\n    proxy,\n    screenshot: media.includes('screenshot'),\n    ttl,\n    video: media.includes('video')\n  });\n};\nconst isLarge = cardSize => cardSize === 'large';\nconst isSmall = cardSize => cardSize === 'small';\nconst imageProxy = url => isLocalAddress(new URL(url).hostname) ? url : `https://images.weserv.nl/?${new URLSearchParams({\n  url,\n  default: url,\n  l: 9,\n  af: '',\n  il: '',\n  n: -1\n}).toString()}`;\nconst isLazySupported = !isSSR && 'IntersectionObserver' in window;\nconst formatSeconds = secs => {\n  const secsToNum = parseInt(secs, 10);\n  const hours = Math.floor(secsToNum / 3600);\n  const minutes = Math.floor(secsToNum / 60) % 60;\n  const seconds = secsToNum % 60;\n  return [hours, minutes, seconds].filter((v, i) => v > 0 || i > 0).map(v => v >= 10 ? v : `0${v}`).join(':');\n};\nconst clampNumber = (num, min, max) => {\n  switch (true) {\n    case num <= min:\n      return min;\n    case num >= max:\n      return max;\n    default:\n      return num;\n  }\n};\nconst BASE_CLASSNAME = 'microlink_card';\nconst CONTENT_BASE_CLASSNAME = `${BASE_CLASSNAME}__content`;\nconst MEDIA_BASE_CLASSNAME = `${BASE_CLASSNAME}__media`;\nconst CONTROLS_BASE_CLASSNAME = `${MEDIA_BASE_CLASSNAME}__controls`;\nconst classNames = {\n  main: BASE_CLASSNAME,\n  content: CONTENT_BASE_CLASSNAME,\n  title: `${CONTENT_BASE_CLASSNAME}_title`,\n  description: `${CONTENT_BASE_CLASSNAME}_description`,\n  url: `${CONTENT_BASE_CLASSNAME}_url`,\n  mediaWrapper: `${MEDIA_BASE_CLASSNAME}_wrapper`,\n  media: MEDIA_BASE_CLASSNAME,\n  image: `${MEDIA_BASE_CLASSNAME}_image`,\n  videoWrapper: `${MEDIA_BASE_CLASSNAME}_video_wrapper`,\n  video: `${MEDIA_BASE_CLASSNAME}_video`,\n  audioWrapper: `${MEDIA_BASE_CLASSNAME}_audio_wrapper`,\n  audio: `${MEDIA_BASE_CLASSNAME}_audio`,\n  mediaControls: CONTROLS_BASE_CLASSNAME,\n  playbackControl: `${CONTROLS_BASE_CLASSNAME}_playback`,\n  volumeControl: `${CONTROLS_BASE_CLASSNAME}_volume`,\n  rwControl: `${CONTROLS_BASE_CLASSNAME}_rewind`,\n  ffwControl: `${CONTROLS_BASE_CLASSNAME}_fast_forward`,\n  rateControl: `${CONTROLS_BASE_CLASSNAME}_rate`,\n  progressBar: `${CONTROLS_BASE_CLASSNAME}_progress_bar`,\n  progressTime: `${CONTROLS_BASE_CLASSNAME}_progress_time`,\n  spinner: `${CONTROLS_BASE_CLASSNAME}_spinner`,\n  iframe: `${BASE_CLASSNAME}__iframe`\n};\n\nconst _excluded$7 = [\"$useNanoClamp\", \"children\"];\nfunction ownKeys$3(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$3(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$3(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nconst Clamp = _ref => {\n  let {\n    children,\n    className,\n    lines\n  } = _ref;\n  return isNil(children) ? null : /*#__PURE__*/React.createElement(i, {\n    className: className,\n    lines: lines,\n    text: children,\n    is: \"p\"\n  });\n};\nconst StyledClamp = styled(Clamp)`\n  &&& {\n    text-align: inherit;\n    font-weight: inherit;\n    font-family: inherit;\n    color: inherit;\n    margin: 0;\n\n    ${_ref2 => {\n  let {\n    $useNanoClamp\n  } = _ref2;\n  return !$useNanoClamp && css`\n        overflow: hidden;\n        white-space: nowrap;\n        text-overflow: ellipsis;\n      `;\n}}\n  }\n`;\nconst CardText = _ref3 => {\n  let {\n      $useNanoClamp = true,\n      children\n    } = _ref3,\n    props = _objectWithoutProperties(_ref3, _excluded$7);\n  const textProps = $useNanoClamp ? props : _objectSpread$3(_objectSpread$3({}, props), {}, {\n    as: 'p',\n    title: children\n  });\n  return /*#__PURE__*/React.createElement(StyledClamp, _extends({\n    $useNanoClamp: $useNanoClamp\n  }, textProps), children);\n};\n\nconst speed = {\n  short: '100ms',\n  medium: '150ms',\n  long: '300ms'\n};\nconst animation = {\n  short: 'cubic-bezier(.25,.8,.25,1)',\n  medium: 'cubic-bezier(.25,.8,.25,1)',\n  long: 'cubic-bezier(.4, 0, .2, 1)'\n};\nconst createTransition = (properties, s) => {\n  const suffix = `${speed[s]} ${animation[s]}`;\n  return properties.map(property => `${property} ${suffix}`).join(', ');\n};\nconst transition = {\n  short: function () {\n    for (var _len = arguments.length, properties = new Array(_len), _key = 0; _key < _len; _key++) {\n      properties[_key] = arguments[_key];\n    }\n    return createTransition(properties, 'short');\n  },\n  medium: function () {\n    for (var _len2 = arguments.length, properties = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      properties[_key2] = arguments[_key2];\n    }\n    return createTransition(properties, 'medium');\n  },\n  long: function () {\n    for (var _len3 = arguments.length, properties = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      properties[_key3] = arguments[_key3];\n    }\n    return createTransition(properties, 'long');\n  }\n};\n\n// https://primer.style/design/foundations/typography\nconst font = {\n  sans: \"InterUI, -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Segoe UI', Oxygen, Ubuntu, Cantarell, 'Open Sans', sans-serif\",\n  mono: \"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace\"\n};\n\nconst _excluded$6 = [\"autoPlay\", \"children\", \"controls\", \"loop\", \"mediaRef\", \"muted\", \"playsInline\", \"size\"];\nfunction ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nconst initialState = {};\nconst GlobalContext = /*#__PURE__*/React.createContext(initialState);\nconst GlobalState = _ref => {\n  let {\n      autoPlay,\n      children,\n      controls,\n      loop,\n      mediaRef,\n      muted,\n      playsInline,\n      size\n    } = _ref,\n    rest = _objectWithoutProperties(_ref, _excluded$6);\n  const [state, setState] = useState(initialState);\n  const updateState = useCallback(newState => setState(currentState => _objectSpread$2(_objectSpread$2({}, currentState), newState)), []);\n  const props = useMemo(() => ({\n    autoPlay,\n    controls,\n    loop,\n    mediaRef,\n    muted,\n    playsInline,\n    size\n  }), [autoPlay, controls, loop, mediaRef, muted, playsInline, size]);\n  const values = useMemo(() => ({\n    props,\n    state,\n    updateState\n  }), [props, state, updateState]);\n  return /*#__PURE__*/React.createElement(GlobalContext.Provider, {\n    value: values\n  }, children(rest));\n};\n\n/* global URL */\n\nconst REGEX_STRIP_WWW = /^www\\./;\nconst BADGE_WIDTH = '16px';\nconst BADGE_HEIGHT = '12px';\nconst getHostname = href => {\n  if (isNil(href)) return '';\n  const {\n    hostname\n  } = new URL(href);\n  return hostname.replace(REGEX_STRIP_WWW, '');\n};\nconst mobileDescriptionStyle = css`\n  ${media.mobile`\n    > p {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n  `};\n`;\nconst Content = styled('div').attrs({\n  className: classNames.content\n})`\n  display: flex;\n  padding: 10px 15px;\n  min-width: 0;\n  box-sizing: border-box;\n  ${_ref => {\n  let {\n    $cardSize\n  } = _ref;\n  return css`\n    flex: ${!isLarge($cardSize) ? 1 : '0 0 125px'};\n    justify-content: ${!isSmall($cardSize) ? 'space-around' : 'space-between'};\n    flex-direction: ${!isSmall($cardSize) ? 'column' : 'row'};\n    align-items: ${!isSmall($cardSize) ? 'stretch' : 'center'};\n  `;\n}};\n`;\nconst Header = styled('header').attrs({\n  className: classNames.title\n})`\n  text-align: left;\n  font-weight: bold;\n  margin: 0;\n  width: 100%;\n  ${_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  return css`\n    flex-grow: ${!isSmall($cardSize) ? 1.2 : 0.8};\n    font-size: ${!isSmall($cardSize) ? '16px' : '15px'};\n\n    ${isSmall($cardSize) && css`\n      min-width: 0;\n      padding-right: 14px;\n    `}\n  `;\n}}\n`;\nconst Description = styled('div').attrs({\n  className: classNames.description\n})`\n  text-align: left;\n  font-size: 14px;\n  flex-grow: 2;\n  margin: auto 0;\n  line-height: 18px;\n  font-weight: normal;\n  ${_ref3 => {\n  let {\n    $cardSize\n  } = _ref3;\n  return !isLarge($cardSize) && mobileDescriptionStyle;\n}};\n`;\nconst Footer = styled('footer').attrs({\n  className: classNames.url\n})`\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  text-align: left;\n  margin: 0;\n  flex-grow: 0;\n  font-weight: normal;\n  ${_ref4 => {\n  let {\n    $cardSize\n  } = _ref4;\n  return css`\n    font-size: ${!isSmall($cardSize) ? '12px' : '10px'};\n    ${!isSmall($cardSize) && 'width: 100%;'}\n  `;\n}};\n`;\nconst Author = styled(CardText)`\n  opacity: 0.75;\n  transition: ${transition.medium('opacity')};\n  will-change: opacity;\n\n  .${classNames.main}:hover & {\n    opacity: 1;\n  }\n`;\nconst PoweredBy = styled('span').attrs({\n  title: 'microlink.io'\n})`\n  background: url('https://cdn.microlink.io/logo/logo.svg') no-repeat center\n    center;\n  display: block;\n  margin-left: 15px;\n  transition: ${transition.medium('filter', 'opacity')};\n  will-change: filter, opacity;\n  &:not(:hover) {\n    filter: grayscale(100%);\n    opacity: 0.75;\n  }\n\n  min-width: ${BADGE_WIDTH};\n  width: ${BADGE_WIDTH};\n  background-size: ${BADGE_WIDTH};\n  height: ${BADGE_HEIGHT};\n`;\nconst CardContent = () => {\n  const {\n    state: {\n      description,\n      title,\n      url\n    },\n    props: {\n      size\n    }\n  } = useContext(GlobalContext);\n  const isSmallCard = isSmall(size);\n  const formattedUrl = useMemo(() => getHostname(url), [url]);\n  const handleOnClick = useCallback(e => {\n    e.preventDefault();\n    window.open('https://www.microlink.io', '_blank');\n  }, []);\n  return /*#__PURE__*/React.createElement(Content, {\n    $cardSize: size\n  }, /*#__PURE__*/React.createElement(Header, {\n    $cardSize: size\n  }, /*#__PURE__*/React.createElement(CardText, {\n    $useNanoClamp: false\n  }, title)), !isSmallCard && /*#__PURE__*/React.createElement(Description, {\n    $cardSize: size\n  }, /*#__PURE__*/React.createElement(CardText, {\n    lines: 2\n  }, description)), /*#__PURE__*/React.createElement(Footer, {\n    $cardSize: size\n  }, /*#__PURE__*/React.createElement(Author, {\n    $useNanoClamp: false\n  }, formattedUrl), /*#__PURE__*/React.createElement(PoweredBy, {\n    onClick: handleOnClick\n  })));\n};\n\nconst emptyStatePulse = keyframes`\n  0% {\n    background: #e1e8ed;\n  }\n  70% {\n    background: #cdd4d8;\n  }\n  100% {\n    background: #e1e8ed;\n  }\n`;\nconst emptyStateImagePulse = keyframes`\n  0% {\n    background: #e1e8ed;\n  }\n  70% {\n    background: #dce3e8;\n  }\n  100% {\n    background: #e1e8ed;\n  }\n`;\nconst emptyStateAnimation = css`\n  animation: ${emptyStatePulse} .75s linear infinite;\n`;\nconst emptyStateImageAnimation = css`\n  animation: ${emptyStateImagePulse} 1.25s linear infinite;\n`;\n\nconst ImageLoadCatcher = styled('img')`\n  height: 1px;\n  width: 1px;\n  position: absolute;\n  z-index: -1;\n`;\nconst loadingOverlay = css`\n  &::after {\n    content: '';\n    position: absolute;\n    left: 0;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    background: #e1e8ed;\n    z-index: 1;\n    transition: ${transition.medium('opacity', 'visibility')};\n    will-change: opacity;\n\n    ${_ref => {\n  let {\n    $isLoading\n  } = _ref;\n  return css`\n      opacity: ${$isLoading ? 1 : 0};\n      visibility: ${$isLoading ? '$visible' : 'hidden'};\n    `;\n}};\n  }\n`;\n\nconst mediaSizeStyles = {\n  small: css`\n    flex: 0 0 48px;\n  `,\n  normal: css`\n    flex: 0 0 125px;\n\n    ${media.mobile`\n      flex: 0 0 92px;\n    `}\n  `,\n  large: css`\n    flex: 1;\n\n    &::before {\n      padding-bottom: 0;\n    }\n  `\n};\nconst StyledWrap = styled('div')`\n  background: transparent no-repeat center center / cover;\n  display: block;\n  overflow: hidden;\n  height: auto;\n  position: relative;\n\n  &::before {\n    content: '';\n    padding-bottom: 100%;\n    display: block;\n  }\n\n  ${_ref => {\n  let {\n    $cardSize\n  } = _ref;\n  return mediaSizeStyles[$cardSize];\n}};\n\n  ${loadingOverlay};\n`;\nconst Wrap$1 = props => {\n  const {\n    props: {\n      size\n    }\n  } = useContext(GlobalContext);\n  return /*#__PURE__*/React.createElement(StyledWrap, _extends({\n    $cardSize: size\n  }, props));\n};\n\nconst ImageWrap = styled(Wrap$1).attrs({\n  className: `${classNames.media} ${classNames.image}`\n})`\n  background-image: ${_ref => {\n  let {\n    $url\n  } = _ref;\n  return $url ? `url('${imageProxy($url)}')` : '';\n}};\n`;\nconst ImageComponent = props => {\n  const {\n    state: {\n      imageUrl\n    }\n  } = useContext(GlobalContext);\n  return /*#__PURE__*/React.createElement(ImageWrap, _extends({\n    $url: imageUrl\n  }, props));\n};\n\nvar _FooterEmpty;\nconst MediaEmpty = styled(ImageComponent)`\n  ${emptyStateImageAnimation};\n`;\nconst HeaderEmpty = styled('span')`\n  opacity: 0.8;\n  height: 16px;\n  width: ${_ref => {\n  let {\n    $cardSize\n  } = _ref;\n  return !isSmall($cardSize) ? '60%' : '75%';\n}};\n  display: block;\n  background: #e1e8ed;\n  margin: ${_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  return !isSmall($cardSize) ? '2px 0 8px' : '0 20px 0 0';\n}};\n  ${emptyStateAnimation};\n\n  ${_ref3 => {\n  let {\n    $cardSize\n  } = _ref3;\n  return !isLarge($cardSize) && `\n    height: 15px;\n  `;\n}};\n`;\nconst DescriptionEmpty = styled('span')`\n  opacity: 0.8;\n  height: 14px;\n  width: 95%;\n  display: block;\n  position: relative;\n  ${emptyStateAnimation};\n  animation-delay: 0.125s;\n`;\nconst FooterEmpty = styled('span')`\n  opacity: 0.8;\n  height: 12px;\n  width: 30%;\n  display: block;\n  ${emptyStateAnimation} animation-delay: .25s;\n\n  ${_ref4 => {\n  let {\n    $cardSize\n  } = _ref4;\n  return !isLarge($cardSize) && `\n    height: 10px;\n  `;\n}};\n`;\nconst CardEmptyState = () => {\n  const {\n    props: {\n      size\n    }\n  } = useContext(GlobalContext);\n  const isSmallCard = isSmall(size);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MediaEmpty, {\n    $cardSize: size\n  }), /*#__PURE__*/React.createElement(Content, {\n    $cardSize: size\n  }, /*#__PURE__*/React.createElement(HeaderEmpty, {\n    $cardSize: size\n  }), !isSmallCard ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DescriptionEmpty, {\n    $cardSize: size\n  }), /*#__PURE__*/React.createElement(DescriptionEmpty, {\n    $cardSize: size,\n    style: {\n      marginBottom: '12px'\n    }\n  })) : null, _FooterEmpty || (_FooterEmpty = /*#__PURE__*/React.createElement(FooterEmpty, null))));\n};\n\nconst MediaButton = styled('div')`\n  backface-visibility: hidden;\n  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));\n  transition: ${transition.short('transform')};\n  will-change: transform;\n\n  > svg {\n    display: block;\n  }\n\n  &:active:not(:focus) {\n    transform: scale(0.9);\n  }\n`;\n\nvar _path$2, _path2$2;\nconst VolumeMute = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 14 14\"\n}, props), _path$2 || (_path$2 = /*#__PURE__*/React.createElement(\"path\", {\n  fill: \"#FFF\",\n  fillRule: \"evenodd\",\n  stroke: \"none\",\n  strokeWidth: \"1\",\n  d: \"M15.5 6.205l-.705-.705L13 7.295 11.205 5.5l-.705.705L12.295 8 10.5 9.795l.705.705L13 8.705l1.795 1.795.705-.705L13.705 8 15.5 6.205zM9 15a.5.5 0 01-.355-.15L4.835 11H1.5a.5.5 0 01-.5-.5v-5a.5.5 0 01.5-.5h3.335l3.81-3.85a.5.5 0 01.705 0 .5.5 0 01.15.35v13a.5.5 0 01-.5.5z\",\n  transform: \"translate(-1 -1)\"\n})));\nconst VolumeUp = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 14 14\"\n}, props), _path2$2 || (_path2$2 = /*#__PURE__*/React.createElement(\"path\", {\n  fill: \"#FFF\",\n  fillRule: \"evenodd\",\n  stroke: \"none\",\n  strokeWidth: \"1\",\n  d: \"M13.58 4.04l-.765.645a5 5 0 01-.145 6.615l.735.7a6 6 0 00.175-7.94v-.02zM10.79 6a3 3 0 01-.09 3.97l.735.68a4 4 0 00.115-5.295L10.79 6zM9 15a.5.5 0 01-.355-.15L4.835 11H1.5a.5.5 0 01-.5-.5v-5a.5.5 0 01.5-.5h3.335l3.81-3.85a.5.5 0 01.705 0 .5.5 0 01.15.35v13a.5.5 0 01-.5.5z\",\n  transform: \"translate(-1 -1)\"\n})));\nconst BottomControls = styled('div')`\n  z-index: 2;\n  position: absolute;\n  bottom: ${_ref => {\n  let {\n    $cardSize\n  } = _ref;\n  return isLarge($cardSize) ? 18 : 14;\n}}px;\n  left: 0;\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  transition: ${transition.medium('opacity')};\n  will-change: opacity;\n`;\nconst VolumeIcon = styled('svg')`\n  stroke: #fff;\n`;\nconst VolumeButton = styled(MediaButton).attrs({\n  className: classNames.volumeControl\n})`\n  ${VolumeIcon} {\n    width: ${_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  return isLarge($cardSize) ? 16 : 14;\n}}px;\n    height: ${_ref3 => {\n  let {\n    $cardSize\n  } = _ref3;\n  return isLarge($cardSize) ? 16 : 14;\n}}px;\n\n    ${_ref4 => {\n  let {\n    $cardSize\n  } = _ref4;\n  return !isLarge($cardSize) && media.mobile`\n      width: 12px;\n      height: 12px;\n    `;\n}}\n  }\n`;\nconst PlaybackRateButton = styled(MediaButton).attrs({\n  className: classNames.rateControl\n})`\n  font-size: ${_ref5 => {\n  let {\n    $cardSize\n  } = _ref5;\n  return isLarge($cardSize) ? 12 : 10;\n}}px;\n  min-width: ${_ref6 => {\n  let {\n    $cardSize\n  } = _ref6;\n  return isLarge($cardSize) ? 33 : 28;\n}}px;\n  line-height: 1;\n  font-weight: bold;\n  border: 1.5px solid #fff;\n  border-radius: 9999px;\n  padding: 1px 5px;\n  text-align: center;\n  color: #fff;\n  margin-left: 10px;\n\n  ${_ref7 => {\n  let {\n    $cardSize\n  } = _ref7;\n  return !isLarge($cardSize) && media.mobile`\n    font-size: 8px;\n    margin-left: 8px;\n    min-width: 23px;\n  `;\n}}\n`;\nconst TimeLabel = styled('span').attrs({\n  className: classNames.progressTime\n})`\n  margin: ${_ref8 => {\n  let {\n    $right\n  } = _ref8;\n  return !$right ? '0 auto 0 0' : '0 0 0 auto';\n}};\n  font-family: ${font.mono};\n  font-size: 12px;\n  padding: 0 16px;\n  color: #fff;\n  text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n`;\nconst FooterControls = _ref9 => {\n  let {\n    $cardSize,\n    currentTime,\n    endTime,\n    isMuted,\n    onMuteClick,\n    onPlaybackRateClick,\n    playbackRate\n  } = _ref9;\n  const VolumeComponent = useMemo(() => isMuted ? VolumeMute : VolumeUp, [isMuted]);\n  const isLargeCard = useMemo(() => isLarge($cardSize), [$cardSize]);\n  return /*#__PURE__*/React.createElement(BottomControls, {\n    $cardSize: $cardSize\n  }, isLargeCard && /*#__PURE__*/React.createElement(TimeLabel, null, currentTime), /*#__PURE__*/React.createElement(VolumeButton, {\n    title: isMuted ? 'Unmute' : 'Mute',\n    $cardSize: $cardSize,\n    onClick: onMuteClick\n  }, /*#__PURE__*/React.createElement(VolumeIcon, {\n    as: VolumeComponent\n  })), /*#__PURE__*/React.createElement(PlaybackRateButton, {\n    title: \"Playback Rate\",\n    $cardSize: $cardSize,\n    onClick: onPlaybackRateClick\n  }, /*#__PURE__*/React.createElement(\"span\", null, playbackRate, \"x\")), isLargeCard && /*#__PURE__*/React.createElement(TimeLabel, {\n    $right: true\n  }, endTime));\n};\n\nconst _excluded$5 = [\"$isPlaying\"];\nvar _path$1, _path2$1;\nconst Pause = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 16 20\"\n}, props), _path$1 || (_path$1 = /*#__PURE__*/React.createElement(\"path\", {\n  fill: \"#FFF\",\n  fillRule: \"evenodd\",\n  stroke: \"none\",\n  strokeWidth: \"1\",\n  d: \"M12 6h-2a2 2 0 00-2 2v16a2 2 0 002 2h2a2 2 0 002-2V8a2 2 0 00-2-2zm10 0h-2a2 2 0 00-2 2v16a2 2 0 002 2h2a2 2 0 002-2V8a2 2 0 00-2-2z\",\n  transform: \"translate(-8 -6)\"\n})));\nconst Play = props => /*#__PURE__*/React.createElement(\"svg\", _extends({\n  xmlns: \"http://www.w3.org/2000/svg\",\n  viewBox: \"0 0 21 24\"\n}, props), _path2$1 || (_path2$1 = /*#__PURE__*/React.createElement(\"path\", {\n  fill: \"#FFF\",\n  fillRule: \"evenodd\",\n  stroke: \"none\",\n  strokeWidth: \"1\",\n  d: \"M7 28a1 1 0 01-1-1V5a1 1 0 011.501-.865l19 11a1 1 0 010 1.73l-19 11A.998.998 0 017 28z\",\n  transform: \"translate(-6 -4)\"\n})));\nconst iconSizes = {\n  large: '50px',\n  normal: '35px',\n  small: '20px'\n};\nconst PlaybackIcon = styled('svg')`\n  stroke: #fff;\n`;\nconst PlaybackButtonWrap = styled(MediaButton).attrs({\n  className: classNames.playbackControl\n})`\n  ${PlaybackIcon} {\n    ${_ref => {\n  let {\n    $cardSize\n  } = _ref;\n  return css`\n      width: ${iconSizes[$cardSize]};\n      height: ${iconSizes[$cardSize]};\n      padding: ${isLarge($cardSize) ? 0 : '8px'};\n\n      ${!isLarge($cardSize) && !isSmall($cardSize) && media.mobile`\n        width: calc(${iconSizes.small} * 1.2);\n        height: calc(${iconSizes.small} * 1.2);\n      `}\n    `;\n}}\n  }\n`;\nconst PlaybackButton = _ref2 => {\n  let {\n      $isPlaying\n    } = _ref2,\n    props = _objectWithoutProperties(_ref2, _excluded$5);\n  const PlaybackComponent = useMemo(() => $isPlaying ? Pause : Play, [$isPlaying]);\n  return /*#__PURE__*/React.createElement(PlaybackButtonWrap, _extends({\n    title: $isPlaying ? 'Pause' : 'Play'\n  }, props), /*#__PURE__*/React.createElement(PlaybackIcon, {\n    as: PlaybackComponent\n  }));\n};\n\nconst SCRUBBER_SIZE = 12;\nconst scrubberSizeScales = {\n  normal: 0.8,\n  small: 0.9\n};\nconst getScrubberSize = size => Math.floor(SCRUBBER_SIZE * (scrubberSizeScales[size] || 1));\nconst Scrubber = styled('div').attrs(_ref => {\n  let {\n    $isVisible,\n    $positionX\n  } = _ref;\n  return {\n    style: {\n      left: $positionX,\n      transform: `scale(${$isVisible ? 1 : 0.5}) translate(-50%, -50%)`,\n      opacity: $isVisible ? 1 : 0,\n      visibility: $isVisible ? '$visible' : 'hidden'\n    }\n  };\n})`\n  position: absolute;\n  top: 50%;\n  background: #ffffff;\n  border-radius: 50%;\n  transform-origin: center center;\n  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);\n  transition: ${transition.short('transform', 'opacity', 'visibility')};\n  will-change: left, transform, opacity, visibility;\n  backface-visibility: hidden;\n  z-index: 3;\n\n  ${_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  const scrubberSize = getScrubberSize($cardSize);\n  return css`\n      height: ${scrubberSize}px;\n      width: ${scrubberSize}px;\n    `;\n}}\n`;\n\nconst _excluded$4 = [\"$isDragging\", \"$isVisible\", \"label\", \"$positionX\", \"size\"];\nconst BASE_FONT_SIZE = 11;\nconst sizeScales$1 = {\n  normal: 0.8\n};\nconst getMarkerFontSize = size => BASE_FONT_SIZE * (sizeScales$1[size] || 1);\nconst TooltipBase = styled('span').attrs(_ref => {\n  let {\n    $position,\n    $isDragging,\n    $visible\n  } = _ref;\n  return {\n    style: {\n      left: `${$position}px`,\n      top: $visible ? '-4px' : '0px',\n      visibility: $visible ? '$visible' : 'hidden',\n      opacity: $visible ? 1 : 0,\n      transform: `translate(-50%, ${!$isDragging ? -100 : -110}%)`\n    }\n  };\n})`\n  position: absolute;\n  background: rgba(24, 25, 25, 0.75);\n  color: #fff;\n  text-shadow: 0 1px 2px rgba(24, 25, 25, 0.15);\n  padding: 2px 3px;\n  border-radius: 4px;\n  font-family: ${font.mono};\n  font-size: ${_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  return getMarkerFontSize($cardSize);\n}}px;\n  line-height: 1;\n  transition: ${transition.medium('opacity', 'visibility', 'transform')},\n    ${transition.long('top')};\n  will-change: top, left, visibility, opacity, transform;\n  backface-visibility: hidden;\n`;\nconst Tooltip = /*#__PURE__*/forwardRef((_ref3, ref) => {\n  let {\n      $isDragging,\n      $isVisible,\n      label,\n      $positionX,\n      size\n    } = _ref3,\n    props = _objectWithoutProperties(_ref3, _excluded$4);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TooltipBase, _extends({\n    $visible: $isVisible,\n    $position: $positionX,\n    $cardSize: size,\n    ref: ref,\n    $isDragging: $isDragging\n  }, props), label));\n});\nTooltip.displayName = 'Tooltip';\n\nconst _excluded$3 = [\"key\"];\nconst HEIGHT$1 = 6;\nconst PADDING = 6;\nconst heightScales = {\n  normal: 0.7,\n  small: 0.6\n};\nconst activeHeightScales = {\n  small: 0.9,\n  large: 1.4\n};\nconst getProgressBarHeight = size => Math.floor(HEIGHT$1 * (heightScales[size] || 1));\nconst getProgressBarActiveHeight = size => Math.floor(HEIGHT$1 * (activeHeightScales[size] || 1));\nconst OuterWrap$1 = styled('div').attrs(() => ({\n  className: classNames.progressBar\n}))`\n  position: relative;\n  padding: ${PADDING}px ${PADDING / 2}px ${PADDING / 2}px;\n  z-index: 2;\n  backface-visibility: hidden;\n`;\nconst BarsWrap = styled('div').attrs(_ref => {\n  let {\n    $cardSize,\n    $isDragging\n  } = _ref;\n  if ($isDragging) {\n    const activeHeight = getProgressBarActiveHeight($cardSize);\n    return {\n      style: {\n        height: `${activeHeight}px`\n      }\n    };\n  }\n  return {};\n})`\n  background: transparent;\n  border-radius: 9999px;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);\n  background: rgba(255, 255, 255, 0.15);\n  transition: ${transition.short('height')};\n  will-change: height;\n  pointer-events: none;\n  position: relative;\n\n  ${_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  const height = getProgressBarHeight($cardSize);\n  const activeHeight = getProgressBarActiveHeight($cardSize);\n  return css`\n      height: ${height}px;\n\n      ${OuterWrap$1}:hover & {\n        height: ${activeHeight}px;\n      }\n    `;\n}}\n`;\nconst ProgressLine = styled('div')`\n  border-radius: inherit;\n  height: 100%;\n  position: relative;\n  overflow: hidden;\n`;\nconst ProgressMask = styled('div').attrs(_ref3 => {\n  let {\n    $maskScale\n  } = _ref3;\n  return {\n    style: {\n      transform: `scaleX(${$maskScale})`\n    }\n  };\n})`\n  position: absolute;\n  left: 0;\n  top: -50%;\n  height: 200%;\n  width: 100%;\n  background: #ffffff;\n  transform-origin: left center;\n  will-change: transform;\n`;\nconst ProgressHover = styled('div').attrs(_ref4 => {\n  let {\n    $cursorRatio,\n    $isHovering,\n    $progressPercent\n  } = _ref4;\n  return {\n    style: {\n      left: $progressPercent,\n      transform: `scaleX(${$cursorRatio})`,\n      opacity: $isHovering ? 1 : 0,\n      visibility: $isHovering ? '$visible' : 'hidden'\n    }\n  };\n})`\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  background: rgba(255, 255, 255, 0.4);\n  transform-origin: left center;\n  transition: ${transition.short('opacity', 'visibility')};\n  will-change: left, transform, opacity, $visible;\n`;\nconst BufferedChunk = styled('div').attrs(_ref5 => {\n  let {\n    start,\n    end\n  } = _ref5;\n  return {\n    style: {\n      left: `${start}px`,\n      right: `${end}px`\n    }\n  };\n})`\n  background: rgba(255, 255, 255, 0.35);\n  position: absolute;\n  top: 0;\n  bottom: 0;\n`;\nconst ProgressBar = _ref6 => {\n  let {\n    bufferedMedia,\n    cursorX,\n    duration,\n    hoveredTime,\n    $isDragging,\n    $isHovering,\n    onClick,\n    onMouseDown,\n    onMouseOver,\n    progress,\n    showTooltip\n  } = _ref6;\n  const {\n    props: {\n      size\n    }\n  } = useContext(GlobalContext);\n  const wrapRef = useRef();\n  const tooltipRef = useRef();\n  const isSmallCard = useMemo(() => isSmall(size), [size]);\n  const getWrapWidth = useCallback(() => {\n    if (wrapRef.current) {\n      return wrapRef.current.getBoundingClientRect().width - PADDING;\n    }\n    return 0;\n  }, []);\n  const progressRatio = useMemo(() => clampNumber(progress / duration, 0, 1), [duration, progress]);\n  const $progressPercent = useMemo(() => `${clampNumber(progressRatio * 100, 1, 99)}%`, [progressRatio]);\n  const $cursorRatio = useMemo(() => {\n    if (wrapRef.current) {\n      const wrapWidth = getWrapWidth();\n      const startPoint = progressRatio * wrapWidth;\n      const cursorPosition = cursorX - startPoint;\n      const width = wrapWidth - startPoint;\n      if (cursorPosition > 0) {\n        return clampNumber((cursorPosition / width).toFixed(3), 0, 0.99);\n      }\n    }\n    return 0;\n  }, [cursorX, getWrapWidth, progressRatio]);\n  const bufferedMediaChunks = useMemo(() => {\n    const wrapWidth = getWrapWidth();\n    return bufferedMedia.map((chunk, key) => {\n      const start = chunk.start * wrapWidth;\n      const end = wrapWidth - chunk.end * wrapWidth;\n      return {\n        key,\n        start,\n        end\n      };\n    });\n  }, [bufferedMedia, getWrapWidth]);\n  const tooltipLabel = useMemo(() => formatSeconds(hoveredTime), [hoveredTime]);\n  const tooltipPositionX = useMemo(() => {\n    if (wrapRef.current && tooltipRef.current) {\n      const wrapWidth = getWrapWidth();\n      const tooltipWidth = tooltipRef.current.getBoundingClientRect().width;\n      const tooltipHalf = tooltipWidth / 2;\n      return clampNumber(cursorX, tooltipHalf, wrapWidth - tooltipHalf);\n    }\n    return 0;\n  }, [cursorX, getWrapWidth]);\n  const mouseEvents = useMemo(() => ({\n    onClick,\n    onMouseDown,\n    onMouseOver\n  }), [onClick, onMouseDown, onMouseOver]);\n  const showAccessories = useMemo(() => $isDragging || $isHovering, [$isDragging, $isHovering]);\n  return /*#__PURE__*/React.createElement(OuterWrap$1, _extends({\n    $cardSize: size,\n    ref: wrapRef\n  }, mouseEvents), /*#__PURE__*/React.createElement(BarsWrap, {\n    $cardSize: size,\n    $isDragging: $isDragging\n  }, /*#__PURE__*/React.createElement(ProgressLine, null, /*#__PURE__*/React.createElement(ProgressHover, {\n    $cursorRatio: $cursorRatio,\n    $isHovering: $isHovering,\n    $progressPercent: $progressPercent\n  }), bufferedMediaChunks.map(_ref7 => {\n    let {\n        key\n      } = _ref7,\n      chunk = _objectWithoutProperties(_ref7, _excluded$3);\n    return /*#__PURE__*/React.createElement(BufferedChunk, _extends({\n      key: key\n    }, chunk));\n  }), /*#__PURE__*/React.createElement(ProgressMask, {\n    $maskScale: progressRatio\n  })), /*#__PURE__*/React.createElement(Scrubber, {\n    $cardSize: size,\n    $isVisible: showAccessories,\n    $positionX: $progressPercent\n  }), !isSmallCard && /*#__PURE__*/React.createElement(Tooltip, {\n    $isDragging: $isDragging,\n    $isVisible: showAccessories,\n    label: tooltipLabel,\n    $positionX: tooltipPositionX,\n    ref: tooltipRef,\n    size: size\n  })));\n};\n\nvar _path, _path2;\nconst _excluded$2 = [\"$cardSize\"],\n  _excluded2$2 = [\"$cardSize\"],\n  _excluded3 = [\"type\", \"$cardSize\"];\nconst Backward = _ref => {\n  let {\n      $cardSize\n    } = _ref,\n    props = _objectWithoutProperties(_ref, _excluded$2);\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 29\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#FFF\",\n    fillRule: \"evenodd\",\n    stroke: \"none\",\n    strokeWidth: \"1\",\n    d: \"M4 18c0 6.627 5.373 12 12 12s12-5.373 12-12S22.627 6 16 6h-4V1L6 7l6 6V8h4c5.523 0 10 4.477 10 10s-4.477 10-10 10S6 23.523 6 18H4zm15.63 4.13a2.84 2.84 0 01-1.28-.27 2.44 2.44 0 01-.89-.77 3.57 3.57 0 01-.52-1.25 7.69 7.69 0 01-.17-1.68 7.83 7.83 0 01.17-1.68c.094-.445.27-.87.52-1.25.23-.325.535-.59.89-.77.4-.188.838-.28 1.28-.27a2.44 2.44 0 012.16 1 5.23 5.23 0 01.7 2.93 5.23 5.23 0 01-.7 2.93 2.44 2.44 0 01-2.16 1.08zm0-1.22c.411.025.8-.19 1-.55a3.38 3.38 0 00.37-1.51v-1.38a3.31 3.31 0 00-.29-1.5 1.23 1.23 0 00-2.06 0 3.31 3.31 0 00-.29 1.5v1.38a3.38 3.38 0 00.29 1.51c.195.356.575.57.98.55zm-9 1.09v-1.18h2v-5.19l-1.86 1-.55-1.06 2.32-1.3H14v6.5h1.78V22h-5.15z\",\n    transform: \"translate(-4 -1)\"\n  })));\n};\nconst Forward = _ref2 => {\n  let {\n      $cardSize\n    } = _ref2,\n    props = _objectWithoutProperties(_ref2, _excluded2$2);\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    viewBox: \"0 0 24 29\"\n  }, props), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#FFF\",\n    fillRule: \"evenodd\",\n    stroke: \"none\",\n    strokeWidth: \"1\",\n    d: \"M26 18c0 5.523-4.477 10-10 10S6 23.523 6 18 10.477 8 16 8h4v5l6-6-6-6v5h-4C9.373 6 4 11.373 4 18s5.373 12 12 12 12-5.373 12-12h-2zm-6.36 4.13a2.81 2.81 0 01-1.28-.27 2.36 2.36 0 01-.89-.77 3.39 3.39 0 01-.47-1.25 7.12 7.12 0 01-.17-1.68 7.24 7.24 0 01.17-1.68 3.46 3.46 0 01.52-1.25 2.36 2.36 0 01.89-.77c.4-.19.838-.282 1.28-.27a2.44 2.44 0 012.16 1 5.31 5.31 0 01.7 2.93 5.31 5.31 0 01-.7 2.93 2.44 2.44 0 01-2.21 1.08zm0-1.22a1 1 0 001-.55c.22-.472.323-.99.3-1.51v-1.38a3.17 3.17 0 00-.3-1.5 1.22 1.22 0 00-2.05 0 3.18 3.18 0 00-.29 1.5v1.38a3.25 3.25 0 00.29 1.51 1 1 0 001.05.55zm-7.02-3.49c.355.035.71-.06 1-.27a.84.84 0 00.31-.68v-.08a.94.94 0 00-.3-.74 1.2 1.2 0 00-.83-.27 1.65 1.65 0 00-.89.24 2.1 2.1 0 00-.68.68l-.93-.83a5.37 5.37 0 01.44-.51 2.7 2.7 0 01.54-.4 2.55 2.55 0 01.7-.27 3.25 3.25 0 01.87-.1 3.94 3.94 0 011.06.14c.297.078.576.214.82.4.224.168.408.383.54.63.123.26.184.543.18.83a2 2 0 01-.11.67 1.82 1.82 0 01-.32.52 1.79 1.79 0 01-.47.36 2.27 2.27 0 01-.57.2V18c.219.04.431.11.63.21a1.7 1.7 0 01.85.93c.084.234.124.481.12.73a2 2 0 01-.2.92 2 2 0 01-.58.72 2.66 2.66 0 01-.89.45 3.76 3.76 0 01-1.15.16 4.1 4.1 0 01-1-.11 3.1 3.1 0 01-.76-.31 2.76 2.76 0 01-.56-.45 4.22 4.22 0 01-.44-.55l1.07-.81c.082.147.175.288.28.42.105.128.226.243.36.34.137.097.29.171.45.22a2 2 0 00.57.07 1.45 1.45 0 001-.3 1.12 1.12 0 00.34-.85v-.08a1 1 0 00-.37-.8 1.78 1.78 0 00-1.06-.28h-.76v-1.21h.74z\",\n    transform: \"translate(-4 -1)\"\n  })));\n};\nconst SeekIcon = styled('svg')`\n  stroke: #fff;\n  width: ${_ref3 => {\n  let {\n    $cardSize\n  } = _ref3;\n  return isLarge($cardSize) ? 30 : 24;\n}}px;\n  height: ${_ref4 => {\n  let {\n    $cardSize\n  } = _ref4;\n  return isLarge($cardSize) ? 30 : 24;\n}}px;\n\n  ${_ref5 => {\n  let {\n    $cardSize\n  } = _ref5;\n  return !isLarge($cardSize) && media.mobile`\n    width: 0;\n    height: 0;\n  `;\n}}\n`;\nconst SeekButtonWrap = styled(MediaButton)`\n  margin: 0 ${_ref6 => {\n  let {\n    $cardSize\n  } = _ref6;\n  return isLarge($cardSize) ? '28px' : '3px';\n}};\n`;\nconst SeekButton = _ref7 => {\n  let {\n      type = 'rewind',\n      $cardSize\n    } = _ref7,\n    props = _objectWithoutProperties(_ref7, _excluded3);\n  const IconComponent = useMemo(() => type === 'rewind' ? Backward : Forward, [type]);\n  return /*#__PURE__*/React.createElement(SeekButtonWrap, _extends({\n    title: type === 'rewind' ? 'Rewind' : 'Forward',\n    $cardSize: $cardSize\n  }, props), /*#__PURE__*/React.createElement(SeekIcon, {\n    as: IconComponent,\n    $cardSize: $cardSize\n  }));\n};\n\nvar _Svg;\nconst BASE_SIZE = 12;\nconst BASE_OFFSET = 6;\nconst offsetScales = {\n  normal: 0.8,\n  small: 0.6\n};\nconst sizeScales = {\n  normal: 0.9,\n  small: 0.8\n};\nconst getSpinnerOffset = size => Math.floor(BASE_OFFSET * (offsetScales[size] || 1));\nconst getSpinnerSize = size => Math.floor(BASE_SIZE * (sizeScales[size] || 1));\nconst rotate = keyframes`\n  100% {\n    transform: rotate(360deg);\n  }\n`;\nconst dash = keyframes`\n  0% {\n    stroke-dasharray: 1, 150;\n    stroke-dashoffset: 0;\n  }\n  50% {\n    stroke-dasharray: 90, 150;\n    stroke-dashoffset: -35;\n  }\n  100% {\n    stroke-dasharray: 90, 150;\n    stroke-dashoffset: -124;\n  }\n`;\nconst Wrap = styled(MediaButton).attrs(_ref => {\n  let {\n    $isVisible\n  } = _ref;\n  return {\n    style: {\n      opacity: $isVisible ? 1 : 0,\n      visibility: $isVisible ? '$visible' : 'hidden'\n    }\n  };\n})(_ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  const size = `${getSpinnerSize($cardSize)}px`;\n  const offset = `${getSpinnerOffset($cardSize)}px`;\n  return css`\n    position: absolute;\n    width: ${size};\n    right: ${offset};\n    top: ${offset};\n    transition: ${transition.medium('opacity', 'visibility')};\n    will-change: opacity, visibility;\n    pointer-events: none;\n  `;\n});\nconst Svg = styled('svg')`\n  width: 100%;\n  animation: ${rotate} 2s linear infinite;\n  will-change: transform;\n`;\nconst Circle = styled('circle')`\n  stroke: #fff;\n  stroke-linecap: round;\n  stroke-width: 7;\n  fill: none;\n  animation: ${dash} 1.5s ease-in-out infinite;\n  will-change: stroke-dasharray, stroke-dashoffset;\n`;\nconst Spinner = _ref3 => {\n  let {\n    size,\n    $isVisible\n  } = _ref3;\n  return /*#__PURE__*/React.createElement(Wrap, {\n    $cardSize: size,\n    className: classNames.spinner,\n    $isVisible: $isVisible\n  }, _Svg || (_Svg = /*#__PURE__*/React.createElement(Svg, {\n    viewBox: \"0 0 50 50\"\n  }, /*#__PURE__*/React.createElement(Circle, {\n    cx: \"25\",\n    cy: \"25\",\n    r: \"20\"\n  }))));\n};\n\nconst SPACE_KEY = 32;\nconst L_ARROW_KEY = 37;\nconst R_ARROW_KEY = 39;\nconst M_KEY = 77;\nconst OuterWrap = styled('div').attrs({\n  className: classNames.mediaControls\n})`\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  transition: ${transition.long('background')}, ${transition.medium('opacity')};\n  will-change: background;\n  display: flex;\n  flex-direction: column;\n  pointer-events: auto;\n\n  ${_ref => {\n  let {\n    $hasInteracted,\n    $isDragging,\n    $isPlaying\n  } = _ref;\n  const bg = 'rgba(0, 0, 0, 0.35)';\n  const dragBg = 'rgba(0, 0, 0, 0.2)';\n  const isPaused = $hasInteracted && !$isPlaying;\n  return css`\n      .${classNames.main}:hover & {\n        background: ${!$isDragging ? bg : dragBg};\n      }\n\n      .${classNames.main}:not(:hover) & {\n        opacity: ${!$hasInteracted || isPaused ? 1 : 0};\n        ${isPaused && `background: ${bg}`};\n      }\n    `;\n}}\n`;\nconst InnerWrap = styled('div')`\n  position: absolute;\n  left: 0;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  z-index: 2;\n`;\nconst ControlsTop = styled('div')`\n  flex: 1;\n\n  ${_ref2 => {\n  let {\n    $isVisible\n  } = _ref2;\n  return !$isVisible && css`\n      *[class*='${classNames.mediaControls}']:not(.${classNames.progressTime}) {\n        transition: ${transition.medium('opacity', 'visibility')};\n        opacity: 0;\n        visibility: hidden;\n      }\n    `;\n}}\n`;\nconst getNextPlaybackRate = rate => {\n  switch (rate) {\n    case 1:\n      return 1.25;\n    case 1.25:\n      return 1.5;\n    case 1.5:\n      return 2;\n    default:\n      return 1;\n  }\n};\nconst Controls = _ref3 => {\n  let {\n    MediaComponent,\n    mediaProps\n  } = _ref3;\n  const {\n    props: {\n      autoPlay,\n      controls,\n      mediaRef: propRef,\n      muted,\n      loop,\n      size\n    }\n  } = useContext(GlobalContext);\n  const [duration, setDuration] = useState(0);\n  const [progress, setProgress] = useState(0);\n  const [buffered, setBuffered] = useState([]);\n  const [cursorX, setCursorX] = useState(0);\n  const [hoveredTime, setHoveredTime] = useState(0);\n  const [$isPlaying, setIsPlaying] = useState(autoPlay);\n  const [isMuted, setIsMuted] = useState(muted);\n  const [isBuffering, setIsBuffering] = useState(false);\n  const [$isHovering, setIsHovering] = useState(false);\n  const [$isDragging, setIsDragging] = useState(false);\n  const [playbackRate, setPlaybackRate] = useState(1);\n  const [$hasInteracted, setHasInteracted] = useState(autoPlay);\n  const [pausedByDrag, setPausedByDrag] = useState(false);\n  const mediaRef = useRef();\n  const setRefs = useCallback(node => {\n    mediaRef.current = node;\n    if (propRef) {\n      if (isFunction(propRef)) {\n        propRef(node);\n      } else {\n        propRef.current = node;\n      }\n    }\n  }, [propRef]);\n  const isNotSmall = useMemo(() => !isSmall(size), [size]);\n  const mediaEvents = useMemo(() => ({\n    onCanPlay: () => setIsBuffering(false),\n    onLoadedMetadata: e => setDuration(e.currentTarget.duration),\n    onPause: () => setIsPlaying(false),\n    onPlay: () => setIsPlaying(true),\n    onPlaying: () => setIsBuffering(false),\n    onProgress: e => setBuffered(e.currentTarget.buffered),\n    onRateChange: e => setPlaybackRate(e.currentTarget.playbackRate),\n    onTimeUpdate: e => setProgress(e.currentTarget.currentTime),\n    onVolumeChange: e => setIsMuted(e.currentTarget.muted),\n    onWaiting: e => setIsBuffering(true)\n  }), []);\n  const evaluateCursorPosition = useCallback(event => {\n    if (mediaRef.current) {\n      const bounds = event.currentTarget.getBoundingClientRect();\n      const cursor = clampNumber(Math.floor(event.clientX - bounds.left), 0, bounds.width);\n      const time = cursor / bounds.width * mediaRef.current.duration;\n      return {\n        cursor,\n        time\n      };\n    }\n    return {\n      cursor: 0,\n      time: 0\n    };\n  }, []);\n  const togglePlayback = useCallback(() => {\n    if (mediaRef.current) {\n      if (mediaRef.current.paused) {\n        if (!$hasInteracted) {\n          setHasInteracted(true);\n        }\n        mediaRef.current.play();\n      } else {\n        mediaRef.current.pause();\n      }\n    }\n  }, [$hasInteracted]);\n  const jumpTo = useCallback(time => {\n    if (mediaRef.current) {\n      const t = clampNumber(time, 0, mediaRef.current.duration);\n      mediaRef.current.currentTime = t;\n      setProgress(t);\n    }\n  }, []);\n  const onSeekClick = useCallback((event, type) => {\n    event.preventDefault();\n    event.stopPropagation();\n    if (mediaRef.current) {\n      const {\n        currentTime\n      } = mediaRef.current;\n      jumpTo(type === 'rewind' ? currentTime - 10 : currentTime + 30);\n    }\n  }, [jumpTo]);\n  const onMuteClick = useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    if (mediaRef.current) {\n      mediaRef.current.muted = !mediaRef.current.muted;\n    }\n  }, []);\n  const onPlaybackRateClick = useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    if (mediaRef.current) {\n      mediaRef.current.playbackRate = getNextPlaybackRate(mediaRef.current.playbackRate);\n    }\n  }, []);\n  const onProgressBarClick = useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    setIsDragging(false);\n  }, []);\n  const onProgressBarMouseDown = useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    setIsDragging(true);\n    const {\n      time\n    } = evaluateCursorPosition(event);\n    jumpTo(time);\n  }, [evaluateCursorPosition, jumpTo]);\n  const onProgressBarMouseOver = useCallback(() => setIsHovering(true), []);\n  const onWrapClick = useCallback(event => {\n    event.preventDefault();\n    event.stopPropagation();\n    if ($isDragging) {\n      setIsDragging(false);\n    } else {\n      togglePlayback();\n    }\n  }, [$isDragging, togglePlayback]);\n  const onWrapMouseMove = useCallback(event => {\n    if (($isDragging || $isHovering) && mediaRef.current) {\n      event.preventDefault();\n      const {\n        cursor,\n        time\n      } = evaluateCursorPosition(event);\n      setHoveredTime(time);\n      setCursorX(cursor);\n      if ($isDragging) {\n        if (!mediaRef.current.paused) {\n          mediaRef.current.pause();\n          setPausedByDrag(true);\n        }\n        jumpTo(time);\n      }\n    }\n  }, [evaluateCursorPosition, $isDragging, $isHovering, jumpTo]);\n  const onWrapMouseOver = useCallback(event => {\n    if ($isDragging && event.buttons === 0) {\n      setIsDragging(false);\n    }\n  }, [$isDragging]);\n  const onWrapKeyDown = useCallback(event => {\n    if ($isDragging) {\n      return;\n    }\n    const {\n      keyCode\n    } = event;\n    if ([SPACE_KEY, L_ARROW_KEY, R_ARROW_KEY, M_KEY].includes(keyCode) && mediaRef.current) {\n      event.preventDefault();\n      switch (keyCode) {\n        case SPACE_KEY:\n          togglePlayback();\n          break;\n        case L_ARROW_KEY:\n          jumpTo(mediaRef.current.currentTime - 5);\n          break;\n        case R_ARROW_KEY:\n          jumpTo(mediaRef.current.currentTime + 5);\n          break;\n        case M_KEY:\n          mediaRef.current.muted = !mediaRef.current.muted;\n          break;\n      }\n    }\n  }, [$isDragging, jumpTo, togglePlayback]);\n  const outerWrapEvents = useMemo(() => ({\n    onClick: onWrapClick,\n    onKeyDown: onWrapKeyDown,\n    onMouseMove: onWrapMouseMove,\n    onMouseOut: () => setIsHovering(false),\n    onMouseOver: onWrapMouseOver\n  }), [onWrapClick, onWrapKeyDown, onWrapMouseMove, onWrapMouseOver]);\n  const outerWrapTitle = useMemo(() => $hasInteracted ? {\n    title: ''\n  } : {}, [$hasInteracted]);\n  const bufferedMedia = useMemo(() => {\n    if (buffered && buffered.length && mediaRef.current) {\n      return [...Array(buffered.length).keys()].map(index => {\n        return {\n          start: buffered.start(index) / mediaRef.current.duration,\n          end: buffered.end(index) / mediaRef.current.duration\n        };\n      });\n    }\n    return [];\n  }, [buffered]);\n  const currentTime = useMemo(() => formatSeconds(progress || 0), [progress]);\n  const endTime = useMemo(() => formatSeconds(duration || 0), [duration]);\n  const footerControlsProps = useMemo(() => ({\n    $cardSize: size,\n    currentTime,\n    endTime,\n    isMuted,\n    onMuteClick,\n    onPlaybackRateClick,\n    playbackRate\n  }), [currentTime, endTime, isMuted, onMuteClick, onPlaybackRateClick, playbackRate, size]);\n  const progressBarProps = useMemo(() => ({\n    bufferedMedia,\n    cursorX,\n    duration,\n    hoveredTime,\n    $isDragging,\n    $isHovering,\n    onClick: onProgressBarClick,\n    onMouseDown: onProgressBarMouseDown,\n    onMouseOver: onProgressBarMouseOver,\n    progress,\n    showTooltip: $isDragging || $isHovering\n  }), [bufferedMedia, cursorX, duration, hoveredTime, $isDragging, $isHovering, onProgressBarClick, onProgressBarMouseDown, onProgressBarMouseOver, progress]);\n  useEffect(() => {\n    if (!$isDragging && pausedByDrag && mediaRef.current && mediaRef.current.paused) {\n      mediaRef.current.play();\n      setPausedByDrag(false);\n    }\n  }, [pausedByDrag, $isDragging]);\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MediaComponent, _extends({}, mediaProps, mediaEvents, {\n    ref: setRefs,\n    autoPlay: autoPlay,\n    loop: loop,\n    muted: muted\n  })), controls && /*#__PURE__*/React.createElement(OuterWrap, _extends({}, outerWrapTitle, {\n    tabIndex: 0,\n    $hasInteracted: $hasInteracted,\n    $isDragging: $isDragging,\n    $isPlaying: $isPlaying\n  }, outerWrapEvents), /*#__PURE__*/React.createElement(Spinner, {\n    size: size,\n    $isVisible: isBuffering\n  }), !$hasInteracted ? /*#__PURE__*/React.createElement(InnerWrap, null, /*#__PURE__*/React.createElement(PlaybackButton, {\n    $cardSize: size\n  })) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ControlsTop, {\n    $isVisible: !$isDragging\n  }, /*#__PURE__*/React.createElement(InnerWrap, null, isNotSmall && /*#__PURE__*/React.createElement(SeekButton, {\n    className: classNames.rwControl,\n    type: \"rewind\",\n    $cardSize: size,\n    onClick: event => onSeekClick(event, 'rewind')\n  }), /*#__PURE__*/React.createElement(PlaybackButton, {\n    $cardSize: size,\n    $isPlaying: $isPlaying\n  }), isNotSmall && /*#__PURE__*/React.createElement(SeekButton, {\n    className: classNames.ffwControl,\n    type: \"fastforward\",\n    $cardSize: size,\n    onClick: event => onSeekClick(event, 'fastforward')\n  })), isNotSmall && /*#__PURE__*/React.createElement(FooterControls, footerControlsProps)), /*#__PURE__*/React.createElement(ProgressBar, progressBarProps))));\n};\n\nconst VideoDOM = styled('video')`\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n\n  &::media-controls-start-playback-button {\n    display: none;\n    appearance: none;\n  }\n`;\nconst Video = props => {\n  const {\n    state: {\n      imageUrl,\n      playsInline,\n      videoUrl\n    }\n  } = useContext(GlobalContext);\n  const mediaProps = useMemo(() => {\n    const mediaProps = {\n      className: `${classNames.media} ${classNames.video}`,\n      src: videoUrl,\n      playsInline\n    };\n    if (imageUrl) mediaProps.poster = imageProxy(imageUrl);\n    return mediaProps;\n  }, [imageUrl, playsInline, videoUrl]);\n  return /*#__PURE__*/React.createElement(Wrap$1, _extends({\n    className: `${classNames.mediaWrapper} ${classNames.videoWrapper}`\n  }, props), /*#__PURE__*/React.createElement(Controls, {\n    MediaComponent: VideoDOM,\n    mediaProps: mediaProps\n  }));\n};\n\nconst Audio = props => {\n  const {\n    state: {\n      audioUrl\n    }\n  } = useContext(GlobalContext);\n  const mediaProps = useMemo(() => ({\n    className: `${classNames.media} ${classNames.audio}`,\n    src: audioUrl\n  }), [audioUrl]);\n  return (\n    /*#__PURE__*/\n    // eslint-disable-next-line\n    React.createElement(ImageComponent, _extends({\n      className: `${classNames.mediaWrapper} ${classNames.audioWrapper}`\n    }, props), /*#__PURE__*/React.createElement(Controls, {\n      MediaComponent: \"audio\",\n      mediaProps: mediaProps\n    }))\n  );\n};\n\nconst isUrl = url => getUrlPath(url) !== null;\nconst MEDIA_COMPONENT = {\n  video: Video,\n  image: ImageComponent,\n  audio: Audio\n};\nconst getMediaType = (isAudio, isVideo) => {\n  if (isAudio) return 'audio';\n  if (isVideo) return 'video';\n  return 'image';\n};\nconst CardMedia = () => {\n  const {\n    state: {\n      imageUrl,\n      isAudio,\n      isVideo\n    }\n  } = useContext(GlobalContext);\n  const [isLoading, setIsLoading] = useState(isUrl(imageUrl));\n  const mediaType = getMediaType(isAudio, isVideo);\n  const MediaComponent = MEDIA_COMPONENT[mediaType];\n  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(MediaComponent, {\n    $isLoading: isLoading\n  }), isLoading && /*#__PURE__*/React.createElement(ImageLoadCatcher, {\n    src: imageUrl,\n    onLoad: () => setIsLoading(false)\n  }));\n};\n\nconst _excluded$1 = [\"href\", \"rel\", \"target\", \"as\"],\n  _excluded2$1 = [\"contrast\", \"direction\"];\nfunction ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nconst HEIGHT = '382px';\nconst contrastStyle = _ref => {\n  let {\n    $backgroundColor,\n    $color\n  } = _ref;\n  return css`\n  background-color: ${$backgroundColor};\n  border-color: ${$color};\n  transition-property: filter;\n  will-change: filter;\n\n  &&& {\n    color: ${$color};\n  }\n\n  &:hover {\n    filter: brightness(90%);\n  }\n`;\n};\nconst largeStyle = css`\n  flex-direction: column;\n  height: ${HEIGHT};\n  ${media.mobile`\n    height: calc(${HEIGHT} * 7/9);\n  `};\n`;\nconst hoverStyle = css`\n  transition-property: background, border-color;\n  will-change: background, border-color;\n  &:hover {\n    background-color: var(--microlink-hover-background-color, #f5f8fa);\n    border-color: var(--microlink-hover-border-color, #8899a680);\n  }\n`;\nconst rtlStyle = _ref2 => {\n  let {\n    $cardSize\n  } = _ref2;\n  return css`\n  flex-direction: ${isLarge($cardSize) ? 'column-reverse' : 'row-reverse'};\n`;\n};\nconst baseStyle = css(() => `\n  max-width: var(--microlink-max-width, 500px);\n  background-color: var(--microlink-background-color, #fff);\n  border-width: var(--microlink-border-width, 1px);\n  border-style: var(--microlink-border-style, solid);\n  border-color: var(--microlink-border-color, #e1e8ed);\n  color: var(--microlink-color, #181919);\n  overflow: hidden;\n  font-family: ${font.sans};\n  display: flex;\n  text-decoration: none;\n  opacity: 1;\n  position: relative;\n  transition-duration: ${speed.medium};\n  transition-timing-function: ${animation.medium};\n\n  &:active,\n  &:hover {\n    outline: 0;\n  }\n`);\nconst Element = styled('a')(baseStyle, _ref3 => {\n  let {\n    $isLoading,\n    $contrast\n  } = _ref3;\n  return !$isLoading && !$contrast && hoverStyle;\n}, _ref4 => {\n  let {\n    $cardSize\n  } = _ref4;\n  return isLarge($cardSize) && largeStyle;\n}, _ref5 => {\n  let {\n    $direction\n  } = _ref5;\n  return $direction === 'rtl' && rtlStyle;\n}, _ref6 => {\n  let {\n    $backgroundColor,\n    $color,\n    $contrast\n  } = _ref6;\n  return $contrast && $color && $backgroundColor && contrastStyle;\n}, _ref7 => {\n  let {\n    $backgroundColor,\n    $color,\n    $contrast\n  } = _ref7;\n  return $contrast && (!$color || !$backgroundColor) && hoverStyle;\n});\nconst CardWrap = /*#__PURE__*/forwardRef((_ref8, ref) => {\n  let {\n      href,\n      rel = 'noopener noreferrer',\n      target = '_blank',\n      as = 'a'\n    } = _ref8,\n    restProps = _objectWithoutProperties(_ref8, _excluded$1);\n  const {\n    state: {\n      $backgroundColor,\n      color: $color,\n      title\n    },\n    props: {\n      size: $cardSize\n    }\n  } = useContext(GlobalContext);\n  const {\n      contrast: $contrast,\n      direction: $direction\n    } = restProps,\n    props = _objectWithoutProperties(restProps, _excluded2$1);\n  return /*#__PURE__*/createElement(Element, _objectSpread$1(_objectSpread$1(_objectSpread$1({}, as === 'a' ? {\n    href,\n    rel,\n    target\n  } : undefined), props), {}, {\n    $backgroundColor,\n    $cardSize,\n    $color,\n    $contrast,\n    $direction,\n    ref,\n    title\n  }));\n});\nCardWrap.displayName = 'CardWrap';\n\n/* global IntersectionObserver */\n\nconst useIntersectionObserver = (enabled, options) => {\n  const [hasIntersected, setHasIntersected] = useState(false);\n  const refCallback = useCallback(node => {\n    if (enabled) {\n      const onIntersect = (_ref, self) => {\n        let [entry] = _ref;\n        if (entry.isIntersecting) {\n          setHasIntersected(true);\n          self.unobserve(entry.target);\n        }\n      };\n      const observer = new IntersectionObserver(onIntersect, options);\n      if (node !== null) {\n        observer.observe(node);\n      }\n    } else {\n      setHasIntersected(true);\n    }\n  }, [enabled, options]);\n  return [hasIntersected, refCallback];\n};\n\nvar _CardEmpty, _Fragment;\nconst _excluded = [\"className\", \"fetchData\", \"lazy\", \"loading\", \"media\", \"setData\", \"url\", \"apiKey\"],\n  _excluded2 = [\"className\", \"apiKey\", \"autoPlay\", \"controls\", \"direction\", \"lazy\", \"loop\", \"media\", \"fetchData\", \"muted\", \"playsInline\", \"size\"];\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nconst Card = props => {\n  const {\n      className,\n      fetchData,\n      lazy,\n      loading,\n      media: mediaProp,\n      setData,\n      url,\n      apiKey // destructuring to avoid pass it\n    } = props,\n    restProps = _objectWithoutProperties(props, _excluded);\n  const mediaProps = useMemo(() => castArray(mediaProp), [mediaProp]);\n  const {\n    updateState\n  } = useContext(GlobalContext);\n  const [loadingState, setLoading] = useState(true);\n  const [iframeMedia, setIframeMedia] = useState(null);\n  const [isError, setIsError] = useState(false);\n  const isLoadingUndefined = useMemo(() => loading === undefined, [loading]);\n  const [apiUrl, apiUrlProps] = useMemo(() => getApiUrl(_objectSpread(_objectSpread({}, props), {}, {\n    media: mediaProps\n  })), [mediaProps, props]);\n  const isLazyEnabled = useMemo(() => isLazySupported && (lazy === true || isObject(lazy)), [lazy]);\n  const lazyOptions = useMemo(() => isObject(lazy) ? lazy : undefined, [lazy]);\n  const [hasIntersected, cardRef] = useIntersectionObserver(isLazyEnabled, lazyOptions);\n  const canFetchData = useMemo(() => !isLazyEnabled || isLazyEnabled && hasIntersected, [isLazyEnabled, hasIntersected]);\n  const mergeData = useCallback(fetchedData => {\n    const payload = isFunction(setData) ? setData(fetchedData) : _objectSpread(_objectSpread({}, fetchedData), setData);\n    const {\n      title,\n      description,\n      url,\n      video,\n      audio,\n      image,\n      logo,\n      iframe\n    } = payload;\n    const mediaFallback = image || logo || {};\n    let media = mediaFallback;\n    let videoUrl;\n    let audioUrl;\n    let isVideo = false;\n    let isAudio = false;\n    const preferredMedia = getPreferredMedia(payload, mediaProps);\n    switch (preferredMedia) {\n      case 'audio':\n        isAudio = true;\n        audioUrl = getUrlPath(audio);\n        break;\n      case 'video':\n        isVideo = true;\n        videoUrl = getUrlPath(video);\n        break;\n      case 'iframe':\n        setIframeMedia(iframe);\n        break;\n      default:\n        media = someProp(payload, mediaProps) || mediaFallback;\n        break;\n    }\n    const imageUrl = getUrlPath(media);\n    const {\n      color,\n      background_color: $backgroundColor\n    } = media;\n    updateState({\n      url,\n      color,\n      title,\n      description,\n      imageUrl,\n      videoUrl,\n      audioUrl,\n      isVideo,\n      isAudio,\n      $backgroundColor\n    });\n    setLoading(false);\n  }, [updateState, mediaProps, setData]);\n  const toFetchData = useCallback(() => {\n    if (canFetchData) {\n      setLoading(true);\n      const fetch = fetchData ? fetchFromApi(apiUrl, apiUrlProps) : Promise.resolve({});\n      fetch.then(_ref => {\n        let {\n          data\n        } = _ref;\n        return mergeData(data);\n      }).catch(error => {\n        setLoading(false);\n        setIsError(true);\n        console.error(`\n┌───────────────┐\n│ Microlink SDK │\n└───────────────┘\n\n${error.description}\n\n${JSON.stringify(error.data)}\n\nid   ${error.headers['x-request-id']}\nuri  ${error.url}\ncode ${error.code} (${error.statusCode})\n\nmicrolink.io/${error.code.toLowerCase()}\n`);\n      });\n    }\n  }, [apiUrlProps, fetchData, apiUrl, mergeData, canFetchData]);\n  useEffect(toFetchData, [url, setData, hasIntersected]);\n  const isLoading = isLoadingUndefined ? loadingState : loading;\n  if (isError) {\n    return /*#__PURE__*/React.createElement(\"a\", _extends({\n      href: url\n    }, restProps), url);\n  }\n  if (iframeMedia) {\n    if (!isSSR) {\n      iframeMedia.scripts.forEach(attrs => {\n        const hasScript = document.querySelector(`script[src=\"${attrs.src}\"]`);\n        if (!hasScript) {\n          const script = document.createElement('script');\n          Object.keys(attrs).forEach(key => script[key] = attrs[key]);\n          document.body.appendChild(script);\n        }\n      });\n    }\n    return /*#__PURE__*/React.createElement(\"div\", _extends({\n      className: classNames.iframe,\n      dangerouslySetInnerHTML: {\n        __html: iframeMedia.html\n      }\n    }, restProps));\n  }\n  return /*#__PURE__*/React.createElement(CardWrap, _extends({\n    className: `${classNames.main} ${className}`.trim(),\n    href: url,\n    $isLoading: isLoading,\n    ref: cardRef\n  }, restProps), isLoading ? _CardEmpty || (_CardEmpty = /*#__PURE__*/React.createElement(CardEmptyState, null)) : _Fragment || (_Fragment = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(CardMedia, null), /*#__PURE__*/React.createElement(CardContent, null))));\n};\nconst Microlink = _ref2 => {\n  let {\n      className = '',\n      apiKey = undefined,\n      autoPlay = true,\n      controls = true,\n      direction = 'ltr',\n      lazy = true,\n      loop = true,\n      media = ['iframe', 'video', 'audio', 'image', 'logo'],\n      fetchData = true,\n      muted = true,\n      playsInline = true,\n      size = 'normal'\n    } = _ref2,\n    props = _objectWithoutProperties(_ref2, _excluded2);\n  return /*#__PURE__*/React.createElement(GlobalState, _extends({\n    className: className,\n    apiKey: apiKey,\n    autoPlay: autoPlay,\n    controls: controls,\n    direction: direction,\n    lazy: lazy,\n    loop: loop,\n    media: media,\n    fetchData: fetchData,\n    muted: muted,\n    playsInline: playsInline,\n    size: size\n  }, props), otherProps => /*#__PURE__*/React.createElement(Card, otherProps));\n};\n\nexport { Microlink as default, getApiUrl, imageProxy };\n","import Microlink from '@microlink/react'\nimport { createRoot } from 'react-dom'\nimport React from 'react'\n\nfunction parseJSON (value) {\n  try {\n    return JSON.parse(value)\n  } catch (err) {\n    return value\n  }\n}\n\nfunction parseObject (obj) {\n  return Object.keys(obj).reduce(function (acc, key) {\n    acc[key] = parseJSON(obj[key])\n    return acc\n  }, {})\n}\n\nfunction toArray (input) {\n  return (\n    typeof input === 'string'\n      ? Array.from(document.querySelectorAll(input))\n      : [].concat(input)\n  ).filter(Boolean)\n}\n\nfunction microlink (selector, opts, rootNode) {\n  return toArray(selector).forEach(function (el) {\n    el.classList.add('microlink_vanilla')\n    createRoot(rootNode || el).render(\n      React.createElement(\n        Microlink,\n        Object.assign(\n          {\n            as: 'div',\n            url: el.getAttribute('href')\n          },\n          opts,\n          parseObject(el.dataset)\n        )\n      )\n    )\n  })\n}\n\nmicrolink.version = '__VERSION__'\n\nexport default microlink\n"],"names":["_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_typeof","o","Symbol","iterator","constructor","prototype","toPropertyKey","i","toPrimitive","TypeError","String","Number","_defineProperty","defineProperty","value","enumerable","configurable","writable","_objectWithoutProperties","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","propertyIsEnumerable","_excluded$8","ownKeys$4","keys","filter","getOwnPropertyDescriptor","push","_objectSpread$4","forEach","getOwnPropertyDescriptors","defineProperties","_ref","accessibility","debounce","u","ellipsis","c","is","lines","s","text","f","d","v","useRef","a","m","ref","title","b","useMemo","g","useCallback","current","textContent","clientHeight","l","Math","floor","slice","trim","useLayoutEffect","ResizeObserver","clearTimeout","setTimeout","observe","disconnect","createElement","getDefaultExportFromCjs","x","__esModule","hasRequiredIpv4","ipv4","exports","hasRequiredIpv6","src","hasRequiredSrc","ipv6","isLocalAddress","hostname","regex","RegExp","map","re","source","join","test","requireIpv4","requireIpv6","isSSR","window","isFunction","fn","isObject","obj","isNil","getUrlPath","data","url","media","css","isLarge","cardSize","isSmall","imageProxy","URL","URLSearchParams","default","af","il","toString","isLazySupported","formatSeconds","secs","secsToNum","parseInt","clampNumber","num","min","max","CONTROLS_BASE_CLASSNAME","classNames","main","content","description","mediaWrapper","image","videoWrapper","video","audioWrapper","audio","mediaControls","playbackControl","volumeControl","rwControl","ffwControl","rateControl","progressBar","progressTime","spinner","iframe","_excluded$7","ownKeys$3","_objectSpread$3","StyledClamp","styled","children","className","React","_ref2","$useNanoClamp","CardText","_ref3","props","textProps","as","speed","short","medium","long","animation","createTransition","properties","suffix","property","transition","_len","Array","_key","_len2","_key2","_len3","_key3","font","_excluded$6","ownKeys$2","_objectSpread$2","initialState","GlobalContext","createContext","GlobalState","autoPlay","controls","loop","mediaRef","muted","playsInline","size","rest","state","setState","useState","updateState","newState","currentState","values","Provider","REGEX_STRIP_WWW","mobileDescriptionStyle","Content","attrs","$cardSize","Header","Description","Footer","_ref4","Author","PoweredBy","CardContent","useContext","isSmallCard","formattedUrl","href","replace","getHostname","handleOnClick","preventDefault","open","onClick","emptyStatePulse","keyframes","emptyStateImagePulse","emptyStateAnimation","emptyStateImageAnimation","ImageLoadCatcher","loadingOverlay","$isLoading","mediaSizeStyles","small","normal","large","StyledWrap","Wrap$1","ImageWrap","$url","ImageComponent","imageUrl","_FooterEmpty","MediaEmpty","HeaderEmpty","DescriptionEmpty","FooterEmpty","CardEmptyState","Fragment","style","marginBottom","MediaButton","_path$2","_path2$2","VolumeMute","xmlns","viewBox","fill","fillRule","stroke","strokeWidth","transform","VolumeUp","BottomControls","VolumeIcon","VolumeButton","PlaybackRateButton","_ref5","_ref6","_ref7","TimeLabel","_ref8","$right","FooterControls","_ref9","currentTime","endTime","isMuted","onMuteClick","onPlaybackRateClick","playbackRate","VolumeComponent","isLargeCard","_excluded$5","_path$1","_path2$1","Pause","Play","iconSizes","PlaybackIcon","PlaybackButtonWrap","PlaybackButton","$isPlaying","PlaybackComponent","scrubberSizeScales","Scrubber","$isVisible","$positionX","left","opacity","visibility","scrubberSize","_excluded$4","sizeScales$1","TooltipBase","$position","$isDragging","$visible","top","Tooltip","forwardRef","label","displayName","_excluded$3","heightScales","activeHeightScales","getProgressBarActiveHeight","OuterWrap$1","PADDING","BarsWrap","height","activeHeight","ProgressLine","ProgressMask","$maskScale","ProgressHover","$cursorRatio","$isHovering","$progressPercent","BufferedChunk","start","end","right","ProgressBar","bufferedMedia","cursorX","duration","hoveredTime","onMouseDown","onMouseOver","progress","showTooltip","wrapRef","tooltipRef","getWrapWidth","getBoundingClientRect","width","progressRatio","wrapWidth","startPoint","cursorPosition","toFixed","bufferedMediaChunks","chunk","key","tooltipLabel","tooltipPositionX","tooltipHalf","mouseEvents","showAccessories","_path","_path2","_excluded$2","_excluded2$2","_excluded3","Backward","Forward","SeekIcon","SeekButtonWrap","SeekButton","type","IconComponent","_Svg","offsetScales","sizeScales","rotate","dash","Wrap","getSpinnerSize","offset","getSpinnerOffset","Svg","Circle","Spinner","cx","cy","SPACE_KEY","L_ARROW_KEY","R_ARROW_KEY","M_KEY","OuterWrap","$hasInteracted","bg","isPaused","InnerWrap","ControlsTop","Controls","MediaComponent","mediaProps","propRef","setDuration","setProgress","buffered","setBuffered","setCursorX","setHoveredTime","setIsPlaying","setIsMuted","isBuffering","setIsBuffering","setIsHovering","setIsDragging","setPlaybackRate","setHasInteracted","pausedByDrag","setPausedByDrag","setRefs","node","isNotSmall","mediaEvents","onCanPlay","onLoadedMetadata","currentTarget","onPause","onPlay","onPlaying","onProgress","onRateChange","onTimeUpdate","onVolumeChange","onWaiting","evaluateCursorPosition","event","bounds","cursor","clientX","time","togglePlayback","paused","play","pause","jumpTo","onSeekClick","stopPropagation","rate","getNextPlaybackRate","onProgressBarClick","onProgressBarMouseDown","onProgressBarMouseOver","onWrapClick","onWrapMouseMove","onWrapMouseOver","buttons","onWrapKeyDown","keyCode","includes","outerWrapEvents","onKeyDown","onMouseMove","onMouseOut","outerWrapTitle","index","footerControlsProps","progressBarProps","useEffect","tabIndex","VideoDOM","MEDIA_COMPONENT","videoUrl","poster","audioUrl","CardMedia","isAudio","isVideo","isLoading","setIsLoading","mediaType","getMediaType","onLoad","_excluded$1","_excluded2$1","ownKeys$1","_objectSpread$1","contrastStyle","$backgroundColor","$color","largeStyle","hoverStyle","rtlStyle","baseStyle","Element","$contrast","$direction","CardWrap","rel","target","restProps","color","contrast","direction","undefined","_CardEmpty","_Fragment","_excluded","_excluded2","ownKeys","_objectSpread","Card","fetchData","lazy","loading","mediaProp","setData","apiKey","concat","loadingState","setLoading","iframeMedia","setIframeMedia","isError","setIsError","isLoadingUndefined","apiUrl","apiUrlProps","endpoint","force","headers","prerender","proxy","ttl","getApiUrl$1","palette","screenshot","getApiUrl","isLazyEnabled","lazyOptions","hasIntersected","cardRef","enabled","options","setHasIntersected","observer","IntersectionObserver","self","entry","isIntersecting","unobserve","useIntersectionObserver","canFetchData","mergeData","fetchedData","payload","logo","mediaFallback","preferredMedia","prefer","getPreferredMedia","find","prop","someProp","background_color","toFetchData","fetchFromApi","Promise","resolve","then","catch","error","console","JSON","stringify","code","statusCode","toLowerCase","scripts","document","querySelector","script","body","appendChild","dangerouslySetInnerHTML","__html","html","Microlink","otherProps","parseObject","reduce","acc","parse","err","parseJSON","microlink","selector","opts","rootNode","input","from","querySelectorAll","Boolean","el","classList","add","createRoot","render","getAttribute","dataset","version"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7]}