VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /opt/mattermost/client/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //opt/mattermost/client/4402.c412201302fe3ba435e3.js.map
{"version":3,"file":"4402.c412201302fe3ba435e3.js","mappings":"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","sources":["webpack://mattermost-webapp/../node_modules/@giphy/colors/dist/index.js","webpack://mattermost-webapp/../node_modules/throttle-debounce/esm/index.js","webpack://mattermost-webapp/../node_modules/@giphy/js-analytics/dist/index.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/dist/esm/index.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/misc/util.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useAsyncFn.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useDebounce.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useEffectOnce.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useIsomorphicLayoutEffect.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useLatest.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useMountedState.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useRaf.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useThrottle.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useTimeoutFn.js","webpack://mattermost-webapp/../node_modules/@giphy/react-components/node_modules/react-use/lib/useUnmount.js","webpack://mattermost-webapp/../node_modules/intersection-observer/intersection-observer.js","webpack://mattermost-webapp/../node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["// src/index.ts\nvar giphyBlack = \"#121212\";\nvar giphyDarkestGrey = \"#212121\";\nvar giphyDarkGrey = \"#2e2e2e\";\nvar giphyDarkCharcoal = \"#3e3e3e\";\nvar giphyCharcoal = \"#4a4a4a\";\nvar giphyLightCharcoal = \"#5c5c5c\";\nvar giphyLightGrey = \"#a6a6a6\";\nvar giphyLightestGrey = \"#d8d8d8\";\nvar giphyWhiteSmoke = \"#ececec\";\nvar giphyWhite = \"#ffffff\";\nvar giphyBlue = \"#00ccff\";\nvar giphyGreen = \"#00ff99\";\nvar giphyPurple = \"#9933ff\";\nvar giphyRed = \"#ff6666\";\nvar giphyYellow = \"#fff35c\";\nvar giphyAqua = \"#00e6cc\";\nvar giphyLightBlue = \"#3191ff\";\nvar giphyIndigo = \"#6157ff\";\nvar giphyPink = \"#e646b6\";\nvar facebookColor = \"#3894fc\";\nvar twitterColor = \"#00ccff\";\nvar pinterestColor = \"#e54cb5\";\nvar tumblrColor = \"#529ecc\";\nvar instagramColor = \"#c23c8d\";\nvar redditColor = \"#fc6669\";\nvar smsColor = \"#00ff99\";\nvar errorColor = giphyRed;\nvar deleteColor = giphyRed;\nvar primaryCTA = giphyIndigo;\nvar primaryCTADisabled = \"#241F74\";\nvar secondaryCTA = giphyCharcoal;\nvar dimColor = `rgba(0, 0, 0, 0.8)`;\nvar gifOverlayColor = `rgba(0, 0, 0, 0.4)`;\nexport {\n  deleteColor,\n  dimColor,\n  errorColor,\n  facebookColor,\n  gifOverlayColor,\n  giphyAqua,\n  giphyBlack,\n  giphyBlue,\n  giphyCharcoal,\n  giphyDarkCharcoal,\n  giphyDarkGrey,\n  giphyDarkestGrey,\n  giphyGreen,\n  giphyIndigo,\n  giphyLightBlue,\n  giphyLightCharcoal,\n  giphyLightGrey,\n  giphyLightestGrey,\n  giphyPink,\n  giphyPurple,\n  giphyRed,\n  giphyWhite,\n  giphyWhiteSmoke,\n  giphyYellow,\n  instagramColor,\n  pinterestColor,\n  primaryCTA,\n  primaryCTADisabled,\n  redditColor,\n  secondaryCTA,\n  smsColor,\n  tumblrColor,\n  twitterColor\n};\n","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param  {number}    delay -          A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param  {boolean}   [noTrailing] -   Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds while the\n *                                    throttled-function is being called. If noTrailing is false or unspecified, callback will be executed one final time\n *                                    after the last throttled-function call. (After the throttled-function has not been called for `delay` milliseconds,\n *                                    the internal counter is reset).\n * @param  {Function}  callback -       A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n *                                    to `callback` when the throttled-function is executed.\n * @param  {boolean}   [debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is false (at end),\n *                                    schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function}  A new, throttled, function.\n */\nfunction throttle (delay, noTrailing, callback, debounceMode) {\n  /*\n   * After wrapper has stopped being called, this timeout ensures that\n   * `callback` is executed at the proper times in `throttle` and `end`\n   * debounce modes.\n   */\n  var timeoutID;\n  var cancelled = false; // Keep track of the last time `callback` was executed.\n\n  var lastExec = 0; // Function to clear existing timeout\n\n  function clearExistingTimeout() {\n    if (timeoutID) {\n      clearTimeout(timeoutID);\n    }\n  } // Function to cancel next exec\n\n\n  function cancel() {\n    clearExistingTimeout();\n    cancelled = true;\n  } // `noTrailing` defaults to falsy.\n\n\n  if (typeof noTrailing !== 'boolean') {\n    debounceMode = callback;\n    callback = noTrailing;\n    noTrailing = undefined;\n  }\n  /*\n   * The `wrapper` function encapsulates all of the throttling / debouncing\n   * functionality and when executed will limit the rate at which `callback`\n   * is executed.\n   */\n\n\n  function wrapper() {\n    for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n      arguments_[_key] = arguments[_key];\n    }\n\n    var self = this;\n    var elapsed = Date.now() - lastExec;\n\n    if (cancelled) {\n      return;\n    } // Execute `callback` and update the `lastExec` timestamp.\n\n\n    function exec() {\n      lastExec = Date.now();\n      callback.apply(self, arguments_);\n    }\n    /*\n     * If `debounceMode` is true (at begin) this is used to clear the flag\n     * to allow future `callback` executions.\n     */\n\n\n    function clear() {\n      timeoutID = undefined;\n    }\n\n    if (debounceMode && !timeoutID) {\n      /*\n       * Since `wrapper` is being called for the first time and\n       * `debounceMode` is true (at begin), execute `callback`.\n       */\n      exec();\n    }\n\n    clearExistingTimeout();\n\n    if (debounceMode === undefined && elapsed > delay) {\n      /*\n       * In throttle mode, if `delay` time has been exceeded, execute\n       * `callback`.\n       */\n      exec();\n    } else if (noTrailing !== true) {\n      /*\n       * In trailing throttle mode, since `delay` time has not been\n       * exceeded, schedule `callback` to execute `delay` ms after most\n       * recent execution.\n       *\n       * If `debounceMode` is true (at begin), schedule `clear` to execute\n       * after `delay` ms.\n       *\n       * If `debounceMode` is false (at end), schedule `callback` to\n       * execute after `delay` ms.\n       */\n      timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n    }\n  }\n\n  wrapper.cancel = cancel; // Return the wrapper function.\n\n  return wrapper;\n}\n\n/* eslint-disable no-undefined */\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param  {number}   delay -         A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param  {boolean}  [atBegin] -     Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n *                                  after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n *                                  (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n * @param  {Function} callback -      A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n *                                  to `callback` when the debounced-function is executed.\n *\n * @returns {Function} A new, debounced function.\n */\n\nfunction debounce (delay, atBegin, callback) {\n  return callback === undefined ? throttle(delay, atBegin, false) : throttle(delay, callback, atBegin !== false);\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\n\n// src/merge-attributes.ts\nimport { pick } from \"@giphy/js-util\";\nvar mergeAttribute = (attributes, newAttributes, key) => {\n  const result1 = pick(attributes, [key]);\n  const result2 = pick(newAttributes, [key]);\n  if (result1[key] && result2[key]) {\n    return __spreadValues(__spreadValues(__spreadValues({}, attributes), newAttributes), { [key]: result1[key] + \", \" + result2[key] });\n  }\n  return __spreadValues(__spreadValues({}, attributes), newAttributes);\n};\nvar merge_attributes_default = mergeAttribute;\n\n// src/pingback.ts\nimport { getPingbackId, Logger as Logger2 } from \"@giphy/js-util\";\nimport { debounce } from \"throttle-debounce\";\n\n// src/global.ts\nvar global_default = (typeof window !== \"undefined\" ? window : global) || {};\n\n// src/send-pingback.ts\nimport { getGiphySDKRequestHeaders, Logger } from \"@giphy/js-util\";\nvar _a;\nvar environment = ((_a = global_default) == null ? void 0 : _a.GIPHY_PINGBACK_URL) || \"https://pingback.giphy.com\";\nvar pingBackUrl = `${environment}/v2/pingback?apikey=l0HlIwPWyBBUDAUgM`;\nvar sendPingback = (events) => {\n  const headers = getGiphySDKRequestHeaders();\n  headers == null ? void 0 : headers.set(\"Content-Type\", \"application/json\");\n  Logger.debug(`Pingback session`, events);\n  if (!events.length) {\n    return new Promise((resolve) => resolve());\n  }\n  return fetch(pingBackUrl, {\n    method: \"POST\",\n    body: JSON.stringify({ events }),\n    headers\n  }).catch((error) => {\n    Logger.warn(`pingbacks failing to post ${error}`);\n  });\n};\n\n// src/pingback.ts\nvar queuedPingbackEvents = [];\nglobal_default.giphyRandomId = getPingbackId();\nvar loggedInUserId = \"\";\nfunction sendPingbacks() {\n  const sendEvents = [...queuedPingbackEvents];\n  queuedPingbackEvents = [];\n  sendPingback(sendEvents);\n}\nvar debouncedPingbackEvent = debounce(1e3, sendPingbacks);\nvar _a2, _b;\n(_b = (_a2 = global_default).addEventListener) == null ? void 0 : _b.call(_a2, \"beforeunload\", sendPingbacks);\nvar pingback = ({\n  userId,\n  eventType,\n  actionType,\n  attributes,\n  queueEvents = true,\n  analyticsResponsePayload\n}) => {\n  loggedInUserId = userId ? String(userId) : loggedInUserId;\n  const newEvent = {\n    ts: Date.now(),\n    attributes,\n    action_type: actionType,\n    user_id: getPingbackId(),\n    analytics_response_payload: analyticsResponsePayload\n  };\n  if (loggedInUserId) {\n    newEvent.logged_in_user_id = loggedInUserId;\n  }\n  if (newEvent.analytics_response_payload) {\n    newEvent.analytics_response_payload = `${newEvent.analytics_response_payload}${Logger2.ENABLED ? \"&mode=verification\" : \"\"}`;\n  }\n  if (eventType) {\n    newEvent.event_type = eventType;\n  }\n  queuedPingbackEvents.push(newEvent);\n  queueEvents ? debouncedPingbackEvent() : sendPingbacks();\n};\nvar pingback_default = pingback;\nexport {\n  merge_attributes_default as mergeAttributes,\n  pingback_default as pingback\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n  for (var prop in b || (b = {}))\n    if (__hasOwnProp.call(b, prop))\n      __defNormalProp(a, prop, b[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b)) {\n      if (__propIsEnum.call(b, prop))\n        __defNormalProp(a, prop, b[prop]);\n    }\n  return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __objRest = (source, exclude) => {\n  var target = {};\n  for (var prop in source)\n    if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\n      target[prop] = source[prop];\n  if (source != null && __getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(source)) {\n      if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\n        target[prop] = source[prop];\n    }\n  return target;\n};\nvar __async = (__this, __arguments, generator) => {\n  return new Promise((resolve, reject) => {\n    var fulfilled = (value) => {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var rejected = (value) => {\n      try {\n        step(generator.throw(value));\n      } catch (e) {\n        reject(e);\n      }\n    };\n    var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n    step((generator = generator.apply(__this, __arguments)).next());\n  });\n};\n\n// src/index.ts\nimport { appendGiphySDKRequestHeader } from \"@giphy/js-util\";\n\n// src/components/attribution/index.tsx\nimport React4 from \"react\";\nimport styled3 from \"styled-components\";\n\n// src/components/attribution/avatar.tsx\nimport React, { useRef } from \"react\";\nimport styled from \"styled-components\";\nvar getSmallAvatar = (avatar) => {\n  var _a, _b;\n  if (!avatar)\n    return \"\";\n  const ext = (_b = (_a = avatar == null ? void 0 : avatar.split(\".\")) == null ? void 0 : _a.pop()) == null ? void 0 : _b.toLowerCase();\n  return avatar.replace(`.${ext}`, `/80h.${ext}`);\n};\nvar Img = styled.img`\n    object-fit: cover;\n    width: 32px;\n    height: 32px;\n    margin-right: 8px;\n`;\nvar Avatar = ({ user, className = \"\" }) => {\n  const defaultAvatarId = useRef(Math.floor(Math.random() * 5) + 1);\n  const url = user.avatar_url ? getSmallAvatar(user.avatar_url) : `https://media.giphy.com/avatars/default${defaultAvatarId.current}.gif`;\n  return /* @__PURE__ */ React.createElement(Img, { src: url, className });\n};\nvar avatar_default = Avatar;\n\n// src/components/attribution/user.tsx\nimport React3 from \"react\";\nimport styled2 from \"styled-components\";\n\n// src/components/attribution/verified-badge.tsx\nimport { giphyBlack } from \"@giphy/colors\";\nimport React2 from \"react\";\nvar VerifiedBadge = ({ className = \"\", size = 17, fill = \"#15CDFF\" }) => /* @__PURE__ */ React2.createElement(\"svg\", { className: [VerifiedBadge.className, className].join(\" \"), height: size, width: \"19px\", viewBox: \"0 0 19 17\" }, /* @__PURE__ */ React2.createElement(\n  \"path\",\n  {\n    className: VerifiedBadge.checkMarkClassName,\n    d: \"M9.32727273,9.44126709 L9.32727273,3.03016561 L6.55027155,3.03016561 L6.55027155,10.8150746 L6.55027155,12.188882 L12.1042739,12.188882 L12.1042739,9.44126709 L9.32727273,9.44126709 Z\",\n    fill: giphyBlack,\n    transform: \"translate(9.327273, 7.609524) scale(-1, 1) rotate(-45.000000) translate(-9.327273, -7.609524) \"\n  }\n), /* @__PURE__ */ React2.createElement(\"g\", { transform: \"translate(-532.000000, -466.000000)\", fill }, /* @__PURE__ */ React2.createElement(\"g\", { transform: \"translate(141.000000, 235.000000)\" }, /* @__PURE__ */ React2.createElement(\"g\", { transform: \"translate(264.000000, 0.000000)\" }, /* @__PURE__ */ React2.createElement(\"g\", { transform: \"translate(10.000000, 224.000000)\" }, /* @__PURE__ */ React2.createElement(\"g\", { transform: \"translate(114.000000, 2.500000)\" }, /* @__PURE__ */ React2.createElement(\"path\", { d: \"M15.112432,4.80769231 L16.8814194,6.87556817 L19.4157673,7.90116318 L19.6184416,10.6028916 L21.0594951,12.9065042 L19.6184416,15.2101168 L19.4157673,17.9118452 L16.8814194,18.9374402 L15.112432,21.0053161 L12.4528245,20.3611511 L9.79321699,21.0053161 L8.02422954,18.9374402 L5.48988167,17.9118452 L5.28720734,15.2101168 L3.84615385,12.9065042 L5.28720734,10.6028916 L5.48988167,7.90116318 L8.02422954,6.87556817 L9.79321699,4.80769231 L12.4528245,5.4518573 L15.112432,4.80769231 Z M17.8163503,10.8991009 L15.9282384,9.01098901 L11.5681538,13.3696923 L9.68115218,11.4818515 L7.81302031,13.3499833 L9.7011322,15.2380952 L11.5892441,17.1262071 L17.8163503,10.8991009 Z\" })))))));\nVerifiedBadge.className = \"giphy-verified-badge\";\nVerifiedBadge.checkMarkClassName = \"giphy-verified-checkmark\";\nvar verified_badge_default = VerifiedBadge;\n\n// src/components/attribution/user.tsx\nvar Username = styled2.div`\n    color: white;\n    font-size: 16px;\n    font-weight: 700;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    -webkit-font-smoothing: antialiased;\n`;\nvar VerifiedBadge2 = styled2(verified_badge_default)`\n    margin-left: 4px;\n    flex-shrink: 0;\n`;\nvar Container = styled2.div`\n    display: flex;\n    align-items: center;\n    min-width: 0;\n`;\nvar User = ({ user }) => {\n  const { display_name, username } = user;\n  return /* @__PURE__ */ React3.createElement(Container, null, /* @__PURE__ */ React3.createElement(Username, null, display_name || `@${username}`), user.is_verified ? /* @__PURE__ */ React3.createElement(VerifiedBadge2, { size: 14 }) : null);\n};\nvar user_default = User;\n\n// src/components/attribution/index.tsx\nvar Container2 = styled3.div`\n    display: flex;\n    align-items: center;\n    font-family: interface, helvetica, arial;\n`;\nvar Avatar2 = styled3(avatar_default)`\n    flex-shrink: 0;\n`;\nvar Attribution = ({ gif, className, onClick }) => {\n  const { user } = gif;\n  if (!(user == null ? void 0 : user.username) && !(user == null ? void 0 : user.display_name)) {\n    return null;\n  }\n  return /* @__PURE__ */ React4.createElement(\n    Container2,\n    {\n      className: [Attribution.className, className].join(\" \"),\n      onClick: (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        if (onClick) {\n          onClick(gif);\n        } else {\n          const url = user.profile_url;\n          if (url)\n            window.open(url, \"_blank\");\n        }\n      }\n    },\n    /* @__PURE__ */ React4.createElement(Avatar2, { user }),\n    /* @__PURE__ */ React4.createElement(user_default, { user: gif.user })\n  );\n};\nAttribution.className = \"giphy-attribution\";\nvar attribution_default = Attribution;\n\n// src/components/attribution/overlay.tsx\nimport React5, { useRef as useRef2 } from \"react\";\nimport styled4 from \"styled-components\";\nvar Background = styled4.div`\n    background: linear-gradient(rgba(0, 0, 0, 0), rgba(18, 18, 18, 0.6));\n    cursor: default;\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    height: 75px;\n    pointer-events: none;\n`;\nvar Attribution2 = styled4(attribution_default)`\n    position: absolute;\n    bottom: 10px;\n    left: 10px;\n    right: 10px;\n`;\nvar Container3 = styled4.div`\n    transition: opacity 150ms ease-in;\n`;\nvar AttributionOverlay = ({ gif, isHovered, onClick }) => {\n  const hasHovered = useRef2(isHovered);\n  if (isHovered) {\n    hasHovered.current = true;\n  }\n  return gif.user && hasHovered.current ? /* @__PURE__ */ React5.createElement(Container3, { style: { opacity: isHovered ? 1 : 0 } }, /* @__PURE__ */ React5.createElement(Background, null), /* @__PURE__ */ React5.createElement(Attribution2, { gif, onClick })) : null;\n};\nvar overlay_default = AttributionOverlay;\n\n// src/components/carousel.tsx\nimport { gifPaginator } from \"@giphy/js-fetch-api\";\nimport { getGifWidth } from \"@giphy/js-util\";\nimport React9, { PureComponent } from \"react\";\nimport styled6 from \"styled-components\";\nimport { debounce } from \"throttle-debounce\";\n\n// src/util/observer.tsx\nimport \"intersection-observer\";\nimport React6, { useEffect, useRef as useRef3 } from \"react\";\nvar Observer = ({ children, className, onVisibleChange, config }) => {\n  const container = useRef3(null);\n  useEffect(() => {\n    let io;\n    if (container.current) {\n      io = new IntersectionObserver(([entry]) => {\n        if (onVisibleChange)\n          onVisibleChange(entry.isIntersecting);\n      }, config);\n      io.observe(container.current);\n    }\n    return () => io == null ? void 0 : io.disconnect();\n  }, [onVisibleChange, container, config]);\n  return /* @__PURE__ */ React6.createElement(\"div\", { ref: container, className }, children);\n};\nvar observer_default = Observer;\n\n// src/components/gif.tsx\nimport { giphyBlue, giphyGreen, giphyPurple, giphyRed, giphyYellow } from \"@giphy/colors\";\nimport { Logger, getAltText, getBestRendition, getGifHeight } from \"@giphy/js-util\";\nimport \"intersection-observer\";\nimport React8, { useContext as useContext2, useEffect as useEffect2, useRef as useRef4, useState } from \"react\";\nimport styled5 from \"styled-components\";\n\n// src/util/pingback.ts\nimport { pingback } from \"@giphy/js-analytics\";\nimport { getClientRect } from \"@giphy/js-util\";\nvar firePingback = (actionType) => (gif, userId, target, attributes = {}) => {\n  if (!gif.analytics_response_payload) {\n    return;\n  }\n  pingback({\n    analyticsResponsePayload: gif.analytics_response_payload,\n    userId,\n    actionType,\n    attributes: __spreadValues({ position: JSON.stringify(getClientRect(target)) }, attributes)\n  });\n};\nvar onGifSeen = (gif, userId, position, attributes = {}) => {\n  if (!gif.analytics_response_payload) {\n    return;\n  }\n  pingback({\n    analyticsResponsePayload: gif.analytics_response_payload,\n    userId,\n    actionType: \"SEEN\",\n    attributes: __spreadValues({ position: JSON.stringify(position) }, attributes)\n  });\n};\nvar onGifClick = firePingback(\"CLICK\");\nvar onGifHover = firePingback(\"HOVER\");\n\n// src/components/pingback-context-manager.tsx\nimport { mergeAttributes } from \"@giphy/js-analytics\";\nimport React7, { createContext, useContext } from \"react\";\nvar PingbackContext = createContext({});\nvar PingbackContextManager = ({ attributes, children }) => {\n  const { attributes: parentAttributes = {} } = useContext(PingbackContext);\n  return /* @__PURE__ */ React7.createElement(PingbackContext.Provider, { value: { attributes: mergeAttributes(parentAttributes, attributes, \"layout_type\") } }, children);\n};\nvar pingback_context_manager_default = PingbackContextManager;\n\n// src/components/gif.tsx\nvar Container4 = styled5.div`\n    position: relative;\n    display: block;\n    img {\n        display: block;\n    }\n    .${verified_badge_default.className} {\n        g {\n            fill: white;\n        }\n    }\n    .${verified_badge_default.checkMarkClassName} {\n        opacity: 0;\n    }\n`;\nvar GRID_COLORS = [giphyBlue, giphyGreen, giphyPurple, giphyRed, giphyYellow];\nvar getColor = () => GRID_COLORS[Math.round(Math.random() * (GRID_COLORS.length - 1))];\nvar hoverTimeoutDelay = 200;\nvar placeholder = \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar noop = () => {\n};\nvar RenderOnClient = ({ children }) => {\n  const [render, setRender] = useState(false);\n  useEffect2(() => {\n    setRender(true);\n  }, []);\n  return render ? /* @__PURE__ */ React8.createElement(React8.Fragment, null, children) : null;\n};\nvar Gif = ({\n  gif,\n  width,\n  percentWidth,\n  height: forcedHeight,\n  onGifRightClick = noop,\n  className = \"\",\n  onGifClick: onGifClick2 = noop,\n  onGifKeyPress = noop,\n  onGifSeen: onGifSeen2 = noop,\n  onGifVisible = noop,\n  user = {},\n  backgroundColor,\n  overlay,\n  hideAttribution = false,\n  noLink = false,\n  borderRadius = 4,\n  style,\n  tabIndex\n}) => {\n  const [hasFiredSeen, setHasFiredSeen] = useState(false);\n  const [isHovered, setHovered] = useState(false);\n  const [shouldShowMedia, setShouldShowMedia] = useState(!canUseDOM);\n  const [loadedClassname, setLoadedClassName] = useState(\"\");\n  const defaultBgColor = useRef4(getColor());\n  const container = useRef4(null);\n  const image = useRef4(null);\n  const showGifObserver = useRef4();\n  const fullGifObserver = useRef4();\n  const hoverTimeout = useRef4();\n  const sendOnSeen = useRef4(noop);\n  const { attributes } = useContext2(PingbackContext);\n  let Overlay = overlay;\n  if (!Overlay && !hideAttribution) {\n    Overlay = overlay_default;\n  }\n  const onMouseOver = (e) => {\n    clearTimeout(hoverTimeout.current);\n    e.persist();\n    setHovered(true);\n    hoverTimeout.current = window.setTimeout(() => {\n      onGifHover(gif, user == null ? void 0 : user.id, e.target, attributes);\n    }, hoverTimeoutDelay);\n  };\n  const onMouseLeave = () => {\n    clearTimeout(hoverTimeout.current);\n    setHovered(false);\n  };\n  const onClick = (e) => {\n    onGifClick(gif, user == null ? void 0 : user.id, e.target, attributes);\n    onGifClick2(gif, e);\n  };\n  const onKeyPress = (e) => {\n    onGifKeyPress(gif, e);\n  };\n  sendOnSeen.current = (entry) => {\n    setHasFiredSeen(true);\n    Logger.debug(`GIF ${gif.id} seen. ${gif.title}`);\n    onGifSeen(gif, user == null ? void 0 : user.id, entry.boundingClientRect, attributes);\n    onGifSeen2 == null ? void 0 : onGifSeen2(gif, entry.boundingClientRect);\n    if (fullGifObserver.current) {\n      fullGifObserver.current.disconnect();\n    }\n  };\n  const watchGif = () => {\n    if (!fullGifObserver.current) {\n      fullGifObserver.current = new IntersectionObserver(\n        ([entry]) => {\n          if (entry.isIntersecting) {\n            sendOnSeen.current(entry);\n          }\n        },\n        { threshold: [0.99] }\n      );\n    }\n    if (!hasFiredSeen && container.current && fullGifObserver.current) {\n      fullGifObserver.current.observe(container.current);\n    }\n  };\n  const onImageLoad = (e) => {\n    watchGif();\n    onGifVisible(gif, e);\n    setLoadedClassName(Gif.imgLoadedClassName);\n  };\n  useEffect2(() => {\n    var _a, _b;\n    if ((_a = image.current) == null ? void 0 : _a.complete) {\n      watchGif();\n      onGifVisible(gif);\n    }\n    (_b = fullGifObserver.current) == null ? void 0 : _b.disconnect();\n    setHasFiredSeen(false);\n  }, [gif.id]);\n  useEffect2(() => {\n    showGifObserver.current = new IntersectionObserver(([entry]) => {\n      const { isIntersecting } = entry;\n      setShouldShowMedia(isIntersecting);\n      if (!isIntersecting && fullGifObserver.current) {\n        fullGifObserver.current.disconnect();\n      }\n    });\n    showGifObserver.current.observe(container.current);\n    return () => {\n      if (showGifObserver.current)\n        showGifObserver.current.disconnect();\n      if (fullGifObserver.current)\n        fullGifObserver.current.disconnect();\n      if (hoverTimeout.current)\n        clearTimeout(hoverTimeout.current);\n    };\n  }, []);\n  const height = forcedHeight || getGifHeight(gif, width);\n  let percentHeight;\n  if (percentWidth) {\n    const ratio = Math.round(height / width * 100);\n    percentHeight = `${ratio}%`;\n  }\n  const bestRendition = getBestRendition(gif.images, width, height);\n  const rendition = gif.images[bestRendition.renditionName];\n  const background = backgroundColor || // <- specified background prop\n  // sticker has black if no backgroundColor is specified\n  (gif.is_sticker ? `url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADgAAAA4AQMAAACSSKldAAAABlBMVEUhIiIWFhYoSqvJAAAAGElEQVQY02MAAv7///8PWxqIPwDZw5UGABtgwz2xhFKxAAAAAElFTkSuQmCC') 0 0` : defaultBgColor.current);\n  const overflow = borderRadius ? \"hidden\" : \"unset\";\n  return /* @__PURE__ */ React8.createElement(\n    Container4,\n    {\n      as: noLink ? \"div\" : \"a\",\n      href: noLink ? void 0 : gif.url,\n      \"data-giphy-id\": gif.id,\n      \"data-giphy-is-sticker\": gif.is_sticker,\n      style: __spreadValues({\n        width: percentWidth || width,\n        height: percentHeight || height,\n        overflow,\n        borderRadius\n      }, style),\n      className: [Gif.className, className].join(\" \"),\n      onMouseOver,\n      onMouseLeave,\n      onClick,\n      onContextMenu: (e) => onGifRightClick(gif, e),\n      onKeyPress,\n      tabIndex,\n      ref: container\n    },\n    /* @__PURE__ */ React8.createElement(\"picture\", null, /* @__PURE__ */ React8.createElement(\n      \"source\",\n      {\n        type: \"image/webp\",\n        srcSet: shouldShowMedia ? rendition.webp : placeholder,\n        suppressHydrationWarning: true\n      }\n    ), /* @__PURE__ */ React8.createElement(\n      \"img\",\n      {\n        ref: image,\n        suppressHydrationWarning: true,\n        className: [Gif.imgClassName, loadedClassname].join(\" \"),\n        src: shouldShowMedia ? rendition.url : placeholder,\n        style: { background },\n        width: \"100%\",\n        height: \"100%\",\n        alt: getAltText(gif),\n        onLoad: shouldShowMedia ? onImageLoad : () => {\n        }\n      }\n    )),\n    Overlay && // only render the overlay on the client since it depends on shouldShowMedia\n    /* @__PURE__ */ React8.createElement(RenderOnClient, null, shouldShowMedia && /* @__PURE__ */ React8.createElement(Overlay, { gif, isHovered, width, height }))\n  );\n};\nGif.className = \"giphy-gif\";\nGif.imgClassName = \"giphy-gif-img\";\nGif.imgLoadedClassName = \"giphy-img-loaded\";\nvar gif_default = Gif;\n\n// src/components/carousel.tsx\nvar Container5 = styled6.div`\n    -webkit-overflow-scrolling: touch;\n    overflow-x: auto;\n    overflow-y: hidden;\n    white-space: nowrap;\n    position: relative;\n`;\nvar Gif2 = styled6(gif_default)`\n    position: relative;\n    display: inline-block;\n    list-style: none;\n    margin-left: ${(props) => props.ml}px;\n    /* make sure gifs are fully visible with a scrollbar */\n    margin-bottom: 1px;\n\n    &:first-of-type {\n        margin-left: 0;\n    }\n    .${gif_default.imgClassName} {\n        position: absolute;\n        top: 0;\n        left: 0;\n    }\n`;\nvar Observer2 = styled6(observer_default)`\n    display: inline-block;\n`;\nvar Loader = styled6.div`\n    width: 30px;\n    display: inline-block;\n    opacity: ${(props) => props.isFirstLoad ? 0 : 1};\n    height: ${(props) => props.height}px;\n`;\nvar defaultProps = Object.freeze({ gutter: 6, user: {}, initialGifs: [] });\nvar initialState = Object.freeze({\n  isFetching: false,\n  gifs: [],\n  isLoaderVisible: false,\n  isDoneFetching: false\n});\nvar _Carousel = class _Carousel extends PureComponent {\n  constructor() {\n    super(...arguments);\n    this.state = __spreadProps(__spreadValues({}, initialState), { gifs: this.props.initialGifs || [] });\n    this.unmounted = false;\n    this.paginator = gifPaginator(this.props.fetchGifs, this.state.gifs);\n    this.onLoaderVisible = (isVisible) => {\n      if (this.unmounted)\n        return;\n      this.setState({ isLoaderVisible: isVisible }, this.onFetch);\n    };\n    this.onFetch = debounce(100, () => __async(this, null, function* () {\n      if (this.unmounted)\n        return;\n      const { isFetching, isLoaderVisible, gifs: existingGifs } = this.state;\n      if (!isFetching && isLoaderVisible) {\n        this.setState({ isFetching: true });\n        let gifs;\n        try {\n          gifs = yield this.paginator();\n        } catch (error) {\n          this.setState({ isFetching: false });\n        }\n        if (gifs) {\n          if (existingGifs.length === gifs.length) {\n            this.setState({ isDoneFetching: true });\n          } else {\n            this.setState({ gifs, isFetching: false });\n            const { onGifsFetched } = this.props;\n            if (onGifsFetched)\n              onGifsFetched(gifs);\n            this.onFetch();\n          }\n        }\n      }\n    }));\n  }\n  componentDidMount() {\n    this.unmounted = false;\n    this.onFetch();\n  }\n  componentWillUnmount() {\n    this.unmounted = true;\n  }\n  render() {\n    const {\n      onGifVisible,\n      onGifRightClick,\n      gifHeight,\n      gifWidth,\n      gutter,\n      className = _Carousel.className,\n      onGifSeen: onGifSeen2,\n      onGifClick: onGifClick2,\n      onGifKeyPress,\n      user,\n      overlay,\n      hideAttribution,\n      noLink,\n      noResultsMessage,\n      backgroundColor,\n      borderRadius,\n      tabIndex = 0,\n      loaderConfig\n    } = this.props;\n    const { gifs, isDoneFetching } = this.state;\n    const showLoader = !isDoneFetching;\n    const isFirstLoad = gifs.length === 0;\n    return /* @__PURE__ */ React9.createElement(pingback_context_manager_default, { attributes: { layout_type: \"CAROUSEL\" } }, /* @__PURE__ */ React9.createElement(Container5, { className }, gifs.map((gif) => {\n      return /* @__PURE__ */ React9.createElement(\n        Gif2,\n        {\n          gif,\n          key: gif.id,\n          tabIndex,\n          width: gifWidth || getGifWidth(gif, gifHeight),\n          height: gifHeight,\n          onGifClick: onGifClick2,\n          onGifKeyPress,\n          onGifSeen: onGifSeen2,\n          onGifVisible,\n          onGifRightClick,\n          user,\n          ml: gutter,\n          overlay,\n          hideAttribution,\n          noLink,\n          borderRadius,\n          backgroundColor\n        }\n      );\n    }), !showLoader && gifs.length === 0 && noResultsMessage, showLoader && /* @__PURE__ */ React9.createElement(Observer2, { onVisibleChange: this.onLoaderVisible, config: loaderConfig }, /* @__PURE__ */ React9.createElement(Loader, { isFirstLoad, height: gifHeight }))));\n  }\n};\n_Carousel.className = \"giphy-carousel\";\n_Carousel.defaultProps = defaultProps;\nvar Carousel = _Carousel;\nvar carousel_default = Carousel;\n\n// src/components/emoji-variations-list.tsx\nimport { giphyCharcoal, giphyDarkGrey } from \"@giphy/colors\";\nimport { getGifWidth as getGifWidth2 } from \"@giphy/js-util\";\nimport React11, { useEffect as useEffect3 } from \"react\";\nimport useAsyncFn from \"react-use/lib/useAsyncFn\";\nimport useLatest from \"react-use/lib/useLatest\";\nimport styled8 from \"styled-components\";\n\n// src/components/fetch-error.tsx\nimport { giphyBlue as giphyBlue2, giphyLightGrey } from \"@giphy/colors\";\nimport React10 from \"react\";\nimport styled7 from \"styled-components\";\nvar Message = styled7.div`\n    color: ${giphyLightGrey};\n    display: flex;\n    justify-content: center;\n    margin: 30px 0;\n    font-family: interface, Helvetica Neue, helvetica, sans-serif;\n    font-size: 16px;\n    font-weight: 600;\n    a {\n        color: ${giphyBlue2};\n        cursor: pointer;\n        &:hover {\n            color: white;\n        }\n    }\n`;\nvar FetchError = ({ onClick }) => /* @__PURE__ */ React10.createElement(Message, null, \"Error loading GIFs.\\xA0\", /* @__PURE__ */ React10.createElement(\"a\", { onClick }, \"Try again?\"));\nvar fetch_error_default = FetchError;\n\n// src/components/emoji-variations-list.tsx\nvar DEFAULT_BG_COLOR = giphyDarkGrey;\nvar DEFAULT_DIVIDER_COLOR = giphyCharcoal;\nvar DIVIDER_RELATIVE_HEIGHT = 0.75;\nvar Root = styled8.div`\n    align-items: center;\n    background-color: ${({ backgroundColor }) => backgroundColor};\n    border-radius: 16px;\n    display: flex;\n    max-width: fit-content;\n    overflow: hidden;\n    padding: 4px 5px 5px 6px;\n`;\nvar VariationsViewport = styled8.div`\n    overflow-x: auto;\n    overflow-y: hidden;\n    position: relative;\n    -webkit-overflow-scrolling: touch;\n`;\nvar VariationsContainer = styled8.div`\n    display: inline-flex;\n    justify-content: space-between;\n    overflow: hidden;\n    white-space: nowrap;\n    width: ${({ width }) => `${width}px`};\n`;\nvar Divider = styled8.div`\n    background-color: ${({ color }) => color};\n    box-sizing: border-box;\n    height: ${({ gifHeight }) => `${Math.round(gifHeight * DIVIDER_RELATIVE_HEIGHT)}px`};\n    margin: ${({ gutter }) => `0 ${gutter}px`};\n    width: 2px;\n`;\nvar Emoji = styled8(gif_default)`\n    display: inline-block;\n    flex-shrink: 0;\n    list-style: none;\n    /* make sure gifs are fully visible with a scrollbar */\n    margin-bottom: 1px;\n    position: relative;\n\n    .${gif_default.imgClassName} {\n        position: absolute;\n        top: 0;\n        left: 0;\n    }\n`;\nfunction EmojiVariationsList(props) {\n  var _b;\n  const _a = props, {\n    backgroundColor = DEFAULT_BG_COLOR,\n    className,\n    dividerColor = DEFAULT_DIVIDER_COLOR,\n    fetchVariations,\n    gif,\n    gifHeight,\n    GifProps = {},\n    gifWidth: gifWidthProp,\n    gutter = 6,\n    hideAttribution,\n    loader: LoaderComponent,\n    noLink,\n    onGifClick: onGifClick2,\n    onGifKeyPress,\n    onGifRightClick,\n    onGifSeen: onGifSeen2,\n    onGifVisible,\n    onVariationsFetched,\n    overlay,\n    tabIndex = 0,\n    user\n  } = _a, other = __objRest(_a, [\n    \"backgroundColor\",\n    \"className\",\n    \"dividerColor\",\n    \"fetchVariations\",\n    \"gif\",\n    \"gifHeight\",\n    \"GifProps\",\n    \"gifWidth\",\n    \"gutter\",\n    \"hideAttribution\",\n    \"loader\",\n    \"noLink\",\n    \"onGifClick\",\n    \"onGifKeyPress\",\n    \"onGifRightClick\",\n    \"onGifSeen\",\n    \"onGifVisible\",\n    \"onVariationsFetched\",\n    \"overlay\",\n    \"tabIndex\",\n    \"user\"\n  ]);\n  const variationCount = (_b = gif.variation_count) != null ? _b : 0;\n  const gifWidth = gifWidthProp || getGifWidth2(gif, gifHeight);\n  const variationsContainerWidth = variationCount * gifWidth + Math.max(0, variationCount - 1) * gutter;\n  const fetchVariationsRef = useLatest(fetchVariations);\n  const onVariationsFetchedRef = useLatest(onVariationsFetched);\n  const [variationsState, syncVariations] = useAsyncFn(\n    () => __async(this, null, function* () {\n      var _a2;\n      const result = yield fetchVariationsRef.current(gif.id);\n      const variations = (_a2 = result == null ? void 0 : result.data) != null ? _a2 : [];\n      if (onVariationsFetchedRef.current) {\n        onVariationsFetchedRef.current(variations);\n      }\n      return variations;\n    }),\n    [gif],\n    { loading: true, value: [] }\n  );\n  useEffect3(() => {\n    syncVariations();\n  }, [syncVariations]);\n  const emojiCommonProps = __spreadValues({\n    backgroundColor: \"transparent\",\n    height: gifHeight,\n    hideAttribution,\n    noLink,\n    onGifClick: onGifClick2,\n    onGifKeyPress,\n    onGifRightClick,\n    onGifSeen: onGifSeen2,\n    onGifVisible,\n    overlay,\n    tabIndex,\n    user,\n    width: gifWidth\n  }, GifProps);\n  const getVariationsContent = () => {\n    var _a2;\n    if (variationsState.loading) {\n      return LoaderComponent ? /* @__PURE__ */ React11.createElement(LoaderComponent, { className: EmojiVariationsList.loaderClassName }) : null;\n    }\n    if (variationsState.error) {\n      return /* @__PURE__ */ React11.createElement(fetch_error_default, { onClick: syncVariations });\n    }\n    return /* @__PURE__ */ React11.createElement(React11.Fragment, null, ((_a2 = variationsState.value) != null ? _a2 : []).map((gif2) => /* @__PURE__ */ React11.createElement(Emoji, __spreadProps(__spreadValues({}, emojiCommonProps), { key: gif2.id, gif: gif2 }))));\n  };\n  return /* @__PURE__ */ React11.createElement(\n    Root,\n    __spreadValues({\n      backgroundColor,\n      className: [EmojiVariationsList.className, className].join(\" \")\n    }, other),\n    /* @__PURE__ */ React11.createElement(Emoji, __spreadProps(__spreadValues({}, emojiCommonProps), { gif })),\n    variationCount ? /* @__PURE__ */ React11.createElement(\n      Divider,\n      {\n        className: EmojiVariationsList.dividerClassName,\n        color: dividerColor,\n        gifHeight,\n        gutter\n      }\n    ) : null,\n    /* @__PURE__ */ React11.createElement(VariationsViewport, { className: EmojiVariationsList.variationsViewportClassName }, /* @__PURE__ */ React11.createElement(\n      VariationsContainer,\n      {\n        className: EmojiVariationsList.variationsContainerClassName,\n        width: variationsContainerWidth\n      },\n      getVariationsContent()\n    ))\n  );\n}\nEmojiVariationsList.className = \"giphy-emoji-variations-list\";\nEmojiVariationsList.dividerClassName = \"giphy-emoji-variations-divider\";\nEmojiVariationsList.loaderClassName = \"giphy-emoji-variations-loader\";\nEmojiVariationsList.variationsViewportClassName = \"giphy-emoji-variations-viewport\";\nEmojiVariationsList.variationsContainerClassName = \"giphy-emoji-variations-container\";\n\n// src/components/grid.tsx\nimport { gifPaginator as gifPaginator2 } from \"@giphy/js-fetch-api\";\nimport { getGifHeight as getGifHeight2 } from \"@giphy/js-util\";\nimport React14, { PureComponent as PureComponent2 } from \"react\";\nimport styled10 from \"styled-components\";\nimport { debounce as debounce2 } from \"throttle-debounce\";\n\n// src/components/loader.tsx\nimport { giphyBlue as giphyBlue3, giphyGreen as giphyGreen2, giphyPurple as giphyPurple2, giphyRed as giphyRed2, giphyYellow as giphyYellow2 } from \"@giphy/colors\";\nimport React12 from \"react\";\nimport styled9, { keyframes } from \"styled-components\";\nvar bouncer = keyframes`\n     to {\n    transform: scale(1.75) translateY(-20px);\n  }\n`;\nvar loaderHeight = 37;\nvar Container6 = styled9.div`\n    display: flex;\n    align-items: center;\n    height: ${loaderHeight}px;\n    padding-top: 15px;\n    margin: 0 auto;\n    text-align: center;\n    justify-content: center;\n    animation: pulse 0.8s ease-in-out 0s infinite alternate backwards;\n`;\nvar Dot = styled9.div`\n    display: inline-block;\n    height: 10px;\n    width: 10px;\n    margin: ${loaderHeight}px 10px 10px 10px;\n    position: relative;\n    box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.3);\n    animation: ${bouncer} cubic-bezier(0.455, 0.03, 0.515, 0.955) 0.75s infinite alternate;\n    background: ${(props) => props.color};\n    animation-delay: ${(props) => props.delay};\n`;\nvar Loader2 = ({ className = \"\" }) => /* @__PURE__ */ React12.createElement(Container6, { className }, /* @__PURE__ */ React12.createElement(Dot, { color: giphyGreen2, delay: \"0\" }), /* @__PURE__ */ React12.createElement(Dot, { color: giphyBlue3, delay: \".1s\" }), /* @__PURE__ */ React12.createElement(Dot, { color: giphyPurple2, delay: \".2s\" }), /* @__PURE__ */ React12.createElement(Dot, { color: giphyRed2, delay: \".3s\" }), /* @__PURE__ */ React12.createElement(Dot, { color: giphyYellow2, delay: \".4s\" }));\nvar loader_default = Loader2;\n\n// src/components/masonry-grid.tsx\nimport React13, { memo } from \"react\";\nfunction fillArray(length, columnOffsets = []) {\n  return Array.apply(null, Array(length)).map((_, index) => columnOffsets[index] || 0);\n}\nvar MasonryGrid = ({\n  columns,\n  gutter,\n  useTransform = true,\n  itemWidth,\n  itemHeights,\n  children,\n  columnOffsets = []\n}) => {\n  const containerStyle = {};\n  function getChildren() {\n    let columnTarget;\n    const columnHeights = fillArray(columns, columnOffsets);\n    const result = React13.Children.map(children, (child, index) => {\n      const style = {\n        position: \"absolute\"\n      };\n      columnTarget = columnHeights.indexOf(Math.min.apply(Math, columnHeights));\n      const top = `${columnHeights[columnTarget]}px`;\n      const left = `${columnTarget * itemWidth + columnTarget * gutter}px`;\n      if (useTransform) {\n        style.transform = `translate3d(${left}, ${top}, 0)`;\n      } else {\n        style.top = top;\n        style.left = left;\n      }\n      const height = itemHeights[index];\n      if (height) {\n        columnHeights[columnTarget] += height + gutter;\n      }\n      return React13.cloneElement(child, { style });\n    });\n    containerStyle.position = \"relative\";\n    containerStyle.width = `${columns * itemWidth + (columns - 1) * gutter}px`;\n    containerStyle.height = `${Math.max.apply(Math, columnHeights) - gutter}px`;\n    return result;\n  }\n  return /* @__PURE__ */ React13.createElement(\"div\", { style: containerStyle }, getChildren());\n};\nvar masonry_grid_default = memo(MasonryGrid);\n\n// src/components/grid.tsx\nvar Loader3 = styled10.div`\n    opacity: ${(props) => props.isFirstLoad ? 0 : 1};\n`;\nvar defaultProps2 = Object.freeze({ gutter: 6, user: {}, initialGifs: [] });\nvar initialState2 = Object.freeze({\n  isFetching: false,\n  isError: false,\n  gifWidth: 0,\n  gifs: [],\n  isLoaderVisible: false,\n  isDoneFetching: false\n});\nvar _Grid = class _Grid extends PureComponent2 {\n  constructor() {\n    super(...arguments);\n    this.state = __spreadProps(__spreadValues({}, initialState2), { gifs: this.props.initialGifs || [] });\n    this.unmounted = false;\n    this.paginator = gifPaginator2(this.props.fetchGifs, this.state.gifs);\n    this.onLoaderVisible = (isVisible) => {\n      if (this.unmounted)\n        return;\n      this.setState({ isLoaderVisible: isVisible }, this.onFetch);\n    };\n    this.onFetch = debounce2(_Grid.fetchDebounce, () => __async(this, null, function* () {\n      if (this.unmounted)\n        return;\n      const { isFetching, isLoaderVisible, gifs } = this.state;\n      const prefetchCount = gifs.length;\n      if (!isFetching && isLoaderVisible) {\n        this.setState({ isFetching: true, isError: false });\n        let gifs2;\n        try {\n          gifs2 = yield this.paginator();\n          if (this.unmounted)\n            return;\n        } catch (error) {\n          if (this.unmounted)\n            return;\n          this.setState({ isFetching: false, isError: true });\n          const { onGifsFetchError } = this.props;\n          if (onGifsFetchError)\n            onGifsFetchError(error);\n        }\n        if (gifs2) {\n          if (prefetchCount === gifs2.length) {\n            this.setState({ isDoneFetching: true });\n          } else {\n            this.setState({ gifs: gifs2, isFetching: false });\n            const { onGifsFetched } = this.props;\n            if (onGifsFetched)\n              onGifsFetched(gifs2);\n            this.onFetch();\n          }\n        }\n      }\n    }));\n  }\n  componentDidMount() {\n    this.unmounted = false;\n    this.onFetch();\n  }\n  componentWillUnmount() {\n    this.unmounted = true;\n  }\n  render() {\n    const {\n      onGifVisible,\n      onGifRightClick,\n      className = _Grid.className,\n      onGifSeen: onGifSeen2,\n      onGifClick: onGifClick2,\n      onGifKeyPress,\n      user,\n      overlay,\n      hideAttribution,\n      noLink,\n      borderRadius,\n      noResultsMessage,\n      columns,\n      width,\n      gutter,\n      useTransform,\n      columnOffsets,\n      backgroundColor,\n      loaderConfig,\n      tabIndex = 0,\n      layoutType = \"GRID\",\n      loader: LoaderVisual = loader_default\n    } = this.props;\n    const { gifWidth, gifs, isError, isDoneFetching } = this.state;\n    const showLoader = !isDoneFetching;\n    const isFirstLoad = gifs.length === 0;\n    const itemHeights = gifs.map((gif) => getGifHeight2(gif, gifWidth));\n    return /* @__PURE__ */ React14.createElement(pingback_context_manager_default, { attributes: { layout_type: layoutType } }, /* @__PURE__ */ React14.createElement(\"div\", { className, style: { width } }, /* @__PURE__ */ React14.createElement(\n      masonry_grid_default,\n      {\n        itemHeights,\n        useTransform,\n        itemWidth: gifWidth,\n        columns,\n        gutter,\n        columnOffsets\n      },\n      gifs.map((gif) => /* @__PURE__ */ React14.createElement(\n        gif_default,\n        {\n          gif,\n          tabIndex,\n          key: gif.id,\n          width: gifWidth,\n          onGifClick: onGifClick2,\n          onGifKeyPress,\n          onGifSeen: onGifSeen2,\n          onGifVisible,\n          onGifRightClick,\n          user,\n          overlay,\n          backgroundColor,\n          hideAttribution,\n          noLink,\n          borderRadius\n        }\n      ))\n    ), !showLoader && gifs.length === 0 && noResultsMessage, isError ? /* @__PURE__ */ React14.createElement(fetch_error_default, { onClick: this.onFetch }) : showLoader && /* @__PURE__ */ React14.createElement(observer_default, { onVisibleChange: this.onLoaderVisible, config: loaderConfig }, /* @__PURE__ */ React14.createElement(Loader3, { isFirstLoad }, /* @__PURE__ */ React14.createElement(LoaderVisual, { className: _Grid.loaderClassName })))));\n  }\n};\n_Grid.className = \"giphy-grid\";\n_Grid.loaderClassName = \"loader\";\n_Grid.fetchDebounce = 250;\n_Grid.defaultProps = defaultProps2;\n_Grid.getDerivedStateFromProps = ({ columns, gutter, width }, prevState) => {\n  const gutterOffset = gutter * (columns - 1);\n  const gifWidth = Math.floor((width - gutterOffset) / columns);\n  if (prevState.gifWidth !== gifWidth) {\n    return { gifWidth };\n  }\n  return null;\n};\nvar Grid = _Grid;\nvar grid_default = Grid;\n\n// src/components/search-bar/index.tsx\nimport { giphyIndigo, giphyLightGrey as giphyLightGrey2 } from \"@giphy/colors\";\nimport React20, { useContext as useContext6, useEffect as useEffect5, useRef as useRef5, useState as useState3 } from \"react\";\nimport useDebounce from \"react-use/lib/useDebounce\";\nimport styled15, { css as css2 } from \"styled-components\";\n\n// src/components/search-bar/cancel-icon.tsx\nimport React16, { useContext as useContext3 } from \"react\";\nimport styled12 from \"styled-components\";\n\n// src/components/search-bar/context.tsx\nimport { giphyBlack as giphyBlack2, giphyCharcoal as giphyCharcoal2, giphyWhite } from \"@giphy/colors\";\nimport { GiphyFetch, request } from \"@giphy/js-fetch-api\";\nimport { Logger as Logger2 } from \"@giphy/js-util\";\nimport React15, { createContext as createContext2, useCallback, useEffect as useEffect4, useMemo, useState as useState2 } from \"react\";\nimport styled11, { css } from \"styled-components\";\nvar CssVars = {\n  searchbarHeight: `--searchbar-height`,\n  bgColor: `--searchbar-bg-color`,\n  bgColor2: `--searchbar-bg-color-2`,\n  fgColor: `--searchbar-fg-color`,\n  cancelButtonDisplay: `--searchbar-cancel-button-display`\n};\nvar Container7 = styled11.div`\n    ${CssVars.searchbarHeight}: ${(props) => props.searchbarHeight || 42}px;\n    @media (${(props) => props.mobileMediaQuery}) {\n        ${CssVars.searchbarHeight}: ${(props) => props.mobileSearchbarHeight || 35}px;\n    }\n    ${CssVars.bgColor}: ${giphyWhite};\n    ${CssVars.bgColor2}: ${giphyWhite};\n    ${CssVars.fgColor}: ${giphyBlack2};\n    ${(props) => props.darkMode && css`\n            ${CssVars.fgColor}: ${giphyWhite};\n            ${CssVars.bgColor}: ${giphyBlack2};\n            ${CssVars.bgColor2}: ${giphyCharcoal2};\n        `}\n    ${CssVars.cancelButtonDisplay}: ${(props) => props.hideCancelButton ? \"none\" : \"block\"};\n`;\nvar SearchContext = createContext2({});\nvar _SearchContext = createContext2({});\nvar emptyChannels = [];\nvar emptyGifsResult = {\n  data: [],\n  pagination: { total_count: 0, count: 0, offset: 0 },\n  meta: { status: 200, msg: \"OK\", response_id: \"\" }\n};\nvar SearchContextManager = ({\n  children,\n  options = {},\n  apiKey,\n  initialTerm = \"\",\n  initialChannel,\n  shouldDefaultToTrending = true,\n  shouldFetchChannels = true,\n  theme\n}) => {\n  var _a, _b;\n  const gf = useMemo(() => new GiphyFetch(apiKey), [apiKey]);\n  const [currentChannels, setChannels] = useState2([]);\n  const [term, _setSearch] = useState2(initialTerm);\n  const [_inputValOverride, setSearch] = useState2(initialTerm);\n  const [isFetching, setIsFetching] = useState2(false);\n  const [activeChannel, _setActiveChannel] = useState2(initialChannel);\n  const setActiveChannel = useCallback((activeChannel2) => {\n    _setSearch(\"\");\n    _setActiveChannel(activeChannel2);\n  }, []);\n  const [trendingSearches, setTrendingSearches] = useState2([]);\n  const [isFocused, setIsFocused] = useState2(false);\n  const searchKey = [term, options.type, ((_a = activeChannel == null ? void 0 : activeChannel.user) == null ? void 0 : _a.username) || \"\"].filter((val) => !!val).join(\" / \");\n  const fetchGifs = useCallback(\n    (offset) => __async(void 0, null, function* () {\n      var _a2;\n      setIsFetching(true);\n      let result = emptyGifsResult;\n      if (term) {\n        result = yield gf.search(term, __spreadProps(__spreadValues({}, options), {\n          offset,\n          channel: (_a2 = activeChannel == null ? void 0 : activeChannel.user) == null ? void 0 : _a2.username\n        }));\n      } else if (shouldDefaultToTrending) {\n        result = yield gf.trending(__spreadProps(__spreadValues({}, options), { offset }));\n      }\n      setIsFetching(false);\n      return result;\n    }),\n    [(_b = activeChannel == null ? void 0 : activeChannel.user) == null ? void 0 : _b.username, gf, options, term, shouldDefaultToTrending]\n  );\n  const fetchAnimatedText = useCallback(\n    (offset) => __async(void 0, null, function* () {\n      const limit = options.limit || 50;\n      const result = yield gf.animate(term, { offset, limit });\n      if (!result.pagination) {\n        result.pagination = { count: limit, total_count: limit, offset };\n      }\n      return result;\n    }),\n    [gf, options.limit, term]\n  );\n  const fetchChannelSearch = useCallback(\n    (offset) => __async(void 0, null, function* () {\n      const search = term.indexOf(\"@\") === 0 ? term.split(\" \")[0] : term;\n      const result = yield gf.channels(search, { offset });\n      return result.data;\n    }),\n    [gf, term]\n  );\n  useEffect4(() => {\n    const fetchTrendingSearches = () => __async(void 0, null, function* () {\n      let searches = [];\n      try {\n        const { data = [] } = yield request(`trending/searches?api_key=${apiKey}`);\n        searches = data;\n      } catch (error) {\n        Logger2.warn(`Trending searches request failed: ${error}`);\n      }\n      setTrendingSearches(searches);\n    });\n    fetchTrendingSearches();\n  }, [apiKey]);\n  useEffect4(() => {\n    const foundChannel = currentChannels.find(({ slug }) => term.indexOf(`@${slug} `) === 0);\n    if (foundChannel) {\n      _setActiveChannel(foundChannel);\n    }\n  }, [term, currentChannels, _setActiveChannel]);\n  useEffect4(() => {\n    if (shouldFetchChannels) {\n      const fetchChannels = () => __async(void 0, null, function* () {\n        const channels = yield fetchChannelSearch(0);\n        setChannels(channels || emptyChannels);\n      });\n      if (!activeChannel && term.replace(\"@\", \"\")) {\n        fetchChannels();\n      }\n    }\n  }, [term, activeChannel]);\n  return /* @__PURE__ */ React15.createElement(\n    SearchContext.Provider,\n    {\n      value: {\n        activeChannel,\n        setChannels,\n        currentChannels,\n        setActiveChannel,\n        fetchChannelSearch,\n        term,\n        trendingSearches,\n        setSearch,\n        fetchGifs,\n        fetchAnimatedText,\n        searchKey,\n        isFetching,\n        isFocused\n      }\n    },\n    /* @__PURE__ */ React15.createElement(_SearchContext.Provider, { value: { setIsFocused, _setSearch, _inputValOverride } }, /* @__PURE__ */ React15.createElement(\n      Container7,\n      {\n        darkMode: theme == null ? void 0 : theme.darkMode,\n        searchbarHeight: theme == null ? void 0 : theme.searchbarHeight,\n        hideCancelButton: theme == null ? void 0 : theme.hideCancelButton,\n        mobileSearchbarHeight: theme == null ? void 0 : theme.mobileSearchbarHeight,\n        mobileMediaQuery: (theme == null ? void 0 : theme.mobileMediaQuery) || \"max-width: 480px\"\n      },\n      /* @__PURE__ */ React15.createElement(pingback_context_manager_default, { attributes: { layout_type: \"SEARCH\" } }, children)\n    ))\n  );\n};\nvar context_default = SearchContextManager;\n\n// src/components/search-bar/cancel-icon.tsx\nvar Icon = styled12.svg`\n    position: relative;\n    right: 10px;\n    margin-left: 5px;\n    cursor: pointer;\n    display: var(${CssVars.cancelButtonDisplay});\n`;\nvar CancelIcon = ({ width = 17, height = 17, setCleared }) => {\n  const { term, setActiveChannel, activeChannel } = useContext3(SearchContext);\n  return term || activeChannel ? /* @__PURE__ */ React16.createElement(\n    Icon,\n    {\n      className: CancelIcon.className,\n      width,\n      height,\n      viewBox: \"0 0 17 17\",\n      version: \"1.1\",\n      xmlns: \"http://www.w3.org/2000/svg\",\n      onClick: (e) => {\n        e.stopPropagation();\n        e.preventDefault();\n        setCleared(true);\n        setActiveChannel(void 0);\n      }\n    },\n    /* @__PURE__ */ React16.createElement(\"g\", { stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\", opacity: \"0.582730817\" }, /* @__PURE__ */ React16.createElement(\"g\", { transform: \"translate(-300.000000, -150.000000)\", fill: \"#8E8E93\", fillRule: \"nonzero\" }, /* @__PURE__ */ React16.createElement(\"g\", { transform: \"translate(0.000000, 135.000000)\" }, /* @__PURE__ */ React16.createElement(\"g\", null, /* @__PURE__ */ React16.createElement(\"g\", null, /* @__PURE__ */ React16.createElement(\"g\", { transform: \"translate(11.000000, 13.000000)\" }, /* @__PURE__ */ React16.createElement(\"g\", { transform: \"translate(289.000000, 2.000000)\" }, /* @__PURE__ */ React16.createElement(\n      \"path\",\n      {\n        d: \"M8.5,0 C3.805875,0 0,3.805875 0,8.5 C0,13.194125 3.805875,17 8.5,17 C13.194125,17 17,13.194125 17,8.5 C17,3.805875 13.194125,0 8.5,0 Z M9.50158333,8.5 C9.50158333,8.5 11.7250417,10.7234583 11.834125,10.8325417 C12.1110833,11.1095 12.1110833,11.557875 11.834125,11.834125 C11.5571667,12.1110833 11.1087917,12.1110833 10.8325417,11.834125 C10.7234583,11.72575 8.5,9.50158333 8.5,9.50158333 C8.5,9.50158333 6.27654167,11.7250417 6.16745833,11.834125 C5.8905,12.1110833 5.442125,12.1110833 5.165875,11.834125 C4.88891667,11.5571667 4.88891667,11.1087917 5.165875,10.8325417 C5.27425,10.7234583 7.49841667,8.5 7.49841667,8.5 C7.49841667,8.5 5.27495833,6.27654167 5.165875,6.16745833 C4.88891667,5.8905 4.88891667,5.442125 5.165875,5.165875 C5.44283333,4.88891667 5.89120833,4.88891667 6.16745833,5.165875 C6.27654167,5.27425 8.5,7.49841667 8.5,7.49841667 C8.5,7.49841667 10.7234583,5.27495833 10.8325417,5.165875 C11.1095,4.88891667 11.557875,4.88891667 11.834125,5.165875 C12.1110833,5.44283333 12.1110833,5.89120833 11.834125,6.16745833 C11.72575,6.27654167 9.50158333,8.5 9.50158333,8.5 Z\",\n        opacity: \"0.75\"\n      }\n    ))))))))\n  ) : null;\n};\nCancelIcon.className = \"giphy-search-bar-cancel\";\nvar cancel_icon_default = CancelIcon;\n\n// src/components/search-bar/search-bar-channel.tsx\nimport { giphyDarkCharcoal, giphyWhiteSmoke } from \"@giphy/colors\";\nimport React17, { useContext as useContext4 } from \"react\";\nimport styled13, { keyframes as keyframes2 } from \"styled-components\";\nvar channelMargin = 6;\nvar innerHeight = `calc(var(${CssVars.searchbarHeight}) - ${channelMargin * 2}px)`;\nvar animateAvatar = keyframes2`\nto {\n    width: ${innerHeight};\n}\n`;\nvar Avatar3 = styled13(avatar_default)`\n    height: ${innerHeight};\n    margin: 0;\n    width: 0;\n    animation: ${animateAvatar} 100ms ease-in-out forwards;\n`;\nvar Username2 = styled13.div`\n    background: var(${CssVars.bgColor2});\n    display: flex;\n    align-items: center;\n    padding-left: ${channelMargin}px;\n`;\nvar UsernamePill = styled13.div`\n    background: ${giphyWhiteSmoke};\n    display: flex;\n    padding: 0 4px;\n    color: ${giphyDarkCharcoal};\n    font-family: interface, Helvetica Neue, helvetica, sans-serif;\n    font-weight: 600;\n    font-size: 12px;\n    align-items: center;\n    height: ${innerHeight};\n    @media (max-width: 480px) {\n        display: none;\n    }\n`;\nvar SearchBarChannel = ({ className = \"\" }) => {\n  const { activeChannel } = useContext4(SearchContext);\n  return activeChannel ? /* @__PURE__ */ React17.createElement(Username2, { className }, /* @__PURE__ */ React17.createElement(Avatar3, { user: activeChannel.user }), /* @__PURE__ */ React17.createElement(UsernamePill, { key: activeChannel.id }, /* @__PURE__ */ React17.createElement(\"div\", null, \"@\", activeChannel.user.username), activeChannel.user.is_verified && /* @__PURE__ */ React17.createElement(verified_badge_default, { size: 14 }))) : null;\n};\nvar search_bar_channel_default = SearchBarChannel;\n\n// src/components/search-bar/search-button.tsx\nimport React19, { useContext as useContext5 } from \"react\";\nimport useThrottle from \"react-use/lib/useThrottle\";\nimport styled14, { keyframes as keyframes3 } from \"styled-components\";\n\n// src/components/search-bar/search-icon.tsx\nimport React18 from \"react\";\nvar SearchIcon = ({ className = \"\" }) => /* @__PURE__ */ React18.createElement(\"svg\", { viewBox: \"0 0 30 30\", version: \"1.1\", className }, /* @__PURE__ */ React18.createElement(\"defs\", null, /* @__PURE__ */ React18.createElement(\n  \"path\",\n  {\n    d: \"M11.5482521,20.4090671 L4.24727698,28.2009189 C3.68084207,28.8054377 2.73159653,28.8363108 2.12707771,28.2698759 C1.5225589,27.703441 1.4916858,26.7541954 2.0581207,26.1496766 L9.40599838,18.3077689 C7.95982241,16.4371424 7.0978836,14.0789715 7.0978836,11.5181818 C7.0978836,5.44914339 11.9392549,0.518181818 17.9252787,0.518181818 C23.9113026,0.518181818 28.7526738,5.44914339 28.7526738,11.5181818 C28.7526738,17.5872202 23.9113026,22.5181818 17.9252787,22.5181818 C15.539851,22.5181818 13.3361963,21.7351359 11.5482521,20.4090671 Z M17.9252787,19.5181818 C22.242011,19.5181818 25.7526738,15.9425536 25.7526738,11.5181818 C25.7526738,7.09381 22.242011,3.51818182 17.9252787,3.51818182 C13.6085464,3.51818182 10.0978836,7.09381 10.0978836,11.5181818 C10.0978836,15.9425536 13.6085464,19.5181818 17.9252787,19.5181818 Z\",\n    id: \"giphy-search-icon-path-1\"\n  }\n)), /* @__PURE__ */ React18.createElement(\"g\", { id: \"search\", stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" }, /* @__PURE__ */ React18.createElement(\"g\", { id: \"icons/search\" }, /* @__PURE__ */ React18.createElement(\"mask\", { id: \"giphy-search-icon-mask-2\", fill: \"white\" }, /* @__PURE__ */ React18.createElement(\"use\", { xlinkHref: \"#giphy-search-icon-path-1\" })), /* @__PURE__ */ React18.createElement(\"use\", { id: \"Mask\", fill: \"#FFFFFF\", fillRule: \"nonzero\", xlinkHref: \"#giphy-search-icon-path-1\" }), /* @__PURE__ */ React18.createElement(\"g\", { mask: \"url(#giphy-search-icon-mask-2)\" }, /* @__PURE__ */ React18.createElement(\"g\", { transform: \"translate(0.250000, 0.250000)\" }, /* @__PURE__ */ React18.createElement(\"g\", null))))));\nvar search_icon_default = SearchIcon;\n\n// src/components/search-bar/search-button.tsx\nvar time = \"2s\";\nvar purp = \"#9933FF\";\nvar pink = \"#FF6666\";\nvar strongEasing = \"cubic-bezier(0.920, 0.240, 0.185, 0.730)\";\nvar searchFx = keyframes3`\n    0% {\n      transform: rotate(34deg) translate(-10px, 80px);\n    };\n    \n    100% {\n      transform: rotate(34deg) translate(-10px, -20px);\n    }\n`;\nvar plus = keyframes3`\n    0% { \n      transform: translate(0px, 0px);\n      opacity: 0;\n    }\n    50% {\n      opacity: 1;\n    }\n    100% {\n      transform: translate(10px, -17px);\n      opacity: 0;\n    }\n`;\nvar gradientFade = keyframes3`\n    0% {\n      opacity: 0;\n      transform: translateX(-400%);\n    }\n    50% {\n      opacity: 1;\n    }\n    100% {\n      opacity: 0;\n      transform: translateX(0);\n    }\n`;\nvar Container8 = styled14.div`\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    position: relative;\n    cursor: pointer;\n    @media screen and (-ms-high-contrast: active), screen and (-ms-high-contrast: none) {\n        display: none;\n    }\n    height: var(${CssVars.searchbarHeight});\n    width: var(${CssVars.searchbarHeight});\n`;\nvar GradientBox = styled14.div`\n    position: absolute;\n    height: 100%;\n    width: 100%;\n    background: linear-gradient(45deg, ${purp} 0%, ${pink} 100%);\n    border-radius: 4px;\n    overflow: hidden;\n    &:before {\n        animation: ${gradientFade} ${time} linear 0s infinite;\n        background-image: linear-gradient(45deg, ${purp} 0%, ${pink} 50%, ${purp} 100%);\n        background-size: 400%;\n        background-position: 0% 100%;\n        content: '';\n        position: absolute;\n        left: 0;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        width: 400%;\n    }\n`;\nvar Fx = styled14.div`\n    width: 100%;\n    height: 100%;\n    position: absolute;\n    overflow: hidden;\n    &::after {\n        content: '+';\n        color: white;\n        font-family: 'SS Standard';\n        font-size: 8px;\n        position: absolute;\n        top: 65%;\n        left: 66%;\n        animation: ${plus} 1s ${strongEasing} 0s 1 forwards;\n    }\n`;\nvar Scanner = styled14.div`\n    position: absolute;\n    width: 200%;\n    height: 20px;\n    background: rgba(255, 255, 255, 0.5);\n    transform: rotate(34deg) translate(-10px, -20px);\n    animation: ${searchFx} 1s ${strongEasing} 0s 1;\n    filter: blur(1px);\n`;\nvar SearchIcon2 = styled14(search_icon_default)`\n    z-index: 1;\n    display: flex;\n    width: 60%;\n    height: 60%;\n`;\nvar SearchButton = () => {\n  const { isFetching } = useContext5(SearchContext);\n  const throttledFetch = useThrottle(isFetching, 1e3);\n  return /* @__PURE__ */ React19.createElement(Container8, null, /* @__PURE__ */ React19.createElement(GradientBox, null), /* @__PURE__ */ React19.createElement(SearchIcon2, null), throttledFetch && /* @__PURE__ */ React19.createElement(Fx, null, /* @__PURE__ */ React19.createElement(Scanner, null)));\n};\nvar search_button_default = SearchButton;\n\n// src/components/search-bar/index.tsx\nfunction usePrevious(value) {\n  const ref = useRef5(value);\n  useEffect5(() => {\n    ref.current = value;\n  });\n  return ref.current;\n}\nvar SEARCH_DEBOUNCE = 500;\nvar Container9 = styled15.div`\n    display: flex;\n    background: white;\n    align-items: center;\n    border-radius: 4px;\n    height: var(${CssVars.searchbarHeight});\n    background: var(${CssVars.bgColor2});\n`;\nvar Input = styled15.input`\n    background: inherit;\n    box-sizing: border-box;\n    border: 0;\n    appearance: none;\n    font-weight: normal;\n    font-family: interface, Helvetica Neue, helvetica, sans-serif;\n    outline: 0;\n    font-size: 15px;\n    padding: 0 10px;\n    border-radius: 0;\n    text-overflow: ellipsis;\n    color: var(${CssVars.fgColor});\n    &::placeholder {\n        color: ${giphyLightGrey2};\n    }\n    min-width: 150px;\n    flex: 1;\n    ${(props) => props.isUsernameSearch && css2`\n            color: ${giphyIndigo};\n        `}\n`;\nvar SearchBar = ({\n  className,\n  placeholder: placeholder2 = `Search GIPHY`,\n  clear = false,\n  autoFocus,\n  searchDebounce = SEARCH_DEBOUNCE,\n  onEnter\n}) => {\n  const { activeChannel, setActiveChannel, term, setChannels } = useContext6(SearchContext);\n  const { setIsFocused, _inputValOverride, _setSearch } = useContext6(_SearchContext);\n  const [val, setVal] = useState3(term);\n  useDebounce(() => _setSearch(val), searchDebounce, [val]);\n  const inputRef = useRef5(null);\n  const previousActiveChannel = usePrevious(activeChannel);\n  const [isCleared, setCleared] = useState3(clear);\n  useEffect5(() => {\n    var _a;\n    if (autoFocus) {\n      (_a = inputRef.current) == null ? void 0 : _a.focus();\n    }\n  }, [autoFocus]);\n  useEffect5(() => {\n    var _a;\n    if (activeChannel && !previousActiveChannel) {\n      (_a = inputRef.current) == null ? void 0 : _a.focus();\n      if (val === \" \") {\n        setVal(\"\");\n      } else {\n        setVal(val.replace(/@?\\w*\\s?/, \"\"));\n      }\n    }\n  }, [val, activeChannel, previousActiveChannel]);\n  useEffect5(() => {\n    setCleared(clear);\n  }, [clear]);\n  useEffect5(() => {\n    setVal(_inputValOverride);\n  }, [_inputValOverride, setVal]);\n  const onKeyUp = (e) => {\n    const key = e.keyCode || e.key;\n    switch (key) {\n      case 27:\n      case `Escape`:\n        setActiveChannel(void 0);\n        setChannels([]);\n        break;\n      case 13:\n      case `Enter`:\n        onEnter == null ? void 0 : onEnter(val);\n        break;\n      default:\n        break;\n    }\n  };\n  const onKeyDown = (e) => {\n    const key = e.keyCode || e.key;\n    switch (key) {\n      case 8:\n      case \"Backspace\":\n        if (val === \"\") {\n          setActiveChannel(void 0);\n          setChannels([]);\n        }\n        break;\n      default:\n        break;\n    }\n  };\n  return /* @__PURE__ */ React20.createElement(Container9, { className: [SearchBar.className, className].join(\" \") }, /* @__PURE__ */ React20.createElement(search_bar_channel_default, null), /* @__PURE__ */ React20.createElement(\n    Input,\n    {\n      isUsernameSearch: term.indexOf(\"@\") === 0,\n      onChange: ({ target: { value } }) => {\n        if (!isCleared || value !== \"\") {\n          setCleared(false);\n          setVal(value);\n        }\n      },\n      onFocus: () => {\n        setIsFocused(true);\n      },\n      onBlur: () => {\n        setIsFocused(false);\n      },\n      value: isCleared ? \"\" : val,\n      placeholder: activeChannel ? `Search ${activeChannel.display_name}` : placeholder2,\n      autoCapitalize: \"off\",\n      autoCorrect: \"off\",\n      autoComplete: \"off\",\n      ref: inputRef,\n      onKeyUp,\n      onKeyDown\n    }\n  ), /* @__PURE__ */ React20.createElement(cancel_icon_default, { setCleared: () => setVal(\"\") }), /* @__PURE__ */ React20.createElement(search_button_default, null));\n};\nSearchBar.className = \"giphy-search-bar\";\nvar search_bar_default = SearchBar;\n\n// src/components/search-bar/suggestion-bar/index.tsx\nimport React23, { useContext as useContext8 } from \"react\";\nimport styled17 from \"styled-components\";\n\n// src/components/search-bar/suggestion-bar/pills.tsx\nimport { giphyDarkestGrey } from \"@giphy/colors\";\nimport React22, { useContext as useContext7 } from \"react\";\nimport styled16 from \"styled-components\";\n\n// src/components/search-bar/suggestion-bar/trending-icon.tsx\nimport React21 from \"react\";\nvar TrendingIcon = ({ size = 18, className }) => /* @__PURE__ */ React21.createElement(\n  \"svg\",\n  {\n    width: size,\n    height: size,\n    viewBox: \"0 0 18 16\",\n    version: \"1.1\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    className\n  },\n  /* @__PURE__ */ React21.createElement(\"g\", { id: \"trending\", stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" }, /* @__PURE__ */ React21.createElement(\"g\", null, /* @__PURE__ */ React21.createElement(\n    \"rect\",\n    {\n      id: \"Rectangle\",\n      stroke: \"#979797\",\n      fill: \"#D8D8D8\",\n      opacity: \"0\",\n      x: \"0.5\",\n      y: \"0.5\",\n      width: \"17\",\n      height: \"17\"\n    }\n  ), /* @__PURE__ */ React21.createElement(\n    \"path\",\n    {\n      d: \"M12.6093329,3.12057664 L15.156896,3.12057664 L9.64199318,9.04253019 L6.88133868,6.8175119 C6.7544587,6.67603813 6.56616874,6.60087259 6.38404017,6.61897279 C6.2490402,6.63288422 6.11891631,6.69661171 6.02063992,6.79697337 C2.21226835,10.5943119 0.308082561,12.4929812 0.308082561,12.4929812 C0.308082561,12.4929812 0.527106106,12.8074292 0.710953088,13.0215425 C0.833517743,13.1642848 0.975497751,13.3098497 1.13689311,13.4582373 L6.47329888,8.13191205 L9.16381134,10.2953038 C9.40800276,10.5710787 9.68933701,10.7021044 10.019278,10.4570223 L16.0239805,4.04474473 C16.0239805,5.87956383 16.0239805,6.79697337 16.0239805,6.79697337 C16.0239805,6.79697337 16.4320205,6.79697337 17.2481004,6.79697337 L17.2481004,1.80604505 C14.1555887,1.80604505 12.6093329,1.80604505 12.6093329,1.80604505 C12.6093329,1.80604505 12.6093329,2.24422225 12.6093329,3.12057664 Z\",\n      id: \"Shape\",\n      stroke: \"#00CCFF\",\n      strokeWidth: \"0.4\",\n      fill: \"#00CCFF\",\n      fillRule: \"nonzero\",\n      transform: \"translate(8.778091, 7.632141) rotate(-2.000000) translate(-8.778091, -7.632141) \"\n    }\n  )))\n);\nvar trending_icon_default = TrendingIcon;\n\n// src/components/search-bar/suggestion-bar/pills.tsx\nvar margin = 9;\nvar ChannelPillContainer = styled16.div`\n    background: ${giphyDarkestGrey};\n    display: flex;\n    padding-right: 4px;\n    align-items: center;\n    margin-right: ${margin}px;\n    cursor: pointer;\n`;\nvar TrendingSearchPillContainer = styled16.div`\n    background: ${giphyDarkestGrey};\n    display: flex;\n    padding: 14px;\n    align-items: center;\n    margin-right: ${margin}px;\n    white-space: nowrap;\n    cursor: pointer;\n    font-style: italic;\n    border-radius: 20px;\n`;\nvar Avatar4 = styled16(avatar_default)`\n    height: var(${CssVars.searchbarHeight});\n    width: var(${CssVars.searchbarHeight});\n`;\nvar TrendingIcon2 = styled16(trending_icon_default)`\n    margin-right: 2px;\n`;\nvar ChannelPill = ({ channel }) => {\n  const { setActiveChannel } = useContext7(SearchContext);\n  return /* @__PURE__ */ React22.createElement(ChannelPillContainer, { key: channel.id, onClick: () => setActiveChannel(channel) }, /* @__PURE__ */ React22.createElement(Avatar4, { user: channel.user }), /* @__PURE__ */ React22.createElement(\"div\", null, \"@\", channel.user.username), channel.user.is_verified && /* @__PURE__ */ React22.createElement(verified_badge_default, { size: 14 }));\n};\nvar TrendingSearchPill = ({ trendingSearch }) => {\n  const { setSearch } = useContext7(SearchContext);\n  return /* @__PURE__ */ React22.createElement(TrendingSearchPillContainer, { key: trendingSearch, onClick: () => setSearch(trendingSearch) }, /* @__PURE__ */ React22.createElement(TrendingIcon2, { size: 16 }), trendingSearch);\n};\n\n// src/components/search-bar/suggestion-bar/index.tsx\nvar Container10 = styled17.div`\n    display: flex;\n    color: white;\n    flex-direction: row;\n    font-family: 'interface';\n    font-weight: 600;\n    font-size: 14px;\n    -webkit-overflow-scrolling: touch;\n    overflow-x: auto;\n    overflow-y: hidden;\n    padding-bottom: 10px;\n    height: var(${CssVars.searchbarHeight});\n`;\nvar SuggestionBar = () => {\n  const { trendingSearches, currentChannels } = useContext8(SearchContext);\n  return /* @__PURE__ */ React23.createElement(Container10, { className: SuggestionBar.className }, currentChannels.length > 0 ? currentChannels.map((channel) => /* @__PURE__ */ React23.createElement(ChannelPill, { key: channel.id, channel })) : trendingSearches.map((trendingSearch) => /* @__PURE__ */ React23.createElement(TrendingSearchPill, { key: trendingSearch, trendingSearch })));\n};\nSuggestionBar.className = \"giphy-suggestion-bar\";\nvar suggestion_bar_default = SuggestionBar;\n\n// src/components/video/index.tsx\nimport { getGifHeight as getGifHeight4, Logger as Logger3 } from \"@giphy/js-util\";\nimport React29, { useCallback as useCallback3, useEffect as useEffect7, useState as useState5 } from \"react\";\nimport useTimeoutFn from \"react-use/lib/useTimeoutFn\";\nimport styled20 from \"styled-components\";\n\n// src/components/video/attribution.tsx\nimport React25 from \"react\";\nimport styled18 from \"styled-components\";\n\n// src/components/video/clips-branding.tsx\nimport React24 from \"react\";\nvar GIPHYClips = ({ onClick }) => /* @__PURE__ */ React24.createElement(\"svg\", { width: \"66px\", height: \"13px\", viewBox: \"0 0 66 13\", onClick }, /* @__PURE__ */ React24.createElement(\"g\", { stroke: \"none\", strokeWidth: 1, fill: \"none\", fillRule: \"evenodd\" }, /* @__PURE__ */ React24.createElement(\"g\", { transform: \"translate(-1060.000000, -462.000000)\", fill: \"#FFFFFF\", fillRule: \"nonzero\" }, /* @__PURE__ */ React24.createElement(\"g\", { transform: \"translate(931.000000, 286.375671)\" }, /* @__PURE__ */ React24.createElement(\"g\", { transform: \"translate(86.000000, 136.124329)\" }, /* @__PURE__ */ React24.createElement(\n  \"path\",\n  {\n    d: \"M47.968,49.1962322 C49.588,49.1962322 51.052,48.6202322 51.58,47.5522322 L51.58,43.8202322 L47.476,43.8202322 L47.476,45.6802322 L49.6,45.6802322 L49.6,46.7602322 C49.12,47.1082322 48.424,47.1922322 47.98,47.1922322 C46.288,47.1922322 45.724,45.8602322 45.724,44.7802322 C45.724,43.1362322 46.612,42.3202322 47.98,42.3202322 C48.544,42.3202322 49.288,42.4762322 49.9,43.0522322 L51.28,41.6842322 C50.176,40.5682322 49.144,40.3282322 47.98,40.3282322 C44.824,40.3282322 43.384,42.5842322 43.384,44.7802322 C43.384,46.9762322 44.644,49.1962322 47.968,49.1962322 Z M54.928,48.9682322 L54.928,40.5682322 L52.564,40.5682322 L52.564,48.9682322 L54.928,48.9682322 Z M58.648,48.9682322 L58.648,46.7002322 L60.352,46.7002322 C62.596,46.6762322 63.724,45.3442322 63.724,43.6282322 C63.724,41.9842322 62.608,40.5682322 60.352,40.5682322 L56.272,40.5682322 L56.272,48.9682322 L58.648,48.9682322 Z M60.352,44.6962322 L58.648,44.6962322 L58.648,42.6082322 L60.352,42.6082322 C61,42.6082322 61.348,43.1122322 61.348,43.6642322 C61.348,44.2162322 61.012,44.6962322 60.352,44.6962322 Z M66.796,48.9802322 L66.796,45.8002322 L69.82,45.8002322 L69.82,48.9802322 L72.172,48.9802322 L72.172,40.5802322 L69.82,40.5802322 L69.82,43.7722322 L66.796,43.7722322 L66.796,40.5802322 L64.42,40.5802322 L64.42,48.9802322 L66.796,48.9802322 Z M78.16,48.9682322 L78.16,45.6202322 L81.496,40.6762322 L81.496,40.5682322 L78.82,40.5682322 L77.008,43.4482322 L75.268,40.5682322 L72.592,40.5682322 L72.592,40.6642322 L75.784,45.6202322 L75.784,48.9682322 L78.16,48.9682322 Z M87.796,49.1362322 C88.972,49.1362322 90.088,48.7402322 90.952,47.8882322 L90.028,46.9642322 C89.44,47.5522322 88.576,47.8762322 87.796,47.8762322 C85.624,47.8762322 84.712,46.3522322 84.7,44.8162322 C84.688,43.2682322 85.66,41.6962322 87.796,41.6962322 C88.576,41.6962322 89.368,41.9722322 89.968,42.5602322 L90.868,41.6962322 C90.016,40.8442322 88.924,40.4242322 87.796,40.4242322 C84.796,40.4242322 83.356,42.6202322 83.3679256,44.8282322 C83.38,47.0362322 84.748,49.1362322 87.796,49.1362322 Z M93.028,48.9682322 L93.028,40.5802322 L91.792,40.5802322 L91.792,48.9682322 L93.028,48.9682322 Z M94.252,41.3122322 C94.252,42.3322322 95.788,42.3322322 95.788,41.3122322 C95.788,40.3042322 94.252,40.3042322 94.252,41.3122322 Z M95.632,48.9682322 L95.632,43.0282322 L94.396,43.0282322 L94.396,48.9682322 L95.632,48.9682322 Z M98.188,51.7162322 L98.188,48.1042322 C98.632,48.8362322 99.556,49.1002322 100.276,49.1002322 C102.112,49.1002322 103.264,47.8042322 103.264,46.0162322 C103.264,44.2282322 102.04,42.9442322 100.276,42.9322322 C99.484,42.9322322 98.644,43.2922322 98.188,44.0122322 L98.116,43.0522322 L96.952,43.0522322 L96.952,51.7162322 L98.188,51.7162322 Z M100.156,47.9002322 C99.076,47.9002322 98.296,47.0722322 98.296,46.0162322 C98.296,44.9602322 99.016,44.1322322 100.156,44.1322322 C101.284,44.1322322 102.028,44.9002322 102.028,46.0162322 C102.028,47.1202322 101.236,47.9002322 100.156,47.9002322 Z M106.456,49.1482322 C107.992,49.1482322 108.964,48.3802322 108.976,47.2762322 C108.988,45.7522322 107.56,45.5122322 106.468,45.4162322 C105.712,45.3442322 105.196,45.1522322 105.184,44.6602322 C105.184,44.1922322 105.688,43.9402322 106.444,43.9522322 C107.032,43.9522322 107.536,44.0722322 108.004,44.5042322 L108.7,43.6882322 C108.04,43.1002322 107.332,42.8962322 106.42,42.8962322 C105.316,42.8962322 103.96,43.3882322 103.96,44.6962322 C103.972,46.0042322 105.256,46.3642322 106.372,46.4722322 C107.248,46.5562322 107.752,46.7602322 107.74,47.2882322 C107.728,47.8402322 107.068,48.0562322 106.48,48.0562322 C105.784,48.0442322 104.956,47.7922322 104.404,47.1802322 L103.756,48.0562322 C104.536,48.9322322 105.496,49.1482322 106.456,49.1482322 Z\",\n    id: \"GIPHYClips\"\n  }\n))))));\nvar clips_branding_default = GIPHYClips;\n\n// src/components/video/attribution.tsx\nvar Container11 = styled18.div`\n    display: flex;\n    align-items: center;\n    font-family: interface, helvetica, arial;\n    cursor: pointer;\n`;\nvar Avatar5 = styled18(avatar_default)`\n    flex-shrink: 0;\n`;\nvar Right = styled18.div`\n    display: flex;\n    flex-direction: column;\n`;\nvar Attribution3 = ({ gif, className, onClick }) => {\n  const { user } = gif;\n  if (!(user == null ? void 0 : user.username) && !(user == null ? void 0 : user.display_name)) {\n    return null;\n  }\n  return /* @__PURE__ */ React25.createElement(\n    Container11,\n    {\n      className: [Attribution3.className, className].join(\" \"),\n      onClick: (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        if (onClick) {\n          onClick(gif);\n        } else {\n          const url = user.profile_url;\n          if (url)\n            window.open(url, \"_blank\");\n        }\n      }\n    },\n    /* @__PURE__ */ React25.createElement(Avatar5, { user }),\n    /* @__PURE__ */ React25.createElement(Right, null, /* @__PURE__ */ React25.createElement(\n      clips_branding_default,\n      {\n        onClick: (e) => {\n          e.preventDefault();\n          e.stopPropagation();\n          if (onClick) {\n            onClick(gif);\n          } else if (gif.url) {\n            window.open(gif.url, \"_blank\");\n          }\n        }\n      }\n    ), /* @__PURE__ */ React25.createElement(user_default, { user }))\n  );\n};\nAttribution3.className = \"giphy-attribution\";\nvar attribution_default2 = Attribution3;\n\n// src/components/video/controls/volume.tsx\nimport React26 from \"react\";\nvar VolumeSize = 25;\nvar VolumeOnIcon = ({ size = VolumeSize, onClick = () => {\n} }) => /* @__PURE__ */ React26.createElement(\"svg\", { width: size, height: size, viewBox: \"0 0 26 23\", onClick }, /* @__PURE__ */ React26.createElement(\"g\", { stroke: \"none\", strokeWidth: 1, fill: \"none\", fillRule: \"evenodd\" }, /* @__PURE__ */ React26.createElement(\"g\", { transform: \"translate(1.000000, 0.000000)\", fill: \"#FFF\", fillRule: \"nonzero\" }, /* @__PURE__ */ React26.createElement(\"path\", { d: \"M11.9625091,0.572584405 L11.9625091,22.2272644 C11.9625091,22.4856644 11.8466091,22.6635044 11.6151891,22.7611644 C11.3480491,22.8413444 11.1390491,22.7968844 10.9878091,22.6277844 L4.8732291,15.9143244 L0.573909096,15.9143244 C0.413549096,15.9143244 0.277509096,15.8588444 0.166549096,15.7475044 C0.0573082348,15.6406091 -0.00292164572,15.4933347 -1.77635684e-15,15.3405244 L-1.77635684e-15,7.45058441 C-1.77635684e-15,7.29022441 0.0555890961,7.15456441 0.167309096,7.04322441 C0.278269096,6.93226441 0.414309096,6.87640441 0.573909096,6.87640441 L4.8732291,6.87640441 L10.9874291,0.172064405 C11.1390491,0.00296440549 11.3484291,-0.0414955945 11.6151891,0.0386844055 C11.8466091,0.136344405 11.9621291,0.314564405 11.9621291,0.572584405 L11.9625091,0.572584405 Z\" }), /* @__PURE__ */ React26.createElement(\"path\", { d: \"M15.7579491,16.0914044 L14.6798891,13.6594044 C15.5739159,13.2635547 16.1503537,12.3776671 16.1501091,11.3999244 C16.150386,10.4242626 15.5763999,9.53983269 14.6852091,9.14272441 L15.7697291,6.71376441 C17.6193585,7.53872062 18.810518,9.37466359 18.8101092,11.3999244 C18.8105521,13.4298903 17.6139475,15.2691931 15.7579491,16.0914044 L15.7579491,16.0914044 Z\" }), /* @__PURE__ */ React26.createElement(\"path\", { d: \"M18.3647491,20.2619044 L17.2863091,17.8299044 C19.8302925,16.7031661 21.4705725,14.1822599 21.4701091,11.3999244 C21.4701091,8.59818441 19.8167291,6.09892441 17.3022691,4.97678441 L18.3864091,2.54782441 C21.8804724,4.10607079 24.1307363,7.57414217 24.1301093,11.3999244 C24.1308375,15.2343934 21.8705556,18.7086904 18.3647491,20.2619044 Z\" }))));\nvar VolumeOffIcon = ({ size = VolumeSize, onClick = () => {\n} }) => /* @__PURE__ */ React26.createElement(\n  \"svg\",\n  {\n    onClick,\n    height: size,\n    width: size,\n    viewBox: \"0 0 26 23\",\n    version: \"1.1\",\n    xmlns: \"http://www.w3.org/2000/svg\"\n  },\n  /* @__PURE__ */ React26.createElement(\"g\", { id: \"Page-1\", stroke: \"none\", strokeWidth: 1, fill: \"none\", fillRule: \"evenodd\" }, /* @__PURE__ */ React26.createElement(\"g\", { id: \"Group\", transform: \"translate(1.000000, 0.000000)\", fill: \"#FFFFFF\", fillRule: \"nonzero\" }, /* @__PURE__ */ React26.createElement(\n    \"path\",\n    {\n      d: \"M11.9625091,0.572584405 L11.9625091,22.2272644 C11.9625091,22.4856644 11.8466091,22.6635044 11.6151891,22.7611644 C11.3480491,22.8413444 11.1390491,22.7968844 10.9878091,22.6277844 L4.8732291,15.9143244 L0.573909096,15.9143244 C0.413549096,15.9143244 0.277509096,15.8588444 0.166549096,15.7475044 C0.0573082348,15.6406091 -0.00292164572,15.4933347 0,15.3405244 L0,7.45058441 C0,7.29022441 0.0555890961,7.15456441 0.167309096,7.04322441 C0.278269096,6.93226441 0.414309096,6.87640441 0.573909096,6.87640441 L4.8732291,6.87640441 L10.9874291,0.172064405 C11.1390491,0.00296440549 11.3484291,-0.0414955945 11.6151891,0.0386844055 C11.8466091,0.136344405 11.9621291,0.314564405 11.9621291,0.572584405 L11.9625091,0.572584405 Z\",\n      id: \"Path\"\n    }\n  )), /* @__PURE__ */ React26.createElement(\"g\", { id: \"Group\", transform: \"translate(14.887009, 6.947630)\", fill: \"#FFFFFF\", fillRule: \"nonzero\" }, /* @__PURE__ */ React26.createElement(\n    \"path\",\n    {\n      d: \"M7.88199149,6.27905236 C7.94693088,6.35707599 7.94693088,6.47033309 7.88199149,6.54835671 L6.54835671,7.88199149 C6.47033309,7.94693088 6.35707599,7.94693088 6.27905236,7.88199149 L3.96534802,5.56828715 L1.65164367,7.88199149 C1.57362004,7.94693088 1.46036294,7.94693088 1.38233932,7.88199149 L0.0487045381,6.54835671 C-0.016234846,6.47033309 -0.016234846,6.35707599 0.0487045381,6.27905236 L2.36240889,3.96534802 L0.0487045381,1.65164367 C-0.016234846,1.57362004 -0.016234846,1.46036294 0.0487045381,1.38233932 L1.38233932,0.0487045381 C1.46036294,-0.016234846 1.57362004,-0.016234846 1.65164367,0.0487045381 L3.96534802,2.36240889 L6.27905236,0.0487045381 C6.35707599,-0.016234846 6.47033309,-0.016234846 6.54835671,0.0487045381 L7.88199149,1.38233932 C7.94693088,1.46036294 7.94693088,1.57362004 7.88199149,1.65164367 L5.56828715,3.96534802 L7.88199149,6.27905236 Z\",\n      id: \"Shape\"\n    }\n  )))\n);\n\n// src/components/video/progress-bar.tsx\nimport { giphyWhite as giphyWhite2 } from \"@giphy/colors\";\nimport React27 from \"react\";\nimport useRaf from \"react-use/lib/useRaf\";\nimport styled19 from \"styled-components\";\nvar Bar = styled19.div`\n    background: ${giphyWhite2};\n    height: ${(props) => props.barHeight}px;\n    position: absolute;\n    width: 5px;\n    bottom: 0;\n    left: 0;\n    opacity: 0.95;\n`;\nvar ProgressBar = ({ videoEl }) => {\n  useRaf(2147483647, 100);\n  const time2 = (videoEl == null ? void 0 : videoEl.currentTime) || 0;\n  const duration = (videoEl == null ? void 0 : videoEl.duration) || 0;\n  const val = time2 / duration;\n  let percentage = Math.round(val * 100);\n  let barHeight = 5;\n  if ((videoEl == null ? void 0 : videoEl.height) < 200) {\n    barHeight = 3;\n  } else if ((videoEl == null ? void 0 : videoEl.height) < 300) {\n    barHeight = 4;\n  }\n  percentage = duration < 10 && percentage > 98 ? 100 : percentage;\n  return /* @__PURE__ */ React27.createElement(Bar, { style: { width: `${percentage}%` }, barHeight, className: \"hide-in-percy\" });\n};\nvar progress_bar_default = ProgressBar;\n\n// src/components/video/video.tsx\nimport { pingback as pingback2 } from \"@giphy/js-analytics\";\nimport { getBestVideo, getGifHeight as getGifHeight3 } from \"@giphy/js-util\";\nimport React28, { useCallback as useCallback2, useEffect as useEffect6, useRef as useRef6, useState as useState4 } from \"react\";\n\n// src/components/video/util.ts\nvar getErrorMessage = (code, src = \"\") => {\n  switch (code) {\n    case 1:\n      return \"Aborted. The fetching process for the media resource was aborted by the user agent at the user's request.\";\n    case 2:\n      return \"Network Error. A network error of some description caused the user agent to stop fetching the media resource, after the resource was established to be usable.\";\n    case 3:\n      return \"Decode Error. An error of some description occurred while decoding the media resource, after the resource was established to be usable.\";\n    case 4:\n      return `Can not play a video of type \"${src.split(\".\").pop()}\" on this platform.`;\n    default:\n      return \"\";\n  }\n};\nvar shouldFireQuartile = (quartile, playhead, duration, quartilesFired, loopNumber) => {\n  const currentQuartile = loopNumber + quartile;\n  if (!quartilesFired.has(currentQuartile) && duration > 0 && playhead > duration * quartile) {\n    quartilesFired.add(currentQuartile);\n    return true;\n  }\n  return false;\n};\n\n// src/components/video/video.tsx\nvar quartileEvents = [0.25, 0.5, 0.75];\nvar videoClassName = \"giphy-video\";\nvar Network = {\n  // The element has not yet been initialized. All attributes are in their initial states.\n  EMPTY: 0,\n  // The element's resource selection algorithm is active and has selected a resource, but it is not actually using the network at this time.\n  IDLE: 1,\n  // The user agent is actively trying to download data.\n  LOADING: 2,\n  // The element's resource selection algorithm is active, but it has not yet found a resource to use.\n  NO_SOURCE: 3\n};\nvar Video = ({\n  muted,\n  ccEnabled = false,\n  ccLanguage = \"en\",\n  loop = true,\n  onStateChange,\n  onTimeUpdate,\n  onCanPlay,\n  onFirstPlay,\n  onWaiting,\n  onMuted,\n  onError,\n  onEnded,\n  onLoop,\n  onQuartile,\n  onEndFullscreen,\n  setVideoEl,\n  gif,\n  width,\n  height: height_,\n  volume = 0.7,\n  className = videoClassName\n}) => {\n  var _a, _b, _c;\n  const height = height_ || getGifHeight3(gif, width);\n  const [media, setMedia] = useState4(getBestVideo(gif.video, width, height));\n  const seek = useRef6(0);\n  if (!media) {\n    console.warn(`GiphyJS No video content for id: ${gif.id}`);\n  }\n  const mountTime = useRef6(Date.now());\n  const hasPlayingFired = useRef6(false);\n  const loopNumber = useRef6(0);\n  const waitingCount = useRef6(0);\n  const quartilesFired = useRef6(/* @__PURE__ */ new Set());\n  useEffect6(() => {\n    mountTime.current = Date.now();\n    hasPlayingFired.current = false;\n    loopNumber.current = 1;\n    waitingCount.current = 0;\n    quartilesFired.current = /* @__PURE__ */ new Set();\n  }, [gif.id]);\n  const videoEl = useRef6(null);\n  useEffect6(() => {\n    const newMedia = getBestVideo(gif.video, width, height);\n    if (videoEl.current && (media == null ? void 0 : media.url) && newMedia.url !== media.url) {\n      if (media.url.indexOf(String(gif.id)) !== -1) {\n        seek.current = videoEl.current.currentTime;\n      }\n      setMedia(newMedia);\n    }\n  }, [width, height_, gif.video, height, media == null ? void 0 : media.url, gif.id]);\n  useEffect6(() => {\n    if (videoEl.current && (media == null ? void 0 : media.url) && seek.current) {\n      videoEl.current.currentTime = seek.current;\n      seek.current = 0;\n    }\n  }, [media == null ? void 0 : media.url, seek]);\n  const _onError = useCallback2(() => {\n    var _a2;\n    const el = videoEl.current;\n    const code = (_a2 = el == null ? void 0 : el.error) == null ? void 0 : _a2.code;\n    if (code && (el == null ? void 0 : el.src)) {\n      const message = getErrorMessage(code, el == null ? void 0 : el.src);\n      console.error(message);\n      onError == null ? void 0 : onError(code);\n    }\n  }, [onError]);\n  const _onPlaying = useCallback2(() => {\n    onStateChange == null ? void 0 : onStateChange(\"playing\");\n    if (!hasPlayingFired.current) {\n      hasPlayingFired.current = true;\n      if (gif.analytics_response_payload) {\n        pingback2({ actionType: \"START\", analyticsResponsePayload: gif.analytics_response_payload });\n      }\n      onFirstPlay == null ? void 0 : onFirstPlay(Date.now() - mountTime.current);\n    }\n  }, [onFirstPlay, onStateChange, gif]);\n  const _onPaused = useCallback2(() => onStateChange == null ? void 0 : onStateChange(\"paused\"), [onStateChange]);\n  const _onTimeUpdate = useCallback2(() => {\n    const el = videoEl.current;\n    if (el) {\n      const playhead = el.currentTime;\n      quartileEvents.some((q) => {\n        if (shouldFireQuartile(q, playhead, el.duration, quartilesFired.current, loopNumber.current)) {\n          onQuartile == null ? void 0 : onQuartile(q);\n          return true;\n        }\n        return false;\n      });\n      onTimeUpdate == null ? void 0 : onTimeUpdate(playhead || 0);\n    }\n  }, [onQuartile, onTimeUpdate]);\n  const _onCanPlay = useCallback2(() => onCanPlay == null ? void 0 : onCanPlay(), [onCanPlay]);\n  const _onWaiting = useCallback2(() => {\n    const el = videoEl.current;\n    if ((el == null ? void 0 : el.currentTime) !== 0 && (el == null ? void 0 : el.networkState) !== Network.IDLE) {\n      onWaiting == null ? void 0 : onWaiting(++waitingCount.current);\n    }\n  }, [onWaiting]);\n  const _onEnded = useCallback2(() => {\n    if (!hasPlayingFired.current) {\n      return;\n    }\n    if (loop && videoEl.current) {\n      videoEl.current.play();\n    }\n    onLoop == null ? void 0 : onLoop(loopNumber.current);\n    loopNumber.current = loopNumber.current + 1;\n    onEnded == null ? void 0 : onEnded();\n  }, [onEnded, loop, onLoop]);\n  const _onEndFullscreen = useCallback2(() => onEndFullscreen == null ? void 0 : onEndFullscreen(), [onEndFullscreen]);\n  const tryAutoPlayWithSound = useCallback2(\n    (videoEl2) => __async(void 0, null, function* () {\n      if (videoEl2) {\n        const promisePlay = videoEl2.play();\n        if (promisePlay !== void 0) {\n          try {\n            yield promisePlay;\n            onMuted == null ? void 0 : onMuted(false);\n          } catch (error) {\n            videoEl2.muted = true;\n            onMuted == null ? void 0 : onMuted(true);\n            videoEl2.play();\n          }\n        }\n      }\n    }),\n    [onMuted]\n  );\n  useEffect6(() => {\n    const el = videoEl.current;\n    if (el) {\n      tryAutoPlayWithSound(el);\n      setVideoEl == null ? void 0 : setVideoEl(el);\n      if (!isNaN(volume)) {\n        el.volume = volume;\n      }\n    }\n  }, []);\n  useEffect6(() => {\n    const el = videoEl.current;\n    if (el) {\n      el.addEventListener(\"play\", _onPlaying);\n      el.addEventListener(\"pause\", _onPaused);\n      el.addEventListener(\"error\", _onError);\n      el.addEventListener(\"timeupdate\", _onTimeUpdate);\n      el.addEventListener(\"canplay\", _onCanPlay);\n      el.addEventListener(\"ended\", _onEnded);\n      el.addEventListener(\"waiting\", _onWaiting);\n      el.addEventListener(\"webkitendfullscreen\", _onEndFullscreen);\n    }\n    return () => {\n      if (el) {\n        el.removeEventListener(\"play\", _onPlaying);\n        el.removeEventListener(\"pause\", _onPaused);\n        el.removeEventListener(\"error\", _onError);\n        el.removeEventListener(\"timeupdate\", _onTimeUpdate);\n        el.removeEventListener(\"canplay\", _onCanPlay);\n        el.removeEventListener(\"ended\", _onEnded);\n        el.removeEventListener(\"waiting\", _onWaiting);\n        el.removeEventListener(\"webkitendfullscreen\", _onEndFullscreen);\n      }\n    };\n  }, [_onPlaying, _onPaused, _onError, _onTimeUpdate, _onCanPlay, _onEnded, _onWaiting, _onEndFullscreen]);\n  const captionSrc = (_c = (_b = (_a = gif.video) == null ? void 0 : _a.captions) == null ? void 0 : _b[ccLanguage]) == null ? void 0 : _c.vtt;\n  return (media == null ? void 0 : media.url) ? /* @__PURE__ */ React28.createElement(\n    \"video\",\n    {\n      crossOrigin: \"anonymous\",\n      draggable: true,\n      className,\n      width,\n      height,\n      muted,\n      autoPlay: true,\n      playsInline: true,\n      ref: videoEl,\n      src: media == null ? void 0 : media.url,\n      \"data-giphy-id\": gif.id\n    },\n    ccEnabled && captionSrc && /* @__PURE__ */ React28.createElement(\"track\", { label: \"English\", kind: \"subtitles\", srcLang: ccLanguage, src: captionSrc, default: true })\n  ) : null;\n};\nVideo.className = videoClassName;\nvar video_default = Video;\n\n// src/components/video/index.tsx\nvar Container12 = styled20.div`\n    position: relative;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    background: black;\n    font-family: interface, helvetica, arial;\n    -webkit-font-smoothing: antialiased;\n`;\nvar Volume = styled20.div`\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    position: relative;\n    cursor: pointer;\n`;\nvar Controls = styled20.div`\n    position: absolute;\n    top: 10px;\n    right: 10px;\n    left: 10px;\n    bottom: 0;\n    display: flex;\n    justify-content: space-between;\n    opacity: ${(props) => props.isHovered ? 1 : 0};\n    transition: opacity ease-out 250ms;\n    align-items: flex-start;\n`;\nvar Title = styled20.div`\n    font-size: 22px;\n    color: white;\n    margin-bottom: 5px;\n    font-weight: bold;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    white-space: nowrap;\n    user-select: none;\n    cursor: pointer;\n`;\nvar TitleContainer = styled20.div`\n    position: relative;\n    min-width: 0;\n`;\nvar Gradient = styled20.div`\n    &:before {\n        background: linear-gradient(rgba(18, 18, 18, 0.6), rgba(0, 0, 0, 0));\n        content: '';\n        height: ${(props) => props.isLargePlayer ? 125 : 75}px;\n        left: 0;\n        pointer-events: none;\n        position: absolute;\n        top: 0;\n        width: 100%;\n    }\n    &:after {\n        background: linear-gradient(rgba(0, 0, 0, 0), rgba(18, 18, 18, 0.6));\n        content: '';\n        height: ${(props) => props.isLargePlayer ? 125 : 75}px;\n        left: 0;\n        pointer-events: none;\n        position: absolute;\n        bottom: 0;\n        width: 100%;\n    }\n`;\nvar LARGE_PLAYER_HEIGHT = 300;\nvar AUTO_HIDE_TIMEOUT = 4e3;\nvar VideoPlayer = (props) => {\n  const {\n    width,\n    hideMute,\n    hideAttribution,\n    hideProgressBar,\n    className,\n    persistentControls,\n    gif,\n    overlay: Overlay\n  } = props;\n  const [isHovered, setIsHovered] = useState5(false);\n  const [videoEl, _setVideoEl] = useState5(null);\n  const [muted, setMuted] = useState5(props.muted);\n  const [mutedByBrowser, setMutedByBrowser] = useState5(false);\n  const { setVideoEl, onMuted, onUserMuted } = props;\n  const height = props.height || getGifHeight4(gif, width);\n  const [, cancelHideTimeout, resetHideTimeout] = useTimeoutFn(() => {\n    setIsHovered(false);\n  }, AUTO_HIDE_TIMEOUT);\n  const combinedOnMuted = useCallback3(\n    (args) => {\n      onMuted == null ? void 0 : onMuted(args);\n      setMutedByBrowser(args);\n    },\n    [setMutedByBrowser, onMuted]\n  );\n  const combinedSetVideoEl = useCallback3(\n    (args) => {\n      setVideoEl == null ? void 0 : setVideoEl(args);\n      _setVideoEl(args);\n    },\n    [setVideoEl, _setVideoEl]\n  );\n  const toggleMute = () => {\n    if (mutedByBrowser) {\n      setMutedByBrowser(false);\n      setMuted(false);\n    } else {\n      setMuted(!muted);\n    }\n  };\n  useEffect7(() => {\n    setMuted(props.muted);\n  }, [props.muted]);\n  const showControls = persistentControls || isHovered;\n  const isLargePlayer = height >= LARGE_PLAYER_HEIGHT;\n  useEffect7(() => {\n    if (showControls) {\n      resetHideTimeout();\n    } else {\n      cancelHideTimeout();\n    }\n    return () => cancelHideTimeout();\n  }, [showControls, cancelHideTimeout, resetHideTimeout]);\n  return /* @__PURE__ */ React29.createElement(\n    Container12,\n    {\n      className,\n      style: { width, height },\n      onMouseOver: () => setIsHovered(true),\n      onMouseLeave: () => setIsHovered(false),\n      onMouseMove: () => {\n        setIsHovered(true);\n        resetHideTimeout();\n      },\n      onClick: (e) => {\n        onUserMuted == null ? void 0 : onUserMuted(!(muted || mutedByBrowser));\n        videoEl == null ? void 0 : videoEl.play();\n        e.preventDefault();\n        toggleMute();\n      }\n    },\n    /* @__PURE__ */ React29.createElement(video_default, __spreadProps(__spreadValues({}, props), { onMuted: combinedOnMuted, setVideoEl: combinedSetVideoEl, muted })),\n    showControls && /* @__PURE__ */ React29.createElement(Gradient, { isLargePlayer }),\n    /* @__PURE__ */ React29.createElement(Controls, { isHovered: showControls }, /* @__PURE__ */ React29.createElement(TitleContainer, null, isLargePlayer && /* @__PURE__ */ React29.createElement(\n      Title,\n      {\n        onClick: (e) => {\n          e.preventDefault();\n          e.stopPropagation();\n          window.open(gif.url, \"_blank\");\n        }\n      },\n      gif.title\n    ), videoEl && !hideAttribution ? /* @__PURE__ */ React29.createElement(attribution_default2, { gif }) : null), !hideMute && /* @__PURE__ */ React29.createElement(Volume, null, muted || mutedByBrowser ? /* @__PURE__ */ React29.createElement(VolumeOffIcon, null) : /* @__PURE__ */ React29.createElement(VolumeOnIcon, null))),\n    showControls && !hideProgressBar && videoEl ? /* @__PURE__ */ React29.createElement(progress_bar_default, { videoEl }) : null,\n    Overlay && /* @__PURE__ */ React29.createElement(Overlay, { gif, isHovered, width, height })\n  );\n};\nvar VideoWrapper = (props) => {\n  if (props.overlay && !props.controls) {\n    console.warn(`${Logger3.PREFIX}: Overlays only work when controls are enabled`);\n  }\n  return props.controls ? /* @__PURE__ */ React29.createElement(VideoPlayer, __spreadValues({}, props)) : /* @__PURE__ */ React29.createElement(video_default, __spreadValues({}, props));\n};\nvar video_default2 = VideoWrapper;\n\n// src/components/video/controls/play-pause.tsx\nimport React30 from \"react\";\nvar PlayPauseSize = 25;\nvar PlayIcon = ({ size = PlayPauseSize }) => /* @__PURE__ */ React30.createElement(\"svg\", { height: size, viewBox: \"15.39 10.84 18.21 24\", width: size, xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React30.createElement(\"g\", { fillRule: \"evenodd\", fill: \"none\" }, /* @__PURE__ */ React30.createElement(\n  \"path\",\n  {\n    fill: \"#fff\",\n    d: \"M15.836 10.842c.135 0 .27.04.404.12L33.444 22.86c.107.087.161.19.161.311 0 .12-.054.224-.161.31-11.649 7.575-17.528 11.362-17.64 11.362a.632.632 0 0 1-.41-.13l.025-23.75a.804.804 0 0 1 .417-.12z\"\n  }\n)));\nvar PauseIcon = ({ size = PlayPauseSize }) => /* @__PURE__ */ React30.createElement(\"svg\", { height: size, viewBox: \"0.92 0.92 23.54 24\", width: size, xmlns: \"http://www.w3.org/2000/svg\" }, /* @__PURE__ */ React30.createElement(\"g\", { id: \"Page-1\", stroke: \"none\", strokeWidth: \"1\", fill: \"none\", fillRule: \"evenodd\" }, /* @__PURE__ */ React30.createElement(\"g\", { id: \"Group\", transform: \"translate(0.916948, 0.916948)\", fill: \"#FFFFFF\", fillRule: \"nonzero\" }, /* @__PURE__ */ React30.createElement(\n  \"path\",\n  {\n    d: \"M0,23.2 L0,0.8 C0,0.3581722 0.3581722,0 0.8,0 L8.2,0 C8.64182776,0 9,0.3581722 9,0.8 L9,23.2 C9,23.6418278 8.64182776,24 8.2,24 L0.8,24 C0.3581722,24 0,23.6418278 0,23.2 Z\",\n    id: \"Path\"\n  }\n), /* @__PURE__ */ React30.createElement(\n  \"path\",\n  {\n    d: \"M14.5408163,23.2 L14.5408163,0.8 C14.5408163,0.3581722 14.8989886,0 15.3408163,0 L22.7408163,0 C23.1826441,0 23.5408163,0.3581722 23.5408163,0.8 L23.5408163,23.2 C23.5408163,23.6418278 23.1826441,24 22.7408163,24 L15.3408163,24 C14.8989886,24 14.5408163,23.6418278 14.5408163,23.2 Z\",\n    id: \"Path\"\n  }\n))));\n\n// src/components/video/video-overlay.tsx\nimport React31, { useEffect as useEffect8, useState as useState6 } from \"react\";\nimport styled21 from \"styled-components\";\nvar VideoContainer = styled21.div`\n    position: absolute;\n    top: 0;\n    left: 0;\n    bottom: 0;\n    right: 0;\n    height: 100%;\n    width: 100%;\n`;\nvar VideoStyled = styled21(video_default2)`\n    height: 100%;\n    display: inline-block;\n    object-fit: fill;\n    pointer-events: none;\n    background: rgb(0, 0, 0, 0);\n`;\nvar Button = styled21.div`\n    position: absolute;\n    top: 6px;\n    right: 6px;\n    cursor: pointer;\n    opacity: ${(props) => props.isHovered ? 1 : 0.8};\n    transition: opacity ease-out 800ms;\n`;\nvar speakerClassName = \"giphy-video-overlay-button\";\nvar VolumeButton = ({ muted, toggleMute, mutedByBrowser, isHovered }) => /* @__PURE__ */ React31.createElement(\n  Button,\n  {\n    className: speakerClassName,\n    onClick: (e) => {\n      e.preventDefault();\n      e.stopPropagation();\n      toggleMute();\n    },\n    isHovered\n  },\n  muted || mutedByBrowser || !isHovered ? /* @__PURE__ */ React31.createElement(VolumeOffIcon, null) : /* @__PURE__ */ React31.createElement(VolumeOnIcon, null)\n);\nvar VideoOverlay = ({\n  gif,\n  isHovered,\n  hideMuteButton,\n  width,\n  height,\n  className,\n  muted: userPrefMuted = false,\n  onUserMuted\n}) => {\n  const [muted, setMuted] = useState6(userPrefMuted);\n  const [mutedByBrowser, setMutedByBrowser] = useState6(false);\n  const toggleMute = () => {\n    if (mutedByBrowser) {\n      setMutedByBrowser(false);\n      setMuted(false);\n    } else {\n      onUserMuted == null ? void 0 : onUserMuted(!muted);\n      setMuted(!muted);\n    }\n  };\n  useEffect8(() => {\n    setMuted(userPrefMuted);\n  }, [userPrefMuted, setMuted]);\n  const props = { toggleMute, muted, mutedByBrowser };\n  return /* @__PURE__ */ React31.createElement(VideoContainer, { className }, isHovered && /* @__PURE__ */ React31.createElement(\n    VideoStyled,\n    {\n      gif,\n      key: gif.id,\n      loop: true,\n      controls: true,\n      hideAttribution: true,\n      hideMute: true,\n      persistentControls: true,\n      muted,\n      width,\n      height,\n      onMuted: setMutedByBrowser\n    }\n  ), !hideMuteButton && /* @__PURE__ */ React31.createElement(VolumeButton, __spreadProps(__spreadValues({}, props), { isHovered })));\n};\nVideoOverlay.imgClassName = speakerClassName;\nvar video_overlay_default = VideoOverlay;\n\n// src/index.ts\nappendGiphySDKRequestHeader(`X-GIPHY-SDK-NAME`, \"ReactSDK\");\nexport {\n  attribution_default as Attribution,\n  overlay_default as AttributionOverlay,\n  carousel_default as Carousel,\n  EmojiVariationsList,\n  gif_default as Gif,\n  grid_default as Grid,\n  loader_default as Loader,\n  PauseIcon,\n  PingbackContext,\n  PlayIcon,\n  PlayPauseSize,\n  search_bar_default as SearchBar,\n  SearchContext,\n  context_default as SearchContextManager,\n  suggestion_bar_default as SuggestionBar,\n  verified_badge_default as VerifiedBadge,\n  video_default2 as Video,\n  video_overlay_default as VideoOverlay,\n  VolumeOffIcon,\n  VolumeOnIcon,\n  VolumeSize\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isNavigator = exports.isBrowser = exports.off = exports.on = exports.noop = void 0;\nvar noop = function () { };\nexports.noop = noop;\nfunction on(obj) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (obj && obj.addEventListener) {\n        obj.addEventListener.apply(obj, args);\n    }\n}\nexports.on = on;\nfunction off(obj) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    if (obj && obj.removeEventListener) {\n        obj.removeEventListener.apply(obj, args);\n    }\n}\nexports.off = off;\nexports.isBrowser = typeof window !== 'undefined';\nexports.isNavigator = typeof navigator !== 'undefined';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useMountedState_1 = tslib_1.__importDefault(require(\"./useMountedState\"));\nfunction useAsyncFn(fn, deps, initialState) {\n    if (deps === void 0) { deps = []; }\n    if (initialState === void 0) { initialState = { loading: false }; }\n    var lastCallId = react_1.useRef(0);\n    var isMounted = useMountedState_1.default();\n    var _a = react_1.useState(initialState), state = _a[0], set = _a[1];\n    var callback = react_1.useCallback(function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        var callId = ++lastCallId.current;\n        if (!state.loading) {\n            set(function (prevState) { return (tslib_1.__assign(tslib_1.__assign({}, prevState), { loading: true })); });\n        }\n        return fn.apply(void 0, args).then(function (value) {\n            isMounted() && callId === lastCallId.current && set({ value: value, loading: false });\n            return value;\n        }, function (error) {\n            isMounted() && callId === lastCallId.current && set({ error: error, loading: false });\n            return error;\n        });\n    }, deps);\n    return [state, callback];\n}\nexports.default = useAsyncFn;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useTimeoutFn_1 = tslib_1.__importDefault(require(\"./useTimeoutFn\"));\nfunction useDebounce(fn, ms, deps) {\n    if (ms === void 0) { ms = 0; }\n    if (deps === void 0) { deps = []; }\n    var _a = useTimeoutFn_1.default(fn, ms), isReady = _a[0], cancel = _a[1], reset = _a[2];\n    react_1.useEffect(reset, deps);\n    return [isReady, cancel];\n}\nexports.default = useDebounce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useEffectOnce = function (effect) {\n    react_1.useEffect(effect, []);\n};\nexports.default = useEffectOnce;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar util_1 = require(\"./misc/util\");\nvar useIsomorphicLayoutEffect = util_1.isBrowser ? react_1.useLayoutEffect : react_1.useEffect;\nexports.default = useIsomorphicLayoutEffect;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nvar useLatest = function (value) {\n    var ref = react_1.useRef(value);\n    ref.current = value;\n    return ref;\n};\nexports.default = useLatest;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction useMountedState() {\n    var mountedRef = react_1.useRef(false);\n    var get = react_1.useCallback(function () { return mountedRef.current; }, []);\n    react_1.useEffect(function () {\n        mountedRef.current = true;\n        return function () {\n            mountedRef.current = false;\n        };\n    }, []);\n    return get;\n}\nexports.default = useMountedState;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useIsomorphicLayoutEffect_1 = tslib_1.__importDefault(require(\"./useIsomorphicLayoutEffect\"));\nvar useRaf = function (ms, delay) {\n    if (ms === void 0) { ms = 1e12; }\n    if (delay === void 0) { delay = 0; }\n    var _a = react_1.useState(0), elapsed = _a[0], set = _a[1];\n    useIsomorphicLayoutEffect_1.default(function () {\n        var raf;\n        var timerStop;\n        var start;\n        var onFrame = function () {\n            var time = Math.min(1, (Date.now() - start) / ms);\n            set(time);\n            loop();\n        };\n        var loop = function () {\n            raf = requestAnimationFrame(onFrame);\n        };\n        var onStart = function () {\n            timerStop = setTimeout(function () {\n                cancelAnimationFrame(raf);\n                set(1);\n            }, ms);\n            start = Date.now();\n            loop();\n        };\n        var timerDelay = setTimeout(onStart, delay);\n        return function () {\n            clearTimeout(timerStop);\n            clearTimeout(timerDelay);\n            cancelAnimationFrame(raf);\n        };\n    }, [ms, delay]);\n    return elapsed;\n};\nexports.default = useRaf;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useUnmount_1 = tslib_1.__importDefault(require(\"./useUnmount\"));\nvar useThrottle = function (value, ms) {\n    if (ms === void 0) { ms = 200; }\n    var _a = react_1.useState(value), state = _a[0], setState = _a[1];\n    var timeout = react_1.useRef();\n    var nextValue = react_1.useRef(null);\n    var hasNextValue = react_1.useRef(0);\n    react_1.useEffect(function () {\n        if (!timeout.current) {\n            setState(value);\n            var timeoutCallback_1 = function () {\n                if (hasNextValue.current) {\n                    hasNextValue.current = false;\n                    setState(nextValue.current);\n                    timeout.current = setTimeout(timeoutCallback_1, ms);\n                }\n                else {\n                    timeout.current = undefined;\n                }\n            };\n            timeout.current = setTimeout(timeoutCallback_1, ms);\n        }\n        else {\n            nextValue.current = value;\n            hasNextValue.current = true;\n        }\n    }, [value]);\n    useUnmount_1.default(function () {\n        timeout.current && clearTimeout(timeout.current);\n    });\n    return state;\n};\nexports.default = useThrottle;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar react_1 = require(\"react\");\nfunction useTimeoutFn(fn, ms) {\n    if (ms === void 0) { ms = 0; }\n    var ready = react_1.useRef(false);\n    var timeout = react_1.useRef();\n    var callback = react_1.useRef(fn);\n    var isReady = react_1.useCallback(function () { return ready.current; }, []);\n    var set = react_1.useCallback(function () {\n        ready.current = false;\n        timeout.current && clearTimeout(timeout.current);\n        timeout.current = setTimeout(function () {\n            ready.current = true;\n            callback.current();\n        }, ms);\n    }, [ms]);\n    var clear = react_1.useCallback(function () {\n        ready.current = null;\n        timeout.current && clearTimeout(timeout.current);\n    }, []);\n    // update ref when function changes\n    react_1.useEffect(function () {\n        callback.current = fn;\n    }, [fn]);\n    // set on mount, clear on unmount\n    react_1.useEffect(function () {\n        set();\n        return clear;\n    }, [ms]);\n    return [isReady, clear, set];\n}\nexports.default = useTimeoutFn;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar react_1 = require(\"react\");\nvar useEffectOnce_1 = tslib_1.__importDefault(require(\"./useEffectOnce\"));\nvar useUnmount = function (fn) {\n    var fnRef = react_1.useRef(fn);\n    // update the ref each render so if it change the newest callback will be invoked\n    fnRef.current = fn;\n    useEffectOnce_1.default(function () { return function () { return fnRef.current(); }; });\n};\nexports.default = useUnmount;\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n *  https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function() {\n'use strict';\n\n// Exit early if we're not running in a browser.\nif (typeof window !== 'object') {\n  return;\n}\n\n// Exit early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n    'IntersectionObserverEntry' in window &&\n    'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n  // Minimal polyfill for Edge 15's lack of `isIntersecting`\n  // See: https://github.com/w3c/IntersectionObserver/issues/211\n  if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n    Object.defineProperty(window.IntersectionObserverEntry.prototype,\n      'isIntersecting', {\n      get: function () {\n        return this.intersectionRatio > 0;\n      }\n    });\n  }\n  return;\n}\n\n/**\n * Returns the embedding frame element, if any.\n * @param {!Document} doc\n * @return {!Element}\n */\nfunction getFrameElement(doc) {\n  try {\n    return doc.defaultView && doc.defaultView.frameElement || null;\n  } catch (e) {\n    // Ignore the error.\n    return null;\n  }\n}\n\n/**\n * A local reference to the root document.\n */\nvar document = (function(startDoc) {\n  var doc = startDoc;\n  var frame = getFrameElement(doc);\n  while (frame) {\n    doc = frame.ownerDocument;\n    frame = getFrameElement(doc);\n  }\n  return doc;\n})(window.document);\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n/**\n * The signal updater for cross-origin intersection. When not null, it means\n * that the polyfill is configured to work in a cross-origin mode.\n * @type {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nvar crossOriginUpdater = null;\n\n/**\n * The current cross-origin intersection. Only used in the cross-origin mode.\n * @type {DOMRect|ClientRect}\n */\nvar crossOriginRect = null;\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n  this.time = entry.time;\n  this.target = entry.target;\n  this.rootBounds = ensureDOMRect(entry.rootBounds);\n  this.boundingClientRect = ensureDOMRect(entry.boundingClientRect);\n  this.intersectionRect = ensureDOMRect(entry.intersectionRect || getEmptyRect());\n  this.isIntersecting = !!entry.intersectionRect;\n\n  // Calculates the intersection ratio.\n  var targetRect = this.boundingClientRect;\n  var targetArea = targetRect.width * targetRect.height;\n  var intersectionRect = this.intersectionRect;\n  var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n  // Sets intersection ratio.\n  if (targetArea) {\n    // Round the intersection ratio to avoid floating point math issues:\n    // https://github.com/w3c/IntersectionObserver/issues/324\n    this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n  } else {\n    // If area is zero and is intersecting, sets to 1, otherwise to 0\n    this.intersectionRatio = this.isIntersecting ? 1 : 0;\n  }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n *     changes have queued. The function is not invoked if the queue has\n *     been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n  var options = opt_options || {};\n\n  if (typeof callback != 'function') {\n    throw new Error('callback must be a function');\n  }\n\n  if (\n    options.root &&\n    options.root.nodeType != 1 &&\n    options.root.nodeType != 9\n  ) {\n    throw new Error('root must be a Document or Element');\n  }\n\n  // Binds and throttles `this._checkForIntersections`.\n  this._checkForIntersections = throttle(\n      this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n  // Private properties.\n  this._callback = callback;\n  this._observationTargets = [];\n  this._queuedEntries = [];\n  this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n  // Public properties.\n  this.thresholds = this._initThresholds(options.threshold);\n  this.root = options.root || null;\n  this.rootMargin = this._rootMarginValues.map(function(margin) {\n    return margin.value + margin.unit;\n  }).join(' ');\n\n  /** @private @const {!Array<!Document>} */\n  this._monitoringDocuments = [];\n  /** @private @const {!Array<function()>} */\n  this._monitoringUnsubscribes = [];\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n/**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n\n/**\n * Sets up the polyfill in the cross-origin mode. The result is the\n * updater function that accepts two arguments: `boundingClientRect` and\n * `intersectionRect` - just as these fields would be available to the\n * parent via `IntersectionObserverEntry`. This function should be called\n * each time the iframe receives intersection information from the parent\n * window, e.g. via messaging.\n * @return {function(DOMRect|ClientRect, DOMRect|ClientRect)}\n */\nIntersectionObserver._setupCrossOriginUpdater = function() {\n  if (!crossOriginUpdater) {\n    /**\n     * @param {DOMRect|ClientRect} boundingClientRect\n     * @param {DOMRect|ClientRect} intersectionRect\n     */\n    crossOriginUpdater = function(boundingClientRect, intersectionRect) {\n      if (!boundingClientRect || !intersectionRect) {\n        crossOriginRect = getEmptyRect();\n      } else {\n        crossOriginRect = convertFromParentRect(boundingClientRect, intersectionRect);\n      }\n      registry.forEach(function(observer) {\n        observer._checkForIntersections();\n      });\n    };\n  }\n  return crossOriginUpdater;\n};\n\n\n/**\n * Resets the cross-origin mode.\n */\nIntersectionObserver._resetCrossOriginUpdater = function() {\n  crossOriginUpdater = null;\n  crossOriginRect = null;\n};\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n  var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n    return item.element == target;\n  });\n\n  if (isTargetAlreadyObserved) {\n    return;\n  }\n\n  if (!(target && target.nodeType == 1)) {\n    throw new Error('target must be an Element');\n  }\n\n  this._registerInstance();\n  this._observationTargets.push({element: target, entry: null});\n  this._monitorIntersections(target.ownerDocument);\n  this._checkForIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n  this._observationTargets =\n      this._observationTargets.filter(function(item) {\n        return item.element != target;\n      });\n  this._unmonitorIntersections(target.ownerDocument);\n  if (this._observationTargets.length == 0) {\n    this._unregisterInstance();\n  }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n  this._observationTargets = [];\n  this._unmonitorAllIntersections();\n  this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n  var records = this._queuedEntries.slice();\n  this._queuedEntries = [];\n  return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n *     a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n  var threshold = opt_threshold || [0];\n  if (!Array.isArray(threshold)) threshold = [threshold];\n\n  return threshold.sort().filter(function(t, i, a) {\n    if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n      throw new Error('threshold must be a number between 0 and 1 inclusively');\n    }\n    return t !== a[i - 1];\n  });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n *     defaulting to '0px'.\n * @return {Array<Object>} An array of margin objects with the keys\n *     value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n  var marginString = opt_rootMargin || '0px';\n  var margins = marginString.split(/\\s+/).map(function(margin) {\n    var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n    if (!parts) {\n      throw new Error('rootMargin must be specified in pixels or percent');\n    }\n    return {value: parseFloat(parts[1]), unit: parts[2]};\n  });\n\n  // Handles shorthand.\n  margins[1] = margins[1] || margins[0];\n  margins[2] = margins[2] || margins[0];\n  margins[3] = margins[3] || margins[1];\n\n  return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function(doc) {\n  var win = doc.defaultView;\n  if (!win) {\n    // Already destroyed.\n    return;\n  }\n  if (this._monitoringDocuments.indexOf(doc) != -1) {\n    // Already monitoring.\n    return;\n  }\n\n  // Private state for monitoring.\n  var callback = this._checkForIntersections;\n  var monitoringInterval = null;\n  var domObserver = null;\n\n  // If a poll interval is set, use polling instead of listening to\n  // resize and scroll events or DOM mutations.\n  if (this.POLL_INTERVAL) {\n    monitoringInterval = win.setInterval(callback, this.POLL_INTERVAL);\n  } else {\n    addEvent(win, 'resize', callback, true);\n    addEvent(doc, 'scroll', callback, true);\n    if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in win) {\n      domObserver = new win.MutationObserver(callback);\n      domObserver.observe(doc, {\n        attributes: true,\n        childList: true,\n        characterData: true,\n        subtree: true\n      });\n    }\n  }\n\n  this._monitoringDocuments.push(doc);\n  this._monitoringUnsubscribes.push(function() {\n    // Get the window object again. When a friendly iframe is destroyed, it\n    // will be null.\n    var win = doc.defaultView;\n\n    if (win) {\n      if (monitoringInterval) {\n        win.clearInterval(monitoringInterval);\n      }\n      removeEvent(win, 'resize', callback, true);\n    }\n\n    removeEvent(doc, 'scroll', callback, true);\n    if (domObserver) {\n      domObserver.disconnect();\n    }\n  });\n\n  // Also monitor the parent.\n  var rootDoc =\n    (this.root && (this.root.ownerDocument || this.root)) || document;\n  if (doc != rootDoc) {\n    var frame = getFrameElement(doc);\n    if (frame) {\n      this._monitorIntersections(frame.ownerDocument);\n    }\n  }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function(doc) {\n  var index = this._monitoringDocuments.indexOf(doc);\n  if (index == -1) {\n    return;\n  }\n\n  var rootDoc =\n    (this.root && (this.root.ownerDocument || this.root)) || document;\n\n  // Check if any dependent targets are still remaining.\n  var hasDependentTargets =\n      this._observationTargets.some(function(item) {\n        var itemDoc = item.element.ownerDocument;\n        // Target is in this context.\n        if (itemDoc == doc) {\n          return true;\n        }\n        // Target is nested in this context.\n        while (itemDoc && itemDoc != rootDoc) {\n          var frame = getFrameElement(itemDoc);\n          itemDoc = frame && frame.ownerDocument;\n          if (itemDoc == doc) {\n            return true;\n          }\n        }\n        return false;\n      });\n  if (hasDependentTargets) {\n    return;\n  }\n\n  // Unsubscribe.\n  var unsubscribe = this._monitoringUnsubscribes[index];\n  this._monitoringDocuments.splice(index, 1);\n  this._monitoringUnsubscribes.splice(index, 1);\n  unsubscribe();\n\n  // Also unmonitor the parent.\n  if (doc != rootDoc) {\n    var frame = getFrameElement(doc);\n    if (frame) {\n      this._unmonitorIntersections(frame.ownerDocument);\n    }\n  }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @param {!Document} doc\n * @private\n */\nIntersectionObserver.prototype._unmonitorAllIntersections = function() {\n  var unsubscribes = this._monitoringUnsubscribes.slice(0);\n  this._monitoringDocuments.length = 0;\n  this._monitoringUnsubscribes.length = 0;\n  for (var i = 0; i < unsubscribes.length; i++) {\n    unsubscribes[i]();\n  }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n  if (!this.root && crossOriginUpdater && !crossOriginRect) {\n    // Cross origin monitoring, but no initial data available yet.\n    return;\n  }\n\n  var rootIsInDom = this._rootIsInDom();\n  var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n  this._observationTargets.forEach(function(item) {\n    var target = item.element;\n    var targetRect = getBoundingClientRect(target);\n    var rootContainsTarget = this._rootContainsTarget(target);\n    var oldEntry = item.entry;\n    var intersectionRect = rootIsInDom && rootContainsTarget &&\n        this._computeTargetAndRootIntersection(target, targetRect, rootRect);\n\n    var rootBounds = null;\n    if (!this._rootContainsTarget(target)) {\n      rootBounds = getEmptyRect();\n    } else if (!crossOriginUpdater || this.root) {\n      rootBounds = rootRect;\n    }\n\n    var newEntry = item.entry = new IntersectionObserverEntry({\n      time: now(),\n      target: target,\n      boundingClientRect: targetRect,\n      rootBounds: rootBounds,\n      intersectionRect: intersectionRect\n    });\n\n    if (!oldEntry) {\n      this._queuedEntries.push(newEntry);\n    } else if (rootIsInDom && rootContainsTarget) {\n      // If the new entry intersection ratio has crossed any of the\n      // thresholds, add a new entry.\n      if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n        this._queuedEntries.push(newEntry);\n      }\n    } else {\n      // If the root is not in the DOM or target is not contained within\n      // root but the previous entry for this target had an intersection,\n      // add a new record indicating removal.\n      if (oldEntry && oldEntry.isIntersecting) {\n        this._queuedEntries.push(newEntry);\n      }\n    }\n  }, this);\n\n  if (this._queuedEntries.length) {\n    this._callback(this.takeRecords(), this);\n  }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} targetRect The bounding rect of the target.\n * @param {Object} rootRect The bounding rect of the root after being\n *     expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n *     intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n    function(target, targetRect, rootRect) {\n  // If the element isn't displayed, an intersection can't happen.\n  if (window.getComputedStyle(target).display == 'none') return;\n\n  var intersectionRect = targetRect;\n  var parent = getParentNode(target);\n  var atRoot = false;\n\n  while (!atRoot && parent) {\n    var parentRect = null;\n    var parentComputedStyle = parent.nodeType == 1 ?\n        window.getComputedStyle(parent) : {};\n\n    // If the parent isn't displayed, an intersection can't happen.\n    if (parentComputedStyle.display == 'none') return null;\n\n    if (parent == this.root || parent.nodeType == /* DOCUMENT */ 9) {\n      atRoot = true;\n      if (parent == this.root || parent == document) {\n        if (crossOriginUpdater && !this.root) {\n          if (!crossOriginRect ||\n              crossOriginRect.width == 0 && crossOriginRect.height == 0) {\n            // A 0-size cross-origin intersection means no-intersection.\n            parent = null;\n            parentRect = null;\n            intersectionRect = null;\n          } else {\n            parentRect = crossOriginRect;\n          }\n        } else {\n          parentRect = rootRect;\n        }\n      } else {\n        // Check if there's a frame that can be navigated to.\n        var frame = getParentNode(parent);\n        var frameRect = frame && getBoundingClientRect(frame);\n        var frameIntersect =\n            frame &&\n            this._computeTargetAndRootIntersection(frame, frameRect, rootRect);\n        if (frameRect && frameIntersect) {\n          parent = frame;\n          parentRect = convertFromParentRect(frameRect, frameIntersect);\n        } else {\n          parent = null;\n          intersectionRect = null;\n        }\n      }\n    } else {\n      // If the element has a non-visible overflow, and it's not the <body>\n      // or <html> element, update the intersection rect.\n      // Note: <body> and <html> cannot be clipped to a rect that's not also\n      // the document rect, so no need to compute a new intersection.\n      var doc = parent.ownerDocument;\n      if (parent != doc.body &&\n          parent != doc.documentElement &&\n          parentComputedStyle.overflow != 'visible') {\n        parentRect = getBoundingClientRect(parent);\n      }\n    }\n\n    // If either of the above conditionals set a new parentRect,\n    // calculate new intersection data.\n    if (parentRect) {\n      intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n    }\n    if (!intersectionRect) break;\n    parent = parent && getParentNode(parent);\n  }\n  return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {ClientRect} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n  var rootRect;\n  if (this.root && !isDoc(this.root)) {\n    rootRect = getBoundingClientRect(this.root);\n  } else {\n    // Use <html>/<body> instead of window since scroll bars affect size.\n    var doc = isDoc(this.root) ? this.root : document;\n    var html = doc.documentElement;\n    var body = doc.body;\n    rootRect = {\n      top: 0,\n      left: 0,\n      right: html.clientWidth || body.clientWidth,\n      width: html.clientWidth || body.clientWidth,\n      bottom: html.clientHeight || body.clientHeight,\n      height: html.clientHeight || body.clientHeight\n    };\n  }\n  return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {DOMRect|ClientRect} rect The rect object to expand.\n * @return {ClientRect} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n  var margins = this._rootMarginValues.map(function(margin, i) {\n    return margin.unit == 'px' ? margin.value :\n        margin.value * (i % 2 ? rect.width : rect.height) / 100;\n  });\n  var newRect = {\n    top: rect.top - margins[0],\n    right: rect.right + margins[1],\n    bottom: rect.bottom + margins[2],\n    left: rect.left - margins[3]\n  };\n  newRect.width = newRect.right - newRect.left;\n  newRect.height = newRect.bottom - newRect.top;\n\n  return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n *    particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n *    particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n    function(oldEntry, newEntry) {\n\n  // To make comparing easier, an entry that has a ratio of 0\n  // but does not actually intersect is given a value of -1\n  var oldRatio = oldEntry && oldEntry.isIntersecting ?\n      oldEntry.intersectionRatio || 0 : -1;\n  var newRatio = newEntry.isIntersecting ?\n      newEntry.intersectionRatio || 0 : -1;\n\n  // Ignore unchanged ratios\n  if (oldRatio === newRatio) return;\n\n  for (var i = 0; i < this.thresholds.length; i++) {\n    var threshold = this.thresholds[i];\n\n    // Return true if an entry matches a threshold or if the new ratio\n    // and the old ratio are on the opposite sides of a threshold.\n    if (threshold == oldRatio || threshold == newRatio ||\n        threshold < oldRatio !== threshold < newRatio) {\n      return true;\n    }\n  }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n  return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n  var rootDoc =\n    (this.root && (this.root.ownerDocument || this.root)) || document;\n  return (\n    containsDeep(rootDoc, target) &&\n    (!this.root || rootDoc == target.ownerDocument)\n  );\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n  if (registry.indexOf(this) < 0) {\n    registry.push(this);\n  }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n  var index = registry.indexOf(this);\n  if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n  return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n *     function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n  var timer = null;\n  return function () {\n    if (!timer) {\n      timer = setTimeout(function() {\n        fn();\n        timer = null;\n      }, timeout);\n    }\n  };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n *     phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n  if (typeof node.addEventListener == 'function') {\n    node.addEventListener(event, fn, opt_useCapture || false);\n  }\n  else if (typeof node.attachEvent == 'function') {\n    node.attachEvent('on' + event, fn);\n  }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n *     flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n  if (typeof node.removeEventListener == 'function') {\n    node.removeEventListener(event, fn, opt_useCapture || false);\n  }\n  else if (typeof node.detachEvent == 'function') {\n    node.detachEvent('on' + event, fn);\n  }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object|?ClientRect} The intersection rect or undefined if no\n *     intersection is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n  var top = Math.max(rect1.top, rect2.top);\n  var bottom = Math.min(rect1.bottom, rect2.bottom);\n  var left = Math.max(rect1.left, rect2.left);\n  var right = Math.min(rect1.right, rect2.right);\n  var width = right - left;\n  var height = bottom - top;\n\n  return (width >= 0 && height >= 0) && {\n    top: top,\n    bottom: bottom,\n    left: left,\n    right: right,\n    width: width,\n    height: height\n  } || null;\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {DOMRect|ClientRect} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n  var rect;\n\n  try {\n    rect = el.getBoundingClientRect();\n  } catch (err) {\n    // Ignore Windows 7 IE11 \"Unspecified error\"\n    // https://github.com/w3c/IntersectionObserver/pull/205\n  }\n\n  if (!rect) return getEmptyRect();\n\n  // Older IE\n  if (!(rect.width && rect.height)) {\n    rect = {\n      top: rect.top,\n      right: rect.right,\n      bottom: rect.bottom,\n      left: rect.left,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n  }\n  return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {ClientRect} The empty rect.\n */\nfunction getEmptyRect() {\n  return {\n    top: 0,\n    bottom: 0,\n    left: 0,\n    right: 0,\n    width: 0,\n    height: 0\n  };\n}\n\n\n/**\n * Ensure that the result has all of the necessary fields of the DOMRect.\n * Specifically this ensures that `x` and `y` fields are set.\n *\n * @param {?DOMRect|?ClientRect} rect\n * @return {?DOMRect}\n */\nfunction ensureDOMRect(rect) {\n  // A `DOMRect` object has `x` and `y` fields.\n  if (!rect || 'x' in rect) {\n    return rect;\n  }\n  // A IE's `ClientRect` type does not have `x` and `y`. The same is the case\n  // for internally calculated Rect objects. For the purposes of\n  // `IntersectionObserver`, it's sufficient to simply mirror `left` and `top`\n  // for these fields.\n  return {\n    top: rect.top,\n    y: rect.top,\n    bottom: rect.bottom,\n    left: rect.left,\n    x: rect.left,\n    right: rect.right,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\n\n/**\n * Inverts the intersection and bounding rect from the parent (frame) BCR to\n * the local BCR space.\n * @param {DOMRect|ClientRect} parentBoundingRect The parent's bound client rect.\n * @param {DOMRect|ClientRect} parentIntersectionRect The parent's own intersection rect.\n * @return {ClientRect} The local root bounding rect for the parent's children.\n */\nfunction convertFromParentRect(parentBoundingRect, parentIntersectionRect) {\n  var top = parentIntersectionRect.top - parentBoundingRect.top;\n  var left = parentIntersectionRect.left - parentBoundingRect.left;\n  return {\n    top: top,\n    left: left,\n    height: parentIntersectionRect.height,\n    width: parentIntersectionRect.width,\n    bottom: top + parentIntersectionRect.height,\n    right: left + parentIntersectionRect.width\n  };\n}\n\n\n/**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n  var node = child;\n  while (node) {\n    if (node == parent) return true;\n\n    node = getParentNode(node);\n  }\n  return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n  var parent = node.parentNode;\n\n  if (node.nodeType == /* DOCUMENT */ 9 && node != document) {\n    // If this node is a document node, look for the embedding frame.\n    return getFrameElement(node);\n  }\n\n  // If the parent has element that is assigned through shadow root slot\n  if (parent && parent.assignedSlot) {\n    parent = parent.assignedSlot.parentNode\n  }\n\n  if (parent && parent.nodeType == 11 && parent.host) {\n    // If the parent is a shadow root, return the host element.\n    return parent.host;\n  }\n\n  return parent;\n}\n\n/**\n * Returns true if `node` is a Document.\n * @param {!Node} node\n * @returns {boolean}\n */\nfunction isDoc(node) {\n  return node && node.nodeType === 9;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}());\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n"],"names":["giphyBlack","giphyDarkestGrey","giphyCharcoal","giphyLightGrey","giphyWhite","giphyBlue","giphyGreen","giphyPurple","giphyRed","giphyYellow","throttle","delay","noTrailing","callback","debounceMode","timeoutID","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments","length","arguments_","Array","_key","self","this","elapsed","Date","now","exec","apply","undefined","setTimeout","cancel","debounce","atBegin","_a","__defProp","Object","defineProperty","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","prototype","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","key","value","enumerable","configurable","writable","__spreadValues","a","b","prop","call","merge_attributes_default","attributes","newAttributes","result1","result2","global_default","window","global","pingBackUrl","GIPHY_PINGBACK_URL","queuedPingbackEvents","giphyRandomId","loggedInUserId","sendPingbacks","sendEvents","events","headers","set","debug","fetch","method","body","JSON","stringify","catch","error","warn","Promise","resolve","sendPingback","_a2","_b","debouncedPingbackEvent","addEventListener","pingback_default","userId","eventType","actionType","queueEvents","analyticsResponsePayload","String","newEvent","ts","action_type","user_id","analytics_response_payload","logged_in_user_id","ENABLED","event_type","push","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__spreadProps","__async","__this","__arguments","generator","reject","fulfilled","step","next","e","rejected","throw","x","done","then","Img","avatar_default","user","className","defaultAvatarId","useRef","Math","floor","random","url","avatar_url","avatar","ext","split","pop","toLowerCase","replace","getSmallAvatar","current","src","VerifiedBadge","size","fill","join","height","width","viewBox","checkMarkClassName","d","transform","verified_badge_default","Username","VerifiedBadge2","Container","user_default","display_name","username","is_verified","Container2","Avatar2","Attribution","gif","onClick","preventDefault","stopPropagation","profile_url","open","attribution_default","Background","Attribution2","Container3","overlay_default","isHovered","hasHovered","style","opacity","observer_default","children","onVisibleChange","config","container","useEffect","io","IntersectionObserver","entry","isIntersecting","observe","disconnect","ref","firePingback","target","position","onGifClick","onGifHover","PingbackContext","createContext","pingback_context_manager_default","parentAttributes","useContext","Provider","Container4","GRID_COLORS","placeholder","canUseDOM","document","createElement","noop","RenderOnClient","render","setRender","useState","Gif","percentWidth","forcedHeight","onGifRightClick","onGifClick2","onGifKeyPress","onGifSeen","onGifSeen2","onGifVisible","backgroundColor","overlay","hideAttribution","noLink","borderRadius","tabIndex","hasFiredSeen","setHasFiredSeen","setHovered","shouldShowMedia","setShouldShowMedia","loadedClassname","setLoadedClassName","defaultBgColor","round","image","showGifObserver","fullGifObserver","hoverTimeout","sendOnSeen","Overlay","id","title","boundingClientRect","watchGif","threshold","complete","percentHeight","bestRendition","images","rendition","renditionName","background","is_sticker","overflow","as","href","onMouseOver","persist","onMouseLeave","onContextMenu","onKeyPress","type","srcSet","webp","suppressHydrationWarning","imgClassName","alt","onLoad","imgLoadedClassName","gif_default","Container5","Gif2","props","ml","Observer2","Loader","isFirstLoad","defaultProps","freeze","gutter","initialGifs","initialState","isFetching","gifs","isLoaderVisible","isDoneFetching","_Carousel","PureComponent","constructor","super","state","unmounted","paginator","fetchGifs","onLoaderVisible","isVisible","setState","onFetch","existingGifs","onGifsFetched","componentDidMount","componentWillUnmount","gifHeight","gifWidth","noResultsMessage","loaderConfig","showLoader","layout_type","map","Message","fetch_error_default","DEFAULT_BG_COLOR","DEFAULT_DIVIDER_COLOR","Root","VariationsViewport","VariationsContainer","Divider","color","Emoji","EmojiVariationsList","dividerColor","fetchVariations","GifProps","gifWidthProp","loader","LoaderComponent","onVariationsFetched","other","source","exclude","indexOf","__objRest","variationCount","variation_count","variationsContainerWidth","max","fetchVariationsRef","useLatest","onVariationsFetchedRef","variationsState","syncVariations","useAsyncFn","result","variations","data","loading","emojiCommonProps","dividerClassName","variationsViewportClassName","variationsContainerClassName","loaderClassName","gif2","getVariationsContent","bouncer","keyframes","Container6","Dot","loader_default","masonry_grid_default","memo","columns","useTransform","itemWidth","itemHeights","columnOffsets","containerStyle","columnTarget","columnHeights","_","index","fillArray","child","min","top","left","getChildren","Loader3","defaultProps2","initialState2","isError","_Grid","fetchDebounce","prefetchCount","gifs2","onGifsFetchError","layoutType","LoaderVisual","getDerivedStateFromProps","prevState","gutterOffset","grid_default","CssVars","SearchContext","searchbarHeight","mobileMediaQuery","mobileSearchbarHeight","darkMode","css","hideCancelButton","_SearchContext","Icon","CancelIcon","setCleared","term","setActiveChannel","activeChannel","version","xmlns","stroke","strokeWidth","fillRule","cancel_icon_default","animateAvatar","Avatar3","Username2","UsernamePill","search_bar_channel_default","purp","pink","strongEasing","searchFx","plus","gradientFade","Container8","GradientBox","Fx","Scanner","SearchIcon2","xlinkHref","mask","search_button_default","throttledFetch","useThrottle","Container9","Input","isUsernameSearch","SearchBar","placeholder2","clear","autoFocus","searchDebounce","onEnter","setChannels","setIsFocused","_inputValOverride","_setSearch","val","setVal","useDebounce","inputRef","previousActiveChannel","usePrevious","isCleared","focus","onChange","onFocus","onBlur","autoCapitalize","autoCorrect","autoComplete","onKeyUp","keyCode","onKeyDown","ChannelPillContainer","TrendingSearchPillContainer","Avatar4","TrendingIcon2","y","ChannelPill","channel","TrendingSearchPill","trendingSearch","setSearch","Container10","SuggestionBar","trendingSearches","currentChannels","clips_branding_default","Container11","Avatar5","Right","Attribution3","attribution_default2","VolumeOnIcon","VolumeOffIcon","Bar","barHeight","progress_bar_default","videoEl","useRaf","time2","currentTime","duration","percentage","quartileEvents","videoClassName","Video","muted","ccEnabled","ccLanguage","loop","onStateChange","onTimeUpdate","onCanPlay","onFirstPlay","onWaiting","onMuted","onError","onEnded","onLoop","onQuartile","onEndFullscreen","setVideoEl","height_","volume","_c","media","setMedia","video","seek","console","mountTime","hasPlayingFired","loopNumber","waitingCount","quartilesFired","Set","newMedia","_onError","useCallback","el","code","message","getErrorMessage","_onPlaying","_onPaused","_onTimeUpdate","playhead","some","q","quartile","currentQuartile","has","add","shouldFireQuartile","_onCanPlay","_onWaiting","networkState","_onEnded","play","_onEndFullscreen","tryAutoPlayWithSound","videoEl2","promisePlay","isNaN","removeEventListener","captionSrc","captions","vtt","crossOrigin","draggable","autoPlay","playsInline","label","kind","srcLang","default","video_default","Container12","Volume","Controls","Title","TitleContainer","Gradient","isLargePlayer","VideoPlayer","hideMute","hideProgressBar","persistentControls","setIsHovered","_setVideoEl","setMuted","mutedByBrowser","setMutedByBrowser","onUserMuted","cancelHideTimeout","resetHideTimeout","useTimeoutFn","combinedOnMuted","args","combinedSetVideoEl","showControls","onMouseMove","controls","PREFIX","exports","isNavigator","isBrowser","off","on","_i","navigator","tslib_1","react_1","useMountedState_1","__importDefault","fn","deps","lastCallId","isMounted","callId","__assign","useTimeoutFn_1","ms","isReady","reset","effect","useIsomorphicLayoutEffect","useLayoutEffect","mountedRef","get","useIsomorphicLayoutEffect_1","raf","timerStop","start","onFrame","time","requestAnimationFrame","timerDelay","cancelAnimationFrame","useUnmount_1","timeout","nextValue","hasNextValue","timeoutCallback_1","ready","useEffectOnce_1","fnRef","IntersectionObserverEntry","intersectionRatio","doc","frame","getFrameElement","ownerDocument","registry","crossOriginUpdater","crossOriginRect","THROTTLE_TIMEOUT","POLL_INTERVAL","USE_MUTATION_OBSERVER","_setupCrossOriginUpdater","intersectionRect","convertFromParentRect","bottom","right","forEach","observer","_checkForIntersections","_resetCrossOriginUpdater","_observationTargets","item","element","nodeType","Error","_registerInstance","_monitorIntersections","unobserve","filter","_unmonitorIntersections","_unregisterInstance","_unmonitorAllIntersections","takeRecords","records","_queuedEntries","slice","_initThresholds","opt_threshold","isArray","sort","t","i","_parseRootMargin","opt_rootMargin","margins","margin","parts","parseFloat","unit","win","defaultView","_monitoringDocuments","monitoringInterval","domObserver","setInterval","addEvent","MutationObserver","childList","characterData","subtree","_monitoringUnsubscribes","clearInterval","removeEvent","rootDoc","root","hasDependentTargets","itemDoc","unsubscribe","splice","unsubscribes","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","targetRect","getBoundingClientRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","rootBounds","newEntry","performance","_hasCrossedThreshold","_callback","getComputedStyle","display","rect1","rect2","parent","getParentNode","atRoot","parentRect","parentComputedStyle","frameRect","frameIntersect","documentElement","isDoc","html","clientWidth","clientHeight","_expandRectByRootMargin","rect","_rootMarginValues","newRect","oldRatio","newRatio","thresholds","containsDeep","frameElement","ensureDOMRect","targetArea","intersectionArea","Number","toFixed","opt_options","timer","options","bind","rootMargin","node","event","opt_useCapture","attachEvent","detachEvent","err","parentBoundingRect","parentIntersectionRect","parentNode","assignedSlot","host","extendStatics","setPrototypeOf","__proto__","p","__extends","TypeError","__","create","assign","s","n","__rest","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__esDecorate","ctor","descriptorIn","contextIn","initializers","extraInitializers","accept","f","descriptor","name","context","access","addInitializer","init","unshift","__runInitializers","thisArg","useValue","__propKey","concat","__setFunctionName","prefix","description","__metadata","metadataKey","metadataValue","metadata","__awaiter","_arguments","P","__generator","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","__createBinding","o","m","k","k2","__esModule","__exportStar","__values","__read","ar","__spread","__spreadArrays","il","j","jl","__spreadArray","to","from","pack","l","__await","__asyncGenerator","asyncIterator","AsyncIterator","resume","fulfill","settle","shift","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__setModuleDefault","__importStar","mod","__classPrivateFieldGet","receiver","__classPrivateFieldSet","__classPrivateFieldIn","__addDisposableResource","env","async","dispose","inner","asyncDispose","stack","_SuppressedError","SuppressedError","suppressed","__disposeResources","fail","hasError","__rewriteRelativeImportExtension","path","preserveJsx","test","tsx","cm"],"sourceRoot":""}

VaKeR 2022