{"version":3,"file":"@giphy-9fe4a30e.js","sources":["../../node_modules/@giphy/js-util/dist/index.js","../../node_modules/@giphy/colors/dist/index.js","../../node_modules/@giphy/js-fetch-api/dist/index.js","../../node_modules/@giphy/js-analytics/dist/index.js","../../node_modules/@giphy/react-components/dist/esm/index.js"],"sourcesContent":["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));\n\n// src/log.ts\nvar LogLevel = /* @__PURE__ */ ((LogLevel2) => {\n LogLevel2[LogLevel2[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel2[LogLevel2[\"INFO\"] = 1] = \"INFO\";\n LogLevel2[LogLevel2[\"WARN\"] = 2] = \"WARN\";\n LogLevel2[LogLevel2[\"ERROR\"] = 3] = \"ERROR\";\n return LogLevel2;\n})(LogLevel || {});\nvar Logger = {\n ENABLED: typeof window !== \"undefined\" && typeof location !== \"undefined\" && location.search.indexOf(\"giphy-debug\") !== -1,\n LEVEL: 0,\n PREFIX: \"GiphyJS\",\n debug: (...msg) => {\n if (Logger.ENABLED && Logger.LEVEL <= 0 /* DEBUG */) {\n console.debug(Logger.PREFIX, ...msg);\n }\n },\n info: (...msg) => {\n if (Logger.ENABLED && Logger.LEVEL <= 1 /* INFO */) {\n console.info(Logger.PREFIX, ...msg);\n }\n },\n warn: (...msg) => {\n if (Logger.ENABLED && Logger.LEVEL <= 2 /* WARN */) {\n console.warn(Logger.PREFIX, ...msg);\n }\n },\n error: (...msg) => {\n if (Logger.ENABLED && Logger.LEVEL <= 3 /* ERROR */) {\n console.error(Logger.PREFIX, ...msg);\n }\n }\n};\n\n// src/bestfit.ts\nvar closestArea = (width, height, renditions) => {\n let currentBest = Infinity;\n let result;\n renditions.forEach((rendition) => {\n const widthPercentage = rendition.width / width;\n const heightPercentage = rendition.height / height;\n const areaPercentage = widthPercentage * heightPercentage;\n const testBest = Math.abs(1 - areaPercentage);\n if (testBest < currentBest) {\n currentBest = testBest;\n result = rendition;\n }\n });\n return result;\n};\nvar SCALE_UP_MAX_PIXELS = 50;\nvar setRenditionScaleUpMaxPixels = (pixels) => {\n Logger.debug(`@giphy/js-util set rendition selection scale up max pixels to ${pixels}`);\n SCALE_UP_MAX_PIXELS = pixels;\n};\nfunction bestfit(renditions, width, height, scaleUpMaxPixels = SCALE_UP_MAX_PIXELS) {\n let [largestRendition] = renditions;\n const testRenditions = renditions.filter((rendition) => {\n if (rendition.width * rendition.height > largestRendition.width * largestRendition.height) {\n largestRendition = rendition;\n }\n return width - rendition.width <= scaleUpMaxPixels && height - rendition.height <= scaleUpMaxPixels;\n });\n if (testRenditions.length === 0) {\n return largestRendition;\n }\n return closestArea(width, height, testRenditions);\n}\nvar bestfit_default = bestfit;\n\n// src/collections.ts\nfunction mapValues(object, mapFn) {\n if (Array.isArray(object)) {\n throw `This map is just for objects, just use array.map for arrays`;\n }\n return Object.keys(object).reduce((result, key) => {\n result[key] = mapFn(object[key], key);\n return result;\n }, {});\n}\nfunction forEach(object, mapFn) {\n if (Array.isArray(object)) {\n throw `This map is just for objects, just use array.forEach for arrays`;\n }\n return Object.keys(object).forEach((key) => {\n mapFn(object[key], key);\n });\n}\nfunction take(arr, count = 0) {\n return arr.slice(0, count);\n}\nfunction without(arr, values) {\n return arr.filter((val) => values.indexOf(val) === -1);\n}\nfunction pick(object, pick2) {\n const res = {};\n pick2.forEach((key) => {\n if (object[key] !== void 0) {\n res[key] = object[key];\n }\n });\n return res;\n}\n\n// src/get-client-rect-from-el.ts\nvar getClientRect = (el) => {\n let left = 0;\n let top = 0;\n const width = el.offsetWidth;\n const height = el.offsetHeight;\n do {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n } while (el);\n const result = {\n left,\n top,\n width,\n height,\n right: left + width,\n bottom: top + height,\n x: left,\n y: top\n };\n return __spreadProps(__spreadValues({}, result), { toJSON: () => JSON.stringify(result) });\n};\nvar get_client_rect_from_el_default = getClientRect;\n\n// src/get-pingback-id.ts\nimport { v4 as uuid } from \"uuid\";\nvar pingbackId = \"\";\nvar idLength = 16;\nvar noUUIDRandom = () => {\n let result = \"\";\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n const charactersLength = characters.length;\n for (let i = 0; i < idLength; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n};\nvar getPingbackId = () => {\n if (!pingbackId) {\n try {\n pingbackId = sessionStorage.getItem(\"giphyPingbackId\");\n } catch (_) {\n }\n if (!pingbackId) {\n const hexTime = (/* @__PURE__ */ new Date()).getTime().toString(16);\n try {\n pingbackId = `${hexTime}${uuid().replace(/-/g, \"\")}`.substring(0, idLength);\n } catch (error) {\n pingbackId = noUUIDRandom();\n }\n try {\n sessionStorage.setItem(\"giphyPingbackId\", pingbackId);\n } catch (_) {\n }\n }\n }\n return pingbackId;\n};\nvar get_pingback_id_default = getPingbackId;\n\n// src/webp-check.ts\nvar SUPPORTS_WEBP = null;\nvar checkIfWebP = new Promise((resolve) => {\n if (typeof Image === \"undefined\") {\n resolve(false);\n }\n const webp = new Image();\n webp.onload = () => {\n SUPPORTS_WEBP = true;\n resolve(SUPPORTS_WEBP);\n };\n webp.onerror = () => {\n SUPPORTS_WEBP = false;\n resolve(SUPPORTS_WEBP);\n };\n webp.src = \"data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA\";\n});\n\n// src/gif-utils.ts\nvar getSpecificRendition = ({ images, is_sticker: isSticker }, renditionLabel, isStill = false, useVideo = false) => {\n if (!images || !renditionLabel)\n return \"\";\n isStill = isStill && !useVideo;\n const rendition = images[`${renditionLabel}${isStill ? \"_still\" : \"\"}`];\n if (rendition) {\n if (isSticker || isStill) {\n return rendition.url;\n }\n const webP = SUPPORTS_WEBP && rendition.webp;\n return useVideo ? rendition.mp4 : webP || rendition.url;\n }\n return \"\";\n};\nvar getBestVideo = (video, width, height) => {\n let assets = video == null ? void 0 : video.assets;\n if (assets) {\n assets = __spreadValues({}, assets);\n delete assets.source;\n const filteredAssets = Object.values(assets).sort((a, b) => a.width - b.width);\n return bestfit_default(filteredAssets, width, height);\n }\n};\nvar getRenditions = (type, images, video) => type === \"video\" && video && video.previews && !Object.keys(images).length ? video.previews : images;\nvar getBestRendition = (images, gifWidth, gifHeight, scaleUpMaxPixels) => {\n const checkRenditions = pick(images, [\n \"original\",\n \"fixed_width\",\n \"fixed_height\",\n \"fixed_width_small\",\n \"fixed_height_small\"\n ]);\n const testImages = Object.entries(checkRenditions).map(([renditionName, val]) => __spreadValues({\n renditionName\n }, val));\n return bestfit_default(testImages, gifWidth, gifHeight, scaleUpMaxPixels);\n};\nvar getBestRenditionUrl = ({ images, video, type }, gifWidth, gifHeight, options = { isStill: false, useVideo: false }) => {\n if (!gifWidth || !gifHeight || !images)\n return \"\";\n const { useVideo, isStill, scaleUpMaxPixels } = options;\n const renditions = getRenditions(type, images, video);\n const { renditionName } = getBestRendition(renditions, gifWidth, gifHeight, scaleUpMaxPixels);\n const key = `${renditionName}${isStill && !useVideo ? \"_still\" : \"\"}`;\n const rendition = renditions[key];\n const match = useVideo ? rendition.mp4 : SUPPORTS_WEBP && rendition.webp ? rendition.webp : rendition.url;\n return match || \"\";\n};\nvar getGifHeight = ({ images }, gifWidth) => {\n const { fixed_width } = images;\n if (fixed_width) {\n const { width, height } = fixed_width;\n const aspectRatio = width / height;\n return Math.round(gifWidth / aspectRatio);\n }\n return 0;\n};\nvar getGifWidth = ({ images }, gifHeight) => {\n const { fixed_width } = images;\n if (fixed_width) {\n const { width, height } = fixed_width;\n const aspectRatio = width / height;\n return Math.round(gifHeight * aspectRatio);\n }\n return 0;\n};\nvar getAltText = ({ alt_text, user, tags = [], is_sticker = false, title = \"\" }) => {\n if (alt_text) {\n return alt_text;\n }\n if (title) {\n return title;\n }\n const username = user && user.username || \"\";\n const filteredTags = take(without(tags, [\"transparent\"]), username ? 4 : 5);\n return `${username ? `${username} ` : ``}${filteredTags.join(\" \")} ${is_sticker ? \"Sticker\" : \"GIF\"}`;\n};\n\n// src/sdk-headers.ts\nvar gl = (typeof window !== \"undefined\" ? window : global) || {};\ngl._GIPHY_SDK_HEADERS_ = gl._GIPHY_SDK_HEADERS_ || (gl.Headers ? new gl.Headers({\n \"X-GIPHY-SDK-PLATFORM\": \"web\"\n}) : void 0);\nvar getGiphySDKRequestHeaders = () => gl._GIPHY_SDK_HEADERS_;\nvar appendGiphySDKRequestHeader = (key, value) => {\n var _a;\n return (_a = getGiphySDKRequestHeaders()) == null ? void 0 : _a.set(key, value);\n};\nvar appendGiphySDKRequestParam = (key, value) => {\n var _a;\n return (_a = getGiphySDKRequestHeaders()) == null ? void 0 : _a.set(key, value);\n};\nexport {\n LogLevel,\n Logger,\n appendGiphySDKRequestHeader,\n appendGiphySDKRequestParam,\n bestfit_default as bestfit,\n checkIfWebP,\n forEach,\n getAltText,\n getBestRendition,\n getBestRenditionUrl,\n getBestVideo,\n get_client_rect_from_el_default as getClientRect,\n getGifHeight,\n getGifWidth,\n getGiphySDKRequestHeaders,\n get_pingback_id_default as getPingbackId,\n getSpecificRendition,\n mapValues,\n pick,\n setRenditionScaleUpMaxPixels,\n take,\n without\n};\n","// 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","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\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 __require = /* @__PURE__ */ ((x) => typeof require !== \"undefined\" ? require : typeof Proxy !== \"undefined\" ? new Proxy(x, {\n get: (a, b) => (typeof require !== \"undefined\" ? require : a)[b]\n}) : x)(function(x) {\n if (typeof require !== \"undefined\")\n return require.apply(this, arguments);\n throw Error('Dynamic require of \"' + x + '\" is not supported');\n});\nvar __commonJS = (cb, mod) => function __require2() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\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// package.json\nvar require_package = __commonJS({\n \"package.json\"(exports, module) {\n module.exports = {\n scripts: {\n lint: \"run -T eslint . --ext .ts,.tsx\",\n clean: \"rm -rf ./dist\",\n dev: \"parcel public/test.html\",\n docs: \"typedoc src/index.ts\",\n build: \"run -T tsup src/index.ts --format cjs,esm --dts && run -T publint\",\n prepublish: \"npm run clean && npm run build\",\n test: \"run -T jest --config ./jestconfig.js\",\n \"test:watch\": \"run -T jest --config ./jestconfig.js --watchAll\"\n },\n name: \"@giphy/js-fetch-api\",\n version: \"5.6.0\",\n description: \"Javascript API to fetch gifs and stickers from the GIPHY API.\",\n homepage: \"https://github.com/Giphy/giphy-js/tree/master/packages/fetch-api\",\n main: \"dist/index.cjs\",\n types: \"dist/index.d.ts\",\n module: \"dist/index.js\",\n type: \"module\",\n sideEffects: false,\n exports: {\n \".\": {\n types: \"./dist/index.d.ts\",\n import: \"./dist/index.js\",\n require: \"./dist/index.cjs\"\n },\n \"./package.json\": \"./package.json\"\n },\n files: [\n \"dist/\",\n \"src/**/*\"\n ],\n license: \"MIT\",\n publishConfig: {\n access: \"public\"\n },\n dependencies: {\n \"@giphy/js-types\": \"*\",\n \"@giphy/js-util\": \"*\"\n },\n devDependencies: {\n \"jest-fetch-mock\": \"^3.0.3\",\n \"parcel-bundler\": \"latest\",\n typedoc: \"^0.20.37\",\n \"typedoc-thunder-theme\": \"^0.0.3\",\n typescript: \"^5.0.4\"\n }\n };\n }\n});\n\n// src/index.ts\nimport { appendGiphySDKRequestHeader, getGiphySDKRequestHeaders } from \"@giphy/js-util\";\n\n// src/api.ts\nimport { getPingbackId } from \"@giphy/js-util\";\n\n// src/normalize/gif.ts\nvar BOOL_PROPS = [\n \"is_anonymous\",\n \"is_community\",\n \"is_featured\",\n \"is_hidden\",\n \"is_indexable\",\n \"is_preserve_size\",\n \"is_realtime\",\n \"is_removed\",\n \"is_sticker\",\n \"is_dynamic\"\n // not finalized, and not adding to Gif type until type RFC is finished\n];\nvar USER_BOOL_PROPS = [\"suppress_chrome\", \"is_public\", \"is_verified\"];\nvar makeBool = (obj) => (prop) => obj[prop] = !!obj[prop];\nvar getTag = (tag) => typeof tag === \"string\" ? tag : tag.text;\nvar normalize = (gif, responseId = \"\") => {\n const newGif = __spreadValues({}, gif);\n newGif.id = String(newGif.id);\n newGif.tags = (newGif.tags || []).map(getTag);\n if (!newGif.bottle_data) {\n newGif.bottle_data = {};\n }\n newGif.response_id = responseId;\n BOOL_PROPS.forEach(makeBool(newGif));\n Object.keys(newGif.images || {}).forEach((name) => {\n const img = newGif.images[name];\n img.width = parseInt(img.width);\n img.height = parseInt(img.height);\n });\n const { user } = newGif;\n if (user) {\n const newUser = __spreadValues({}, user);\n USER_BOOL_PROPS.forEach(makeBool(newUser));\n newGif.user = newUser;\n }\n return newGif;\n};\nvar normalizeGif = (result) => {\n const { response_id } = result.meta;\n result.data = normalize(result.data, response_id);\n return result;\n};\nvar normalizeGifs = (result) => {\n const { response_id } = result.meta;\n result.data = result.data.map((gif) => normalize(gif, response_id));\n return result;\n};\n\n// src/constants.ts\nvar gl = (typeof window !== \"undefined\" ? window : global) || {};\nvar serverUrl = gl.GIPHY_API_URL || \"https://api.giphy.com/v1/\";\nvar setServerUrl = (url) => {\n serverUrl = url;\n};\n\n// src/fetch-error.ts\nvar FetchError = class extends Error {\n constructor(message, url, status = 0, statusText = \"\") {\n super(message);\n this.url = url;\n this.status = status;\n this.statusText = statusText;\n }\n};\nvar GeoFetchError = class extends FetchError {\n};\nvar fetch_error_default = FetchError;\n\n// src/request.ts\nvar ERROR_PREFIX = `@giphy/js-fetch-api: `;\nvar DEFAULT_ERROR = \"Error fetching\";\nvar identity = (i) => i;\nvar requestMap = {};\nvar maxLife = 6e4;\nvar errorMaxLife = 6e3;\nvar purgeCache = () => {\n const now = Date.now();\n Object.keys(requestMap).forEach((key) => {\n const ttl = requestMap[key].isError ? errorMaxLife : maxLife;\n if (now - requestMap[key].ts >= ttl) {\n delete requestMap[key];\n }\n });\n};\nfunction request(url, options = {}) {\n const { apiVersion = 1, noCache = false, normalizer = identity } = options;\n const serverUrl_ = serverUrl.replace(/\\/v\\d+\\/$/, `/v${apiVersion}/`);\n purgeCache();\n if (!requestMap[url] || noCache) {\n const fullUrl = `${serverUrl_}${url}`;\n const makeRequest = () => __async(this, null, function* () {\n var _a2, _b;\n let fetchError;\n try {\n const response = yield fetch(fullUrl, {\n method: \"get\"\n });\n if (response.ok) {\n const result = yield response.json();\n if (!((_a2 = result.meta) == null ? void 0 : _a2.response_id)) {\n throw { message: `synthetic response` };\n } else {\n return normalizer(result);\n }\n } else {\n let message = DEFAULT_ERROR;\n try {\n const result = yield response.json();\n if (result.message)\n message = result.message;\n if ((_b = result.meta) == null ? void 0 : _b.msg)\n message = result.meta.msg;\n } catch (_) {\n }\n if (requestMap[url]) {\n requestMap[url].isError = true;\n }\n let Cls = fetch_error_default;\n if (message === \"This content is not available in your location\") {\n Cls = GeoFetchError;\n }\n fetchError = new Cls(`${ERROR_PREFIX}${message}`, fullUrl, response.status, response.statusText);\n }\n } catch (unexpectedError) {\n fetchError = new fetch_error_default(unexpectedError.message, fullUrl);\n if (requestMap[url]) {\n requestMap[url].isError = true;\n }\n }\n throw fetchError;\n });\n requestMap[url] = { request: makeRequest(), ts: Date.now() };\n }\n return requestMap[url].request;\n}\nvar request_default = request;\n\n// src/api.ts\nvar getType = (options) => options && options.type ? options.type : \"gifs\";\nvar GiphyFetch = class {\n constructor(apiKey, qsParams = {}) {\n /**\n * @hidden\n */\n this.getQS = (options = {}) => {\n const searchParams = new URLSearchParams(__spreadValues(__spreadProps(__spreadValues({}, options), {\n api_key: this.apiKey,\n pingback_id: getPingbackId()\n }), this.qsParams));\n return searchParams.toString();\n };\n this.apiKey = apiKey;\n this.qsParams = qsParams;\n }\n /**\n * A list of categories\n *\n * @param {CategoriesOptions} [options]\n * @returns {Promise}\n */\n categories(options) {\n return request_default(`gifs/categories?${this.getQS(options)}`);\n }\n /**\n * Get a single gif by a id\n * @param {string} id\n * @returns {Promise}\n **/\n gif(id, options) {\n const prefix = (options == null ? void 0 : options.internal) ? \"internal/\" : \"\";\n return request_default(`${prefix}gifs/${id}?${this.getQS()}`, { normalizer: normalizeGif });\n }\n gifs(arg1, arg2) {\n if (Array.isArray(arg1)) {\n return request_default(`gifs?${this.getQS({ ids: arg1.join(\",\") })}`, {\n normalizer: normalizeGifs\n });\n }\n return request_default(`gifs/categories/${arg1}/${arg2}?${this.getQS()}`, {\n normalizer: normalizeGifs\n });\n }\n emoji(options) {\n return request_default(`emoji?${this.getQS(options)}`, { normalizer: normalizeGifs });\n }\n /**\n * Returns a list of all the default emoji variations\n *\n * @param {PaginationOptions} options\n * @returns {Promise}\n **/\n emojiDefaultVariations(options) {\n return request_default(`emoji?${this.getQS(options)}`, {\n apiVersion: 2,\n normalizer: normalizeGifs\n });\n }\n /**\n * Returns a list of gifs representing all the variations for the emoji\n *\n * @param {string} id\n * @returns {Promise}\n **/\n emojiVariations(id) {\n return request_default(`emoji/${id}/variations?${this.getQS()}`, {\n apiVersion: 2,\n normalizer: normalizeGifs\n });\n }\n animate(text, options = {}) {\n const qsParams = this.getQS(__spreadProps(__spreadValues({}, options), { m: text }));\n return request_default(`text/animate?${qsParams}`, { normalizer: normalizeGifs });\n }\n /**\n * @param term: string The term you're searching for\n * @param options: SearchOptions\n * @returns {Promise}\n **/\n search(term, options = {}) {\n const q = options.channel ? `@${options.channel} ${term}` : term;\n let excludeDynamicResults;\n if (options.type === \"text\") {\n excludeDynamicResults = true;\n }\n const qsParams = this.getQS(__spreadProps(__spreadValues({ rating: \"pg-13\" }, options), { q, excludeDynamicResults }));\n return request_default(`${getType(options)}/search?${qsParams}`, { normalizer: normalizeGifs });\n }\n /**\n * Get a list of subcategories\n * @param {string} category\n * @param {SubcategoriesOptions} options\n * @returns {Promise}\n */\n subcategories(category, options) {\n return request_default(`gifs/categories/${category}?${this.getQS(options)}`);\n }\n /**\n * Get trending gifs\n *\n * @param {TrendingOptions} options\n * @returns {Promise}\n */\n trending(options = {}) {\n return request_default(`${getType(options)}/trending?${this.getQS(__spreadValues({ rating: \"pg-13\" }, options))}`, {\n normalizer: normalizeGifs\n });\n }\n /**\n * Get a random gif\n * @param {RandomOptions} options\n * @returns {Promise}\n **/\n random(options) {\n return request_default(`${getType(options)}/random?${this.getQS(__spreadValues({ rating: \"pg-13\" }, options))}`, {\n noCache: true,\n normalizer: normalizeGif\n });\n }\n /**\n * Get related gifs by a id\n * @param {string} id\n * @param {SubcategoriesOptions} options\n * @returns {Promise}\n **/\n related(id, options = {}) {\n const { type = \"gifs\" } = options;\n return request_default(\n `${type}/related?${this.getQS(__spreadValues({\n gif_id: id,\n rating: \"pg-13\"\n }, options))}`,\n { normalizer: normalizeGifs }\n );\n }\n /**\n * Search for channels based on a term\n * @param {string} term\n * @param options: SearchOptions\n * @returns {Promise}\n **/\n channels(term, options = {}) {\n return request_default(\n `channels/search?${this.getQS(__spreadValues({ q: term, rating: \"pg-13\" }, options))}`\n );\n }\n};\nvar api_default = GiphyFetch;\n\n// src/paginator.ts\nvar gifPaginator = (fetchGifs, initialGifs = []) => {\n const gifs = [...initialGifs];\n const gifIds = initialGifs.map((g) => g.id);\n let offset = initialGifs.length;\n let isDoneFetching = false;\n return () => __async(void 0, null, function* () {\n if (isDoneFetching) {\n return gifs;\n }\n const result = yield fetchGifs(offset);\n const { pagination, data: newGifs } = result;\n offset = pagination.count + pagination.offset;\n isDoneFetching = offset === pagination.total_count;\n newGifs.forEach((gif) => {\n const { id } = gif;\n if (!gifIds.includes(id)) {\n gifs.push(gif);\n gifIds.push(id);\n }\n });\n return [...gifs];\n });\n};\n\n// src/index.ts\nvar _a;\nif (typeof __require !== \"undefined\") {\n const { version } = require_package();\n if (!((_a = getGiphySDKRequestHeaders()) == null ? void 0 : _a.get(`X-GIPHY-SDK-NAME`))) {\n appendGiphySDKRequestHeader(`X-GIPHY-SDK-NAME`, \"FetchAPI\");\n appendGiphySDKRequestHeader(`X-GIPHY-SDK-VERSION`, version);\n }\n}\nexport {\n fetch_error_default as FetchError,\n GeoFetchError,\n api_default as GiphyFetch,\n gifPaginator,\n request_default as request,\n serverUrl,\n setServerUrl\n};\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","\"use client\";\nvar __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 picture {\n display: block;\n width: 100%;\n height: 100%;\n }\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 gif: { bottle_data: bottleData = {} },\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 var _a;\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 isAd = Object.keys(bottleData).length > 0;\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 _a2, _b;\n if ((_a2 = image.current) == null ? void 0 : _a2.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 ), isAd && ((_a = bottleData == null ? void 0 : bottleData.tags) == null ? void 0 : _a.map((tag, index) => /* @__PURE__ */ React8.createElement(\"div\", { dangerouslySetInnerHTML: { __html: tag }, key: index })))),\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 fetchPriority\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 fetchPriority\n }\n );\n }), !showLoader && gifs.length === 0 && noResultsMessage, showLoader && /* @__PURE__ */ React9.createElement(Observer2, { onVisibleChange: this.onLoaderVisible, config: loaderConfig }, /* @__PURE__ */ React9.createElement(Loader, { $isFirstLoad: 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 }) => 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: 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: gifHeight,\n $gutter: 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 } = this.state;\n const { externalGifs, fetchGifs } = this.props;\n const prefetchCount = (externalGifs || this.state.gifs).length;\n if (externalGifs) {\n this.paginator = gifPaginator2(fetchGifs, externalGifs);\n }\n if (!isFetching && isLoaderVisible) {\n this.setState({ isFetching: true, isError: false });\n let gifs;\n try {\n gifs = 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 (gifs) {\n if (prefetchCount === 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 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 fetchPriority\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 fetchPriority\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: 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, externalGifs }, 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 if (externalGifs && externalGifs !== prevState.gifs) {\n return { gifs: externalGifs };\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 = \"#E646B6\";\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: 0 4px 4px 0;\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: 50%;\n height: 50%;\n`;\nvar SearchButton = ({ onClick }) => {\n const { isFetching } = useContext5(SearchContext);\n const throttledFetch = useThrottle(isFetching, 1e3);\n return /* @__PURE__ */ React19.createElement(Container8, { onClick: () => onClick == null ? void 0 : onClick() }, /* @__PURE__ */ React19.createElement(GradientBox, { suppressHydrationWarning: true }), /* @__PURE__ */ React19.createElement(SearchIcon2, null), throttledFetch && /* @__PURE__ */ React19.createElement(Fx, { suppressHydrationWarning: true }, /* @__PURE__ */ React19.createElement(Scanner, { suppressHydrationWarning: true })));\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, { onClick: () => onEnter == null ? void 0 : onEnter(val) }));\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: 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: 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, useRef as useRef7, 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: 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 lastMutedState = useRef7(muted);\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 useEffect8(() => {\n document.addEventListener(\"visibilitychange\", () => {\n if (document.visibilityState === \"hidden\") {\n lastMutedState.current = muted;\n setMuted(true);\n } else {\n setMuted(lastMutedState.current);\n }\n });\n }, [muted, 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"],"names":["__defProp","__defProps","__getOwnPropDescs","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","__spreadProps","Logger","msg","closestArea","width","height","renditions","currentBest","result","rendition","widthPercentage","heightPercentage","areaPercentage","testBest","SCALE_UP_MAX_PIXELS","bestfit","scaleUpMaxPixels","largestRendition","testRenditions","bestfit_default","take","arr","count","without","values","val","pick","object","pick2","res","getClientRect","el","left","top","get_client_rect_from_el_default","pingbackId","idLength","noUUIDRandom","characters","charactersLength","getPingbackId","hexTime","uuid","get_pingback_id_default","SUPPORTS_WEBP","resolve","webp","getBestVideo","video","assets","filteredAssets","getBestRendition","images","gifWidth","gifHeight","checkRenditions","testImages","renditionName","getGifHeight","fixed_width","aspectRatio","getGifWidth","getAltText","alt_text","user","tags","is_sticker","title","username","filteredTags","gl","getGiphySDKRequestHeaders","appendGiphySDKRequestHeader","_a","giphyBlack","giphyDarkestGrey","giphyDarkCharcoal","giphyCharcoal","giphyLightGrey","giphyWhiteSmoke","giphyWhite","giphyBlue","giphyGreen","giphyPurple","giphyRed","giphyYellow","giphyIndigo","__getOwnPropNames","__require","x","__commonJS","cb","mod","__async","__this","__arguments","generator","reject","fulfilled","step","e","rejected","require_package","exports","module","BOOL_PROPS","USER_BOOL_PROPS","makeBool","getTag","tag","normalize","gif","responseId","newGif","name","img","newUser","normalizeGif","response_id","normalizeGifs","serverUrl","FetchError","message","url","status","statusText","GeoFetchError","fetch_error_default","ERROR_PREFIX","DEFAULT_ERROR","identity","i","requestMap","maxLife","errorMaxLife","purgeCache","now","ttl","request","options","apiVersion","noCache","normalizer","serverUrl_","fullUrl","makeRequest","_a2","_b","fetchError","response","Cls","unexpectedError","request_default","getType","GiphyFetch","apiKey","qsParams","id","prefix","arg1","arg2","text","term","q","excludeDynamicResults","category","type","api_default","gifPaginator","fetchGifs","initialGifs","gifs","gifIds","g","offset","isDoneFetching","pagination","newGifs","version","mergeAttribute","attributes","newAttributes","result1","result2","merge_attributes_default","global_default","environment","pingBackUrl","sendPingback","events","headers","error","queuedPingbackEvents","loggedInUserId","sendPingbacks","sendEvents","debouncedPingbackEvent","debounce","pingback","userId","eventType","actionType","queueEvents","analyticsResponsePayload","newEvent","Logger2","pingback_default","getSmallAvatar","avatar","ext","Img","styled","Avatar","className","defaultAvatarId","useRef","React","avatar_default","VerifiedBadge","size","fill","React2","verified_badge_default","Username","styled2","VerifiedBadge2","Container","User","display_name","React3","user_default","Container2","styled3","Avatar2","Attribution","onClick","React4","attribution_default","Background","styled4","Attribution2","Container3","AttributionOverlay","isHovered","hasHovered","useRef2","React5","overlay_default","Observer","children","onVisibleChange","config","container","useRef3","useEffect","io","entry","React6","observer_default","firePingback","target","onGifSeen","position","onGifClick","onGifHover","PingbackContext","createContext","PingbackContextManager","parentAttributes","useContext","React7","mergeAttributes","pingback_context_manager_default","Container4","styled5","GRID_COLORS","getColor","hoverTimeoutDelay","placeholder","canUseDOM","noop","RenderOnClient","render","setRender","useState","useEffect2","React8","Gif","bottleData","percentWidth","forcedHeight","onGifRightClick","onGifClick2","onGifKeyPress","onGifSeen2","onGifVisible","backgroundColor","overlay","hideAttribution","noLink","borderRadius","style","tabIndex","hasFiredSeen","setHasFiredSeen","setHovered","shouldShowMedia","setShouldShowMedia","loadedClassname","setLoadedClassName","defaultBgColor","useRef4","image","showGifObserver","fullGifObserver","hoverTimeout","sendOnSeen","isAd","useContext2","Overlay","onMouseOver","onMouseLeave","onKeyPress","watchGif","onImageLoad","isIntersecting","percentHeight","bestRendition","background","overflow","index","gif_default","Container5","styled6","Gif2","props","Observer2","Loader","defaultProps","initialState","_Carousel","PureComponent","isVisible","isFetching","isLoaderVisible","existingGifs","onGifsFetched","gutter","noResultsMessage","loaderConfig","fetchPriority","showLoader","isFirstLoad","React9","Message","styled7","giphyBlue2","React10","DIVIDER_RELATIVE_HEIGHT","styled8","$backgroundColor","$width","color","$gifHeight","$gutter","bouncer","keyframes","loaderHeight","Container6","styled9","Dot","Loader2","React12","giphyGreen2","giphyBlue3","giphyPurple2","giphyRed2","giphyYellow2","loader_default","fillArray","length","columnOffsets","_","MasonryGrid","columns","useTransform","itemWidth","itemHeights","containerStyle","getChildren","columnTarget","columnHeights","React13","child","masonry_grid_default","memo","Loader3","styled10","defaultProps2","initialState2","_Grid","PureComponent2","gifPaginator2","debounce2","externalGifs","prefetchCount","onGifsFetchError","layoutType","LoaderVisual","isError","getGifHeight2","React14","prevState","gutterOffset","Grid","grid_default","CssVars","styled11","giphyBlack2","css","giphyCharcoal2","createContext2","styled12","channelMargin","innerHeight","animateAvatar","keyframes2","styled13","SearchIcon","React18","search_icon_default","time","purp","pink","strongEasing","searchFx","keyframes3","plus","gradientFade","styled14","styled15","giphyLightGrey2","css2","TrendingIcon","React21","trending_icon_default","margin","styled16","styled17","GIPHYClips","React24","clips_branding_default","Container11","styled18","Avatar5","Right","Attribution3","React25","attribution_default2","VolumeSize","VolumeOnIcon","React26","VolumeOffIcon","Bar","styled19","giphyWhite2","ProgressBar","videoEl","useRaf","time2","duration","percentage","barHeight","React27","progress_bar_default","getErrorMessage","code","src","shouldFireQuartile","quartile","playhead","quartilesFired","loopNumber","currentQuartile","quartileEvents","videoClassName","Network","Video","muted","ccEnabled","ccLanguage","loop","onStateChange","onTimeUpdate","onCanPlay","onFirstPlay","onWaiting","onMuted","onError","onEnded","onLoop","onQuartile","onEndFullscreen","setVideoEl","height_","volume","_c","getGifHeight3","media","setMedia","useState4","seek","useRef6","mountTime","hasPlayingFired","waitingCount","useEffect6","newMedia","_onError","useCallback2","_onPlaying","pingback2","_onPaused","_onTimeUpdate","_onCanPlay","_onWaiting","_onEnded","_onEndFullscreen","tryAutoPlayWithSound","videoEl2","promisePlay","captionSrc","React28","video_default","Container12","styled20","Volume","Controls","Title","TitleContainer","Gradient","LARGE_PLAYER_HEIGHT","AUTO_HIDE_TIMEOUT","VideoPlayer","hideMute","hideProgressBar","persistentControls","setIsHovered","useState5","_setVideoEl","setMuted","mutedByBrowser","setMutedByBrowser","onUserMuted","getGifHeight4","cancelHideTimeout","resetHideTimeout","useTimeoutFn","combinedOnMuted","useCallback3","args","combinedSetVideoEl","toggleMute","useEffect7","showControls","isLargePlayer","React29","VideoWrapper","Logger3","video_default2","styled21"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}